From 80d3f404573aa62b3de806a2bbca1a17d169bf16 Mon Sep 17 00:00:00 2001 From: MartinFx Date: Thu, 13 Mar 2025 15:57:40 +0100 Subject: [PATCH 1/4] cortex: support for newer boost --- .../IECorePython/VectorTypedDataBinding.inl | 1 + src/IECore/DirNameParameter.cpp | 2 +- src/IECore/FileNameParameter.cpp | 4 +-- src/IECore/FileSequenceFunctions.cpp | 4 +-- src/IECore/FileSequenceParameter.cpp | 5 +-- src/IECore/FileSequenceVectorParameter.cpp | 5 +-- src/IECore/IndexedIO.cpp | 4 +-- src/IECore/PathParameter.cpp | 2 +- src/IECore/PathVectorParameter.cpp | 2 +- src/IECore/Reader.cpp | 4 +-- src/IECore/SearchPath.cpp | 2 +- src/IECore/Writer.cpp | 6 ++-- src/IECoreGL/Selector.cpp | 1 - src/IECoreImage/ClientDisplayDriver.cpp | 34 +++++++++---------- src/IECoreImage/DisplayDriverServer.cpp | 6 ++-- src/IECoreScene/SceneInterface.cpp | 4 +-- 16 files changed, 44 insertions(+), 42 deletions(-) diff --git a/include/IECorePython/VectorTypedDataBinding.inl b/include/IECorePython/VectorTypedDataBinding.inl index b26410c744..6fc7a74e8e 100644 --- a/include/IECorePython/VectorTypedDataBinding.inl +++ b/include/IECorePython/VectorTypedDataBinding.inl @@ -36,6 +36,7 @@ #define IECOREPYTHON_VECTORTYPEDDATABINDING_INL #include "boost/python.hpp" +#include "boost/numeric/conversion/cast.hpp" #include "IECorePython/IECoreBinding.h" #include "IECorePython/RunTimeTypedBinding.h" diff --git a/src/IECore/DirNameParameter.cpp b/src/IECore/DirNameParameter.cpp index c1e1119c33..26b37bce0a 100644 --- a/src/IECore/DirNameParameter.cpp +++ b/src/IECore/DirNameParameter.cpp @@ -38,7 +38,7 @@ #include "boost/algorithm/string/classification.hpp" #include "boost/algorithm/string/split.hpp" -#include "boost/filesystem/convenience.hpp" +#include "boost/filesystem/path.hpp" #include "boost/filesystem/operations.hpp" #include diff --git a/src/IECore/FileNameParameter.cpp b/src/IECore/FileNameParameter.cpp index 6dac471876..066b88c0f4 100644 --- a/src/IECore/FileNameParameter.cpp +++ b/src/IECore/FileNameParameter.cpp @@ -39,7 +39,7 @@ #include "boost/algorithm/string/classification.hpp" #include "boost/algorithm/string/split.hpp" -#include "boost/filesystem/convenience.hpp" +#include "boost/filesystem/path.hpp" #include "boost/filesystem/operations.hpp" #include "boost/format.hpp" @@ -87,7 +87,7 @@ bool FileNameParameter::valueValid( const Object *value, std::string *reason ) c // extensions check if( extensions().size() ) { - string ext = boost::filesystem::extension(boost::filesystem::path( s->readable())); + string ext = boost::filesystem::path(boost::filesystem::path( s->readable())).extension().string(); const vector &exts = extensions(); bool found = false; diff --git a/src/IECore/FileSequenceFunctions.cpp b/src/IECore/FileSequenceFunctions.cpp index 51f1d228e7..0847a1698b 100644 --- a/src/IECore/FileSequenceFunctions.cpp +++ b/src/IECore/FileSequenceFunctions.cpp @@ -42,9 +42,9 @@ #include "IECore/ReversedFrameList.h" #include "boost/algorithm/string.hpp" -#include "boost/filesystem/convenience.hpp" -#include "boost/filesystem/operations.hpp" #include "boost/filesystem/path.hpp" +#include "boost/filesystem/operations.hpp" +#include "boost/filesystem/directory.hpp" #include "boost/format.hpp" #include "boost/lexical_cast.hpp" #include "boost/regex.hpp" diff --git a/src/IECore/FileSequenceParameter.cpp b/src/IECore/FileSequenceParameter.cpp index 399a49cebf..539eefb4bd 100644 --- a/src/IECore/FileSequenceParameter.cpp +++ b/src/IECore/FileSequenceParameter.cpp @@ -41,7 +41,8 @@ #include "boost/algorithm/string/classification.hpp" #include "boost/algorithm/string/split.hpp" -#include "boost/filesystem/convenience.hpp" +#include "boost/filesystem/path.hpp" +#include "boost/filesystem/operations.hpp" #include #include @@ -130,7 +131,7 @@ bool FileSequenceParameter::valueValid( const Object *value, std::string *reason if ( m_extensions.size() ) { - std::string ext = boost::filesystem::extension( boost::filesystem::path( fileSequence->getFileName() ) ); + std::string ext = boost::filesystem::path( boost::filesystem::path( fileSequence->getFileName() ) ).extension().string(); if ( ext.size() && ext[0] == '.' ) { ext = ext.substr( 1, ext.size() - 1 ); diff --git a/src/IECore/FileSequenceVectorParameter.cpp b/src/IECore/FileSequenceVectorParameter.cpp index 3939b09df7..4076d7e160 100644 --- a/src/IECore/FileSequenceVectorParameter.cpp +++ b/src/IECore/FileSequenceVectorParameter.cpp @@ -41,7 +41,8 @@ #include "boost/algorithm/string/classification.hpp" #include "boost/algorithm/string/split.hpp" -#include "boost/filesystem/convenience.hpp" +#include "boost/filesystem/operations.hpp" +#include "boost/filesystem/path.hpp" #include #include @@ -131,7 +132,7 @@ bool FileSequenceVectorParameter::valueValid( const Object *value, std::string * if ( m_extensions.size() ) { - std::string ext = boost::filesystem::extension( boost::filesystem::path( fileSequence->getFileName() ) ); + std::string ext = boost::filesystem::path( boost::filesystem::path( fileSequence->getFileName())).extension().string(); if ( ext.size() && ext[0] == '.' ) { ext = ext.substr( 1, ext.size() - 1 ); diff --git a/src/IECore/IndexedIO.cpp b/src/IECore/IndexedIO.cpp index b6af9d3bb8..85599ac105 100644 --- a/src/IECore/IndexedIO.cpp +++ b/src/IECore/IndexedIO.cpp @@ -36,7 +36,7 @@ #include "IECore/Exception.h" -#include "boost/filesystem/convenience.hpp" +#include "boost/filesystem/path.hpp" #include "boost/algorithm/string.hpp" #include @@ -76,7 +76,7 @@ IndexedIOPtr IndexedIO::create( const std::string &path, const IndexedIO::EntryI { IndexedIOPtr result = nullptr; - std::string extension = fs::extension(path); + std::string extension = fs::path(path).extension().string(); boost::to_lower( extension ); const CreatorMap &createFns = creators(); diff --git a/src/IECore/PathParameter.cpp b/src/IECore/PathParameter.cpp index 3743376e09..34390274d8 100644 --- a/src/IECore/PathParameter.cpp +++ b/src/IECore/PathParameter.cpp @@ -38,7 +38,7 @@ #include "boost/algorithm/string/classification.hpp" #include "boost/algorithm/string/split.hpp" -#include "boost/filesystem/convenience.hpp" +#include "boost/filesystem/path.hpp" #include "boost/filesystem/operations.hpp" #include diff --git a/src/IECore/PathVectorParameter.cpp b/src/IECore/PathVectorParameter.cpp index 1a76aea167..ec883ff54a 100644 --- a/src/IECore/PathVectorParameter.cpp +++ b/src/IECore/PathVectorParameter.cpp @@ -38,7 +38,7 @@ #include "boost/algorithm/string/classification.hpp" #include "boost/algorithm/string/split.hpp" -#include "boost/filesystem/convenience.hpp" +#include "boost/filesystem/path.hpp" #include "boost/filesystem/operations.hpp" #include diff --git a/src/IECore/Reader.cpp b/src/IECore/Reader.cpp index 40e7d06d3c..abadca0435 100644 --- a/src/IECore/Reader.cpp +++ b/src/IECore/Reader.cpp @@ -40,7 +40,7 @@ #include "boost/algorithm/string/classification.hpp" #include "boost/algorithm/string/split.hpp" -#include "boost/filesystem/convenience.hpp" +#include "boost/filesystem/path.hpp" using namespace std; using namespace IECore; @@ -84,7 +84,7 @@ ReaderPtr Reader::create( const std::string &fileName ) bool knownExtension = false; ExtensionsToFnsMap *m = extensionsToFns(); assert( m ); - string ext = extension(boost::filesystem::path(fileName)); + string ext = path(boost::filesystem::path(fileName)).extension().string(); if( ext!="" ) { ExtensionsToFnsMap::const_iterator it = m->find( ext ); diff --git a/src/IECore/SearchPath.cpp b/src/IECore/SearchPath.cpp index 372e393565..e92933b0ca 100644 --- a/src/IECore/SearchPath.cpp +++ b/src/IECore/SearchPath.cpp @@ -106,7 +106,7 @@ std::string SearchPath::getPaths( const std::string &separator ) const boost::filesystem::path SearchPath::find( const boost::filesystem::path &file ) const { // if it's a full path then there's no need to do any searching - if( file.is_complete() ) + if( file.is_absolute() ) { if( exists( file ) ) { diff --git a/src/IECore/Writer.cpp b/src/IECore/Writer.cpp index 151b6a7607..680b8e4c71 100644 --- a/src/IECore/Writer.cpp +++ b/src/IECore/Writer.cpp @@ -41,7 +41,7 @@ #include "boost/algorithm/string/classification.hpp" #include "boost/algorithm/string/split.hpp" -#include "boost/filesystem/convenience.hpp" +#include "boost/filesystem/path.hpp" #include @@ -116,7 +116,7 @@ void Writer::registerWriter( const std::string &extensions, CanWriteFn canWrite, WriterPtr Writer::create( ObjectPtr object, const std::string &fileName ) { - string ext = extension(boost::filesystem::path(fileName)); + string ext = path(boost::filesystem::path(fileName)).extension().string(); ExtensionsToFnsMap *m = extensionsToFns(); assert( m ); @@ -146,7 +146,7 @@ WriterPtr Writer::create( ObjectPtr object, const std::string &fileName ) WriterPtr Writer::create( const std::string &fileName ) { - string ext = extension(boost::filesystem::path(fileName)); + string ext = path(boost::filesystem::path(fileName)).extension().string(); ExtensionsToFnsMap *m = extensionsToFns(); ExtensionsToFnsMap::const_iterator it = m->find( ext ); diff --git a/src/IECoreGL/Selector.cpp b/src/IECoreGL/Selector.cpp index 53dd5d063a..67a8bfa186 100644 --- a/src/IECoreGL/Selector.cpp +++ b/src/IECoreGL/Selector.cpp @@ -53,7 +53,6 @@ #include "IECore/MessageHandler.h" #include "boost/format.hpp" -#include "boost/timer.hpp" using namespace IECoreGL; diff --git a/src/IECoreImage/ClientDisplayDriver.cpp b/src/IECoreImage/ClientDisplayDriver.cpp index 6358c0ff3f..d1bb16903b 100644 --- a/src/IECoreImage/ClientDisplayDriver.cpp +++ b/src/IECoreImage/ClientDisplayDriver.cpp @@ -73,7 +73,7 @@ class ClientDisplayDriver::PrivateData : public RefCounted m_socket.close(); } - boost::asio::io_service m_service; + boost::asio::io_context m_service; std::string m_host; std::string m_port; bool m_scanLineOrderOnly; @@ -96,23 +96,23 @@ ClientDisplayDriver::ClientDisplayDriver( const Imath::Box2i &displayWindow, con m_data->m_host = displayHostData->readable(); m_data->m_port = displayPortData->readable(); - tcp::resolver resolver(m_data->m_service); - tcp::resolver::query query(m_data->m_host, m_data->m_port); - - boost::system::error_code error; - tcp::resolver::iterator iterator = resolver.resolve( query, error ); - if( !error ) - { + boost::asio::io_context io_context; + tcp::resolver resolver(io_context); + boost::system::error_code error; + auto endpoints = resolver.resolve(m_data->m_host, m_data->m_port, error); + if (!error) + { error = boost::asio::error::host_not_found; - while( error && iterator != tcp::resolver::iterator() ) - { - m_data->m_socket.close(); - m_data->m_socket.connect( *iterator++, error ); - } - } - if( error ) - { - throw Exception( std::string( "Could not connect to remote display driver server : " ) + error.message() ); + for (auto it = endpoints.begin(); it != endpoints.end() && error; ++it) + { + m_data->m_socket.close(); + m_data->m_socket.connect(*it, error); + } + + if (error) + { + throw Exception( std::string( "Could not connect to remote display driver server : " ) + error.message() ); + } } MemoryIndexedIOPtr io; diff --git a/src/IECoreImage/DisplayDriverServer.cpp b/src/IECoreImage/DisplayDriverServer.cpp index 3afd6b7fa1..03cb5f6a77 100644 --- a/src/IECoreImage/DisplayDriverServer.cpp +++ b/src/IECoreImage/DisplayDriverServer.cpp @@ -106,7 +106,7 @@ class DisplayDriverServer::Session : public RefCounted { public: - Session( boost::asio::io_service& io_service, MergeMap& mergeMap ); + Session( boost::asio::io_context& io_service, MergeMap& mergeMap ); ~Session() override; boost::asio::ip::tcp::socket& socket(); @@ -135,7 +135,7 @@ class DisplayDriverServer::PrivateData : public RefCounted public : boost::asio::ip::tcp::endpoint m_endpoint; - boost::asio::io_service m_service; + boost::asio::io_context m_service; boost::asio::ip::tcp::acceptor m_acceptor; std::thread m_thread; MergeMap m_mergeMap; @@ -306,7 +306,7 @@ void DisplayDriverServer::handleAccept( DisplayDriverServer::SessionPtr session, * DisplayDriverServer::Session functions */ -DisplayDriverServer::Session::Session( boost::asio::io_service& io_service, MergeMap& mergeMap ) : +DisplayDriverServer::Session::Session( boost::asio::io_context& io_service, MergeMap& mergeMap ) : m_socket( io_service ), m_displayDriver(nullptr), m_buffer( new CharVectorData( ) ), m_mergeMap( mergeMap ) { } diff --git a/src/IECoreScene/SceneInterface.cpp b/src/IECoreScene/SceneInterface.cpp index 661d7ef276..cfe327ed9c 100644 --- a/src/IECoreScene/SceneInterface.cpp +++ b/src/IECoreScene/SceneInterface.cpp @@ -34,7 +34,7 @@ #include "IECoreScene/SceneInterface.h" -#include "boost/filesystem/convenience.hpp" +#include "boost/filesystem/path.hpp" #include "boost/tokenizer.hpp" #include "boost/algorithm/string.hpp" @@ -104,7 +104,7 @@ SceneInterfacePtr SceneInterface::create( const std::string &path, IndexedIO::Op { SceneInterfacePtr result = nullptr; - std::string extension = boost::filesystem::extension(path); + std::string extension = boost::filesystem::path(path).extension().string(); boost::algorithm::to_lower( extension ); IndexedIO::OpenModeFlags openMode = IndexedIO::OpenModeFlags( mode & (IndexedIO::Read|IndexedIO::Write|IndexedIO::Append) ); std::pair< std::string, IndexedIO::OpenModeFlags > key( extension, openMode ); From 60ab96c808fef63273a41487f8f52e0074127b54 Mon Sep 17 00:00:00 2001 From: MartinFx Date: Tue, 18 Mar 2025 12:20:07 +0100 Subject: [PATCH 2/4] cortex: fixed double call path functions --- src/IECore/FileNameParameter.cpp | 2 +- src/IECore/FileSequenceFunctions.cpp | 2 +- src/IECore/FileSequenceParameter.cpp | 2 +- src/IECore/FileSequenceVectorParameter.cpp | 2 +- src/IECore/Reader.cpp | 2 +- src/IECore/Writer.cpp | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/IECore/FileNameParameter.cpp b/src/IECore/FileNameParameter.cpp index 066b88c0f4..55beda6e5a 100644 --- a/src/IECore/FileNameParameter.cpp +++ b/src/IECore/FileNameParameter.cpp @@ -87,7 +87,7 @@ bool FileNameParameter::valueValid( const Object *value, std::string *reason ) c // extensions check if( extensions().size() ) { - string ext = boost::filesystem::path(boost::filesystem::path( s->readable())).extension().string(); + string ext = boost::filesystem::path( s->readable()).extension().string(); const vector &exts = extensions(); bool found = false; diff --git a/src/IECore/FileSequenceFunctions.cpp b/src/IECore/FileSequenceFunctions.cpp index 0847a1698b..8d785eb449 100644 --- a/src/IECore/FileSequenceFunctions.cpp +++ b/src/IECore/FileSequenceFunctions.cpp @@ -43,8 +43,8 @@ #include "boost/algorithm/string.hpp" #include "boost/filesystem/path.hpp" -#include "boost/filesystem/operations.hpp" #include "boost/filesystem/directory.hpp" +#include "boost/filesystem/operations.hpp" #include "boost/format.hpp" #include "boost/lexical_cast.hpp" #include "boost/regex.hpp" diff --git a/src/IECore/FileSequenceParameter.cpp b/src/IECore/FileSequenceParameter.cpp index 539eefb4bd..05c3764a0e 100644 --- a/src/IECore/FileSequenceParameter.cpp +++ b/src/IECore/FileSequenceParameter.cpp @@ -131,7 +131,7 @@ bool FileSequenceParameter::valueValid( const Object *value, std::string *reason if ( m_extensions.size() ) { - std::string ext = boost::filesystem::path( boost::filesystem::path( fileSequence->getFileName() ) ).extension().string(); + std::string ext = boost::filesystem::path(fileSequence->getFileName()).extension().string(); if ( ext.size() && ext[0] == '.' ) { ext = ext.substr( 1, ext.size() - 1 ); diff --git a/src/IECore/FileSequenceVectorParameter.cpp b/src/IECore/FileSequenceVectorParameter.cpp index 4076d7e160..292f9a2ac7 100644 --- a/src/IECore/FileSequenceVectorParameter.cpp +++ b/src/IECore/FileSequenceVectorParameter.cpp @@ -132,7 +132,7 @@ bool FileSequenceVectorParameter::valueValid( const Object *value, std::string * if ( m_extensions.size() ) { - std::string ext = boost::filesystem::path( boost::filesystem::path( fileSequence->getFileName())).extension().string(); + std::string ext = boost::filesystem::path(fileSequence->getFileName()).extension().string(); if ( ext.size() && ext[0] == '.' ) { ext = ext.substr( 1, ext.size() - 1 ); diff --git a/src/IECore/Reader.cpp b/src/IECore/Reader.cpp index abadca0435..06d3aaf234 100644 --- a/src/IECore/Reader.cpp +++ b/src/IECore/Reader.cpp @@ -84,7 +84,7 @@ ReaderPtr Reader::create( const std::string &fileName ) bool knownExtension = false; ExtensionsToFnsMap *m = extensionsToFns(); assert( m ); - string ext = path(boost::filesystem::path(fileName)).extension().string(); + string ext = boost::filesystem::path(fileName).extension().string(); if( ext!="" ) { ExtensionsToFnsMap::const_iterator it = m->find( ext ); diff --git a/src/IECore/Writer.cpp b/src/IECore/Writer.cpp index 680b8e4c71..a21db59144 100644 --- a/src/IECore/Writer.cpp +++ b/src/IECore/Writer.cpp @@ -116,7 +116,7 @@ void Writer::registerWriter( const std::string &extensions, CanWriteFn canWrite, WriterPtr Writer::create( ObjectPtr object, const std::string &fileName ) { - string ext = path(boost::filesystem::path(fileName)).extension().string(); + string ext = boost::filesystem::path(fileName).extension().string(); ExtensionsToFnsMap *m = extensionsToFns(); assert( m ); @@ -146,7 +146,7 @@ WriterPtr Writer::create( ObjectPtr object, const std::string &fileName ) WriterPtr Writer::create( const std::string &fileName ) { - string ext = path(boost::filesystem::path(fileName)).extension().string(); + string ext = boost::filesystem::path(fileName).extension().string(); ExtensionsToFnsMap *m = extensionsToFns(); ExtensionsToFnsMap::const_iterator it = m->find( ext ); From dd73a7992b38f1aa041f386eee0729620f0d272c Mon Sep 17 00:00:00 2001 From: MartinFx Date: Tue, 18 Mar 2025 12:22:43 +0100 Subject: [PATCH 3/4] cortex: fixed call io_context --- src/IECoreImage/ClientDisplayDriver.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/IECoreImage/ClientDisplayDriver.cpp b/src/IECoreImage/ClientDisplayDriver.cpp index d1bb16903b..fb31a22957 100644 --- a/src/IECoreImage/ClientDisplayDriver.cpp +++ b/src/IECoreImage/ClientDisplayDriver.cpp @@ -96,8 +96,7 @@ ClientDisplayDriver::ClientDisplayDriver( const Imath::Box2i &displayWindow, con m_data->m_host = displayHostData->readable(); m_data->m_port = displayPortData->readable(); - boost::asio::io_context io_context; - tcp::resolver resolver(io_context); + tcp::resolver resolver(m_data->m_service); boost::system::error_code error; auto endpoints = resolver.resolve(m_data->m_host, m_data->m_port, error); if (!error) From 021baf38a9cac796440583cd904ab331a7f1dced Mon Sep 17 00:00:00 2001 From: MartinFx Date: Tue, 18 Mar 2025 13:47:08 +0100 Subject: [PATCH 4/4] cortex: Fixed for-loop for endpoints --- src/IECoreImage/ClientDisplayDriver.cpp | 38 ++++++++++++++----------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/src/IECoreImage/ClientDisplayDriver.cpp b/src/IECoreImage/ClientDisplayDriver.cpp index fb31a22957..debef63ea8 100644 --- a/src/IECoreImage/ClientDisplayDriver.cpp +++ b/src/IECoreImage/ClientDisplayDriver.cpp @@ -96,24 +96,30 @@ ClientDisplayDriver::ClientDisplayDriver( const Imath::Box2i &displayWindow, con m_data->m_host = displayHostData->readable(); m_data->m_port = displayPortData->readable(); - tcp::resolver resolver(m_data->m_service); - boost::system::error_code error; - auto endpoints = resolver.resolve(m_data->m_host, m_data->m_port, error); - if (!error) - { - error = boost::asio::error::host_not_found; - for (auto it = endpoints.begin(); it != endpoints.end() && error; ++it) - { - m_data->m_socket.close(); - m_data->m_socket.connect(*it, error); - } - - if (error) - { - throw Exception( std::string( "Could not connect to remote display driver server : " ) + error.message() ); - } + tcp::resolver resolver(m_data->m_service); + boost::system::error_code error; + auto endpoints = resolver.resolve(m_data->m_host, m_data->m_port, error); + if ( error ) + { + throw Exception("Could not resolve host: " + error.message()); } + error = boost::asio::error::host_not_found; + for (const auto& endpoint : endpoints) + { + m_data->m_socket.close(); + m_data->m_socket.connect(endpoint, error); + if ( !error ) + { + break; + } + } + + if ( error ) + { + throw Exception( std::string( "Could not connect to remote display driver server : " ) + error.message() ); + } + MemoryIndexedIOPtr io; ConstCharVectorDataPtr buf; Box2iDataPtr displayWindowData = new Box2iData( displayWindow );