
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 ) {