Boost logo

Boost :

Subject: Re: [boost] [1.46.0 beta 1] Release 1.46.0 beta 1 available
From: Vladimir Prus (vladimir_at_[hidden])
Date: 2011-01-31 14:35:09


Beman Dawes wrote:

> Boost release 1.46.0 beta 1 is now available from SourceForge
>
> See http://sourceforge.net/projects/boost/files/
>
> This release contains one new library, Interval Containers, and
> numerous enhancements and bug fixes for existing libraries.
>
> For details of what's in the release, see
> http://beta.boost.org/users/news/version_1_46_0. Note that the links
> to files on this web page are for the final release - use the
> SourceForge link above to get the beta files.
>
> Please download the beta, give it a try, and report any problems you encounter.

As reported by Philipp Reh, tools/regression do not build, since it still
assumes filesystem v2 is default. Below is the merge of relevant trunk
fixes. OK to commit to release branch?

- Volodya

Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk/tools/regression:r67039,67733

Index: test/Jamfile.v2
===================================================================
--- test/Jamfile.v2 (revision 68583)
+++ test/Jamfile.v2 (working copy)
@@ -24,5 +24,4 @@
     [ run run_pass.cpp ]
     [ run run_warn-note.cpp ]
     [ run run_warn.cpp ]
-
- ;
\ No newline at end of file
+ ;
Index: doc/library_status.html
===================================================================
--- doc/library_status.html (revision 68583)
+++ doc/library_status.html (working copy)
@@ -451,7 +451,11 @@
   through all test results for all test in all libraries.</p>
   <hr />
 
- <p>Copyright 2007 Robert Ramey. Distributed under the Boost Software
+
+ <p>Copyright 2011 Bryce Lelbach.</p>
+ <p>Copyright 2007-2011 Robert Ramey.</p>
+
+ <p>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>
 
Index: src/process_jam_log.cpp
===================================================================
--- src/process_jam_log.cpp (revision 68583)
+++ src/process_jam_log.cpp (working copy)
@@ -6,6 +6,8 @@
 
 // See http://www.boost.org/tools/regression for documentation.
 
+#define BOOST_FILESYSTEM_VERSION 3
+
 #include <boost/config/warning_disable.hpp>
 
 #include "detail/tiny_xml.hpp"
@@ -609,7 +611,7 @@
         std::cout << "Abort: option --boost-root requires a directory argument\n";
         std::exit(1);
       }
- boost_root = fs::path( argv[1], fs::native );
+ boost_root = fs::path( argv[1] );
       if ( !boost_root.is_complete() )
         boost_root = ( fs::initial_path() / boost_root ).normalize();
       
@@ -623,7 +625,7 @@
         std::cout << "Abort: option --locate-root requires a directory argument\n";
         std::exit(1);
       }
- locate_root = fs::path( argv[1], fs::native );
+ locate_root = fs::path( argv[1] );
       --argc; ++argv;
     }
     else if ( std::strcmp( argv[1], "--input-file" ) == 0 )
@@ -644,7 +646,7 @@
     }
     else
     {
- locate_root = fs::path( argv[1], fs::native );
+ locate_root = fs::path( argv[1] );
       --argc; ++argv;
     }
   }
Index: src/library_status.cpp
===================================================================
--- src/library_status.cpp (revision 68583)
+++ src/library_status.cpp (working copy)
@@ -1,9 +1,10 @@
-// Generate Compiler Status HTML from jam regression test output -----------//
+// Generate Library Status HTML from jam regression test output -----------//
 
-// Copyright Beman Dawes 2002. 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)
+// Copyright Bryce Lelbach 2011
+// Copyright Beman Dawes 2002-2011.
 
+// 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)
 // See http://www.boost.org/tools/regression/ for documentation.
 
 //Note: This version of the original program builds a large table
@@ -130,7 +131,7 @@
             if(fs::is_directory(*itr)){
                 std::pair<col_node::subcolumns_t::iterator, bool> result
                     = node.m_subcolumns.insert(
- std::make_pair(itr->filename(), col_node())
+ std::make_pair(itr->path().native(), col_node())
                     );
                 build_node_tree(*itr, result.first->second);
             }
@@ -629,7 +630,7 @@
             if(! fs::is_directory(*itr))
                 continue;
             
- string test_name = itr->filename();
+ string test_name = itr->path().native();
             // if the file name contains ".test"
             string::size_type s = test_name.find( ".test" );
             if(string::npos != s)
@@ -711,12 +712,12 @@
         }
     }
 
- fs::path find_lib_test_dir(){
+ fs::path find_lib_test_dir(fs::path const& initial_path){
         // walk up from the path were we started until we find
         // bin or bin.v2
 
- fs::path::const_iterator leaf_itr = fs::initial_path().end();
- fs::path test_lib_dir = fs::initial_path();
+ fs::path::const_iterator it = initial_path.end(), end = initial_path.end();
+ fs::path test_lib_dir = initial_path;
         for(;;){
             if(fs::is_directory( test_lib_dir / "bin.v2")){
                 test_lib_dir /= "bin.v2";
@@ -730,16 +731,17 @@
             }
             if(test_lib_dir.empty())
                 throw std::string("binary path not found");
- if(*leaf_itr != "libs")
- --leaf_itr;
+ if(*it != "libs")
+ --it;
             test_lib_dir.remove_filename();
         }
 
- if(leaf_itr == fs::initial_path().end())
+ if(it == end)
             throw std::string("must be run from within a library directory");
 
- while(leaf_itr != fs::initial_path().end()){
- test_lib_dir /= *leaf_itr++; // append "libs"
+
+ for(;it != end; ++it){
+ test_lib_dir /= *it; // append "libs"
         }
         return test_lib_dir;
     }
@@ -756,7 +758,7 @@
         }
         string library_name;
         for(;;){
- library_name.append(*++e_itr);
+ library_name.append((*++e_itr).native());
             if(1 == --count)
                 break;
             library_name.append("/");
@@ -764,8 +766,8 @@
         return library_name;
     }
 
- fs::path find_boost_root(){
- fs::path boost_root = fs::initial_path();
+ fs::path find_boost_root(fs::path initial_path){
+ fs::path boost_root = initial_path;
         for(;;){
             if(fs::is_directory( boost_root / "boost")){
                 break;
@@ -779,11 +781,11 @@
     }
 
     // do_table ----------------------------------------------------------------//
- void do_table(const string & lib_name)
+ void do_table(fs::path const& initial_path, const string & lib_name)
     {
         col_node root_node;
 
- fs::path lib_test_dir = find_lib_test_dir();
+ fs::path lib_test_dir = find_lib_test_dir(initial_path);
 
         for ( fs::directory_iterator itr(lib_test_dir); itr != end_itr; ++itr )
         {
@@ -825,21 +827,23 @@
 
 int cpp_main( int argc, char * argv[] ) // note name!
 {
+ fs::path initial_path = fs::initial_path();
+
     fs::path comment_path;
     while ( argc > 1 && *argv[1] == '-' )
     {
         if ( argc > 2 && std::strcmp( argv[1], "--compiler" ) == 0 )
         { specific_compiler = argv[2]; --argc; ++argv; }
         else if ( argc > 2 && std::strcmp( argv[1], "--locate-root" ) == 0 )
- { locate_root = fs::path( argv[2], fs::native ); --argc; ++argv; }
+ { locate_root = fs::path( argv[2] ); --argc; ++argv; }
         else if ( argc > 2 && std::strcmp( argv[1], "--boost-root" ) == 0 )
- { boost_root = fs::path( argv[2], fs::native ); --argc; ++argv; }
+ { boost_root = fs::path( argv[2] ); --argc; ++argv; }
         else if ( argc > 2 && std::strcmp( argv[1], "--comment" ) == 0 )
- { comment_path = fs::path( argv[2], fs::native ); --argc; ++argv; }
+ { comment_path = fs::path( argv[2] ); --argc; ++argv; }
         else if ( argc > 2 && std::strcmp( argv[1], "--notes" ) == 0 )
- { notes_path = fs::path( argv[2], fs::native ); --argc; ++argv; }
+ { notes_path = fs::path( argv[2] ); --argc; ++argv; }
         else if ( argc > 2 && std::strcmp( argv[1], "--notes-map" ) == 0 )
- { notes_map_path = fs::path( argv[2], fs::native ); --argc; ++argv; }
+ { notes_map_path = fs::path( argv[2] ); --argc; ++argv; }
         else if ( std::strcmp( argv[1], "--ignore-pass" ) == 0 ) ignore_pass = true;
         else if ( std::strcmp( argv[1], "--no-warn" ) == 0 ) no_warn = true;
         else if ( std::strcmp( argv[1], "--v2" ) == 0 )
@@ -878,11 +882,11 @@
     }
 
     if(boost_root.empty())
- boost_root = find_boost_root();
+ boost_root = find_boost_root(initial_path);
     if ( locate_root.empty() )
         locate_root = boost_root;
 
- report.open( fs::path( argv[1], fs::native ) );
+ report.open( fs::path( argv[1] ) );
     if ( !report )
     {
         std::cerr << "Could not open report output file: " << argv[2] << std::endl;
@@ -891,8 +895,8 @@
 
     if ( argc == 3 )
     {
- fs::path links_path( argv[2], fs::native );
- links_name = links_path.filename();
+ fs::path links_path( argv[2] );
+ links_name = links_path.native();
         links_file.open( links_path );
         if ( !links_file )
         {
@@ -904,7 +908,7 @@
 
     build_notes_bookmarks();
 
- const string library_name = find_lib_name(fs::initial_path());
+ const string library_name = find_lib_name(initial_path);
 
     char run_date[128];
     std::time_t tod;
@@ -968,7 +972,7 @@
             ;
     }
 
- do_table(library_name);
+ do_table(initial_path, library_name);
 
     if ( load_notes_html() ) report << notes_html << "\n";
 

Property changes on: src/library_status.cpp
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk/tools/regression/src/library_status.cpp:r67039,67733

Index: src/compiler_status.cpp
===================================================================
--- src/compiler_status.cpp (revision 68583)
+++ src/compiler_status.cpp (working copy)
@@ -1,11 +1,14 @@
 // Generate Compiler Status HTML from jam regression test output -----------//
 
-// Copyright Beman Dawes 2002. 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)
+// Copyright Bryce Lelbach 2011
+// Copyright Beman Dawes 2002-2011.
 
+// 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)
 // See http://www.boost.org/tools/regression/ for documentation.
 
+// See http://www.boost.org/tools/regression/ for documentation.
+
 /*******************************************************************************
 
     This program was designed to work unchanged on all platforms and
@@ -194,11 +197,11 @@
     if ( !fs::exists( dir_path ) ) return false;
     for ( fs::directory_iterator itr( dir_path ); itr != end_itr; ++itr )
       if ( fs::is_directory( *itr )
- && itr->filename() != ignore_dir_named )
+ && itr->path().string() != ignore_dir_named )
       {
         if ( find_file( *itr, name, path_found ) ) return true;
       }
- else if ( itr->filename() == name )
+ else if ( itr->path().string() == name )
       {
         path_found = *itr;
         return true;
@@ -284,16 +287,16 @@
         // SunCC creates an internal subdirectory everywhere it writes
         // object files. This confuses the target_directory() algorithm.
         // This patch ignores the SunCC internal directory. Jens Maurer
- if ( (*itr).filename() == "SunWS_cache" ) continue;
+ if ( (*itr).path().string() == "SunWS_cache" ) continue;
         // SGI does something similar for template instantiations. Jens Maurer
- if( (*itr).filename() == "ii_files" ) continue;
+ if( (*itr).path().string() == "ii_files" ) continue;
 
         if ( child.empty() ) child = *itr;
         else
         {
           std::cout << "Warning: only first of two target possibilities will be reported for: \n "
- << root.string() << ": " << child.filename()
- << " and " << (*itr).filename() << "\n";
+ << root.string() << ": " << child.string()
+ << " and " << (*itr).path().string() << "\n";
         }
       }
     }
@@ -365,7 +368,7 @@
       std::cerr << "warning: could not find build results for '"
                 << relative << "'.\n";
       std::cerr << "warning: tried directory "
- << bin_path.native_directory_string() << "\n";
+ << bin_path.parent_path().string() << "\n";
       bin_path = "";
     }
   }
@@ -738,11 +741,11 @@
     for ( fs::directory_iterator itr( bin_dir ); itr != end_itr; ++itr )
     {
       if ( fs::is_directory( *itr )
- && itr->string().find( ".test" ) == (itr->string().size()-5) )
+ && itr->path().string().find( ".test" ) == (itr->path().string().size()-5) )
       {
         results.push_back( std::string() );
         do_row( *itr,
- itr->filename().substr( 0, itr->filename().size()-5 ),
+ itr->path().string().substr( 0, itr->path().string().size()-5 ),
                 results[results.size()-1] );
       }
     }
@@ -758,15 +761,15 @@
     for (; compiler_itr != end_itr; ++compiler_itr )
     {
       if ( fs::is_directory( *compiler_itr ) // check just to be sure
- && compiler_itr->filename() != "test" ) // avoid strange directory (Jamfile bug?)
+ && compiler_itr->path().string() != "test" ) // avoid strange directory (Jamfile bug?)
       {
         if ( specific_compiler.size() != 0
- && specific_compiler != compiler_itr->filename() ) continue;
- toolsets.push_back( compiler_itr->filename() );
- string desc( compiler_desc( compiler_itr->filename() ) );
- string vers( version_desc( compiler_itr->filename() ) );
+ && specific_compiler != compiler_itr->path().string() ) continue;
+ toolsets.push_back( compiler_itr->path().string() );
+ string desc( compiler_desc( compiler_itr->path().string() ) );
+ string vers( version_desc( compiler_itr->path().string() ) );
         report << "<td>"
- << (desc.size() ? desc : compiler_itr->filename())
+ << (desc.size() ? desc : compiler_itr->path().string())
              << (vers.size() ? (string( "<br>" ) + vers ) : string( "" ))
              << "</td>\n";
         error_count.push_back( 0 );
@@ -880,7 +883,7 @@
       fs::recursive_directory_iterator ritr( bin_path );
       fs::recursive_directory_iterator end_ritr;
       while ( ritr != end_ritr
- && ((ritr->string().find( ".test" ) != (ritr->string().size()-5))
+ && ((ritr->path().string().find( ".test" ) != (ritr->path().string().size()-5))
         || !fs::is_directory( *ritr )))
         ++ritr; // bypass chaff
       if ( ritr != end_ritr )
@@ -892,7 +895,7 @@
     {
       fs::directory_iterator itr( bin_path );
       while ( itr != end_itr
- && ((itr->string().find( ".test" ) != (itr->string().size()-5))
+ && ((itr->path().string().find( ".test" ) != (itr->path().string().size()-5))
         || !fs::is_directory( *itr )))
         ++itr; // bypass chaff
       if ( itr != end_itr )
@@ -937,19 +940,19 @@
     if ( argc > 2 && std::strcmp( argv[1], "--compiler" ) == 0 )
       { specific_compiler = argv[2]; --argc; ++argv; }
     else if ( argc > 2 && std::strcmp( argv[1], "--locate-root" ) == 0 )
- { locate_root = fs::path( argv[2], fs::native ); --argc; ++argv; }
+ { locate_root = fs::path( argv[2] ); --argc; ++argv; }
     else if ( argc > 2 && std::strcmp( argv[1], "--comment" ) == 0 )
- { comment_path = fs::path( argv[2], fs::native ); --argc; ++argv; }
+ { comment_path = fs::path( argv[2] ); --argc; ++argv; }
     else if ( argc > 2 && std::strcmp( argv[1], "--notes" ) == 0 )
- { notes_path = fs::path( argv[2], fs::native ); --argc; ++argv; }
+ { notes_path = fs::path( argv[2] ); --argc; ++argv; }
     else if ( argc > 2 && std::strcmp( argv[1], "--notes-map" ) == 0 )
- { notes_map_path = fs::path( argv[2], fs::native ); --argc; ++argv; }
+ { notes_map_path = fs::path( argv[2] ); --argc; ++argv; }
     else if ( std::strcmp( argv[1], "--ignore-pass" ) == 0 ) ignore_pass = true;
     else if ( std::strcmp( argv[1], "--no-warn" ) == 0 ) no_warn = true;
     else if ( std::strcmp( argv[1], "--v1" ) == 0 ) boost_build_v2 = false;
     else if ( std::strcmp( argv[1], "--v2" ) == 0 ) boost_build_v2 = true;
     else if ( argc > 2 && std::strcmp( argv[1], "--jamfile" ) == 0)
- { jamfile_path = fs::path( argv[2], fs::native ); --argc; ++argv; }
+ { jamfile_path = fs::path( argv[2] ); --argc; ++argv; }
     else if ( std::strcmp( argv[1], "--compile-time" ) == 0 ) compile_time = true;
     else if ( std::strcmp( argv[1], "--run-time" ) == 0 ) run_time = true;
     else { std::cerr << "Unknown option: " << argv[1] << "\n"; argc = 1; }
@@ -990,7 +993,7 @@
     return 1;
   }
 
- boost_root = fs::path( argv[1], fs::native );
+ boost_root = fs::path( argv[1] );
   if ( locate_root.empty() ) locate_root = boost_root;
   
   if (jamfile_path.empty())
@@ -998,15 +1001,15 @@
       jamfile_path = "Jamfile.v2";
     else
       jamfile_path = "Jamfile";
- jamfile_path = fs::complete( jamfile_path, fs::initial_path() );
+ jamfile_path = fs::system_complete( jamfile_path );
   jamfile.open( jamfile_path );
   if ( !jamfile )
   {
- std::cerr << "Could not open Jamfile: " << jamfile_path.native_file_string() << std::endl;
+ std::cerr << "Could not open Jamfile: " << jamfile_path.string() << std::endl;
     return 1;
   }
 
- report.open( fs::path( argv[2], fs::native ) );
+ report.open( fs::path( argv[2] ) );
   if ( !report )
   {
     std::cerr << "Could not open report output file: " << argv[2] << std::endl;
@@ -1015,8 +1018,8 @@
 
   if ( argc == 4 )
   {
- fs::path links_path( argv[3], fs::native );
- links_name = links_path.filename();
+ fs::path links_path( argv[3] );
+ links_name = links_path.string();
     links_file.open( links_path );
     if ( !links_file )
     {


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk