Commit 866f099b authored by Manuel Grizonnet's avatar Manuel Grizonnet

Merge branch 'develop' into opengl_glvnd_preferences

parents 98fce8df 6243b88b
We are ready to release OTB version MAJOR.MINOR.PATCH. The following steps need to be done:
### 1. Branches
* [ ] **(if major or minor release)** Feature freeze: [create the new release branch](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#create-release-branch)
* [ ] **(if patch release)** Work on the already existing branch `release-MAJOR-MINOR`
* [ ] Make sure the version number in `CMakeLists.txt` is MAJOR.MINOR.PATCH
### 2. Housekeeping
* [ ] In this story, make a list of blocking issues for the release (if any)
* [ ] [Update dashboard scripts](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#dashboard) to support new version numbers
* [ ] [Update the SuperBuild archive](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#superbuild-archive) (if needed)
* [ ] Update release notes (walk the GitLab MR merged history and log all improvements)
* [ ] Update the date in RELEASE_NOTES.txt
* [ ] Run Debian [spelling](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#spelling-check) checker
* [ ] Run shellcheck script from [OTB-Devutils/Scripts/](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb-devutils/blob/master/Scripts/run_shellcheck.sh)
* [ ] [Update translation](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#translation-for-monteverdi-mapla) for Monteverdi and Mapla
* [ ] [Sanity check the binary packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#standalone-packages-sanity-check)
* [ ] Windows
* [ ] Linux
* [ ] Mac
### 3. Actual release
Once all blocking issues are closed, and the previous steps are done:
* [ ] [Tag the release or RC](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#release-tag)
* [ ] **(if major or minor release)**: Merge the release into develop
* [ ] **(if it's the latest release)**: Merge the release into master
* [ ] **(if patch release)**: Backport fixes
* [ ] Update GIT_TAG for all official remote modules (if needed)
### 4. Publish and plan next release
* [ ] [Prepare and upload source packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#prepare-and-upload-source-packages)
* [ ] [Promote nightly packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#promote-nightly-packages)
* [ ] [Update documentation](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#update-documentation)
* [ ] Software Guide
* [ ] Cookbook
* [ ] Doxygen
* [ ] Application online documentation
* [ ] WordPress page "Home" and "Download" pages
* [ ] Upload OTB source archive to [Zenodo](https://zenodo.org/) to create a unique Digital Object Identifier (DOI)
* [ ] Update OTB-Data-Examples.tgz on orfeo-toolbox (packages)
* [ ] Send email to mailing list to announce the release
* [ ] Release announcement on the blog
* [ ] Announcement on social networks (twitter, google+)
* [ ] Forward announcement to news_item@osgeo.org ([OSGeo news](https://www.osgeo.org/foundation-news/))
* [ ] Plan the next release (nominate new release manager, setup PSC meeting on IRC)
* [ ] Contact QGis processing plugin maintainer to update XML description for new OTB-Applications (or [supply it](https://wiki.orfeo-toolbox.org/index.php/QGIS_access_to_OTB_applications#updating-the-XML-descriptors))
* [ ] Remove public branches related to MR or bugfix merged before the release
/label ~story
......@@ -62,17 +62,11 @@
# either expressed or implied, of the FreeBSD Project.
#=============================================================================
# message( "QWT_INCLUDE_DIR: '${QWT_INCLUDE_DIR}'" )
# message( "QWT_INCLUDE_DIR: '${QT_INCLUDE_DIR}'" )
find_path( QWT_INCLUDE_DIR
NAMES qwt_plot.h
PATH_SUFFIXES qwt
PATH_SUFFIXES qwt-qt5 qwt qwt6
)
# message( "QWT_INCLUDE_DIR: '${QWT_INCLUDE_DIR}'" )
# message( "QWT_INCLUDE_DIR: '${QT_INCLUDE_DIR}'" )
set ( QWT_INCLUDE_DIRS ${QWT_INCLUDE_DIR} )
# version
......@@ -104,8 +98,7 @@ endif ()
find_library ( QWT_LIBRARY
NAMES qwt qwt${QWT_MAJOR_VERSION} qwt-qt5
HINTS ${QT_LIBRARY_DIR}
NAMES qwt-qt5 qwt6-qt5 qwt qwt6
)
set ( QWT_LIBRARIES ${QWT_LIBRARY} )
......
......@@ -97,11 +97,24 @@ if(SHARK_CONFIG_FILE)
"${SHARK_VERSION_MAJOR}.${SHARK_VERSION_MINOR}.${SHARK_VERSION_PATCH}")
endif()
# reset required flags
set(SHARK_REQUIRED_C_FLAGS "")
set(SHARK_REQUIRED_CXX_FLAGS "")
set(SHARK_REQUIRED_LINK_FLAGS "")
# Check if Shark was built with OpenMP, CBLAS, DYNLIB, ...
file(STRINGS "${SHARK_INCLUDE_DIR}/shark/Core/Shark.h" SHARK_H_CONTENTS)
if(SHARK_H_CONTENTS MATCHES "#define.SHARK_USE_OPENMP")
set(SHARK_USE_OPENMP 1)
find_package(OpenMP QUIET)
if(OPENMP_FOUND)
set(SHARK_REQUIRED_C_FLAGS "${SHARK_REQUIRED_C_FLAGS} ${OpenMP_C_FLAGS}")
set(SHARK_REQUIRED_CXX_FLAGS "${SHARK_REQUIRED_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
if(OpenMP_EXE_LINKER_FLAGS)
set(SHARK_REQUIRED_LINK_FLAGS "${SHARK_REQUIRED_LINK_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()
endif()
else()
set(SHARK_USE_OPENMP 0)
endif()
......
......@@ -117,8 +117,6 @@ macro(otb_create_application)
list(REMOVE_DUPLICATES OTB_APPLICATIONS_NAME_LIST)
set(OTB_APPLICATIONS_NAME_LIST ${OTB_APPLICATIONS_NAME_LIST}
CACHE STRING "List of all applications" FORCE)
mark_as_advanced(OTB_APPLICATIONS_NAME_LIST)
endmacro()
macro(otb_test_application)
......
......@@ -71,7 +71,7 @@ else()
set(OTB_INSTALL_DATA_DIR share/otb)
endif()
if(NOT OTB_INSTALL_DOC_DIR)
set(OTB_INSTALL_DOC_DIR share/doc/OTB-${OTB_VERSION_MAJOR}.${OTB_VERSION_MINOR})
set(OTB_INSTALL_DOC_DIR share/doc/otb)
endif()
if(NOT OTB_INSTALL_PACKAGE_DIR)
set(OTB_INSTALL_PACKAGE_DIR "lib/cmake/OTB-${OTB_VERSION_MAJOR}.${OTB_VERSION_MINOR}")
......
......@@ -92,6 +92,8 @@ if( CMAKE_HOST_WIN32 )
endif()
endif()
set(OTB_APPLICATIONS_NAME_LIST "" CACHE STRING "List of all applications" FORCE)
mark_as_advanced(OTB_APPLICATIONS_NAME_LIST)
set(OTB_CMAKE_DIR ${OTB_SOURCE_DIR}/CMake)
set(CMAKE_MODULE_PATH ${OTB_CMAKE_DIR} ${CMAKE_MODULE_PATH})
......@@ -166,19 +168,16 @@ if(NOT OTB_INSTALL_JAVA_DIR)
set(OTB_INSTALL_JAVA_DIR "lib/otb/java")
endif()
if(NOT OTB_INSTALL_DATA_DIR)
set(OTB_INSTALL_DATA_DIR share/otb)
set(OTB_INSTALL_DATA_DIR "share/otb")
endif()
if(NOT OTB_INSTALL_DOC_DIR)
set(OTB_INSTALL_DOC_DIR share/doc/OTB-${OTB_VERSION_MAJOR}.${OTB_VERSION_MINOR})
set(OTB_INSTALL_DOC_DIR "share/doc/otb")
endif()
if(NOT OTB_INSTALL_PACKAGE_DIR)
set(OTB_INSTALL_PACKAGE_DIR "${OTB_INSTALL_LIBRARY_DIR}/cmake/OTB-${OTB_VERSION_MAJOR}.${OTB_VERSION_MINOR}")
endif()
if(NOT OTB_INSTALL_DESCR_DIR)
set (OTB_INSTALL_DESCR_DIR "share/otb/description")
endif()
#convert path to native for reconfiguring otbcli.bat.in
file(TO_NATIVE_PATH "${OTB_INSTALL_APP_DIR}" OTB_INSTALL_APP_DIR_NATIVE)
......@@ -234,7 +233,14 @@ endif()
option(OTB_USE_DEPRECATED "Turn on the use and test of deprecated classes" OFF)
mark_as_advanced(OTB_USE_DEPRECATED)
# Although the OpenMP option looks like a 3rd party module, it is NOT. This option
# is handled with other compilation flags in file OTBSetStandardCompilerFlags.cmake
# before any module is parsed or enabled (see OTBModuleEnablement.cmake later on
# during configure). Trying to modify this option from any module is
# useless. Any 3rd party module dragging OpenMP should append
# the corresponding flags to CMAKE_CXX_FLAGS, CMAKE_EXE_LINKER_FLAGS, and so on.
option(OTB_USE_OPENMP "Add openmp compiler and linker flags" OFF)
option(OTB_USE_SSE_FLAGS "Enable SIMD optimizations (hardware dependent)." ON)
include(OTBSetStandardCompilerFlags)
......@@ -423,11 +429,13 @@ install(FILES ${OTB_FIND_PACKAGE_SCRIPTS} DESTINATION ${OTB_INSTALL_PACKAGE_DIR}
# TODO : install release notes, copyright notice, ...
# install(FILES "LICENSE" "NOTICE" "README.txt" DESTINATION ${OTB_INSTALL_DOC_DIR} COMPONENT Runtime)
install(FILES "LICENSE" DESTINATION ${OTB_INSTALL_DOC_DIR} COMPONENT Runtime)
install(FILES "LICENSE" DESTINATION ${OTB_INSTALL_DOC_DIR})
# Configure and install VERSION file
configure_file(VERSION VERSION @ONLY)
install(FILES ${OTB_BINARY_DIR}/VERSION DESTINATION ${OTB_INSTALL_DOC_DIR} COMPONENT Runtime)
install(FILES ${OTB_BINARY_DIR}/VERSION DESTINATION ${OTB_BINARY_DIR}/${OTB_INSTALL_DATA_DIR} )
install(DIRECTORY ${OTB_BINARY_DIR}/${OTB_INSTALL_DATA_DIR} DESTINATION share)
if(BUILD_TESTING)
add_subdirectory(Utilities/InstallTest)
......
......@@ -177,3 +177,21 @@ Regarding labels, we use the following set:
* ~"To Do": action is planned
* ~Doing: work in progress
* ~api ~app ~documentation ~monteverdi ~packaging ~qgis: optional context information
## Versioning
Starting from OTB 7.0.0, we use [semantic versioning](https://semver.org/). See the website for the full spec, in summary:
> Given a version number MAJOR.MINOR.PATCH, increment the:
>
> 1. MAJOR version when you make incompatible API changes,
> 2. MINOR version when you add functionality in a backwards-compatible manner, and
> 3. PATCH version when you make backwards-compatible bug fixes.
>
> Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
The develop branch is always the place where the upcoming major or minor release is worked on. Patch releases are done on release branches, for example 7.0.1 and 7.0.2 could be found on the release-7.0 branch.
For the purpose of defining backwards compatibility, the OTB API covers (not an exhaustive list): the C++ API, the Python bindings, application names, application parameters, output format and interpretation of input data.
When we deprecate part of our public API, we should do two things: (1) update our documentation to let users know about the change, (2) issue a new minor or major release with the deprecation in place.
......@@ -333,7 +333,23 @@ The available syntax for boolean options are:
- OFF, Off, off, false, False, 0 are available for setting a ’false’
boolean value
::
&nodata=(double) value / [int:double, int:double ...]
- This options allows one to set specific nodata values for all or selected bands.
There are two ways of setting nodata values. simple scalar values of band,value pair.
OTB will select either one of them depending on type of nodata value string
- If value is scalar (without bandindex), it will be applied only to first band of image.
- If value is given as "bandindex:value" pair separated by a ":" then
nodata value is applied to only those selected band.
- By default OTB will not alter any existing nodata value.
OGR DataSource options
^^^^^^^^^^^^^^^^^^^^^^^
......
......@@ -16,9 +16,10 @@ Conrad Bielski (JRC),
Cyrille Valladeau (CS),
Daniel McInerney,
David Dubois,
David Youssefi (CNES Intern, then CS),
David Youssefi (CNES Intern, then CS, then CNES),
Edouard Barthelet (Telecom Bretagne and Thales Communications),
Emmanuel Christophe (CNES, then CRISP, then Google),
Emmanuelle Sarrazin (CNES),
Etienne Bougoin (CS),
Gr\'egoire Mercier (Telecom Bretagne),
Guillaume Borrut (CS),
......@@ -33,7 +34,7 @@ Julien Malik (CS),
Julien Michel (CS then CNES),
Julien Osman,
Julien Radoux (UCL),
Laurentiu Nicola (CS Romania),
Laurentiu Nicola (CS ROMANIA),
Luc Hermitte (CS),
Ludovic Hussonnois (CS),
Manuel Grizonnet (CNES),
......
......@@ -157,19 +157,15 @@ The header files contain class declarations
and formatted comments that are used by the Doxygen documentation
system to automatically produce HTML manual pages.
In addition to class headers, there are a few other important header files.
In addition to class headers, there are a few other important ITK header files.
\begin{description}
\item[\code{itkMacro.h}] is found in the
\code{Utilities/ITK/Code/Common} directory
and defines standard system-wide macros (such as \code{Set/Get},
\item[\code{itkMacro.h}] defines standard system-wide macros (such as \code{Set/Get},
constants, and other parameters).
\item[\code{itkNumericTraits.h}] is found in the \code{Utilities/ITK/Code/Common}
directory and defines numeric characteristics for native types such
\item[\code{itkNumericTraits.h}] defines numeric characteristics for native types such
as its maximum and minimum possible values.
\item[\code{itkWin32Header.h}] is found in the \code{Utilities/ITK/Code/Common}
and is used to define operating system parameters to control
\item[\code{itkWin32Header.h}] is used to define operating system parameters to control
the compilation process.
\end{description}
......@@ -215,7 +211,7 @@ In practice object factories are used mainly (and generally transparently) by
the OTB input/output (IO) classes. For most users the greatest impact is on
the use of the \code{New()} method to create a class. Generally the
\code{New()} method is declared and implemented via the macro
\code{itkNewMacro()} found in \code{Utilities/ITK/Common/itkMacro.h}.
\code{itkNewMacro()} found in \code{Modules/Core/Common/include/itkMacro.h}.
\subsection{Smart Pointers and Memory Management}
......
......@@ -100,8 +100,7 @@ In the new application framework, every input, output or parameter derive from
\subdoxygen{otb}{Wrapper}{Parameter}. The application engine supplies the following
types of parameters:
\begin{itemize}
\item \code{ParameterType\_Empty} : parameter without value (can be used to represent
a flag)
\item \code{ParameterType\_Bool} : parameter storing a boolean.
\item \code{ParameterType\_Int} : parameter storing an integer.
\item \code{ParameterType\_Radius} : parameter storing a radius.
\item \code{ParameterType\_Float} : parameter storing a float.
......@@ -128,6 +127,7 @@ types of parameters:
\item \code{ParameterType\_OutputProcessXML} : parameter storing an output XML file name.
\item \code{ParameterType\_RAM} : parameter storing the maximum amount of RAM to be used.
\end{itemize}
\textbf{Note :} The former \code{ParameterType\_Empty} is \textbf{deprecated} and shall be replaced by \code{ParameterType\_Bool}.
\subsection{Parameters description}
......
\chapter{Adding New Modules}
\label{chapter:newModules}
This chapter is concerned with the creation of new modules.
This chapter is concerned with the creation of new modules.
The following sections give precise instructions about :
\begin{itemize}
\item the organization of your directories
......@@ -14,20 +14,20 @@ The following sections give precise instructions about :
\label{sec:writemodule}
There is a template of OTB remote module which help you start developing you're
remote module: \href{https://github.com/orfeotoolbox/otbExternalModuleTemplate}{External Module Template}
remote module: \href{https://gitlab.orfeo-toolbox.org/remote_modules/remote-module-template}{External Module Template}
Each module is made of different components, which are described in the following sections.
\section{The otb-module.cmake file}
This file is mandatory. It follows the CMake syntax, and has two purposes:
This file is mandatory. It follows the CMake syntax, and has two purposes: