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

config, detail, filesystem, system, tools, at 41278.

[SVN r41316]
Beman Dawes 18 лет назад
Родитель
Сommit
bad0d12031

+ 1 - 1
libs/config

@@ -1 +1 @@
-Subproject commit d9de80031d16cf824389909ff2a35e905f831755
+Subproject commit 81a1bb0395e2615ea4f53b168212451f8553a94c

+ 1 - 1
libs/conversion

@@ -1 +1 @@
-Subproject commit 4224fa5deb2709fd14239fef634a75ba081b4cbc
+Subproject commit ac6e41d676328940dbe656cc47f8b6affd8b95f4

+ 1 - 1
libs/detail

@@ -1 +1 @@
-Subproject commit 8da5b03c03b13cf4dcf2854cf085910545404e8d
+Subproject commit 9469ab6c882fecf68477a4bf1bc152f9c940ca27

+ 1 - 1
libs/dynamic_bitset

@@ -1 +1 @@
-Subproject commit cc9b262cb92f20d4fd5c12507a2742e84a6e8f1b
+Subproject commit c9dcc1de6489bf3d96f74106d3a9457362d21bc2

+ 1 - 1
libs/graph

@@ -1 +1 @@
-Subproject commit b2be8e3dfcae479b27bb3ca5fd3b2d0f159cd39b
+Subproject commit 52558351262f122bc6bf60f6b832b9daace07349

+ 1 - 1
libs/smart_ptr

@@ -1 +1 @@
-Subproject commit 87c6b6b403c08a2d071c65a694b5533dedf0b232
+Subproject commit 5ab6b2485639fdabbd230cd93c3cbd648d32f061

+ 1 - 1
tools/build

@@ -1 +1 @@
-Subproject commit 8f3a7c6a0df93e298bbb92c2b291b380c57d495b
+Subproject commit d4b923c4ca3fbf94956ae1e281e8d6606d7a7a82

+ 1 - 1
tools/quickbook

@@ -1 +1 @@
-Subproject commit 848b1aacaca4ee03b38aabc87b09932383722f6f
+Subproject commit c52714a0cfc20a027cd453f549b9ebd61db09cfe

+ 52 - 0
tools/regression/doc/index.html

@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <meta http-equiv="Content-Language" content="en-us" />
+  <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+  <link rel="stylesheet" type="text/css" href=
+  "../../../doc/html/boostbook.css" />
+
+  <title>Regression Test Reporting Tools</title>
+</head>
+
+<body>
+  <h1><img src="../../../boost.png" alt="boost.png (6897 bytes)" align=
+  "center" width="277" height="86" /> Regression Test Reporting Tools</h1>
+
+  <p>Boost regression testing uses <a href=
+  "../../build/index.html">Boost.Build</a> to run the actual builds and
+  tests. A separate set of tools is used to generate the actual status
+  reports.</p>
+
+  <ul>
+    <li><a href="../src/process_jam_log.cpp">process_jam_log.cpp</a> -
+    Processes the bjam outputs, creating a file named test_log.xml for each
+    test encountered.</li>
+
+    <li><a href="../src/compiler_status.cpp">compiler_status.cpp</a> -
+    Generates HTML status tables from test_log.xml and other files.</li>
+
+    <li><a href="../build/Jamfile.v2">Jamfile.v2</a> - Builds process_jam_log
+    and compiler_status executables.</li>
+
+    <li><a href="library_status.html">Library Status</a> - Runs test programs
+    for one or all boost libraries on your local installation and generates
+    complete tables to show which combinations of libraries, compilers,
+    compiler settings pass and fail at your local installation.</li>
+  </ul>
+  <hr />
+
+  <p>Revised $Date$</p>
+
+  <p>Copyright Beman Dawes 2003.</p>
+
+  <p>Copyright Rene Rivera 2007.</p>
+
+  <p>Distributed under the Boost Software License, Version 1.0. (See
+  accompanying file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+  copy at <a href=
+  "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</p>
+</body>
+</html>

+ 460 - 0
tools/regression/doc/library_status.html

@@ -0,0 +1,460 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <meta http-equiv="Content-Language" content="en-us" />
+  <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+  <link rel="stylesheet" type="text/css" href=
+  "../../../doc/html/boostbook.css" />
+
+  <title>Libary Status</title>
+  <style type="text/css">
+/*<![CDATA[*/
+  span.c3 {color: #FF0000; font-style: italic}
+  a.c2 {font-style: italic}
+  td.c1 {font-style: italic}
+  /*]]>*/
+  </style>
+</head>
+
+<body>
+  <table border="0">
+    <tr>
+      <td><img border="0" src="../../../boost.png" width="277" height="86"
+      alt="boost.png (6897 bytes)" /></td>
+
+      <td>
+        <h1>Generating Library Status Tables</h1>
+      </td>
+    </tr>
+  </table>
+
+  <h3>Purpose</h3>Any time one considers using a library as large and complex
+  as the Boost libraries, he must have a way of validating the the library
+  functions in his environment. This should be done when the library is
+  installed and anytime questions are raised regarding its applicabililty
+  and/or its usage.
+
+  <p>The procedures described here permit a user to run any combination of
+  tests on any or all libraries and generate a set of convenient tables which
+  show which libraries pass which tests under what conditions.</p>
+
+  <h3>Preliminaries</h3>Generating these tables requires a couple of utility
+  programs: <code>process_jam_log</code> and <code>library_status</code>.
+  These can be built by moving to the directory
+  <code>tools/regression/build</code> and invoking bjam. If all goes well
+  these utility programs will be found in the directory
+  <code>dist/bin</code>. From there they should be moved to a place in the
+  current path.
+
+  <h3>Running Tests for One Library</h3>
+
+  <ol>
+    <li>Start from your command line environment.</li>
+
+    <li>set the current directory to:../libs/&lt;library name&gt;/test</li>
+
+    <li>Invoke one of the following:
+
+      <ul>
+        <li><code>../../../tools/regression/library_test (*nix)</code>.</li>
+
+        <li><code>..\..\..\tools\regression\library_test
+        (windows)</code>.</li>
+      </ul>
+    </li>
+
+    <li>This will display short help message describing the how to set the
+    command line arguments for the compilers and variants you want to appear
+    in the final table.</li>
+
+    <li>Setting these arguments requires rudimentary knowledge of bjam usage.
+    Hopefully, if you've arrived at this page you've gained the required
+    knowledge during the installation and library build process.</li>
+
+    <li>Rerun the abve command with the argument set accordingly.</li>
+
+    <li>When the command terminates, there should be a file named
+    "library_status.html" in the current directory.</li>
+
+    <li>Display this file with any web browser.</li>
+  </ol>There should appear a table similar to the following for the regex
+  library.
+
+  <table border="1" cellspacing="0" cellpadding="5">
+    <tr>
+      <td rowspan="4">Test Name</td>
+
+      <td align="center" colspan="4">msvc-7.1</td>
+    </tr>
+
+    <tr>
+      <td align="center" colspan="2">debug</td>
+
+      <td align="center" colspan="2">release</td>
+    </tr>
+
+    <tr>
+      <td align="center">link-static</td>
+
+      <td align="center" rowspan="2">threading-multi</td>
+
+      <td align="center">link-static</td>
+
+      <td align="center" rowspan="2">threading-multi</td>
+    </tr>
+
+    <tr>
+      <td align="center">threading-multi</td>
+
+      <td align="center">threading-multi</td>
+    </tr>
+
+    <tr>
+      <td>bad_expression_test</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-bad_expression_test.test-msvc-7.1-debug-threading-multi">
+      Warn</a></td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-bad_expression_test.test-msvc-7.1-release-threading-multi">
+      Warn</a></td>
+    </tr>
+
+    <tr>
+      <td>captures</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-captures-msvc-7.1-debug-threading-multi">
+      <span class="c3">Fail</span></a></td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-captures-msvc-7.1-release-threading-multi">
+      <span class="c3">Fail</span></a></td>
+    </tr>
+
+    <tr>
+      <td>captures_test</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-captures_test.test-msvc-7.1-debug-threading-multi">
+      Warn</a></td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-captures_test.test-msvc-7.1-release-threading-multi">
+      Warn</a></td>
+    </tr>
+
+    <tr>
+      <td>concept_check</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right">Pass</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right">Pass</td>
+    </tr>
+
+    <tr>
+      <td>icu_concept_check</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right">Pass</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right">Pass</td>
+    </tr>
+
+    <tr>
+      <td>object_cache_test</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-object_cache_test.test-msvc-7.1-debug-threading-multi">
+      Warn</a></td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-object_cache_test.test-msvc-7.1-release-threading-multi">
+      Warn</a></td>
+    </tr>
+
+    <tr>
+      <td>posix_api_check</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-posix_api_check.test-msvc-7.1-debug-threading-multi">
+      Warn</a></td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-posix_api_check.test-msvc-7.1-release-threading-multi">
+      Warn</a></td>
+    </tr>
+
+    <tr>
+      <td>posix_api_check_cpp</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right">Pass</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right">Pass</td>
+    </tr>
+
+    <tr>
+      <td>recursion_test</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-recursion_test.test-msvc-7.1-debug-threading-multi">
+      Warn</a></td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-recursion_test.test-msvc-7.1-release-threading-multi">
+      Warn</a></td>
+    </tr>
+
+    <tr>
+      <td>regex_config_info</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-regex_config_info.test-msvc-7.1-debug-threading-multi">
+      Pass</a></td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-regex_config_info.test-msvc-7.1-release-threading-multi">
+      Pass</a></td>
+    </tr>
+
+    <tr>
+      <td>regex_dll_config_info</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-regex_dll_config_info.test-msvc-7.1-debug-threading-multi">
+      Pass</a></td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-regex_dll_config_info.test-msvc-7.1-release-threading-multi">
+      Pass</a></td>
+    </tr>
+
+    <tr>
+      <td>regex_regress</td>
+
+      <td align="right"><a href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-regex_regress.test-msvc-7.1-debug-link-static-threading-multi">
+      Pass</a><sup>*</sup></td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-regex_regress.test-msvc-7.1-release-link-static-threading-multi">
+      Pass</a><sup>*</sup></td>
+
+      <td class="c1" align="right">Missing</td>
+    </tr>
+
+    <tr>
+      <td>regex_regress_dll</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-regex_regress_dll.test-msvc-7.1-debug-threading-multi">
+      Pass</a><sup>*</sup></td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-regex_regress_dll.test-msvc-7.1-release-threading-multi">
+      Pass</a><sup>*</sup></td>
+    </tr>
+
+    <tr>
+      <td>regex_regress_threaded</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right">Pass</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right">Pass</td>
+    </tr>
+
+    <tr>
+      <td>static_mutex_test</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right">Pass</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right">Pass</td>
+    </tr>
+
+    <tr>
+      <td>test_collate_info</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-test_collate_info.test-msvc-7.1-debug-threading-multi">
+      Warn</a></td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-test_collate_info.test-msvc-7.1-release-threading-multi">
+      Warn</a></td>
+    </tr>
+
+    <tr>
+      <td>unicode_iterator_test</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-unicode_iterator_test.test-msvc-7.1-debug-threading-multi">
+      Warn</a></td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-unicode_iterator_test.test-msvc-7.1-release-threading-multi">
+      Warn</a></td>
+    </tr>
+
+    <tr>
+      <td>wide_posix_api_check_c</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-wide_posix_api_check_c.test-msvc-7.1-debug-threading-multi">
+      Warn</a></td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-wide_posix_api_check_c.test-msvc-7.1-release-threading-multi">
+      Warn</a></td>
+    </tr>
+
+    <tr>
+      <td>wide_posix_api_check_cpp</td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-wide_posix_api_check_cpp.test-msvc-7.1-debug-threading-multi">
+      Warn</a></td>
+
+      <td class="c1" align="right">Missing</td>
+
+      <td align="right"><a class="c2" href=
+      "links.html#C:-Boost134-bin.v2-libs-regex-test-wide_posix_api_check_cpp.test-msvc-7.1-release-threading-multi">
+      Warn</a></td>
+    </tr>
+  </table>
+
+  <p>This table was generated by invoking the following command line:</p>
+
+  <p><code>../../../tools/regression/library_test --toolset=msvc-7.1
+  variant=debug,release</code></p>
+
+  <p>from within the .../libs/regex/test directory.</p>
+
+  <p>This table shows the regex test results for both debug and release
+  versions of the library. Also it displays the fact that one of the tests is
+  run specifically with the static linking/multi-threading versions of the
+  runtime libraries. The cells marked "Missing" correspond to tests that were
+  not run for some reason or another. This is usually because the
+  corresponding <code>Jamfile.v2</code> excludes this test for the given
+  combination of compiler and build attributes. In this example, all tests
+  were run with the same compiler. If additional compilers were used, they
+  would appear as more columns in the table.</p>
+
+  <p>The table above is just an illustration so the links don't actually
+  point to anything. In the table you generated, the links will display a
+  page describing any errors, warnings or other available information about
+  the tests. If the test passes, usually, there is no additional information
+  and hence no link.</p>
+
+  <p>The tables are cumulative. That is, if you run one set of tests now and
+  tests with different attributes later, the table will contain all the
+  results to date. The test results are stored in
+  <code>../bin.v2/libs/test/&lt;library%gt;/...</code>. To reinitialize the
+  test results to empty, delete the corresponding files in this
+  directory.</p>
+
+  <p>The procedure above assumes that the table are generated within the
+  directory <code>../libs/&lt;library&gt;/test</code>. This is the most
+  common case since this directory contains the <code>Jamfile.v2</code> as
+  well as the source code that is used by official boost testers. However,
+  this is just a convention. The table can be generated for other directories
+  within the libary. One possiblity would be to generate the table for all
+  the examples in <code>../libs/%lt;library%gt;/example</code>. Or one might
+  have a special directory of performance tests which take a long time to run
+  and hence are not suitable for running by official boost testers. Just
+  remember that library status table is generated in the directory from which
+  the <code>library_test</code> command is invoked.</p>
+
+  <h3>Running Tests for All Libraries</h3>For those with *nix or cygwin
+  command line shells, there is shell script that can be run from the boost
+  root directory:
+
+  <p><code>tools/regression/library_test_all</code></p>
+
+  <p>The command line arguments are the same as for running the test for one
+  library. This script creates all the html files in all the test directories
+  as well as an html page in the <code>status</code> directory named
+  <code>library_status_summary.html</code>. This can be used to browse
+  through all test results for all test in all libraries.</p>
+  <hr />
+
+  <p>Copyright 2007 Robert Ramey. Distributed under the Boost Software
+  License, Version 1.0. (See accompanying file LICENSE_1_0.txt or
+  http://www.boost.org/LICENSE_1_0.txt)</p>
+
+  <p>Revised $Date$</p>
+</body>
+</html>

+ 0 - 53
tools/regression/index.htm

@@ -1,53 +0,0 @@
-<html>
-
-<head>
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type"
-content="text/html; charset=iso-8859-1">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
-<title>Regression Test Reporting Tools</title>
-</head>
-
-<body bgcolor="#FFFFFF">
-
-<h1><img src="../../boost.png" alt="boost.png (6897 bytes)"
-align="center" width="277" height="86"> Regression Test Reporting
-Tools</h1>
-
-<p>Boost regression testing uses <a href="../build/index.html">Boost.Build</a>
-to run the actual builds and tests. A separate set of tools is
-used to generate the actual status reports.</p>
-
-<ul>
-    <li><a
-          href="xsl_reports/runner/instructions.html">Instructions</a>
-        for running regression tests and reporting results back to
-        Boost.</li> 
-    <li><a href="process_jam_log.cpp">process_jam_log.cpp</a> -
-        Processes the bjam outputs, creating a file named
-        test_log.xml for each test encountered.</li>
-    <li><a href="compiler_status.cpp">compiler_status.cpp</a> -
-        Generates HTML status tables from test_log.xml and other
-        files.</li>
-    <li><a href="build/Jamfile.v2">Jamfile.v2</a> - Builds
-        process_jam_log and compiler_status executables.</li>
-    <li><a href="library_status.html">Library Status</a> - Runs test
-        programs for one or all boost libraries on
-        your local installation and generates complete tables
-        to show which combinations of libraries, compilers,
-        compiler settings pass and fail at your local installation.</li>
-</ul>
-
-<hr>
-
-<p>Revised <!--webbot bot="Timestamp" startspan s-type="EDITED"
-s-format="%d %B, %Y" -->06 November, 2007<!--webbot bot="Timestamp"
-i-checksum="39367" endspan --></p>
-<p>© Copyright Beman Dawes 2003</p>
-
-<p>Distributed under the Boost Software License, Version 1.0. See
-<a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a></p>
-
-</body>
-</html>

+ 23 - 0
tools/regression/index.html

@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <meta http-equiv="refresh" content="0; URL=doc/index.html" />
+
+  <title></title>
+</head>
+
+<body>
+  Automatic redirection failed, please go to <a href=
+  "doc/index.html">doc/index.html</a>
+  <hr />
+
+  <p>Copyright Rene Rivera, 2007</p>
+
+  <p>Distributed under the Boost Software License, Version 1.0. (See
+  accompanying file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+  copy at <a href=
+  "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</p>
+</body>
+</html>

+ 0 - 45
tools/regression/index.shtml

@@ -1,45 +0,0 @@
-<!--
-Copyright Rene Rivera 2003-2004.
-
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-
-This is the page wrapper for the summary table of regression tests.
-This calls the script "regression-logs.pl" to generate the summary
-table. This file should be place at:
-    http://boost.sourceforge.net/regression-logs/index.shtml
-Which is at this location in the shell SourceForge services:
-    /home/groups/b/bo/boost/htdocs/regression-logs/index.shtml
-
-The regression-logs.pl script handles individual placement
-of the calling shtml file, so this file can be placed anywhere
-one wants a regression summary page, and has regression files
-in it.
--->
-<html>
-<head>
-<title>Boost Regression Tests</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000">
-<table border="0">
-<tr>
-<td><img border="0" src="../../boost.png" width="277" height="86"></td>
-<td><h1>Boost Regression Tests</h1></td>
-</tr>
-</table>
-
-<h3>Boost-wide reports</h3>
-<ul type="square">
-<li><a href="http://www.boost.org/regression-logs/developer">Developer report</a></li>
-<li><a href="http://www.boost.org/regression-logs/user">User report</a></li>
-<li><a href="http://www.boost.org/regression-logs/inspection_report.html">Inspection report</a></li>
-<li><a href="http://www.boost.org/regression-logs/license_report.html">License report</a></li>
-</ul>
-
-<h3>Reports by platform</h3>
-<!--#exec cmd="/usr/bin/perl /home/groups/b/bo/boost/cgi-bin/regression-logs.pl" -->
-
-</body>
-</html>

+ 0 - 166
tools/regression/library_status.html

@@ -1,166 +0,0 @@
-<html>
-
-<head>
-<meta http-equiv="Content-Language" content="en-us">
-<meta http-equiv="Content-Type"
-content="text/html; charset=iso-8859-1">
-<title>Libary Status</title>
-</head>
-
-<body bgcolor="#FFFFFF">
-
-<table border="0">
-<tr>
-<td><img border="0" src="../../boost.png" width="277" height="86" alt="boost.png (6897 bytes)"></td>
-<td><h1>Generating Library Status Tables</h1></td>
-</tr>
-</table>
-
-<h3>Purpose</h3>
-Any time one considers using a library as large and complex
-as the Boost libraries, he must have a way of validating
-the the library functions in his environment.  This should
-be done when the library is installed and anytime questions
-are raised regarding its applicabililty and/or its usage.
-<p>
-The procedures described here permit a user to run any
-combination of tests on any or all libraries and generate
-a set of convenient tables which show which libraries
-pass which tests under what conditions.
-<h3>Preliminaries</h3>
-Generating these tables requires a couple of utility programs:
-<code>process_jam_log</code> and <code>library_status</code>. 
-These can be built by moving to the directory <code>tools/regression/build</code>
-and invoking bjam. If all goes well these utility programs
-will be found in the directory <code>dist/bin</code>.  From
-there they should be moved to a place in the current
-path.
-<p>
-<h3>Running Tests for One Library</h3>
-
-<ol>
-    <li>Start from your command line environment.
-    <li>set the current directory to:../libs/&lt;library name&gt;/test
-    <li>Invoke one of the following:
-    <ul>
-        <li><code>../../../tools/regression/library_test (*nix)</code>.
-        <li><code>..\..\..\tools\regression\library_test (windows)</code>.
-    </ul>
-    <li>This will display short help message describing the how to set
-    the command line arguments for the compilers and variants you want to
-    appear in the final table.
-    <li>Setting these arguments requires rudimentary knowledge of bjam
-    usage. Hopefully, if you've arrived at this page you've gained the
-    required knowledge during the installation and library build process.
-    <li>Rerun the abve command with the argument set accordingly.
-    <li>When the command terminates, there should be a file named 
-    "library_status.html" in the current directory.
-    <li>Display this file with any web browser.
-</ol>
-There should appear a table similar to the following for the regex
-library.
-<p>
-<table border="1" cellspacing="0" cellpadding="5">
-<tr>
-<td rowspan="4">Test Name</td>
-<td align="center" colspan="4" >msvc-7.1</td>
-</tr><tr>
-<td align="center" colspan="2" >debug</td>
-<td align="center" colspan="2" >release</td>
-</tr><tr>
-<td align="center" >link-static</td>
-<td align="center" rowspan="2" >threading-multi</td>
-<td align="center" >link-static</td>
-<td align="center" rowspan="2" >threading-multi</td>
-</tr><tr>
-<td align="center" >threading-multi</td>
-<td align="center" >threading-multi</td>
-</tr><tr><td>bad_expression_test</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-bad_expression_test.test-msvc-7.1-debug-threading-multi"><i>Warn</i></a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-bad_expression_test.test-msvc-7.1-release-threading-multi"><i>Warn</i></a></td></tr>
-<tr><td>captures</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-captures-msvc-7.1-debug-threading-multi"><font color="#FF0000"><i>Fail</i></font></a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-captures-msvc-7.1-release-threading-multi"><font color="#FF0000"><i>Fail</i></font></a></td></tr>
-<tr><td>captures_test</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-captures_test.test-msvc-7.1-debug-threading-multi"><i>Warn</i></a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-captures_test.test-msvc-7.1-release-threading-multi"><i>Warn</i></a></td></tr>
-<tr><td>concept_check</a></td><td align="right"><i>Missing</i></td><td align="right">Pass</td><td align="right"><i>Missing</i></td><td align="right">Pass</td></tr>
-<tr><td>icu_concept_check</a></td><td align="right"><i>Missing</i></td><td align="right">Pass</td><td align="right"><i>Missing</i></td><td align="right">Pass</td></tr>
-<tr><td>object_cache_test</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-object_cache_test.test-msvc-7.1-debug-threading-multi"><i>Warn</i></a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-object_cache_test.test-msvc-7.1-release-threading-multi"><i>Warn</i></a></td></tr>
-<tr><td>posix_api_check</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-posix_api_check.test-msvc-7.1-debug-threading-multi"><i>Warn</i></a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-posix_api_check.test-msvc-7.1-release-threading-multi"><i>Warn</i></a></td></tr>
-<tr><td>posix_api_check_cpp</a></td><td align="right"><i>Missing</i></td><td align="right">Pass</td><td align="right"><i>Missing</i></td><td align="right">Pass</td></tr>
-<tr><td>recursion_test</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-recursion_test.test-msvc-7.1-debug-threading-multi"><i>Warn</i></a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-recursion_test.test-msvc-7.1-release-threading-multi"><i>Warn</i></a></td></tr>
-<tr><td>regex_config_info</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-regex_config_info.test-msvc-7.1-debug-threading-multi">Pass</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-regex_config_info.test-msvc-7.1-release-threading-multi">Pass</a></td></tr>
-<tr><td>regex_dll_config_info</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-regex_dll_config_info.test-msvc-7.1-debug-threading-multi">Pass</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-regex_dll_config_info.test-msvc-7.1-release-threading-multi">Pass</a></td></tr>
-<tr><td>regex_regress</a></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-regex_regress.test-msvc-7.1-debug-link-static-threading-multi">Pass</a><sup>*</sup></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-regex_regress.test-msvc-7.1-release-link-static-threading-multi">Pass</a><sup>*</sup></td><td align="right"><i>Missing</i></td></tr>
-<tr><td>regex_regress_dll</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-regex_regress_dll.test-msvc-7.1-debug-threading-multi">Pass</a><sup>*</sup></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-regex_regress_dll.test-msvc-7.1-release-threading-multi">Pass</a><sup>*</sup></td></tr>
-<tr><td>regex_regress_threaded</a></td><td align="right"><i>Missing</i></td><td align="right">Pass</td><td align="right"><i>Missing</i></td><td align="right">Pass</td></tr>
-<tr><td>static_mutex_test</a></td><td align="right"><i>Missing</i></td><td align="right">Pass</td><td align="right"><i>Missing</i></td><td align="right">Pass</td></tr>
-<tr><td>test_collate_info</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-test_collate_info.test-msvc-7.1-debug-threading-multi"><i>Warn</i></a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-test_collate_info.test-msvc-7.1-release-threading-multi"><i>Warn</i></a></td></tr>
-<tr><td>unicode_iterator_test</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-unicode_iterator_test.test-msvc-7.1-debug-threading-multi"><i>Warn</i></a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-unicode_iterator_test.test-msvc-7.1-release-threading-multi"><i>Warn</i></a></td></tr>
-<tr><td>wide_posix_api_check_c</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-wide_posix_api_check_c.test-msvc-7.1-debug-threading-multi"><i>Warn</i></a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-wide_posix_api_check_c.test-msvc-7.1-release-threading-multi"><i>Warn</i></a></td></tr>
-<tr><td>wide_posix_api_check_cpp</a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-wide_posix_api_check_cpp.test-msvc-7.1-debug-threading-multi"><i>Warn</i></a></td><td align="right"><i>Missing</i></td><td align="right"><a href="links.html#C:-Boost134-bin.v2-libs-regex-test-wide_posix_api_check_cpp.test-msvc-7.1-release-threading-multi"><i>Warn</i></a></td></tr>
-</table>
-<p>
-This table was generated by invoking the following command line:
-<p>
-<code>
-../../../tools/regression/library_test --toolset=msvc-7.1 variant=debug,release
-</code>
-<p>
-from within the .../libs/regex/test directory.
-<p>
-This table shows the regex test results for both debug and release
-versions of the library.  Also it displays the fact that one of the
-tests is run specifically with the static linking/multi-threading
-versions of the runtime libraries.  The cells marked "Missing" correspond
-to tests that were not run for some reason or another.  This is usually
-because the corresponding <code>Jamfile.v2</code> excludes this test
-for the given combination of compiler and build attributes. In this
-example, all tests were run with the same compiler.  If additional
-compilers were used, they would appear as more columns in the table.
-<p>
-The table above is just an illustration so the links don't actually
-point to anything.  In the table you generated, the links will
-display a page describing any errors, warnings or other available 
-information about the tests.  If the test passes, usually, there
-is no additional information and hence no link.
-<p>
-The tables are cumulative. That is, if you run one set of tests
-now and tests with different attributes later, the table will
-contain all the results to date.  The test results are stored
-in <code>../bin.v2/libs/test/&lt;library%gt;/...</code>.
-To reinitialize the test results to empty, delete the corresponding
-files in this directory.
-<p>
-The procedure above assumes that the table are generated within
-the directory <code>../libs/&lt;library&gt;/test</code>.  This is the
-most common case since this directory contains the
-<code>Jamfile.v2</code> as well as the source code that is
-used by official boost testers.  However, this is just a convention.
-The table can be generated for other directories within the
-libary.  One possiblity would be to generate the table for
-all the examples in <code>../libs/%lt;library%gt;/example</code>. Or
-one might have a special directory of performance tests which
-take a long time to run and hence are not suitable for running
-by official boost testers.  Just remember that library
-status table is generated in the directory from which the
-<code>library_test</code> command is invoked.
-<p>
-<h3>Running Tests for All Libraries</h3>
-For those with *nix or cygwin command line shells, there is shell
-script that can be run from the boost root directory:
-<p>
-<code> tools/regression/library_test_all</code>
-<p>
-The command line arguments are the same as for running the test
-for one library.  This script creates all the html files in all
-the test directories as well as an html page in the <code>status</code>
-directory named <code>library_status_summary.html</code>.  This
-can be used to browse through all test results for all test in
-all libraries.
-<hr>
-
-<p>
-Copyright 2007 Robert Ramey. Distributed under the Boost Software License, Version 1.0. 
-(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-<p>
-Revised <!--webbot bot="Timestamp" startspan s-type="EDITED"
-s-format="%d %B, %Y" -->14 August, 2007<!--webbot bot="Timestamp"
-i-checksum="38582" endspan --></p>
-</body>
-</html>

+ 0 - 1
tools/regression/test/test-cases/Huber2629/.cvsignore

@@ -1 +0,0 @@
-actual

+ 36 - 36
tools/regression/test/test-cases/Huber2629/bjam.log

@@ -1,36 +1,36 @@
-boost-test(RUN) "statechart/DllTestNative" : "libs/statechart/test/TuTestMain.cpp"
-boost-test(RUN) "statechart/DllTestNormal" : "libs/statechart/test/TuTestMain.cpp"
-
-compile-c-c++ ..\..\..\bin.v2\libs\statechart\test\DllTestNormal.test\msvc-7.1\debug\threading-multi\TuTestMain.obj
-TuTestMain.cpp
-c:\Users\Misha\Stuff\boost\HEAD\boost\libs\statechart\test\TuTest.hpp(36) : warning C4275: non dll-interface class 'boost::statechart::event_base' used as base for dll-interface class 'boost::statechart::detail::rtti_policy::rtti_derived_type<MostDerived,Base>'
-        with
-        [
-            MostDerived=EvX,
-            Base=boost::statechart::event_base
-        ]
-        ..\..\..\boost\statechart\event_base.hpp(49) : see declaration of 'boost::statechart::event_base'
-compile-c-c++ ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLibTuTest.obj
-TuTest.cpp
-c:\Users\Misha\Stuff\boost\HEAD\boost\libs\statechart\test\TuTest.hpp(36) : warning C4275: non dll-interface class 'boost::statechart::event_base' used as base for dll-interface class 'boost::statechart::detail::rtti_policy::rtti_derived_type<MostDerived,Base>'
-        with
-        [
-            MostDerived=EvX,
-            Base=boost::statechart::event_base
-        ]
-        ..\..\..\boost\statechart\event_base.hpp(49) : see declaration of 'boost::statechart::event_base'
-msvc.link.dll ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.lib
-   Creating library ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.lib and object ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.exp
-
-        call "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat"  >nul
-link /NOLOGO /INCREMENTAL:NO /DLL /DEBUG /subsystem:console /out:"..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll" /IMPLIB:"..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.lib"    @"..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll.rsp"
-        if %errorlevel% 1 exit %errorlevel%
-        if exist "..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll.manifest" (
-            mt -nologo -manifest "..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll.manifest" "-outputresource:..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll;2"
-        )
-    
-...failed msvc.link.dll ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.lib...
-...removing ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll
-...removing ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.lib
-...skipped <p..\..\..\bin.v2\libs\statechart\test\DllTestNormal.test\msvc-7.1\debug\threading-multi>DllTestNormal.exe for lack of <p..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi>DllTestNormalLib-vc71-mt-gd-1_35.lib...
-...skipped <p..\..\..\bin.v2\libs\statechart\test\DllTestNormal.test\msvc-7.1\debug\threading-multi>DllTestNormal.run for lack of <p..\..\..\bin.v2\libs\statechart\test\DllTestNormal.test\msvc-7.1\debug\threading-multi>DllTestNormal.exe...
+boost-test(RUN) "statechart/DllTestNative" : "libs/statechart/test/TuTestMain.cpp"
+boost-test(RUN) "statechart/DllTestNormal" : "libs/statechart/test/TuTestMain.cpp"
+
+compile-c-c++ ..\..\..\bin.v2\libs\statechart\test\DllTestNormal.test\msvc-7.1\debug\threading-multi\TuTestMain.obj
+TuTestMain.cpp
+c:\Users\Misha\Stuff\boost\HEAD\boost\libs\statechart\test\TuTest.hpp(36) : warning C4275: non dll-interface class 'boost::statechart::event_base' used as base for dll-interface class 'boost::statechart::detail::rtti_policy::rtti_derived_type<MostDerived,Base>'
+        with
+        [
+            MostDerived=EvX,
+            Base=boost::statechart::event_base
+        ]
+        ..\..\..\boost\statechart\event_base.hpp(49) : see declaration of 'boost::statechart::event_base'
+compile-c-c++ ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLibTuTest.obj
+TuTest.cpp
+c:\Users\Misha\Stuff\boost\HEAD\boost\libs\statechart\test\TuTest.hpp(36) : warning C4275: non dll-interface class 'boost::statechart::event_base' used as base for dll-interface class 'boost::statechart::detail::rtti_policy::rtti_derived_type<MostDerived,Base>'
+        with
+        [
+            MostDerived=EvX,
+            Base=boost::statechart::event_base
+        ]
+        ..\..\..\boost\statechart\event_base.hpp(49) : see declaration of 'boost::statechart::event_base'
+msvc.link.dll ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.lib
+   Creating library ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.lib and object ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.exp
+
+        call "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat"  >nul
+link /NOLOGO /INCREMENTAL:NO /DLL /DEBUG /subsystem:console /out:"..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll" /IMPLIB:"..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.lib"    @"..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll.rsp"
+        if %errorlevel% 1 exit %errorlevel%
+        if exist "..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll.manifest" (
+            mt -nologo -manifest "..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll.manifest" "-outputresource:..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll;2"
+        )
+    
+...failed msvc.link.dll ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.lib...
+...removing ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.dll
+...removing ..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi\DllTestNormalLib-vc71-mt-gd-1_35.lib
+...skipped <p..\..\..\bin.v2\libs\statechart\test\DllTestNormal.test\msvc-7.1\debug\threading-multi>DllTestNormal.exe for lack of <p..\..\..\bin.v2\libs\statechart\test\msvc-7.1\debug\threading-multi>DllTestNormalLib-vc71-mt-gd-1_35.lib...
+...skipped <p..\..\..\bin.v2\libs\statechart\test\DllTestNormal.test\msvc-7.1\debug\threading-multi>DllTestNormal.run for lack of <p..\..\..\bin.v2\libs\statechart\test\DllTestNormal.test\msvc-7.1\debug\threading-multi>DllTestNormal.exe...

+ 0 - 1
tools/regression/test/test-cases/general/.cvsignore

@@ -1 +0,0 @@
-actual

+ 0 - 2
tools/regression/xsl_reports/runner/__init__.py

@@ -1,2 +0,0 @@
-
-from collect_and_upload_logs import *

+ 0 - 500
tools/regression/xsl_reports/runner/collect_and_upload_logs.py

@@ -1,500 +0,0 @@
-
-# Copyright (c) MetaCommunications, Inc. 2003-2007
-#
-# Distributed under the Boost Software License, Version 1.0. 
-# (See accompanying file LICENSE_1_0.txt or copy at 
-# http://www.boost.org/LICENSE_1_0.txt)
-
-import xml.sax.saxutils
-import zipfile
-import ftplib
-import time
-import stat
-import xml.dom.minidom
-import xmlrpclib
-import httplib
-
-import os.path
-import string
-import sys
-
-
-def process_xml_file( input_file, output_file ):
-    utils.log( 'Processing test log "%s"' % input_file )
-    
-    f = open( input_file, 'r' )
-    xml = f.readlines()
-    f.close()
-    
-    for i in range( 0, len(xml)):
-        xml[i] = string.translate( xml[i], utils.char_translation_table )
-
-    output_file.writelines( xml )
-
-
-def process_test_log_files( output_file, dir, names ):
-    for file in names:
-        if os.path.basename( file ) == 'test_log.xml':
-            process_xml_file( os.path.join( dir, file ), output_file )
-
-
-def collect_test_logs( input_dirs, test_results_writer ):
-    __log__ = 1
-    utils.log( 'Collecting test logs ...' )
-    for input_dir in input_dirs:
-        utils.log( 'Walking directory "%s" ...' % input_dir )
-        os.path.walk( input_dir, process_test_log_files, test_results_writer )
-
-dart_status_from_result = {
-    'succeed': 'passed',
-    'fail': 'failed',
-    'note': 'passed',
-    '': 'notrun'
-    }
-
-dart_project = {
-    'trunk': 'Boost_HEAD',
-    '': 'Boost_HEAD'
-    }
-
-dart_track = {
-    'full': 'Nightly',
-    'incremental': 'Continuous',
-    '': 'Experimental'
-    }
-
-ascii_only_table = ""
-for i in range(0,256):
-    if chr(i) == '\n' or chr(i) == '\r':
-        ascii_only_table += chr(i)
-    elif i < 32 or i >= 0x80:
-        ascii_only_table += '?'
-    else:
-        ascii_only_table += chr(i)
-
-class xmlrpcProxyTransport(xmlrpclib.Transport):
-    def __init__(self, proxy):
-        self.proxy = proxy
-    def make_connection(self, host):
-        self.realhost = host
-        return httplib.HTTP(self.proxy)
-    def send_request(self, connection, handler, request_body):
-        connection.putrequest('POST','http://%s%s' % (self.realhost,handler))
-    def send_host(self, connection, host):
-        connection.putheader('Host',self.realhost)
-    
-
-def publish_test_logs(
-    input_dirs,
-    runner_id, tag, platform, comment_file, timestamp, user, source, run_type,
-    dart_server = None,
-    http_proxy = None,
-    **unused
-    ):
-    __log__ = 1
-    utils.log( 'Publishing test logs ...' )
-    dart_rpc = None
-    dart_dom = {}
-    
-    def _publish_test_log_files_ ( unused, dir, names ):
-        for file in names:
-            if os.path.basename( file ) == 'test_log.xml':
-                utils.log( 'Publishing test log "%s"' % os.path.join(dir,file) )
-                if dart_server:
-                    log_xml = open(os.path.join(dir,file)).read().translate(ascii_only_table)
-                    #~ utils.log( '--- XML:\n%s' % log_xml)
-                    #~ It seems possible to get an empty XML result file :-(
-                    if log_xml == "": continue
-                    log_dom = xml.dom.minidom.parseString(log_xml)
-                    test = {
-                        'library': log_dom.documentElement.getAttribute('library'),
-                        'test-name': log_dom.documentElement.getAttribute('test-name'),
-                        'toolset': log_dom.documentElement.getAttribute('toolset')
-                        }
-                    if not test['test-name'] or test['test-name'] == '':
-                        test['test-name'] = 'unknown'
-                    if not test['toolset'] or test['toolset'] == '':
-                        test['toolset'] = 'unknown'
-                    if not dart_dom.has_key(test['toolset']):
-                        dart_dom[test['toolset']] = xml.dom.minidom.parseString(
-'''<?xml version="1.0" encoding="UTF-8"?>
-<DartSubmission version="2.0" createdby="collect_and_upload_logs.py">
-    <Site>%(site)s</Site>
-    <BuildName>%(buildname)s</BuildName>
-    <Track>%(track)s</Track>
-    <DateTimeStamp>%(datetimestamp)s</DateTimeStamp>
-</DartSubmission>
-'''                         % {
-                                'site': runner_id,
-                                'buildname': "%s -- %s (%s)" % (platform,test['toolset'],run_type),
-                                'track': dart_track[run_type],
-                                'datetimestamp' : timestamp
-                            } )
-                    submission_dom = dart_dom[test['toolset']]
-                    for node in log_dom.documentElement.childNodes:
-                        if node.nodeType == xml.dom.Node.ELEMENT_NODE:
-                            if node.firstChild:
-                                log_data = xml.sax.saxutils.escape(node.firstChild.data)
-                            else:
-                                log_data = ''
-                            test_dom = xml.dom.minidom.parseString('''<?xml version="1.0" encoding="UTF-8"?>
-<Test>
-    <Name>.Test.Boost.%(tag)s.%(library)s.%(test-name)s.%(type)s</Name>
-    <Status>%(result)s</Status>
-    <Measurement name="Toolset" type="text/string">%(toolset)s</Measurement>
-    <Measurement name="Timestamp" type="text/string">%(timestamp)s</Measurement>
-    <Measurement name="Log" type="text/text">%(log)s</Measurement>
-</Test>
-    '''                         % {
-                                    'tag': tag,
-                                    'library': test['library'],
-                                    'test-name': test['test-name'],
-                                    'toolset': test['toolset'],
-                                    'type': node.nodeName,
-                                    'result': dart_status_from_result[node.getAttribute('result')],
-                                    'timestamp': node.getAttribute('timestamp'),
-                                    'log': log_data
-                                })
-                            submission_dom.documentElement.appendChild(
-                                test_dom.documentElement.cloneNode(1) )
-    
-    for input_dir in input_dirs:
-        utils.log( 'Walking directory "%s" ...' % input_dir )
-        os.path.walk( input_dir, _publish_test_log_files_, None )
-    if dart_server:
-        try:
-            rpc_transport = None
-            if http_proxy:
-                rpc_transport = xmlrpcProxyTransport(http_proxy)
-            dart_rpc = xmlrpclib.ServerProxy(
-                'http://%s/%s/Command/' % (dart_server,dart_project[tag]),
-                rpc_transport )
-            for dom in dart_dom.values():
-                #~ utils.log('Dart XML: %s' % dom.toxml('utf-8'))
-                dart_rpc.Submit.put(xmlrpclib.Binary(dom.toxml('utf-8')))
-        except Exception, e:
-            utils.log('Dart server error: %s' % e)
-
-
-def upload_to_ftp( tag, results_file, ftp_proxy, debug_level ):
-    ftp_site = 'fx.meta-comm.com'
-    site_path = '/boost-regression'
-    utils.log( 'Uploading log archive "%s" to ftp://%s%s/%s' % ( results_file, ftp_site, site_path, tag ) )
-    
-    if not ftp_proxy:
-        ftp = ftplib.FTP( ftp_site )
-        ftp.set_debuglevel( debug_level )
-        ftp.login()
-    else:
-        utils.log( '    Connecting through FTP proxy server "%s"' % ftp_proxy )
-        ftp = ftplib.FTP( ftp_proxy )
-        ftp.set_debuglevel( debug_level )
-        ftp.set_pasv (0) # turn off PASV mode
-        ftp.login( 'anonymous@%s' % ftp_site, 'anonymous@' )
-
-    ftp.cwd( site_path )
-    try:
-        ftp.cwd( tag )
-    except ftplib.error_perm:
-        for dir in tag.split( '/' ):
-            ftp.mkd( dir )
-            ftp.cwd( dir )
-
-    f = open( results_file, 'rb' )
-    ftp.storbinary( 'STOR %s' % os.path.basename( results_file ), f )
-    ftp.quit()
-
-
-def copy_comments( results_xml, comment_file ):
-    results_xml.startElement( 'comment', {} )
-
-    if os.path.exists( comment_file ):
-        utils.log( 'Reading comments file "%s"...' % comment_file )
-        f = open( comment_file, 'r' )
-        try:
-            results_xml.characters( f.read() )
-        finally:
-            f.close()    
-    else:
-        utils.log( 'Warning: comment file "%s" is not found.' % comment_file )
- 
-    results_xml.endElement( 'comment' )
-
-
-def compress_file( file_path, archive_path ):
-    utils.log( 'Compressing "%s"...' % file_path )
-
-    try:
-        z = zipfile.ZipFile( archive_path, 'w', zipfile.ZIP_DEFLATED )
-        z.write( file_path, os.path.basename( file_path ) )
-        z.close()
-        utils.log( 'Done writing "%s".'% archive_path )
-    except Exception, msg:
-        utils.log( 'Warning: Compressing falied (%s)' % msg )
-        utils.log( '         Trying to compress using a platform-specific tool...' )
-        try: import zip_cmd
-        except ImportError:
-            script_dir = os.path.dirname( os.path.abspath( sys.argv[0] ) )
-            utils.log( 'Could not find \'zip_cmd\' module in the script directory (%s).' % script_dir )
-            raise Exception( 'Compressing failed!' )
-        else:
-            if os.path.exists( archive_path ):
-                os.unlink( archive_path )
-                utils.log( 'Removing stale "%s".' % archive_path )
-                
-            zip_cmd.main( file_path, archive_path )
-            utils.log( 'Done compressing "%s".' % archive_path )
-
-
-def read_timestamp( file ):
-    if not os.path.exists( file ):
-        result = time.gmtime()
-        utils.log( 'Warning: timestamp file "%s" does not exist'% file )
-        utils.log( 'Using current UTC time (%s)' % result )
-        return result
-
-    return time.gmtime( os.stat( file ).st_mtime )
-
-
-def collect_logs( 
-          results_dir
-        , runner_id
-        , tag
-        , platform
-        , comment_file
-        , timestamp_file
-        , user
-        , source
-        , run_type
-        , dart_server = None
-        , http_proxy = None
-        , revision = ''
-        , **unused
-        ):
-    
-    timestamp = time.strftime( '%Y-%m-%dT%H:%M:%SZ', read_timestamp( timestamp_file ) )
-    
-    if dart_server:
-        publish_test_logs( [ results_dir ],
-            runner_id, tag, platform, comment_file, timestamp, user, source, run_type,
-            dart_server = dart_server,
-            http_proxy = http_proxy )
-    
-    results_file = os.path.join( results_dir, '%s.xml' % runner_id )
-    results_writer = open( results_file, 'w' )
-    utils.log( 'Collecting test logs into "%s"...' % results_file )
-        
-    results_xml = xml.sax.saxutils.XMLGenerator( results_writer )
-    results_xml.startDocument()
-    results_xml.startElement( 
-          'test-run'
-        , { 
-              'tag':        tag
-            , 'platform':   platform
-            , 'runner':     runner_id
-            , 'timestamp':  timestamp
-            , 'source':     source
-            , 'run-type':   run_type
-            , 'revision':   revision
-            }
-        )
-    
-    copy_comments( results_xml, comment_file )
-    collect_test_logs( [ results_dir ], results_writer )
-
-    results_xml.endElement( "test-run" )
-    results_xml.endDocument()
-    results_writer.close()
-    utils.log( 'Done writing "%s".' % results_file )
-
-    compress_file(
-          results_file
-        , os.path.join( results_dir,'%s.zip' % runner_id )
-        )
-
-
-def upload_logs(
-          results_dir
-        , runner_id
-        , tag
-        , user
-        , ftp_proxy
-        , debug_level
-        , send_bjam_log = False
-        , timestamp_file = None
-        , dart_server = None
-        , **unused
-        ):
-
-    logs_archive = os.path.join( results_dir, '%s.zip' % runner_id )
-    upload_to_ftp( tag, logs_archive, ftp_proxy, debug_level )
-    if send_bjam_log:
-        bjam_log_path = os.path.join( results_dir, 'bjam.log' )
-        if not timestamp_file:
-            timestamp_file = bjam_log_path
-
-        timestamp = time.strftime( '%Y-%m-%d-%H-%M-%S', read_timestamp( timestamp_file ) )
-        logs_archive = os.path.join( results_dir, '%s.%s.log.zip' % ( runner_id, timestamp ) )
-        compress_file( bjam_log_path, logs_archive )
-        upload_to_ftp( '%s/logs' % tag, logs_archive, ftp_proxy, debug_level )
-
-
-def collect_and_upload_logs( 
-          results_dir
-        , runner_id
-        , tag
-        , platform
-        , comment_file
-        , timestamp_file
-        , user
-        , source
-        , run_type
-        , revision = None
-        , ftp_proxy = None
-        , debug_level = 0
-        , send_bjam_log = False
-        , dart_server = None
-        , http_proxy = None
-        , **unused
-        ):
-    
-    collect_logs( 
-          results_dir
-        , runner_id
-        , tag
-        , platform
-        , comment_file
-        , timestamp_file
-        , user
-        , source
-        , run_type
-        , revision = revision
-        , dart_server = dart_server
-        , http_proxy = http_proxy
-        )
-    
-    upload_logs(
-          results_dir
-        , runner_id
-        , tag
-        , user
-        , ftp_proxy
-        , debug_level
-        , send_bjam_log
-        , timestamp_file
-        , dart_server = dart_server
-        )
-
-
-def accept_args( args ):
-    args_spec = [ 
-          'locate-root='
-        , 'runner='
-        , 'tag='
-        , 'platform='
-        , 'comment='
-        , 'timestamp='
-        , 'source='
-        , 'run-type='
-        , 'user='
-        , 'ftp-proxy='
-        , 'proxy='
-        , 'debug-level='
-        , 'send-bjam-log'
-        , 'help'
-        , 'dart-server='
-        , 'revision='
-        ]
-    
-    options = {
-          '--tag'           : 'trunk'
-        , '--platform'      : sys.platform
-        , '--comment'       : 'comment.html'
-        , '--timestamp'     : 'timestamp'
-        , '--user'          : None
-        , '--source'        : 'SVN'
-        , '--run-type'      : 'full'
-        , '--ftp-proxy'     : None
-        , '--proxy'         : None
-        , '--debug-level'   : 0
-        , '--dart-server'   : 'beta.boost.org:8081'
-        , '--revision'      : None
-        
-        }
-    
-    utils.accept_args( args_spec, args, options, usage )
-        
-    return {
-          'results_dir'     : options[ '--locate-root' ]
-        , 'runner_id'       : options[ '--runner' ]
-        , 'tag'             : options[ '--tag' ]
-        , 'platform'        : options[ '--platform']
-        , 'comment_file'    : options[ '--comment' ]
-        , 'timestamp_file'  : options[ '--timestamp' ]
-        , 'user'            : options[ '--user' ]
-        , 'source'          : options[ '--source' ]
-        , 'run_type'        : options[ '--run-type' ]
-        , 'ftp_proxy'       : options[ '--ftp-proxy' ]
-        , 'http_proxy'      : options[ '--proxy' ]
-        , 'debug_level'     : int(options[ '--debug-level' ])
-        , 'send_bjam_log'   : options.has_key( '--send-bjam-log' )
-        , 'dart_server'     : options[ '--dart-server' ]
-        , 'revision   '     : options[ '--revision' ]
-        }
-
-
-commands = {
-      'collect-and-upload'  : collect_and_upload_logs
-    , 'collect-logs'        : collect_logs
-    , 'upload-logs'         : upload_logs
-    }
-
-def usage():
-    print 'Usage: %s [command] [options]' % os.path.basename( sys.argv[0] )
-    print    '''
-Commands:
-\t%s
-
-Options:
-\t--locate-root   directory to to scan for "test_log.xml" files
-\t--runner        runner ID (e.g. "Metacomm")
-\t--timestamp     path to a file which modification time will be used 
-\t                as a timestamp of the run ("timestamp" by default)
-\t--comment       an HTML comment file to be inserted in the reports
-\t                ("comment.html" by default)
-\t--tag           the tag for the results ("trunk" by default)
-\t--user          SourceForge user name for a shell account (optional)
-\t--source        where Boost sources came from ("SVN" or "tarball";
-\t                "SVN" by default)
-\t--run-type      "incremental" or "full" ("full" by default)
-\t--send-bjam-log in addition to regular XML results, send in full bjam
-\t                log of the regression run
-\t--proxy         HTTP proxy server address and port (e.g.
-\t                'http://www.someproxy.com:3128', optional)
-\t--ftp-proxy     FTP proxy server (e.g. 'ftpproxy', optional)
-\t--debug-level   debugging level; controls the amount of debugging 
-\t                output printed; 0 by default (no debug output)
-\t--dart-server   The dart server to send results to.
-''' % '\n\t'.join( commands.keys() )
-
-    
-def main():
-    if len(sys.argv) > 1 and sys.argv[1] in commands:
-        command = sys.argv[1]
-        args = sys.argv[ 2: ]
-    else:
-        command = 'collect-and-upload'
-        args = sys.argv[ 1: ]
-    
-    commands[ command ]( **accept_args( args ) )
-
-
-if __name__ != '__main__':  import utils
-else:
-    # in absense of relative import...
-    xsl_path = os.path.abspath( os.path.dirname( sys.argv[ 0 ] ) )
-    while os.path.basename( xsl_path ) != 'xsl_reports': xsl_path = os.path.dirname( xsl_path )
-    sys.path.append( xsl_path )
-
-    import utils
-    main()

+ 0 - 229
tools/regression/xsl_reports/runner/default.css

@@ -1,229 +0,0 @@
-/*
-:Author: David Goodger
-:Contact: goodger@users.sourceforge.net
-:date: $Date$
-:version: $Revision$
-:copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-*/
-
-body {
-    background-color: #fffff5;
-}
-
-h2 {
-    text-decoration: underline;
-}
-
-.first {
-  margin-top: 0 }
-
-.last {
-  margin-bottom: 0 }
-
-a.toc-backref {
-  text-decoration: none ;
-  color: black }
-
-blockquote.epigraph {
-  margin: 2em 5em ; }
-
-dd {
-  margin-bottom: 0.5em }
-
-div.abstract {
-  margin: 2em 5em }
-
-div.abstract p.topic-title {
-  font-weight: bold ;
-  text-align: center }
-
-div.attention, div.caution, div.danger, div.error, div.hint,
-div.important, div.note, div.tip, div.warning, div.admonition {
-  margin: 2em ;
-  border: medium outset ;
-  padding: 1em }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title {
-  color: red ;
-  font-weight: bold ;
-  font-family: sans-serif }
-
-div.hint p.admonition-title, div.important p.admonition-title,
-div.note p.admonition-title, div.tip p.admonition-title,
-div.admonition p.admonition-title {
-  font-weight: bold ;
-  font-family: sans-serif }
-
-div.dedication {
-  margin: 2em 5em ;
-  text-align: center ;
-  font-style: italic }
-
-div.dedication p.topic-title {
-  font-weight: bold ;
-  font-style: normal }
-
-div.figure {
-  margin-left: 2em }
-
-div.sidebar {
-  margin-left: 1em ;
-  border: medium outset ;
-  padding: 0em 1em ;
-  background-color: #ffffee ;
-  width: 40% ;
-  float: right ;
-  clear: right }
-
-div.sidebar p.rubric {
-  font-family: sans-serif ;
-  font-size: medium }
-
-div.system-messages {
-  margin: 5em }
-
-div.system-messages h1 {
-  color: red }
-
-div.system-message {
-  border: medium outset ;
-  padding: 1em }
-
-div.system-message p.system-message-title {
-  color: red ;
-  font-weight: bold }
-
-div.topic {
-  margin: 2em }
-
-h1.title {
-  text-align: center }
-
-h2.subtitle {
-  text-align: center }
-
-ol.simple, ul.simple {
-  margin-bottom: 1em }
-
-ol.arabic {
-  list-style: decimal }
-
-ol.loweralpha {
-  list-style: lower-alpha }
-
-ol.upperalpha {
-  list-style: upper-alpha }
-
-ol.lowerroman {
-  list-style: lower-roman }
-
-ol.upperroman {
-  list-style: upper-roman }
-
-p.attribution {
-  text-align: right ;
-  margin-left: 50% }
-
-p.caption {
-  font-style: italic }
-
-p.credits {
-  font-style: italic ;
-  font-size: smaller }
-
-p.label {
-  white-space: nowrap }
-
-p.rubric {
-  font-weight: bold ;
-  font-size: larger ;
-  color: maroon ;
-  text-align: center }
-
-p.sidebar-title {
-  font-family: sans-serif ;
-  font-weight: bold ;
-  font-size: larger }
-
-p.sidebar-subtitle {
-  font-family: sans-serif ;
-  font-weight: bold }
-
-p.topic-title {
-  font-weight: bold }
-
-pre.address {
-  margin-bottom: 0 ;
-  margin-top: 0 ;
-  font-family: serif ;
-  font-size: 100% }
-
-pre.line-block {
-  font-family: serif ;
-  font-size: 100% }
-
-pre.literal-block, pre.doctest-block {
-  margin-left: 2em ;
-  margin-right: 2em ;
-  background-color: #eeeeee }
-
-span.classifier {
-  font-family: sans-serif ;
-  font-style: oblique }
-
-span.classifier-delimiter {
-  font-family: sans-serif ;
-  font-weight: bold }
-
-span.interpreted {
-  font-family: sans-serif }
-
-span.option {
-  white-space: nowrap }
-
-span.option-argument {
-  font-style: italic }
-
-span.pre {
-  white-space: pre }
-
-span.problematic {
-  color: red }
-
-table {
-  margin-top: 0.5em ;
-  margin-bottom: 0.5em }
-
-table.citation {
-  border-left: solid thin gray ;
-  padding-left: 0.5ex }
-
-table.docinfo {
-  margin: 2em 4em }
-
-table.footnote {
-  border-left: solid thin black ;
-  padding-left: 0.5ex }
-
-td, th {
-  padding-left: 0.5em ;
-  padding-right: 0.5em ;
-  vertical-align: top }
-
-th.docinfo-name, th.field-name {
-  font-weight: bold ;
-  text-align: left ;
-  white-space: nowrap }
-
-h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
-  font-size: 100% }
-
-tt {
-  background-color: #eeeeee }
-
-ul.auto-toc {
-  list-style-type: none }

+ 0 - 109
tools/regression/xsl_reports/runner/instructions.html

@@ -1,109 +0,0 @@
-<html>
-
-<head>
-<meta http-equiv="Content-Language" content="en-us">
-<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
-<meta name="ProgId" content="FrontPage.Editor.Document">
-<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
-<title>Running Boost Regression Tests</title>
-<link rel="stylesheet" type="text/css" href="../../../../doc/html/minimal.css">
-</head>
-
-<body>
-
-<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="831">
-  <tr>
-    <td width="277">
-<a href="../../../../index.htm">
-<img src="../../../../boost.png" alt="boost.png (6897 bytes)" align="middle" width="277" height="86" border="0"></a></td>
-    <td width="531" align="middle">
-    <font size="7">Running Boost Regression Tests</font>
-    </td>
-  </tr>
-</table>
-
-<h2>Requirements</h2>
-<ul>
-  <li>Python 2.3 or later.<br>
-&nbsp;</li>
-  <li>Subversion 1.4 or later.<br>
-&nbsp;</li>
-  <li>At least 5 gigabytes of disk space per compiler to be tested.</li>
-</ul>
-<h2>Step by step instructions</h2>
-<ol>
-  <li>Create a new directory for the branch you want to test.<br>
-&nbsp;</li>
-  <li>Download the
-  <a href="http://svn.boost.org/svn/boost/trunk/tools/regression/src/run.py">
-  run.py</a> script into that directory.<br>
-&nbsp;</li>
-  <li>Run &quot;<code>python run.py [options] [commands]</code>&quot;.</li>
-</ol>
-<dl>
-  <dd>
-  <pre>commands: cleanup, collect-logs, get-source, get-tools, patch,
-regression, setup, show-revision, test, test-clean, test-process,
-test-run, update-source, upload-logs
-
-options:
-   -h, --help            show this help message and exit
-   --runner=RUNNER       runner ID (e.g. 'Metacomm')
-   --comment=COMMENT     an HTML comment file to be inserted in the
-                         reports
-   --tag=TAG             the tag for the results
-   --toolsets=TOOLSETS   comma-separated list of toolsets to test with
-   --incremental         do incremental run (do not remove previous
-                         binaries)
-   --timeout=TIMEOUT     specifies the timeout, in minutes, for a single
-                         test run/compilation
-   --bjam-options=BJAM_OPTIONS
-                         options to pass to the regression test
-   --bjam-toolset=BJAM_TOOLSET
-                         bootstrap toolset for 'bjam' executable
-   --pjl-toolset=PJL_TOOLSET
-                         bootstrap toolset for 'process_jam_log'
-                         executable
-   --platform=PLATFORM
-   --user=USER           Boost SVN user ID
-   --local=LOCAL         the name of the boost tarball
-   --force-update=FORCE_UPDATE
-                         do an SVN update (if applicable) instead of a
-                         clean checkout, even when performing a full run
-   --have-source=HAVE_SOURCE
-                         do neither a tarball download nor an SVN update;
-                         used primarily for testing script changes
-   --proxy=PROXY         HTTP proxy server address and port
-                         (e.g.'<a rel="nofollow" href="http://www.someproxy.com:3128'" target="_top">http://www.someproxy.com:3128'</a>)
-   --ftp-proxy=FTP_PROXY
-                         FTP proxy server (e.g. 'ftpproxy')
-   --dart-server=DART_SERVER
-                         the dart server to send results to
-   --debug-level=DEBUG_LEVEL
-                         debugging level; controls the amount of
-                         debugging output printed
-   --send-bjam-log       send full bjam log of the regression run
-   --mail=MAIL           email address to send run notification to
-   --smtp-login=SMTP_LOGIN
-                         STMP server address/login information, in the
-                         following form:
-                         &lt;user&gt;:&lt;password&gt;@&lt;host&gt;[:&lt;port&gt;]
-   --skip-tests=SKIP_TESTS
-                         do not run bjam; used for testing script changes</pre>
-  </dd>
-</dl>
-<p>To test trunk use &quot;<code>--tag=trunk</code>&quot; (the default), and to test the 
-release use &quot;<code>--tag=branches/release</code>&quot;. Or substitute any Boost tree 
-of your choice.</p>
-
-<hr>
-
-<p>© Copyright Rene Rivera, 2007<br>
-Distributed under the Boost Software License, Version 1.0. See
-<a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a></p>
-
-<p>Revised 
-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%B %d, %Y" startspan -->November 14, 2007<!--webbot bot="Timestamp" endspan i-checksum="39589" --> </font>
-</p>
-
-</body>

+ 0 - 1043
tools/regression/xsl_reports/runner/regression.py

@@ -1,1043 +0,0 @@
-#!/usr/bin/python
-
-# Copyright (c) MetaCommunications, Inc. 2003-2007
-#
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or copy at
-# http://www.boost.org/LICENSE_1_0.txt)
-
-import urllib
-import tarfile
-import socket
-import time
-import getopt
-import glob
-import shutil
-import stat
-import os.path
-import os
-import platform
-import traceback
-import string
-import sys
-
-regression_root    = os.path.abspath( os.path.dirname( sys.argv[0] ) )
-regression_results = os.path.join( regression_root, 'results' )
-regression_log     = os.path.join( regression_results, 'bjam.log' )
-install_log        = os.path.join( regression_results, 'bjam_install.log' )
-boostbook_log      = os.path.join( regression_results, 'boostbook.log' )
-boostbook_archive_name = os.path.join( regression_results, 'boostbook.zip' )
-
-boost_root      = os.path.join( regression_root, 'boost' )
-xsl_reports_dir = os.path.join( boost_root, 'tools', 'regression', 'xsl_reports' )
-timestamp_path  = os.path.join( regression_root, 'timestamp' )
-
-svn_anonymous_command_line = 'svn %(command)s'
-svn_command_line           = 'svn --non-interactive --username=%(user)s %(command)s'
-
-
-bjam = {}
-process_jam_log = {}
-
-
-if sys.platform == 'win32':
-    bjam[ 'name' ] = 'bjam.exe'
-    bjam[ 'build_cmd' ] = lambda toolset, v2: bjam_build_script_cmd( 'build.bat %s' % toolset )
-    bjam[ 'is_supported_toolset' ] = lambda x: x in [ \
-        'borland', 'como', 'gcc', 'gcc-nocygwin', 'intel-win32', 'metrowerks', 'mingw', \
-        'msvc', 'vc7', 'vc8' \
-        ]
-    process_jam_log[ 'name' ] = 'process_jam_log.exe'
-
-    def default_toolset(v2):
-        if v2:
-            return 'msvc'
-        else:
-            return 'vc-7_1'
-
-    process_jam_log[ 'default_toolset' ] = default_toolset
-    patch_boost_name = 'patch_boost.bat'
-else:
-    bjam[ 'name' ] = 'bjam'
-    bjam[ 'build_cmd' ] = lambda toolset, v2: bjam_build_script_cmd( './build.sh %s' % toolset )
-    bjam[ 'is_supported_toolset' ] = lambda x: x in [ \
-        'acc', 'como', 'darwin', 'gcc', 'intel-linux', 'kcc', 'kylix', 'mipspro', \
-        'pathscale', 'pgi', 'qcc', 'sun', 'sunpro', 'tru64cxx', 'vacpp' \
-        ]
-    process_jam_log[ 'name' ] = 'process_jam_log'
-    process_jam_log[ 'default_toolset' ] = lambda x: 'gcc'
-    patch_boost_name = 'patch_boost'
-
-bjam[ 'default_toolset' ] = lambda x: ''
-bjam[ 'path' ] = os.path.join( regression_root, bjam[ 'name' ] )
-bjam[ 'source_dir' ] = os.path.join( boost_root, 'tools', 'jam', 'src' )
-bjam[ 'build_path_root' ] = lambda unused: bjam[ 'source_dir' ]
-
-process_jam_log[ 'path' ] = os.path.join( regression_root, process_jam_log[ 'name' ] )
-process_jam_log[ 'source_dir' ] = os.path.join( boost_root, 'tools', 'regression', 'build' )
-
-
-def process_jam_build_root(v2):
-    if v2:
-        return os.path.join(boost_root, 'dist', 'bin')
-    else:
-        return os.path.join(
-            boost_root, 'bin', 'boost', 'tools', 'regression', 'build'
-            , process_jam_log[ 'name' ])
-
-
-process_jam_log[ 'build_path_root' ] = process_jam_build_root
-
-process_jam_log[ 'build_cmd' ] = lambda toolset, v2: bjam_command( toolset, v2 )
-process_jam_log[ 'is_supported_toolset' ] = lambda x : True
-
-build_monitor_url = 'http://engineering.meta-comm.com/resources/build_monitor.zip'
-pskill_url = 'http://www.sysinternals.com/files/pskill.zip'
-
-utils = None
-
-
-def log( message ):
-    sys.stdout.flush()
-    sys.stderr.flush()
-    sys.stderr.write( '# %s\n' % message )
-    sys.stderr.flush()
-
-
-def platform_name():
-    # See http://article.gmane.org/gmane.comp.lib.boost.testing/933
-    if sys.platform == 'win32':
-        return 'Windows'
-    elif sys.platform == 'cygwin':
-        return 'Windows/Cygwin'
-
-    return platform.system()
-
-
-def rmtree( path ):
-    if os.path.exists( path ):
-        if sys.platform == 'win32':
-            os.system( 'del /f /s /q "%s" >nul 2>&1' % path )
-            shutil.rmtree( unicode( path ) )
-        else:
-            os.system( 'rm -f -r "%s"' % path )
-
-
-def retry( f, args, max_attempts=5, sleep_secs=10 ):
-    for attempts in range( max_attempts, -1, -1 ):
-        try:
-            return f( *args )
-        except Exception, msg:
-            log( '%s failed with message "%s"' % ( f.__name__, msg ) )
-            if attempts == 0:
-                log( 'Giving up.' )
-                raise
-
-            log( 'Retrying (%d more attempts).' % attempts )
-            time.sleep( sleep_secs )
-
-
-def cleanup( args, **unused ):
-    if args == []: args = [ 'source', 'bin' ]
-
-    if 'source' in args:
-        log( 'Cleaning up "%s" directory ...' % boost_root )
-        rmtree( boost_root )
-
-    if 'bin' in args:
-        boost_bin_dir = os.path.join( boost_root, 'bin' )
-        log( 'Cleaning up "%s" directory ...' % boost_bin_dir )
-        rmtree( boost_bin_dir )
-
-        boost_binv2_dir = os.path.join( boost_root, 'bin.v2' )
-        log( 'Cleaning up "%s" directory ...' % boost_binv2_dir )
-        rmtree( boost_binv2_dir )
-
-        log( 'Cleaning up "%s" directory ...' % regression_results )
-        rmtree( regression_results )
-
-
-def http_get( source_url, destination, proxy ):
-    if proxy is None: proxies = None
-    else:             proxies = { 'http' : proxy }
-
-    src = urllib.urlopen( source_url, proxies = proxies )
-
-    f = open( destination, 'wb' )
-    while True:
-        data = src.read( 16*1024 )
-        if len( data ) == 0: break
-        f.write( data )
-
-    f.close()
-    src.close()
-
-
-def tarball_name_for_tag( tag, timestamp = False ):
-    tag = tag.split( '/' )[-1]
-    if not timestamp: return 'boost-%s.tar.bz2' % tag
-    else:             return 'boost-%s.timestamp' % tag
-
-
-def download_boost_tarball( destination, tag, proxy, timestamp_only = False ):
-    tarball_name = tarball_name_for_tag( tag, timestamp_only )
-    tarball_path = os.path.join( destination, tarball_name )
-    tarball_url = 'http://beta.boost.org/development/snapshot.php/%s' % tag
-
-    log( 'Downloading "%s" to "%s"...'  % ( tarball_url, os.path.dirname( tarball_path ) ) )
-    if os.path.exists( tarball_path ):
-        os.unlink( tarball_path )
-
-    http_get(
-          tarball_url
-        , tarball_path
-        , proxy
-        )
-
-    return tarball_path
-
-
-def find_boost_dirs( path ):
-    return [ x for x in glob.glob( os.path.join( path, 'boost[-_]*' ) )
-                        if os.path.isdir( x ) ]
-
-
-def unpack_tarball( tarball_path, destination  ):
-    log( 'Looking for old unpacked archives...' )
-    old_boost_dirs = find_boost_dirs( destination )
-
-    for old_boost_dir in old_boost_dirs:
-        if old_boost_dir != tarball_path:
-            log( 'Deleting old directory %s.' % old_boost_dir )
-            rmtree( old_boost_dir )
-
-    log( 'Unpacking boost tarball ("%s")...' % tarball_path )
-
-    tarball_name = os.path.basename( tarball_path )
-    extension = tarball_name[ tarball_name.find( '.' ) : ]
-
-    if extension in ( ".tar.gz", ".tar.bz2" ):
-        mode = os.path.splitext( extension )[1][1:]
-        tar = tarfile.open( tarball_path, 'r:%s' % mode )
-        for tarinfo in tar:
-            tar.extract( tarinfo, destination )
-            if sys.platform == 'win32' and not tarinfo.isdir():
-                # workaround what appears to be a Win32-specific bug in 'tarfile'
-                # (modification times for extracted files are not set properly)
-                f = os.path.join( destination, tarinfo.name )
-                os.chmod( f, stat.S_IWRITE )
-                os.utime( f, ( tarinfo.mtime, tarinfo.mtime ) )
-        tar.close()
-    elif extension in ( ".zip" ):
-        import zipfile
-
-        z = zipfile.ZipFile( tarball_path, 'r', zipfile.ZIP_DEFLATED )
-        for f in z.infolist():
-            destination_file_path = os.path.join( destination, f.filename )
-            if destination_file_path[-1] == "/": # directory
-                if not os.path.exists( destination_file_path  ):
-                    os.makedirs( destination_file_path  )
-            else: # file
-                result = open( destination_file_path, 'wb' )
-                result.write( z.read( f.filename ) )
-                result.close()
-        z.close()
-    else:
-        raise 'Do not know how to unpack archives with extension \"%s\"' % extension
-
-    boost_dir = find_boost_dirs( destination )[0]
-    log( '    Unpacked into directory "%s"' % boost_dir )
-
-    if os.path.exists( boost_root ):
-        log( 'Deleting "%s" directory...' % boost_root )
-        rmtree( boost_root )
-
-    log( 'Renaming "%s" into "%s"' % ( boost_dir, boost_root ) )
-    os.rename( boost_dir, boost_root )
-
-
-def svn_command( user, command ):
-    if user is None or user == 'anonymous':
-        cmd = svn_anonymous_command_line % { 'command': command }
-    else:
-        cmd = svn_command_line % { 'user': user, 'command': command }
-
-    log( 'Executing SVN command "%s"' % cmd )
-    rc = os.system( cmd )
-    if rc != 0:
-        raise Exception( 'SVN command "%s" failed with code %d' % ( cmd, rc ) )
-
-
-def svn_repository_url( user, tag ):
-    if user != 'anonymous': return 'https://svn.boost.org/svn/boost/%s' % tag
-    else:                   return 'http://svn.boost.org/svn/boost/%s' % tag
-
-
-def svn_checkout( user, tag, args ):
-    command = 'co %s boost' % svn_repository_url( user, tag )
-    os.chdir( regression_root )
-    svn_command( user, command )
-
-
-def svn_update( user, tag, args ):
-    os.chdir( boost_root )
-    svn_command( user, 'update' )
-
-
-def format_time( t ):
-    return time.strftime(
-          '%a, %d %b %Y %H:%M:%S +0000'
-        , t
-        )
-
-
-def refresh_timestamp():
-    if os.path.exists( timestamp_path ):
-       os. unlink( timestamp_path )
-
-    open( timestamp_path, 'w' ).close()
-
-
-def timestamp():
-    return time.strftime(
-          '%Y-%m-%dT%H:%M:%SZ'
-        , time.gmtime( os.stat( timestamp_path ).st_mtime )
-        )
-
-
-def get_tarball( tag, proxy, args, **unused ):
-    if args == []: args = [ 'download', 'unpack' ]
-
-    tarball_path = None
-
-    if 'download' in args:
-        tarball_path = download_boost_tarball( regression_root, tag, proxy )
-
-    if 'unpack' in args:
-        if not tarball_path:
-            tarball_path = os.path.join( regression_root, tarball_name_for_tag( tag ) )
-        unpack_tarball( tarball_path, regression_root )
-
-
-def get_source( user, tag, proxy, args, **unused ):
-    refresh_timestamp()
-    log( 'Getting sources (%s)...' % timestamp() )
-
-    if user is not None:
-        retry(
-              svn_checkout
-            , ( user, tag, args )
-            )
-    else:
-        retry(
-              get_tarball
-            , ( tag, proxy, args )
-            )
-
-
-def update_source( user, tag, proxy, args, **unused ):
-    if user is not None or os.path.exists( os.path.join( boost_root, '.svn' ) ):
-        open( timestamp_path, 'w' ).close()
-        log( 'Updating sources from SVN (%s)...' % timestamp() )
-        retry(
-              svn_update
-            , ( user, tag, args )
-            )
-    else:
-        get_source( user, tag, proxy, args )
-
-
-def tool_path( name_or_spec, v2=None ):
-    if isinstance( name_or_spec, basestring ):
-        return os.path.join( regression_root, name_or_spec )
-
-    if os.path.exists( name_or_spec[ 'path' ] ):
-        return name_or_spec[ 'path' ]
-
-    if name_or_spec.has_key( 'build_path' ):
-        return name_or_spec[ 'build_path' ]
-
-    build_path_root = name_or_spec[ 'build_path_root' ]( v2 )
-    log( 'Searching for "%s" in "%s"...' % ( name_or_spec[ 'name' ], build_path_root ) )
-    for root, dirs, files in os.walk( build_path_root ):
-        if name_or_spec[ 'name' ] in files:
-            return os.path.join( root, name_or_spec[ 'name' ] )
-
-    raise Exception( 'Cannot find "%s" in any of the following locations:\n%s' % (
-          name_or_spec[ 'name' ]
-        , '\n'.join( [ name_or_spec[ 'path' ], build_path_root ] )
-        ) )
-
-
-def build_if_needed( tool, toolset, toolsets, v2 ):
-    if os.path.exists( tool[ 'path' ] ):
-        log( 'Found preinstalled "%s"; will use it.' % tool[ 'path' ] )
-        return
-
-    log( 'Preinstalled "%s" is not found; building one...' % tool[ 'path' ] )
-
-    if toolset is None:
-        if toolsets is not None:
-            toolset = string.split( toolsets, ',' )[0]
-            if not tool[ 'is_supported_toolset' ]( toolset ):
-                log( 'Warning: Specified toolset (%s) cannot be used to bootstrap "%s".'\
-                     % ( toolset, tool[ 'name' ] ) )
-
-                toolset = tool[ 'default_toolset' ](v2)
-                log( '         Using default toolset for the platform (%s).' % toolset )
-        else:
-            toolset = tool[ 'default_toolset' ](v2)
-            log( 'Warning: No bootstrap toolset for "%s" was specified.' % tool[ 'name' ] )
-            log( '         Using default toolset for the platform (%s).' % toolset )
-
-    if os.path.exists( tool[ 'source_dir' ] ):
-        log( 'Found "%s" source directory "%s"' % ( tool[ 'name' ], tool[ 'source_dir' ] ) )
-        build_cmd = tool[ 'build_cmd' ]( toolset, v2 )
-        log( 'Building "%s" (%s)...' % ( tool[ 'name'], build_cmd ) )
-        utils.system( [
-              'cd "%s"' % tool[ 'source_dir' ]
-            , build_cmd
-            ] )
-    else:
-        raise 'Could not find "%s" source directory "%s"' % ( tool[ 'name' ], tool[ 'source_dir' ] )
-
-    if not tool.has_key( 'build_path' ):
-        tool[ 'build_path' ] = tool_path( tool, v2 )
-
-    if not os.path.exists( tool[ 'build_path' ] ):
-        raise 'Failed to find "%s" after build.' % tool[ 'build_path' ]
-
-    log( '%s succesfully built in "%s" location' % ( tool[ 'name' ], tool[ 'build_path' ] ) )
-
-
-def import_utils():
-    global utils
-    if utils is None:
-        sys.path.append( xsl_reports_dir )
-        import utils as utils_module
-        utils = utils_module
-
-
-def download_if_needed( tool_name, tool_url, proxy ):
-    path = tool_path( tool_name )
-    if not os.path.exists( path ):
-        log( 'Preinstalled "%s" is not found.' % path )
-        log( '  Downloading from %s...' % tool_url )
-
-        zip_path = '%s.zip' % os.path.splitext( path )[0]
-        http_get( tool_url, zip_path, proxy )
-
-        log( '  Unzipping %s...' % path )
-        utils.unzip( zip_path, os.path.dirname( path ) )
-
-        log( '  Removing %s...' % zip_path )
-        os.unlink( zip_path )
-        log( 'Done.' )
-
-
-def setup(
-          comment
-        , toolsets
-        , book
-        , bjam_toolset
-        , pjl_toolset
-        , monitored
-        , proxy
-        , v2
-        , args
-        , **unused
-        ):
-    import_utils()
-
-    patch_boost_path = os.path.join( regression_root, patch_boost_name )
-    if os.path.exists( patch_boost_path ):
-        log( 'Found patch file "%s". Executing it.' % patch_boost_path )
-        os.chdir( regression_root )
-        utils.system( [ patch_boost_path ] )
-
-    build_if_needed( bjam, bjam_toolset, toolsets, v2 )
-    build_if_needed( process_jam_log, pjl_toolset, toolsets, v2 )
-
-    if monitored:
-        if sys.platform == 'win32':
-            download_if_needed( 'build_monitor.exe', build_monitor_url, proxy )
-            download_if_needed( 'pskill.exe', pskill_url, proxy )
-        else:
-            log( 'Warning: Test monitoring is not supported on this platform (yet).'     )
-            log( '         Please consider contributing this piece!' )
-
-
-def bjam_build_script_cmd( cmd ):
-    env_setup_key = 'BJAM_ENVIRONMENT_SETUP'
-    if os.environ.has_key( env_setup_key ):
-        return '%s & %s' % ( os.environ[env_setup_key], cmd )
-
-    return cmd
-
-
-def bjam_command( toolsets, v2 ):
-    build_path = regression_root
-    if build_path[-1] == '\\': build_path += '\\'
-
-    v2_option = ""
-    if v2:
-        v2_option = "--v2"
-
-    result = '"%s" %s "-sBOOST_BUILD_PATH=%s" "-sBOOST_ROOT=%s"'\
-        % (
-            tool_path( bjam, v2 )
-          , v2_option
-          , build_path
-          , boost_root
-          )
-
-    if toolsets:
-        if v2:
-            result += ' ' + string.join(string.split( toolsets, ',' ), ' ' )
-        else:
-            result += ' "-sTOOLS=%s"' % string.join( string.split( toolsets, ',' ), ' ' )
-
-    return result
-
-
-def install( toolsets, v2, **unused ):
-    import_utils()
-    os.chdir( os.path.join( boost_root ) )
-
-    log( 'Making "%s" directory...' % regression_results )
-    utils.makedirs( regression_results )
-
-    install_cmd = '%s -d2 install >>%s 2>&1' % ( bjam_command( toolsets, v2 ), install_log )
-    log( 'Installing libraries (%s)...' % install_cmd )
-    utils.system( [ install_cmd ] )
-
-
-def start_build_monitor( timeout ):
-    if sys.platform == 'win32':
-        build_monitor_path = tool_path( 'build_monitor.exe' )
-        if os.path.exists( build_monitor_path ):
-            utils.system( [ 'start /belownormal "" "%s" bjam.exe %d' % ( build_monitor_path, timeout*60 ) ] )
-        else:
-            log( 'Warning: Build monitor is not found at "%s"' % build_monitor_path )
-
-
-def stop_build_monitor():
-    if sys.platform == 'win32':
-        build_monitor_path = tool_path( 'build_monitor.exe' )
-        if os.path.exists( build_monitor_path ):
-            utils.system( [ '"%s" build_monitor' %  tool_path( 'pskill.exe' ) ] )
-
-
-def run_process_jam_log(v2):
-    log( 'Getting test case results out of "%s"...' % regression_log )
-
-    if v2:
-        v2 = "--v2"
-    else:
-        v2 = ""
-
-    utils.checked_system( [
-        '"%s" %s "%s" <"%s"' % (
-              tool_path( process_jam_log, v2 )
-            , v2
-            , regression_results
-            , regression_log
-            )
-        ] )
-
-
-def test(
-          toolsets
-        , bjam_options
-        , monitored
-        , timeout
-        , v2
-        , args
-        , **unused
-        ):
-    if args == []:
-        args = [ "test", "process" ]
-
-    import_utils()
-
-    try:
-        if monitored:
-            start_build_monitor( timeout )
-
-        cd = os.getcwd()
-        os.chdir( os.path.join( boost_root, 'status' ) )
-
-        log( 'Making "%s" directory...' % regression_results )
-        utils.makedirs( regression_results )
-
-        results_libs = os.path.join( regression_results, 'libs' )
-        results_status = os.path.join( regression_results, 'status' )
-
-        if "clean" in args:
-            rmtree( results_libs )
-            rmtree( results_status )
-
-        build_dir_option = "-sALL_LOCATE_TARGET"
-        if v2:
-            build_dir_option = "--build-dir"
-
-        if "test" in args:
-            test_cmd = '%s -d2 --dump-tests %s "%s=%s" >>"%s" 2>&1' % (
-                  bjam_command( toolsets, v2 )
-                , bjam_options
-                , build_dir_option
-                , regression_results
-                , regression_log
-                )
-
-            log( 'Starting tests (%s)...' % test_cmd )
-            utils.system( [ test_cmd ] )
-
-        if "process" in args:
-            run_process_jam_log(v2)
-
-        os.chdir( cd )
-    finally:
-        if monitored:
-            stop_build_monitor()
-
-
-def build_book( **kargs ):
-    # To do
-    # 1. PDF generation
-    # 2. Do we need to cleanup before the build?
-    # 3. Incremental builds
-    if not os.path.exists( regression_results ):
-        os.makedirs( regression_results )
-    import_utils()
-    cwd = os.getcwd()
-    try:
-        os.chdir( os.path.join( boost_root, 'doc' ) )
-        if os.path.exists( boostbook_log ):
-            os.unlink( boostbook_log )
-        utils.system( [ '%s --v2 html >>%s 2>&1' % ( tool_path( bjam, v2=True ), boostbook_log ) ] )
-        # utils.system( [ '%s --v2 pdf >>%s 2>&1' % ( tool_path( bjam, v2=True ), boostbook_log ) ] )
-    finally:
-        os.chdir( cwd )
-
-def collect_logs(
-          tag
-        , runner
-        , platform
-        , user
-        , comment
-        , incremental
-        , dart_server
-        , ftp_proxy
-        , args
-        , **unused
-        ):
-    import_utils()
-
-    if comment is None:
-        comment = 'comment.html'
-
-    comment_path = os.path.join( regression_root, comment )
-    if not os.path.exists( comment_path ):
-        log( 'Comment file "%s" not found; creating default comment.' % comment_path )
-        f = open( comment_path, 'w' )
-        f.write( '<p>Tests are run on %s platform.</p>' % platform_name() )
-        f.close()
-
-    run_type = ''
-    if incremental: run_type = 'incremental'
-    else:           run_type = 'full'
-
-    source = 'tarball'
-    revision = ''
-    svn_root_file = os.path.join( boost_root, '.svn' )
-    svn_info_file = os.path.join( boost_root, 'svn_info.txt' )
-    if os.path.exists( svn_root_file ):
-        source = 'SVN'
-        svn_command( 'user', 'info --xml ' + boost_root + ' >' + svn_info_file )
-
-    if os.path.exists( svn_info_file ):
-        f = open( svn_info_file, 'r' )
-        svn_info = f.read()
-        f.close()
-        i = svn_info.find( 'Revision:' )
-        if i < 0: i = svn_info.find( 'revision=' )  # --xml format
-        if i >= 0:
-            i += 10
-            while svn_info[i] >= '0' and svn_info[i] <= '9':
-              revision += svn_info[i]
-              i += 1
-      
-      
-    from runner import collect_logs
-    collect_logs(
-          regression_results
-        , runner
-        , tag
-        , platform
-        , comment_path
-        , timestamp_path
-        , user
-        , source
-        , run_type
-        , dart_server
-        , ftp_proxy
-        , revision
-        )
-
-
-def collect_book( **unused ):
-    log( 'Collecting files for BoostBook into "%s"...' % boostbook_archive_name )
-    import zipfile
-    boostbook_archive = zipfile.ZipFile( boostbook_archive_name, 'w', zipfile.ZIP_DEFLATED )
-    html_root = os.path.join( boost_root, 'doc/html' )
-
-    boostbook_archive.writestr( 'timestamp', timestamp())
-    boostbook_archive.write( boostbook_log, os.path.basename( boostbook_log ) )
-    
-    def add_files( arg, dirname, names ):
-        for name in names:
-            path = os.path.join( dirname, name )
-            if not os.path.isdir( path ):
-                boostbook_archive.write( path, path[ len( html_root ) + 1: ] )
-
-    os.path.walk( html_root, add_files, None ) 
-    
-
-def upload_logs(
-          tag
-        , runner
-        , user
-        , ftp_proxy
-        , debug_level
-        , send_bjam_log
-        , dart_server
-        , **unused
-        ):
-    import_utils()
-    from runner import upload_logs
-    retry(
-          upload_logs
-        , ( regression_results, runner, tag, user, ftp_proxy, debug_level,
-            send_bjam_log, timestamp_path, dart_server )
-        )
-
-
-def upload_book( tag, runner, ftp_proxy, debug_level, **unused ):
-    import_utils()
-    from runner import upload_to_ftp
-    upload_to_ftp( tag, boostbook_archive_name, ftp_proxy, debug_level )
-
-
-def update_itself( tag, **unused ):
-    source = os.path.join( xsl_reports_dir, 'runner', os.path.basename( sys.argv[0] ) )
-    self = os.path.join( regression_root, os.path.basename( sys.argv[0] ) )
-    
-    # Through revision 38985, the update copy was not done if
-    # os.stat(self).st_mtime > os.stat(source).st_mtime. This was not
-    # reliable on all systems, so the copy is now done unconditionally.
-    log( '    Saving a backup copy of the current script...' )
-    os.chmod( self, stat.S_IWRITE ) # Win32 workaround
-    shutil.move( self, '%s~' % self )
-    log( 'Updating %s from %s...' % ( self, source )  )
-    shutil.copy2( source, self )
-
-
-def send_mail( smtp_login, mail, subject, msg = '', debug_level = 0 ):
-    import smtplib
-    if not smtp_login:
-        server_name = 'mail.%s' % mail.split( '@' )[-1]
-        user_name = None
-        password = None
-    else:
-        server_name = smtp_login.split( '@' )[-1]
-        ( user_name, password ) = string.split( smtp_login.split( '@' )[0], ':' )
-
-    log( '    Sending mail through "%s"...' % server_name )
-    smtp_server = smtplib.SMTP( server_name )
-    smtp_server.set_debuglevel( debug_level )
-    if user_name:
-        smtp_server.login( user_name, password )
-
-    smtp_server.sendmail(
-          mail
-        , [ mail ]
-        , 'Subject: %s\nTo: %s\n\n%s' % ( subject, mail, msg )
-        )
-
-
-def regression(
-          tag
-        , local
-        , runner
-        , platform
-        , user
-        , comment
-        , toolsets
-        , book
-        , bjam_options
-        , bjam_toolset
-        , pjl_toolset
-        , incremental
-        , send_bjam_log
-        , force_update
-        , have_source
-        , skip_tests
-        , monitored
-        , timeout
-        , mail = None
-        , smtp_login = None
-        , proxy = None
-        , ftp_proxy = None
-        , debug_level = 0
-        , v2 = 1
-        , dart_server = None
-        , args = []
-        ):
-
-    try:
-        mail_subject = 'Boost regression for %s on %s' % ( tag, string.split(socket.gethostname(), '.')[0] )
-        start_time = time.localtime()
-        if mail:
-            log( 'Sending start notification to "%s"' % mail )
-            send_mail(
-                  smtp_login
-                , mail
-                , '%s started at %s.' % ( mail_subject, format_time( start_time ) )
-                , debug_level = debug_level
-                )
-
-        if local is not None:
-            log( 'Using local file "%s"' % local )
-
-            b = os.path.basename( local )
-            tag = b[ 0: b.find( '.' ) ]
-            log( 'Tag: "%s"' % tag  )
-
-            unpack_tarball( local, regression_root )
-        elif have_source:
-            if not incremental: cleanup( [ 'bin' ] )
-        else:
-            if incremental or force_update:
-                if not incremental: cleanup( [ 'bin' ] )
-                update_source( user, tag, proxy, [] )
-            else:
-                cleanup( [] )
-                get_source( user, tag, proxy, [] )
-
-        setup( comment, toolsets, book, bjam_toolset, pjl_toolset, monitored, proxy,
-               v2, [] )
-
-        # Not specifying --toolset in command line is not enough
-        # that would mean to use Boost.Build default ones
-        # We can skip test only we were explictly 
-        # told to have no toolsets in command line "--toolset="
-        if toolsets != '': # --toolset=,
-            if not skip_tests: test( toolsets, bjam_options, monitored, timeout, v2, [] )
-            collect_logs( tag, runner, platform, user, comment, incremental, dart_server, proxy, [] )
-            upload_logs( tag, runner, user, ftp_proxy, debug_level, send_bjam_log, dart_server )
-
-        if book:
-            build_book()
-            collect_book()
-            upload_book( tag, runner, ftp_proxy, debug_level )
-
-        update_itself( tag )
-
-        if mail:
-            log( 'Sending report to "%s"' % mail )
-            end_time = time.localtime()
-            send_mail(
-                  smtp_login
-                , mail
-                , '%s completed successfully at %s.' % ( mail_subject, format_time( end_time ) )
-                , debug_level = debug_level
-                )
-    except:
-        if mail:
-            log( 'Sending report to "%s"' % mail )
-            traceback_ = '\n'.join( apply( traceback.format_exception, sys.exc_info() ) )
-            end_time = time.localtime()
-            send_mail(
-                  smtp_login
-                , mail
-                , '%s failed at %s.' % ( mail_subject, format_time( end_time ) )
-                , traceback_
-                , debug_level
-                )
-        raise
-
-
-def show_revision( **unused ):
-    modified = '$Date$'
-    revision = '$Revision$'
-
-    import re
-    re_keyword_value = re.compile( r'^\$\w+:\s+(.*)\s+\$$' )
-    print '\n\tRevision: %s' % re_keyword_value.match( revision ).group( 1 )
-    print '\tLast modified on: %s\n' % re_keyword_value.match( modified ).group( 1 )
-
-
-def accept_args( args ):
-    args_spec = [
-          'tag='
-        , 'local='
-        , 'runner='
-        , 'platform='
-        , 'user='
-        , 'comment='
-        , 'toolsets='
-        , 'book'
-        , 'bjam-options='
-        , 'bjam-toolset='
-        , 'pjl-toolset='
-        , 'timeout='
-        , 'mail='
-        , 'smtp-login='
-        , 'proxy='
-        , 'ftp-proxy='
-        , 'debug-level='
-        , 'incremental'
-        , 'force-update'
-        , 'have-source'
-        , 'skip-tests'
-        , 'dont-send-bjam-log'
-        , 'monitored'
-        , 'help'
-        , 'v2'
-        , 'v1'
-        , 'dart-server='
-        ]
-
-    options = {
-          '--tag'           : 'trunk'
-        , '--local'         : None
-        , '--platform'      : platform_name()
-        , '--user'          : None
-        , '--comment'       : None
-        , '--toolsets'      : None
-        , '--book'          : False
-        , '--bjam-options'  : ''
-        , '--bjam-toolset'  : None
-        , '--pjl-toolset'   : None
-        , '--timeout'       : 5
-        , '--mail'          : None
-        , '--smtp-login'    : None
-        , '--proxy'         : None
-        , '--debug-level'   : 0
-        , '--ftp-proxy'     : None
-        , '--dart-server'   : 'beta.boost.org:8081'
-        }
-
-    ( option_pairs, other_args ) = getopt.getopt( args, '', args_spec )
-    map( lambda x: options.__setitem__( x[0], x[1] ), option_pairs )
-
-    if not options.has_key( '--runner' ) or options.has_key( '--help' ):
-        usage()
-        sys.exit( 1 )
-
-    return {
-          'tag'             : options[ '--tag' ]
-        , 'local'           : options[ '--local' ]
-        , 'runner'          : options[ '--runner' ]
-        , 'platform'        : options[ '--platform']
-        , 'user'            : options[ '--user' ]
-        , 'comment'         : options[ '--comment' ]
-        , 'toolsets'        : options[ '--toolsets' ]
-        , 'book'            : options.has_key( '--book' )
-        , 'bjam_options'    : options[ '--bjam-options' ]
-        , 'bjam_toolset'    : options[ '--bjam-toolset' ]
-        , 'pjl_toolset'     : options[ '--pjl-toolset' ]
-        , 'incremental'     : options.has_key( '--incremental' )
-        , 'send_bjam_log'   : not options.has_key( '--dont-send-bjam-log' )
-        , 'force_update'    : options.has_key( '--force-update' )
-        , 'have_source'     : options.has_key( '--have-source' )
-        , 'skip_tests'      : options.has_key( '--skip-tests' )
-        , 'monitored'       : options.has_key( '--monitored' )
-        , 'timeout'         : options[ '--timeout' ]
-        , 'mail'            : options[ '--mail' ]
-        , 'smtp_login'      : options[ '--smtp-login' ]
-        , 'proxy'           : options[ '--proxy' ]
-        , 'ftp_proxy'       : options[ '--ftp-proxy' ]
-        , 'debug_level'     : int(options[ '--debug-level' ])
-        , 'v2'              : not options.has_key( '--v1' )
-        , 'dart_server'     : options[ '--dart-server' ]
-        , 'args'            : other_args
-        }
-
-commands = {
-      'cleanup'         : cleanup
-    , 'get-source'      : get_source
-    , 'update-source'   : update_source
-    , 'setup'           : setup
-    , 'install'         : install
-    , 'test'            : test
-    , 'build-book'      : build_book
-    , 'collect-logs'    : collect_logs
-    , 'collect-book'    : collect_book
-    , 'upload-logs'     : upload_logs
-    , 'upload-book'     : upload_book
-    , 'update-itself'   : update_itself
-    , 'regression'      : regression
-    , 'show-revision'   : show_revision
-    }
-
-def usage():
-    print 'Usage:\n\t%s [command] options' % os.path.basename( sys.argv[0] )
-    print    '''
-Commands:
-\t%s
-
-Options:
-\t--runner        runner ID (e.g. 'Metacomm')
-\t--tag           the tag for the results ('trunk' by default)
-\t--local         the name of the boost tarball
-\t--comment       an HTML comment file to be inserted in the reports
-\t                ('comment.html' by default)
-\t--incremental   do incremental run (do not remove previous binaries)
-\t--dont-send-bjam-log 
-\t                do not send full bjam log of the regression run
-\t--force-update  do an SVN update (if applicable) instead of a clean
-\t                checkout, even when performing a full run
-\t--have-source   do neither a tarball download nor an SVN update;
-\t                used primarily for testing script changes
-\t--skip-tests    do no run bjam; used for testing script changes
-\t--monitored     do a monitored run
-\t--timeout       specifies the timeout, in minutes, for a single test
-\t                run/compilation (enforced only in monitored runs, 5 by
-\t                default)
-\t--user          Boost SVN user ID (optional)
-\t--toolsets      comma-separated list of toolsets to test with (optional)
-\t--book          build BoostBook (optional)
-\t--bjam-options  options to pass to the regression test (optional)
-\t--bjam-toolset  bootstrap toolset for 'bjam' executable (optional)
-\t--pjl-toolset   bootstrap toolset for 'process_jam_log' executable
-\t                (optional)
-\t--mail          email address to send run notification to (optional)
-\t--smtp-login    STMP server address/login information, in the following
-\t                form: <user>:<password>@<host>[:<port>] (optional).
-\t--proxy         HTTP proxy server address and port (e.g.
-\t                'http://www.someproxy.com:3128', optional)
-\t--ftp-proxy     FTP proxy server (e.g. 'ftpproxy', optional)
-\t--debug-level   debugging level; controls the amount of debugging
-\t                output printed; 0 by default (no debug output)
-\t--v1            Use Boost.Build V1
-\t--v2            Use Boost.Build V2 (default)
-\t--dart-server   The dart server to send results to.
-''' % '\n\t'.join( commands.keys() )
-
-    print 'Example:\n\t%s --runner=Metacomm\n' % os.path.basename( sys.argv[0] )
-    print 'For more documentation, see http://tinyurl.com/4f2zp\n'
-
-
-if __name__ == '__main__':
-    if len(sys.argv) > 1 and sys.argv[1] in commands:
-        command = sys.argv[1]
-        args = sys.argv[ 2: ]
-        if command not in [ 'collect-logs', 'upload-logs' ]:
-            args.insert( 0, '--runner=' )
-    else:
-        command = 'regression'
-        args = sys.argv[ 1: ]
-
-    commands[ command ]( **accept_args( args ) )

粤ICP备19079148号