diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9525bdc2898a29d2e111dba868cb80dc60bc912f..8b22dbf873348f64754cfab489f297415c198c90 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,11 +5,11 @@ # But Git fails to manage efficiently numerous LFS data. # We have to use directly git-lfs wrapping commands to have an # efficient cloning step. -# Furthermore, Git-LFS and Gitlab sufer a bug preventing usage of +# Furthermore, Git-LFS and Gitlab sufer a bug preventing usage of # GIT_STRATEGY=fetch (https://gitlab.com/gitlab-org/gitlab-runner/issues/3318) variables: - BUILD_IMAGE_REGISTRY: $CI_REGISTRY/gbonnefille/otb-build-env + BUILD_IMAGE_REGISTRY: $CI_REGISTRY/orfeotoolbox/otb-build-env DOCKER_DRIVER: overlay2 GIT_DEPTH: "3" # Disable automatic checkout to let us fetch LFS before @@ -44,7 +44,7 @@ fast-build: extends: .general only: [merge_requests, branches] stage: precheck - image: $CI_REGISTRY/gpasero/otb/otb-install-ubuntu-native + image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-native-develop:latest before_script: - export GIT_LFS_SKIP_SMUDGE=1 - git checkout $CI_COMMIT_REF_NAME @@ -53,17 +53,20 @@ fast-build: - ctest -V -S CI/main_ci.cmake -DIMAGE_NAME:string=ubuntu-18.04-fast - ccache -s -debian-build: +.common-build: extends: .general only: [merge_requests] stage: build + dependencies: [] + +debian-build: + extends: .common-build image: $BUILD_IMAGE_REGISTRY/otb-debian-native:unstable script: - xvfb-run -a -n 1 -s "-screen 0 1024x768x24 -dpi 96" ctest -V -S CI/main_ci.cmake -DIMAGE_NAME:string=debian-unstable-gcc -.common-build: - extends: .general - stage: build +ubuntu-llvm: + extends: .common-build image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-native:18.04 script: - xvfb-run -a -n 1 -s "-screen 0 1024x768x24 -dpi 96" ctest -V -S CI/main_ci.cmake -DIMAGE_NAME:string=ubuntu-18.04-llvm @@ -73,15 +76,10 @@ debian-build: - build/Documentation/Cookbook/latex/CookBook-*.pdf - build/Documentation/Doxygen/OTB-Doxygen-*.tar.bz2 -ubuntu-llvm: - only: [merge_requests] - extends: .common-build - -superbuild-prepare: - only: [merge_requests] +.common-prepare: extends: .general + only: [merge_requests] stage: prepare - image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-superbuild-base:18.04 before_script: # This override the previous before_script - git checkout $CI_COMMIT_REF_NAME @@ -95,8 +93,6 @@ superbuild-prepare: - ssh-add <(echo "$K8S_SECRET_SSH") # This is for debug, we are checking the owner of the ssh key - ssh -o StrictHostKeyChecking=no -T git@gitlab.orfeo-toolbox.org - script: - - ctest -VV -S CI/prepare_superbuild.cmake -DIMAGE_NAME:string=otb-ubuntu-superbuild-base after_script: - echo "Nothing to do for after_script" artifacts: @@ -106,12 +102,30 @@ superbuild-prepare: - build/*/*/*/*.log - sb_branch.txt -superbuild-build: - only: [merge_requests] - extends: .general - stage: build +ubuntu-superbuild-prepare: + extends: .common-prepare image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-superbuild-base:18.04 script: - - ctest -VV -S CI/main_superbuild.cmake -DIMAGE_NAME:string=otb-ubuntu-superbuild-base + - ctest -V -S CI/prepare_superbuild.cmake -DIMAGE_NAME:string=otb-ubuntu-superbuild-base + +centos-superbuild-prepare: + extends: .common-prepare + image: $BUILD_IMAGE_REGISTRY/otb-centos-superbuild-base:6.6 + script: + - ctest -V -S CI/prepare_superbuild.cmake -DIMAGE_NAME:string=otb-centos-superbuild-base + +ubuntu-superbuild-build: + extends: .common-build + image: $BUILD_IMAGE_REGISTRY/otb-ubuntu-superbuild-base:18.04 + script: + - xvfb-run -a -n 1 -s "-screen 0 1024x768x24 -dpi 96" ctest -V -S CI/main_superbuild.cmake -DIMAGE_NAME:string=otb-ubuntu-superbuild-base + dependencies: + - ubuntu-superbuild-prepare + +centos-superbuild-build: + extends: .common-build + image: $BUILD_IMAGE_REGISTRY/otb-centos-superbuild-base:6.6 + script: + - xvfb-run -a -n 1 -s "-screen 0 1024x768x24 -dpi 96" ctest -V -S CI/main_superbuild.cmake -DIMAGE_NAME:string=otb-centos-superbuild-base dependencies: - - superbuild-prepare + - centos-superbuild-prepare diff --git a/.gitlab/merge_request_templates/request_for_changes.md b/.gitlab/merge_request_templates/request_for_changes.md index 31bf9cb52c20e5b67e82be1158a46b7bbd7ca268..79acdadae838587114d6aa593ddcf0a78a8ef3bd 100644 --- a/.gitlab/merge_request_templates/request_for_changes.md +++ b/.gitlab/merge_request_templates/request_for_changes.md @@ -45,3 +45,4 @@ The copyright owner is *COPYRIGHT OWNER (OR OWNER'S AGENT)* and has signed the O - The feature branch is (reasonably) up-to-date with the base branch - Dashboard is green - Copyright owner has signed the ORFEO ToolBox Contributor License Agreement +- Optionally, run `git diff develop... -U0 --no-color | clang-format-diff.py -p1 -i` on latest changes and commit diff --git a/CI/configure_option.cmake b/CI/configure_option.cmake index 26502b11bfa758e483b8b60cafb62e1ad6ff9067..d0b41c6adc0fe7546fecfbb698a5710cf849755d 100644 --- a/CI/configure_option.cmake +++ b/CI/configure_option.cmake @@ -19,13 +19,13 @@ # # This script is a prototype for the future CI, it may evolve rapidly in a near future -#This file set the following variable : +#This file set the following variable : # * otb_build_project_option # * otb_use_option # * otb_wrap_option # * CONFIGURE_OPTIONS -set (otb_build_project_option +set (otb_build_project_option "BUILD_COOKBOOK:BOOL=OFF BUILD_EXAMPLES:BOOL=ON BUILD_SHARED_LIBS:BOOL=ON @@ -40,7 +40,7 @@ OTB_USE_GLUT:BOOL=ON OTB_USE_GSL:BOOL=ON OTB_USE_LIBKML:BOOL=ON OTB_USE_LIBSVM:BOOL=ON -OTB_USE_MPI:BOOL=ON +OTB_USE_MPI:BOOL=OFF OTB_USE_MUPARSER:BOOL=ON OTB_USE_MUPARSERX:BOOL=ON OTB_USE_OPENCV:BOOL=ON diff --git a/CI/macros.cmake b/CI/macros.cmake new file mode 100644 index 0000000000000000000000000000000000000000..544daca845fd1b0d8fe36d746cd698fa09ce3a76 --- /dev/null +++ b/CI/macros.cmake @@ -0,0 +1,53 @@ +# +# Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) +# +# This file is part of Orfeo Toolbox +# +# https://www.orfeo-toolbox.org/ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# This script is for the superbuild build on the CI platform + +# Find the build name and CI profile +macro( set_dash_build_name ) + set(ci_profile wip) + + set(ci_mr_source "$ENV{CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}") + set(ci_mr_target "$ENV{CI_MERGE_REQUEST_TARGET_BRANCH_NAME}") + set(ci_mr_iid "$ENV{CI_MERGE_REQUEST_IID}") + + set(ci_pipeline_id "$ENV{CI_PIPELINE_ID}") + set(ci_job_id "$ENV{CI_JOB_ID}") + + set(ci_ref_name "$ENV{CI_COMMIT_REF_NAME}") + + set (CTEST_BUILD_NAME ${ci_short_sha}) + + if(ci_mr_source AND ci_mr_target AND ci_mr_iid) + set (CTEST_BUILD_NAME "${ci_mr_source} (MR ${ci_mr_iid}) P-${ci_pipeline_id}") + set(ci_profile mr) + + elseif(ci_ref_name) + set (CTEST_BUILD_NAME "${ci_ref_name} P-${ci_pipeline_id}") + + if("${ci_ref_name}" STREQUAL "develop") + set(ci_profile develop) + + elseif("${ci_ref_name}" MATCHES "^release-[0-9]+\\.[0-9]+\$") + set(ci_profile release) + endif() + + endif() + +endmacro() diff --git a/CI/main_ci.cmake b/CI/main_ci.cmake index c0a1cf37f37e88b86af2a88efab623ff02079b0b..eba3829c5017383a253e86a2d197ec0f1b860f1a 100644 --- a/CI/main_ci.cmake +++ b/CI/main_ci.cmake @@ -18,6 +18,8 @@ # limitations under the License. # +include( "${CMAKE_CURRENT_LIST_DIR}/macros.cmake" ) + # This script is a prototype for the future CI, it may evolve rapidly in a near future get_filename_component(OTB_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR} DIRECTORY) set (ENV{LANG} "C") # Only ascii output @@ -36,23 +38,7 @@ else() endif() # Find the build name and CI profile -set(ci_profile wip) -set(ci_mr_source "$ENV{CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}") -set(ci_mr_target "$ENV{CI_MERGE_REQUEST_TARGET_BRANCH_NAME}") -set(ci_mr_iid "$ENV{CI_MERGE_REQUEST_IID}") -set(ci_ref_name "$ENV{CI_COMMIT_REF_NAME}") -set (CTEST_BUILD_NAME ${ci_short_sha}) -if(ci_mr_source AND ci_mr_target AND ci_mr_iid) - set (CTEST_BUILD_NAME "${ci_mr_source} (MR ${ci_mr_iid})") - set(ci_profile mr) -elseif(ci_ref_name) - set (CTEST_BUILD_NAME "${ci_ref_name}") - if("${ci_ref_name}" STREQUAL "develop") - set(ci_profile develop) - elseif("${ci_ref_name}" MATCHES "^release-[0-9]+\\.[0-9]+\$") - set(ci_profile release) - endif() -endif() +set_dash_build_name() # set pipelines to enable documentation set(ci_cookbook_profiles mr develop release) @@ -109,7 +95,7 @@ find_program(CTEST_GIT_COMMAND NAMES git git.cmd) # End of configuration -ctest_start (Experimental TRACK Experimental) +ctest_start (Experimental TRACK CI_Build) ctest_update() diff --git a/CI/main_superbuild.cmake b/CI/main_superbuild.cmake index 93c896662166992ebdf1bd0e8cce860f26c2d959..757dbb1ad39e55f75e76f157da0ddd15118c74d7 100644 --- a/CI/main_superbuild.cmake +++ b/CI/main_superbuild.cmake @@ -18,6 +18,8 @@ # limitations under the License. # +include( "${CMAKE_CURRENT_LIST_DIR}/macros.cmake" ) + # This script is a prototype for the future CI, it may evolve rapidly in a near future set (ENV{LANG} "C") # Only ascii output get_filename_component(OTB_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR} DIRECTORY) @@ -44,7 +46,12 @@ file(READ "${OTB_SOURCE_DIR}/sb_branch.txt" BRANCH_NAME) ############################################################################### set ( REMOTE "https://gitlab.orfeo-toolbox.org/gbonnefille/superbuild-artifact.git") # set ( BRANCH_NAME "${IMAGE_NAME}/${SB_MD5}") -set( GIT "git" ) + +# Look for a GIT command-line client. +find_program(CTEST_GIT_COMMAND NAMES git git.cmd) + +# FIXME: Replace ${GIT} variable with $[CTEST_GIT_COMMAND}" +set( GIT "${CTEST_GIT_COMMAND}" ) execute_process( COMMAND ${GIT} "clone" "${REMOTE}" "--branch" "${BRANCH_NAME}" @@ -69,7 +76,7 @@ endif() set (CMAKE_COMMAND "cmake") execute_process( - COMMAND ${CMAKE_COMMAND} "-E" "tar" "xf" + COMMAND ${CMAKE_COMMAND} "-E" "tar" "xf" "${CI_PROJ_DIR}/superbuild-artifact/SuperBuild_Install.tar" WORKING_DIRECTORY ${CI_ROOT_DIR} ) @@ -92,10 +99,12 @@ endif() set ( CTEST_BUILD_CONFIGURATION "Release" ) set ( CTEST_CMAKE_GENERATOR "Unix Makefiles" ) -set ( CTEST_BUILD_FLAGS "-j16" ) -set ( CTEST_BUILD_NAME "Superbuild_Build_Otb" ) +set ( CTEST_BUILD_FLAGS "-j8" ) set ( CTEST_SITE "${IMAGE_NAME}" ) +# Find the build name and CI profile +set_dash_build_name() + # Directory variable set ( CTEST_SOURCE_DIRECTORY "${OTB_SOURCE_DIR}" ) set ( CTEST_BINARY_DIRECTORY "${OTB_SOURCE_DIR}/build/" ) @@ -105,25 +114,30 @@ set ( PROJECT_SOURCE_DIR "${OTB_SOURCE_DIR}" ) set (CONFIGURE_OPTIONS "") include ( "${CMAKE_CURRENT_LIST_DIR}/configure_option.cmake" ) # SuperBuild case : one more configure option -set ( CONFIGURE_OPTIONS +set ( CONFIGURE_OPTIONS "${CONFIGURE_OPTIONS}-DCMAKE_PREFIX_PATH=${XDK_PATH};") # Hack because there is no more superbuild available (LIBKML) -set ( CONFIGURE_OPTIONS +set ( CONFIGURE_OPTIONS "${CONFIGURE_OPTIONS}-DOTB_USE_LIBKML:BOOL=OFF;" ) # FIX ME this part might platform dependent set( GDAL_DATA "${XDK_PATH}/share/gdal" ) set( GEOTIFF_CSV "${XDK_PATH}/share/epsg_csv" ) set( PROJ_LIB "${XDK_PATH}/share" ) -set( CTEST_ENVIRONMENT +set( CTEST_ENVIRONMENT "PATH=${XDK_PATH}/lib:${XDK_PATH}/bin:$ENV{PATH} GDAL_DATA= GDAL_DATA GEOTIFF_CSV= GEOTIFF_CSV PROJ_LIB= PROJ_LIB ") -ctest_start (Experimental TRACK Experimental) +# Sources are already checked out : do nothing for update +set(CTEST_GIT_UPDATE_CUSTOM echo No update) + +ctest_start (Experimental TRACK CI_Build) + +ctest_update() ctest_configure(BUILD "${CTEST_BINARY_DIRECTORY}" SOURCE "${OTB_SOURCE_DIR}" @@ -134,7 +148,7 @@ ctest_configure(BUILD "${CTEST_BINARY_DIRECTORY}" if ( NOT _configure_rv EQUAL 0 ) ctest_submit() - message( SEND_ERROR "An error occurs during ctest_configure.") + message( FATAL_ERROR "An error occurs during ctest_configure.") endif() ctest_build(BUILD "${CTEST_BINARY_DIRECTORY}" @@ -143,19 +157,17 @@ ctest_build(BUILD "${CTEST_BINARY_DIRECTORY}" ) if ( NOT _build_rv EQUAL 0 ) - ctest_submit() message( SEND_ERROR "An error occurs during ctest_build.") endif() # Uncomment when ready for test -# ctest_test(PARALLEL_LEVEL 8 -# RETURN_VALUE _test_rv -# CAPTURE_CMAKE_ERROR _test_error -# ) - -# if ( NOT _test_rv EQUAL 0 ) -# ctest_submit() -# message( SEND_ERROR "An error occurs during ctest_test.") -# endif() +ctest_test(PARALLEL_LEVEL 8 + RETURN_VALUE _test_rv + CAPTURE_CMAKE_ERROR _test_error + ) + +if ( NOT _test_rv EQUAL 0 ) + message( WARNING "Some tests have failed.") +endif() ctest_submit() diff --git a/CI/prepare_superbuild.cmake b/CI/prepare_superbuild.cmake index c94329788b40a995e5c1a497823fbfc9c8b32743..65f420c5e865e43043e544764c599a494457f242 100644 --- a/CI/prepare_superbuild.cmake +++ b/CI/prepare_superbuild.cmake @@ -19,6 +19,8 @@ # # This script is for the superbuild build on the CI platform +include( "${CMAKE_CURRENT_LIST_DIR}/macros.cmake" ) + set (ENV{LANG} "C") # Only ascii output get_filename_component(OTB_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR} DIRECTORY) get_filename_component(CI_PROJ_DIR ${OTB_SOURCE_DIR} DIRECTORY) @@ -39,7 +41,10 @@ set ( PROJECT_SOURCE_DIR "${SUPERBUILD_SOURCE_DIR}" ) set ( CTEST_SOURCE_DIRECTORY "${SUPERBUILD_SOURCE_DIR}" ) set ( CTEST_BINARY_DIRECTORY "${OTB_SOURCE_DIR}/build/" ) set ( CTEST_SITE "${IMAGE_NAME}" ) -set ( CTEST_BUILD_NAME "Superbuild_Build_Depends" ) # FIXME + + +# Find the build name and CI profile +set_dash_build_name() # We need a directory independent from user # in CI the architecture is /builds/user/otb @@ -50,7 +55,7 @@ set ( CTEST_BUILD_NAME "Superbuild_Build_Depends" ) # FIXME set (CTEST_INSTALL_DIRECTORY "${CI_ROOT_DIR}/xdk/") # HACK -# This is needed because when using return() function ctest is trying +# This is needed because when using return() function ctest is trying # to run the CTEST_COMMAND. And we need it to not produce an error set (CTEST_COMMAND "echo \"Exit\"") # HACK FIX ME set (CMAKE_COMMAND "cmake") @@ -61,12 +66,23 @@ set (CMAKE_COMMAND "cmake") ######################################################################## ######################################################################## -ctest_start (Experimental TRACK Experimental) +# Look for a GIT command-line client. +find_program(CTEST_GIT_COMMAND NAMES git git.cmd) + +# FIXME: Replace ${GIT} variable with $[CTEST_GIT_COMMAND}" +set( GIT "${CTEST_GIT_COMMAND}" ) + +# Sources are already checked out : do nothing for update +set(CTEST_GIT_UPDATE_CUSTOM echo No update) + +ctest_start (Experimental TRACK CI_Prepare) + +ctest_update( SOURCE "${OTB_SOURCE_DIR}" ) set(CTEST_BUILD_FLAGS "-j16") set ( SB_CONFIGURE_OPTIONS "") -include( "${CMAKE_CURRENT_LIST_DIR}/sb_configure_options.cmake" ) +include( "${CMAKE_CURRENT_LIST_DIR}/../SuperBuild/CI/configure_options.cmake" ) ctest_configure(BUILD "${CTEST_BINARY_DIRECTORY}" SOURCE "${SUPERBUILD_SOURCE_DIR}" @@ -117,9 +133,9 @@ file ( WRITE "${OTB_SOURCE_DIR}/sb_branch.txt" "${IMAGE_NAME}/${SB_MD5}") message( "Checking out git for existence of archive") set ( REMOTE "https://gitlab.orfeo-toolbox.org/gbonnefille/superbuild-artifact/") set ( BRANCH_NAME "${IMAGE_NAME}/${SB_MD5}") -set( GIT "git" ) + execute_process( - COMMAND ${GIT} "ls-remote" "${REMOTE}" "${BRANCH_NAME}" + COMMAND ${GIT} "ls-remote" "${REMOTE}" "${BRANCH_NAME}" OUTPUT_VARIABLE IS_SB_BUILD ) if ( IS_SB_BUILD ) @@ -162,17 +178,17 @@ ctest_submit() # The image used will be passed to this script. # TODO verify that images does not have forbidden char in there name # TODO right now we rely on ctest_build to know whether there has been an error -# in build, whereas SuperBuild does not necessarily return an error if something +# in build, whereas SuperBuild does not necessarily return an error if something #Â goes wrong set ( SB_ARTIFACT_GIT "${CI_PROJ_DIR}/superbuild-artifact" ) -# REPOSITORY_GIT_URL and REMOTE whould be the same. Right now there are +# REPOSITORY_GIT_URL and REMOTE whould be the same. Right now there are # different because one is https and one is ssh. Both should be ssh. set( REPOSITORY_GIT_URL "git@gitlab.orfeo-toolbox.org:gbonnefille/superbuild-artifact.git") # We clone master to have a basic configuration, mainly a correct .gitattribute # git clone $REMOTE --branch master --depth 1 superbuild-artifact execute_process( - COMMAND ${GIT} "clone" "${REPOSITORY_GIT_URL}" + COMMAND ${GIT} "clone" "${REPOSITORY_GIT_URL}" "--branch" "master" "--depth" "1" "superbuild-artifact" WORKING_DIRECTORY "${CI_PROJ_DIR}" ) @@ -181,7 +197,7 @@ execute_process( # StrictHostKeyChecking so we don't have to add the host as a known key # -F /dev/null so the agent is not taking a default file ~/.ssh/.. execute_process( - COMMAND ${GIT} "config" "core.sshCommand" + COMMAND ${GIT} "config" "core.sshCommand" "ssh -o StrictHostKeyChecking=no -F /dev/null" WORKING_DIRECTORY ${SB_ARTIFACT_GIT} RESULT_VARIABLE ssh_res @@ -248,13 +264,13 @@ set ( SB_TAR_NAME "SuperBuild_Install.tar" ) # We need to create tar in its directory to avoid weird name in file # "tar: Removing leading `../../' from member names" # WARNING -# We are creating a tar containing xdk/.., so when extracting the archive in +# We are creating a tar containing xdk/.., so when extracting the archive in # an other environment the output file will be xdk... Obvious isn't it? # Well... Not for everyone... -# May be for easier maintainability the tar name should be the same as the +# May be for easier maintainability the tar name should be the same as the # file inside. execute_process( - COMMAND ${CMAKE_COMMAND} "-E" "tar" "cf" "${SB_TAR_NAME}" + COMMAND ${CMAKE_COMMAND} "-E" "tar" "cf" "${SB_TAR_NAME}" -- "${CTEST_INSTALL_DIRECTORY}" WORKING_DIRECTORY ${CI_ROOT_DIR} ) @@ -295,7 +311,7 @@ endif() # In our case if toto is deploying a key in superbuild-artifact repo # the the mail will be toto's execute_process( - COMMAND ${GIT} "commit" "--author=\"otbbot <otbbot@orfeo-toolbox.org>\"" + COMMAND ${GIT} "commit" "--author=\"otbbot <otbbot@orfeo-toolbox.org>\"" "-m" "\"New Superbuild for ${SB_MD5} on ${IMAGE_NAME}\"" WORKING_DIRECTORY ${SB_ARTIFACT_GIT} RESULT_VARIABLE com_res @@ -342,4 +358,4 @@ if ( DEBUG ) message( "push_res = ${push_res}" ) message( "push_out = ${push_out}" ) message( "push_err = ${push_err}" ) -endif() \ No newline at end of file +endif() diff --git a/CI/ubuntu-18.04-llvm-nodoc.cmake b/CI/ubuntu-18.04-llvm-nodoc.cmake new file mode 100644 index 0000000000000000000000000000000000000000..27ab15d0cd7e0e9c9a7802f2831baf5ef5e5f180 --- /dev/null +++ b/CI/ubuntu-18.04-llvm-nodoc.cmake @@ -0,0 +1,32 @@ +# +# Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) +# +# This file is part of Orfeo Toolbox +# +# https://www.orfeo-toolbox.org/ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Configuration options for ubuntu-18.04-llvm-nodoc + +set(site_option +"opencv_INCLUDE_DIR:PATH=/usr/include +CMAKE_C_COMPILER:STRING=clang +CMAKE_CXX_COMPILER:STRING=clang++ +CMAKE_EXE_LINKER_FLAGS:STRING=-fuse-ld=lld +CMAKE_MODULE_LINKER_FLAGS:STRING=-fuse-ld=lld +CMAKE_SHARED_LINKER_FLAGS:STRING=-fuse-ld=lld +CMAKE_C_COMPILER_LAUNCHER:STRING=ccache +CMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache +OTB_USE_SHARK:BOOL=OFF") diff --git a/CI/ubuntu-18.04-llvm.cmake b/CI/ubuntu-18.04-llvm.cmake index 6480ab2f31b9ddb22b56a15d61ac305a85e85423..9b838da433a06cff9f26281578ad56c0b20c52ec 100644 --- a/CI/ubuntu-18.04-llvm.cmake +++ b/CI/ubuntu-18.04-llvm.cmake @@ -49,6 +49,7 @@ OTB_DOXYGEN_ITK_DOXYGEN_URL:STRING=\"https://itk.org/Doxygen413/html\" # See otb-devutils/Scripts/tagfile_fix.py message(STATUS "Get resources for Doxygen build ...") execute_process(COMMAND wget https://www.orfeo-toolbox.org/packages/archives/Doxygen/InsightDoxygenDocTag-4.13.0.gz - COMMAND gzip -d InsightDoxygenDocTag-4.13.0.gz + WORKING_DIRECTORY ${CTEST_BINARY_DIRECTORY}) + execute_process(COMMAND gzip -d InsightDoxygenDocTag-4.13.0.gz WORKING_DIRECTORY ${CTEST_BINARY_DIRECTORY}) endif() diff --git a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetSpinBoxes.cxx b/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetSpinBoxes.cxx index 4af61804517d82518ce13d78ec021a86b044fee5..9984222ae6a1fd7240dc544e2d9a811d15e245ce 100644 --- a/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetSpinBoxes.cxx +++ b/Modules/Wrappers/QtWidget/src/otbWrapperQtWidgetSpinBoxes.cxx @@ -103,7 +103,8 @@ void QtWidgetSpinBox::SetValueNoSignal(int value) int QtWidgetSpinBox::valueFromText(const QString &text) const { bool ok; - int result = QLocale::system().toInt(text, &ok); + // Force C locale because OTB gui is not i18n + int result = QLocale::c().toInt(text, &ok); if (ok) { return result; @@ -162,7 +163,8 @@ void QtWidgetDoubleSpinBox::SetValueNoSignal(double value) double QtWidgetDoubleSpinBox::valueFromText(const QString &text) const { bool ok; - double result = QLocale::system().toDouble(text, &ok); + // Force C locale because OTB gui is not i18n + double result = QLocale::c().toDouble(text, &ok); if (ok) { return result; @@ -180,7 +182,9 @@ QString QtWidgetDoubleSpinBox::textFromValue(double value) const // which leads to ugly trailing zeros for small values (e.g 1.50000) // We use std::ostringstream because QString::arg formatting support is too limited std::ostringstream oss; - oss.imbue(std::locale("")); // use system's locale for formatting + + // Force C locale because OTB gui is not i18n + oss.imbue(std::locale::classic()); // Set precision to the number of decimal digits that can be represented without change. // Use float precision because OTB parameter is float @@ -190,9 +194,8 @@ QString QtWidgetDoubleSpinBox::textFromValue(double value) const // Add a trailing dot if the number is integer, // so that int and float parameters are more visually different. - // For now this is done for all locales, even though not all locales use this - // convention for formatting decimals... - const char dot = std::use_facet<std::numpunct<char>>(std::locale("")).decimal_point(); + // This is an ok convention as long as we stay in C or english locale + const char dot = std::use_facet<std::numpunct<char>>(std::locale::classic()).decimal_point(); if (oss.str().find(dot) == std::string::npos) { oss << dot; diff --git a/CI/sb_configure_options.cmake b/SuperBuild/CI/configure_options.cmake similarity index 95% rename from CI/sb_configure_options.cmake rename to SuperBuild/CI/configure_options.cmake index 1487eedcaf79fce02a113d75d030a6635595c2dc..7b1b1e2e9deb0e7d7780b43edd31425f8c1be895 100644 --- a/CI/sb_configure_options.cmake +++ b/SuperBuild/CI/configure_options.cmake @@ -24,7 +24,8 @@ set ( cmake_configure_option CMAKE_INSTALL_PREFIX:PATH=${CTEST_INSTALL_DIRECTORY}") set ( temporary_option -"OTB_USE_LIBKML=OFF") +"OTB_USE_LIBKML=OFF +OTB_USE_MPI=OFF") set(concat_options "${cmake_configure_option} @@ -36,4 +37,4 @@ string (REPLACE "\n" ";" sb_options ${concat_options}) foreach(item ${sb_options}) set( SB_CONFIGURE_OPTIONS "${SB_CONFIGURE_OPTIONS}-D${item};") -endforeach(item) \ No newline at end of file +endforeach(item) diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index a4d361d3aecbe6c35fd496837d27b1db35070653..27f42a751b0c8966d6775369645e9c39a43b6b80 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -18,6 +18,8 @@ # limitations under the License. # +## COMMMENT to dirty superbuild artifact. TAG: 1. + cmake_minimum_required(VERSION 3.3.0) project(OTB-SuperBuild)