$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: ramey_at_[hidden]
Date: 2007-08-20 14:06:18
Author: ramey
Date: 2007-08-20 14:06:17 EDT (Mon, 20 Aug 2007)
New Revision: 38800
URL: http://svn.boost.org/trac/boost/changeset/38800
Log:
Merged in additions from serialization_next_release branch to support validation of one's current boost installation on a either a library by library or global basis
Added:
   trunk/tools/regression/build/vcide/compiler_status.vcproj
      - copied unchanged from r38792, /branches/serialization_next_release/boost/tools/regression/build/vcide/compiler_status.vcproj
   trunk/tools/regression/build/vcide/library_status.vcproj
      - copied unchanged from r38792, /branches/serialization_next_release/boost/tools/regression/build/vcide/library_status.vcproj
   trunk/tools/regression/build/vcide/regression.sln
      - copied unchanged from r38792, /branches/serialization_next_release/boost/tools/regression/build/vcide/regression.sln
   trunk/tools/regression/library_status.cpp
      - copied unchanged from r38792, /branches/serialization_next_release/boost/tools/regression/library_status.cpp
   trunk/tools/regression/library_status.html
      - copied unchanged from r38792, /branches/serialization_next_release/boost/tools/regression/library_status.html
   trunk/tools/regression/library_test.bat
      - copied unchanged from r38792, /branches/serialization_next_release/boost/tools/regression/library_test.bat
   trunk/tools/regression/library_test.sh
      - copied unchanged from r38792, /branches/serialization_next_release/boost/tools/regression/library_test.sh
   trunk/tools/regression/library_test_all.sh
      - copied unchanged from r38792, /branches/serialization_next_release/boost/tools/regression/library_test_all.sh
Text files modified: 
   trunk/tools/regression/build/Jamfile.v2                   |    11 +++                                     
   trunk/tools/regression/build/vcide/process_jam_log.vcproj |   140 ++++++++++++++++++++------------------- 
   trunk/tools/regression/index.htm                          |     5 +                                       
   trunk/tools/regression/process_jam_log.cpp                |    72 +++++++++----------                     
   4 files changed, 122 insertions(+), 106 deletions(-)
Modified: trunk/tools/regression/build/Jamfile.v2
==============================================================================
--- trunk/tools/regression/build/Jamfile.v2	(original)
+++ trunk/tools/regression/build/Jamfile.v2	2007-08-20 14:06:17 EDT (Mon, 20 Aug 2007)
@@ -18,10 +18,20 @@
     release
     ;
 
+exe library_status
+    :
+    ../library_status.cpp ../detail/tiny_xml.cpp
+    /boost/filesystem//boost_filesystem
+    :
+    :
+    release
+    ;
+
 install dist-bin
     :
     process_jam_log
     compiler_status
+    library_status
     :
     <install-type>EXE
     <location>../../../dist/bin
@@ -33,6 +43,7 @@
     :
     process_jam_log
     compiler_status
+    library_status
     :
     <install-type>LIB
     <location>../../../dist/lib
Modified: trunk/tools/regression/build/vcide/process_jam_log.vcproj
==============================================================================
--- trunk/tools/regression/build/vcide/process_jam_log.vcproj	(original)
+++ trunk/tools/regression/build/vcide/process_jam_log.vcproj	2007-08-20 14:06:17 EDT (Mon, 20 Aug 2007)
@@ -1,68 +1,72 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.10"
-	Name="process_jam_log"
-	ProjectGUID="{9A751791-929F-496A-8DE7-B61020619BFA}"
-	RootNamespace="process_jam_log"
-	Keyword="MakeFileProj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug"
-			IntermediateDirectory="Debug"
-			ConfigurationType="0">
-			<Tool
-				Name="VCNMakeTool"
-				BuildCommandLine="cd ..\..\..\..\tools\regression\build
-bjam --v2 msvc-7.1 debug
-"
-				ReBuildCommandLine="cd ..\..\..\..\tools\regression\build
-call bjam --v2 msvc-7.1 debug clean
-call bjam --v2 msvc-7.1 debug"
-				CleanCommandLine="cd ..\..\..\..\tools\regression\build
-call bjam --v2 msvc-7.1 debug clean
-"
-				Output="process_jam_log.exe"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release"
-			IntermediateDirectory="Release"
-			ConfigurationType="0">
-			<Tool
-				Name="VCNMakeTool"
-				BuildCommandLine="cd C:\users\misha\Stuff\boost\boost\tools\regression\build"
-				ReBuildCommandLine="cd C:\users\misha\Stuff\boost\boost\tools\regression\build"
-				Output="process_jam_log.exe"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-		</Filter>
-		<File
-			RelativePath=".\readme.txt">
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="windows-1251"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="process_jam_log"
+	ProjectGUID="{9A751791-929F-496A-8DE7-B61020619BFA}"
+	RootNamespace="process_jam_log"
+	Keyword="MakeFileProj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="0">
+			<Tool
+				Name="VCNMakeTool"
+				BuildCommandLine="cd ..\..\..\..\tools\regression\build
+..\..\jam\src\bin.ntx86\bjam.exe process_jam_log variant=debug
+"
+				ReBuildCommandLine="cd ..\..\..\..\tools\regression\build
+call bjam --v2 msvc-7.1 debug clean
+call bjam --v2 msvc-7.1 debug"
+				CleanCommandLine="cd ..\..\..\..\tools\regression\build
+call bjam --v2 msvc-7.1 debug clean
+"
+				Output="../../../../bin.v2/tools/regression/build/msvc-7.1/debug/link-static/process_jam_log.exe"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="0">
+			<Tool
+				Name="VCNMakeTool"
+				BuildCommandLine="cd ..
+..\..\jam\src\bin.ntx86\bjam process_jam_log variant=release link=static"
+				ReBuildCommandLine="cd ..
+..\..\jam\src\bin.ntx86\bjam -a process_jam_log variant=release link=static"
+				CleanCommandLine="cd ..
+..\..\jam\src\bin.ntx86\bjam clean"
+				Output="..\..\..\..\bin.v2\tools\regression\build\msvc-7.1\release\link-static\process_jam_log.exe"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+		<File
+			RelativePath=".\readme.txt">
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Modified: trunk/tools/regression/index.htm
==============================================================================
--- trunk/tools/regression/index.htm	(original)
+++ trunk/tools/regression/index.htm	2007-08-20 14:06:17 EDT (Mon, 20 Aug 2007)
@@ -32,6 +32,11 @@
         files.</li>
     <li>Jamfile.v2 - Builds
         process_jam_log and compiler_status executables.</li>
+    <li>Library Status - 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>
Modified: trunk/tools/regression/process_jam_log.cpp
==============================================================================
--- trunk/tools/regression/process_jam_log.cpp	(original)
+++ trunk/tools/regression/process_jam_log.cpp	2007-08-20 14:06:17 EDT (Mon, 20 Aug 2007)
@@ -128,10 +128,15 @@
   {
     string temp( s );
     convert_path_separators( temp );
-    temp.erase( temp.find_last_of( "/" ) ); // remove leaf
+    string::size_type pos = temp.find_last_of( "/");
+    if(pos == string::npos)
+        temp = "./";
+    else{
+        temp.erase( pos ); // remove leaf
     temp = split( trim_left( temp ) ).back();
     if ( temp[0] == '.' ) temp.erase( 0, temp.find_first_not_of( "./" ) ); 
     else temp.erase( 0, locate_root.string().size()+1 );
+    }
     if ( echo )
         std::cout << "\ttarget_directory( \"" << s << "\") -> \"" << temp << "\"" << std::endl;
     return temp;
@@ -171,52 +176,43 @@
   // returns library name corresponding to that path.
   string test_path_to_library_name( string const& path )
   {
-    std::string result;
-    string::size_type start_pos( path.find( "libs/" ) );
-    if ( start_pos != string::npos )
-    {
-      // The path format is ...libs/functional/hash/test/something.test/....      
-      // So, the part between "libs" and "test/something.test" can be considered
+    // The path format is ...libs/.../something.test/....      
+    // So, the part between "libs" and "something.test" can be considered
       // as library name. But, for some libraries tests are located too deep,
       // say numeric/ublas/test/test1 directory, and some libraries have tests
-      // in several subdirectories (regex/example and regex/test). So, nested
-      // directory may belong to several libraries.
+    // in several subdirectories (regex/example and regex/test). So, its
+    // not a "library name" as it may include subdirectories
 
-      // To disambituate, it's possible to place a 'sublibs' file in
-      // a directory. It means that child directories are separate libraries.
-      // It's still possible to have tests in the directory that has 'sublibs'
-      // file.
-
-      std::string interesting;
-      start_pos += 5;
-      string::size_type end_pos( path.find( ".test/", start_pos ) );
-      end_pos = path.rfind('/', end_pos);
-      if (path.substr(end_pos - 5, 5) == "/test")
-        interesting = path.substr( start_pos, end_pos - 5 - start_pos );
-      else
-        interesting = path.substr( start_pos, end_pos - start_pos );
+    string::size_type end_pos = path.find(".test/");
+    end_pos = path.rfind("/", end_pos);
 
-      // Take slash separate elements until we have corresponding 'sublibs'.
-      end_pos = 0;
-      for(;;)
-      {
-        end_pos = interesting.find('/', end_pos);
-        if (end_pos == string::npos) {
-          result = interesting;
-          break;
+    string::size_type start_pos;
+    string::size_type pos = end_pos;
+    unsigned int i;
+    for(i = 0;; ++i){
+        start_pos = path.rfind("/", pos - 1);
+
+        if ( start_pos == string::npos )
+            return string(); // empty string
+
+        ++start_pos;
+
+        const std::string dir = path.substr(start_pos, pos - start_pos);
+        if(0 == i){
+           // if this directory is either "test" or "example"
+           // skip it in order to be compatible with testing.jam
+           if("test" == dir
+           || "example" == dir){
+                end_pos = start_pos - 1;
         }
-        result = interesting.substr(0, end_pos);
-
-        if ( fs::exists( ( boost_root / "libs" ) / result / "sublibs" ) )
-        {
-          end_pos = end_pos + 1;
         }
-        else
+        if("libs" == dir){
+            start_pos = pos + 1;
           break;
       }
+        pos = start_pos - 1;
     }
-
-    return result;
+    return path.substr(start_pos, end_pos - start_pos);
   }
 
   // Tries to find target name in the string 'msg', starting from