This is an automated email from the git hooks/post-receive script. sebastic pushed a commit to branch master in repository otb.
commit c9d6b89eb9c831d24a2d487b9186cc10a085bc70 Author: Bas Couwenberg <[email protected]> Date: Wed Mar 8 18:16:55 2017 +0100 Imported Upstream version 5.10.1+dfsg --- CMakeLists.txt | 2 +- .../AppDomainTransform/app/otbDomainTransform.cxx | 8 ++ Modules/IO/TestKernel/include/otbTestMain.h | 1 + Modules/MPI/MPIConfig/include/otbMPIConfig.h | 5 + Modules/MPI/MPIConfig/src/otbMPIConfig.cxx | 106 ++++++++++++--------- Modules/Remote/SertitObject.remote.cmake | 2 +- .../src/otbWrapperApplication.cxx | 29 ++++++ .../src/otbApplicationLauncherCommandLine.cxx | 18 ++-- RELEASE_NOTES.txt | 15 +++ 9 files changed, 125 insertions(+), 61 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fb6ce64..8646a22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,7 +87,7 @@ set(main_project_name ${_OTBModuleMacros_DEFAULT_LABEL}) # OTB version number. set(OTB_VERSION_MAJOR "5") set(OTB_VERSION_MINOR "10") -set(OTB_VERSION_PATCH "0") +set(OTB_VERSION_PATCH "1") set(OTB_VERSION_STRING "${OTB_VERSION_MAJOR}.${OTB_VERSION_MINOR}.${OTB_VERSION_PATCH}") # Monteverdi version number (follows OTB) diff --git a/Modules/Applications/AppDomainTransform/app/otbDomainTransform.cxx b/Modules/Applications/AppDomainTransform/app/otbDomainTransform.cxx index 417861f..b7dc4cb 100644 --- a/Modules/Applications/AppDomainTransform/app/otbDomainTransform.cxx +++ b/Modules/Applications/AppDomainTransform/app/otbDomainTransform.cxx @@ -27,6 +27,7 @@ #include <itkInverseFFTImageFilter.h> #include <itkUnaryFunctorImageFilter.h> #include <itkFFTShiftImageFilter.h> +#include <itkFFTWGlobalConfiguration.h> #include "otbComplexToVectorImageCastFilter.h" @@ -79,6 +80,10 @@ private: ~DomainTransform() ITK_OVERRIDE { + } + + void CleanupFFTWThreads() + { // This is a trick to make sure fftw will cleanup its threads when application // shared lib is released. #if defined(ITK_USE_FFTWF) @@ -364,6 +369,9 @@ private: SetParameterOutputImage<TOutputImage>("out", invFilter->GetOutput()); } } + + // at the end, cleanup FFTW Threads + CleanupFFTWThreads(); } template<otb::Wavelet::Wavelet TWaveletOperator> diff --git a/Modules/IO/TestKernel/include/otbTestMain.h b/Modules/IO/TestKernel/include/otbTestMain.h index 42f7e89..c30763f 100644 --- a/Modules/IO/TestKernel/include/otbTestMain.h +++ b/Modules/IO/TestKernel/include/otbTestMain.h @@ -424,6 +424,7 @@ int main(int ac, char* av[]) std::cout << "------------- End control baseline tests -------------" << std::endl; #ifdef OTB_USE_MPI + otb::MPIConfig::Instance()->terminate(); } #endif return result; diff --git a/Modules/MPI/MPIConfig/include/otbMPIConfig.h b/Modules/MPI/MPIConfig/include/otbMPIConfig.h index 3b53299..c5bd1ab 100644 --- a/Modules/MPI/MPIConfig/include/otbMPIConfig.h +++ b/Modules/MPI/MPIConfig/include/otbMPIConfig.h @@ -53,6 +53,9 @@ public: /** Initialize MPI Processus */ void Init(int& argc, char** &argv, bool abortOnException = true); + /** Shuts down the MPI environment. */ + void terminate(); + /** Abort all MPI processus. */ void abort(int errCode); @@ -85,6 +88,8 @@ private: bool m_abortOnException; // Boolean to test if the MPI environment is initialized bool m_initialized; + // Boolean to test if the MPI environment is terminated + bool m_terminated; static Pointer m_Singleton; }; diff --git a/Modules/MPI/MPIConfig/src/otbMPIConfig.cxx b/Modules/MPI/MPIConfig/src/otbMPIConfig.cxx index c582dc3..ca967eb 100644 --- a/Modules/MPI/MPIConfig/src/otbMPIConfig.cxx +++ b/Modules/MPI/MPIConfig/src/otbMPIConfig.cxx @@ -77,71 +77,83 @@ MPIConfig::Pointer MPIConfig::Instance() /** CreateInitialize MPI environment */ MPIConfig::MPIConfig() - : m_MyRank(-1), + : m_MyRank(0), m_NbProcs(0), m_abortOnException(true), - m_initialized(false) + m_initialized(false), + m_terminated(false) { } /** Shuts down the MPI environment. */ MPIConfig::~MPIConfig() { - if (m_initialized) - { - if (std::uncaught_exception() && m_abortOnException) - { - abort(EXIT_FAILURE); - } - else - { - int finalized; - OTB_MPI_CHECK_RESULT(MPI_Finalized,(&finalized)); - if (!finalized) - { - OTB_MPI_CHECK_RESULT(MPI_Finalize,()); - } - } - } + terminate(); } /** Initialize MPI environment */ -void MPIConfig::Init(int& argc, char** &argv, bool abortOnException) { - // Abort on exception - m_abortOnException = abortOnException; - // Initialize - int initialized; - OTB_MPI_CHECK_RESULT(MPI_Initialized,(&initialized)); - m_initialized = (initialized == 1); - if (!m_initialized) { - OTB_MPI_CHECK_RESULT(MPI_Init, (&argc, &argv)); - m_initialized = true; - } - // Get MPI rank - int irank = 0; - OTB_MPI_CHECK_RESULT(MPI_Comm_rank, (MPI_COMM_WORLD , &irank)); +void MPIConfig::Init(int &argc, char **&argv, bool abortOnException) { + if( !m_terminated ) + { + // Abort on exception + m_abortOnException = abortOnException; + // Initialize + int initialized; + OTB_MPI_CHECK_RESULT( MPI_Initialized, ( &initialized )); + m_initialized = ( initialized == 1 ); + if( !m_initialized ) + { + OTB_MPI_CHECK_RESULT( MPI_Init, ( &argc, &argv )); + m_initialized = true; + } + // Get MPI rank + int irank = 0; + OTB_MPI_CHECK_RESULT( MPI_Comm_rank, ( MPI_COMM_WORLD, &irank )); - if(irank<0) - { - logError("Negative MPI rank"); - abort(EXIT_FAILURE); - } + if( irank < 0 ) + { + logError( "Negative MPI rank" ); + abort( EXIT_FAILURE ); + } - m_MyRank = static_cast<unsigned int>(irank); + m_MyRank = static_cast<unsigned int>(irank); - // Get MPI NbProocs + // Get MPI NbProocs - int inbprocs=0; + int inbprocs = 0; - OTB_MPI_CHECK_RESULT(MPI_Comm_size, (MPI_COMM_WORLD , &inbprocs)); + OTB_MPI_CHECK_RESULT( MPI_Comm_size, ( MPI_COMM_WORLD, &inbprocs )); - if(inbprocs<1) - { - logError("Negative or null number of processes"); - abort(EXIT_FAILURE); - } + if( inbprocs < 1 ) + { + logError( "Negative or null number of processes" ); + abort( EXIT_FAILURE ); + } - m_NbProcs = static_cast<unsigned int>(inbprocs); + m_NbProcs = static_cast<unsigned int>(inbprocs); + } +} + +/** Shuts down the MPI environment. */ +void MPIConfig::terminate() +{ + if( m_initialized && !m_terminated ) + { + if( std::uncaught_exception() && m_abortOnException ) + { + abort( EXIT_FAILURE ); + } + else + { + int finalized; + OTB_MPI_CHECK_RESULT( MPI_Finalized, ( &finalized )); + if( !finalized ) + { + OTB_MPI_CHECK_RESULT( MPI_Finalize, ( )); + } + } + m_terminated = true; + } } void MPIConfig::abort(int errCode) diff --git a/Modules/Remote/SertitObject.remote.cmake b/Modules/Remote/SertitObject.remote.cmake index a859a3d..5d4e9bd 100644 --- a/Modules/Remote/SertitObject.remote.cmake +++ b/Modules/Remote/SertitObject.remote.cmake @@ -26,5 +26,5 @@ median, variance, kurtosis, skewness. The result could be use to perform further object-oriented image analysis. " GIT_REPOSITORY https://github.com/sertit/SertitObject.git - GIT_TAG d228e0d65de58496e2410ae8944e715b3970760a + GIT_TAG 933963e90bf4b1054b80e099b74b0e41b803ef94 ) diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperApplication.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperApplication.cxx index 6a8a879..b563ac4 100644 --- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperApplication.cxx +++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperApplication.cxx @@ -378,6 +378,35 @@ int Application::Execute() this->DoExecute(); + // Update output information on every output image parameter + for (std::vector<std::string>::const_iterator it = paramList.begin(); + it != paramList.end(); + ++it) + { + std::string key = *it; + if (GetParameterType(key) == ParameterType_OutputImage + && IsParameterEnabled(key) ) + { + Parameter* param = GetParameterByKey(key); + OutputImageParameter* outputParam = dynamic_cast<OutputImageParameter*>(param); + + if(outputParam!=ITK_NULLPTR) + { + outputParam->GetImage()->UpdateOutputInformation(); + } + } + else if (GetParameterType(key) == ParameterType_ComplexOutputImage + && IsParameterEnabled(key)) + { + Parameter* param = GetParameterByKey(key); + ComplexOutputImageParameter* outputParam = dynamic_cast<ComplexOutputImageParameter*>(param); + + if(outputParam!=ITK_NULLPTR) + { + outputParam->GetImage()->UpdateOutputInformation(); + } + } + } return 0; } diff --git a/Modules/Wrappers/CommandLine/src/otbApplicationLauncherCommandLine.cxx b/Modules/Wrappers/CommandLine/src/otbApplicationLauncherCommandLine.cxx index 05d439d..3d66679 100644 --- a/Modules/Wrappers/CommandLine/src/otbApplicationLauncherCommandLine.cxx +++ b/Modules/Wrappers/CommandLine/src/otbApplicationLauncherCommandLine.cxx @@ -303,19 +303,13 @@ int main(int argc, char* argv[]) LauncherType::Pointer launcher = LauncherType::New(); //if (launcher->Load(exp) == true) - if (launcher->Load(vexp) == true) - { - if (launcher->ExecuteAndWriteOutput() == false) - { - return EXIT_FAILURE; - } - } - else - { - return EXIT_FAILURE; - } + bool sucess = launcher->Load(vexp) && launcher->ExecuteAndWriteOutput(); - return EXIT_SUCCESS; + // shutdown MPI after application finished + #ifdef OTB_USE_MPI + otb::MPIConfig::Instance()->terminate(); + #endif + return sucess ? EXIT_SUCCESS : EXIT_FAILURE; } const std::string GetChildNodeTextOf(TiXmlElement *parentElement, std::string key) diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt index bd8070c..1ed8fd7 100644 --- a/RELEASE_NOTES.txt +++ b/RELEASE_NOTES.txt @@ -1,3 +1,18 @@ +OTB-v.5.10.1 - Changes since version 5.10.0 (March 8th, 2017) +--------------------------------------------------------------- + +* Packaging : + * Upgrade to GDAL 2.1.3, compatible with new format of Sentinel 2 products + * Upgrade of SertitObject external module with bugfixes + +* Bugfixes : + + * Orfeo Toolbox (OTB) + * 0001364: Crash of Mapla.app v5.10.0 on MacOSX El Captain 10.11.5 + * 0001365: Python wrapper OTB-5.8.0: @rpath problem on MacOSX El Captain 10.11 + * 0001367: Monteverdi from the OTB standalone package for Mac OS X fails to run + * 0001366: OTB 5.10 : can't use extract ROI using bindings python + OTB-v.5.10.0 - Changes since version 5.8.0 (February 14th, 2017) --------------------------------------------------------------- -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/otb.git _______________________________________________ Pkg-grass-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel

