Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions .circleci/circleci.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@

# set_from_env
# ------------
#
# Sets a CMake variable from an environment variable. If the
# environment variable is not defined then the CMake variable is not
# modified. If DEFAULT is specified then if the environment variable
# is not defined the default value is used. Alternatively, if REQUIRED
# is specified then a FATAL_ERROR is generated.
#
# set_from_env( <variable> <environment variable> [REQUIRED|DEFAULT value] )
function(set_from_env var env_var)
if(NOT DEFINED ENV{${env_var}})
if (ARGV2 STREQUAL "REQUIRED")
message(FATAL_ERROR "Required environment variable \"${env_var}\" not defined.")
elseif (ARGV2 STREQUAL "DEFAULT")
set(${var} ${ARGV3} PARENT_SCOPE)
endif()
else()
set(${var} $ENV{${env_var}} PARENT_SCOPE)
endif()
endfunction()

set(CTEST_SITE "CircleCI")
set(CTEST_UPDATE_VERSION_ONLY 1)

set_from_env(PARALLEL_LEVEL "PARALLEL_LEVEL" DEFAULT 2 )
set( CTEST_TEST_ARGS ${CTEST_TEST_ARGS} PARALLEL_LEVEL ${PARALLEL_LEVEL})


# Make environment variables to CMake variables for CTest
set_from_env(CTEST_CMAKE_GENERATOR "CTEST_CMAKE_GENERATOR" DEFAULT "Unix Makefiles" )
set_from_env(CTEST_BINARY_DIRECTORY "CTEST_BINARY_DIRECTORY")
set_from_env(CTEST_DASHBOARD_ROOT "CTEST_DASHBOARD_ROOT" REQUIRED)
set_from_env(CTEST_SOURCE_DIRECTORY "CTEST_SOURCE_DIRECTORY" REQUIRED)
set_from_env(CTEST_CONFIGURATION_TYPE "CTEST_CONFIGURATION_TYPE" DEFAULT "Release")
set_from_env(CTEST_BUILD_TARGET "CTEST_BUILD_TARGET")
set_from_env(CTEST_TEST_ARGS "CTEST_TEST_ARGS")
set_from_env(CTEST_BUILD_FLAGS "CTEST_BUILD_FLAGS" )

# Construct build name based on what is being built
string(SUBSTRING $ENV{CIRCLE_SHA1} 0 7 commit_sha1)
set(CTEST_BUILD_NAME "CircleCI-$ENV{CIRCLE_BRANCH}-${commit_sha1}")

set_from_env(DASHBOARD_BRANCH_DIRECTORY "DASHBOARD_BRANCH_DIRECTORY" REQUIRED)
set_from_env(dashboard_git_branch "CIRCLE_BRANCH")
set_from_env(dashboard_model "DASHBOARD_MODEL" DEFAULT "Continuous" )
set(dashboard_loop 0)

if ( EXISTS "${CTEST_SOURCE_DIRECTORY}/circle.yml")
list(APPEND CTEST_NOTES_FILES
"${CTEST_SOURCE_DIRECTORY}/circle.yml"
)
endif()

if ( EXISTS "${CTEST_SOURCE_DIRECTORY}/.circleci/config.yml")
list(APPEND CTEST_NOTES_FILES
"${CTEST_SOURCE_DIRECTORY}/.circleci/config.yml"
)
endif()


SET (dashboard_cache_default "
BUILD_DOCUMENTATION:BOOL=OFF
BUILD_EXAMPLES:BOOL=OFF
BUILD_SHARED_LIBS:BOOL=ON
BUILD_TESTING:BOOL=ON
ITK_USE_KWSTYLE:BOOL=OFF
ITK_BUILD_DEFAULT_MODULES:BOOL=ON
" )

set_from_env(dashboard_cache "CTEST_CACHE" DEFAULT ${dashboard_cache_default})


if (DEFINED ENV{DISTCC_DIR})
SET (dashboard_cache "${dashboard_cache}
CMAKE_CXX_COMPILER_LAUNCHER:STRING=distcc
CMAKE_C_COMPILER_LAUNCHER:STRING=distcc
")
endif()



include("${DASHBOARD_BRANCH_DIRECTORY}/itk_common.cmake")
129 changes: 87 additions & 42 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,28 @@
referenced:
defaults: &defaults
docker:
- image: circleci/python:2.7
working_directory: ~/
resource_class: large
environment:
DASHBOARD_BRANCH_DIRECTORY: /home/circleci/ITK-dashboard
CTEST_DASHBOARD_ROOT: /home/circleci
CTEST_SOURCE_DIRECTORY: /home/circleci/ITK
CTEST_BINARY_DIRECTORY: /home/circleci/ITK-build
CTEST_BUILD_FLAGS: "-j 4"
CTEST_CONFIGURATION_TYPE: "Release"
CTEST_OUTPUT_ON_FAILURE: 1
PARALLEL_LEVEL: 4
CCACHE_NODIRECT: 1
ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS: 2
dependencies: &dependencies
run:
name: Dependencies
command: |
sudo apt-get install -y rsync ninja-build ccache
sudo pip install --upgrade pip
sudo pip install scikit-ci-addons
ci_addons circle/install_cmake.py 3.9.5
generate-hash-step: &generate-hash-step
run:
name: Generate external data hash
Expand All @@ -10,65 +34,45 @@ referenced:
keys:
- 'v1-external-data-{{ checksum "/home/circleci/external-data.hashable" }}'
- 'v1-external-data'

restore-ccache-step: &restore-ccache-step
restore_cache:
keys:
- ccache-{{ arch }}-{{ .Branch }}
- ccache-{{ arch }}-master
clone-dashboard-step: &clone-dashboard-step
run:
name: Cloning dashboard branch
command: |
git clone --single-branch ${CIRCLE_REPOSITORY_URL} -b dashboard ${DASHBOARD_BRANCH_DIRECTORY}
env-step: &env-step
run:
name: Additional Environment Variables
command: |
echo 'export DASHBOARD_MODEL=$( [[ "$CIRCLE_BRANCH" = "master" || "$CIRCLE_BRANCH" = "next" || "$CIRCLE_BRANCH" = "release" ]] && echo Continuous || echo Experimental )' >> $BASH_ENV
echo 'export PATH=/usr/lib/ccache:${PATH}' >> $BASH_ENV
version: 2
jobs:
build:
docker:
- image: circleci/python:2.7
working_directory: ~/
resource_class: large
branches:
ignore:
- gh-pages
- dashboard
- hooks
environment:
CTEST_DASHBOARD_ROOT: /home/circleci
CTEST_SOURCE_DIRECTORY: /home/circleci/ITK
CTEST_BINARY_DIRECTORY: /home/circleci/ITK-build
DASHBOARD_BRANCH_DIRECTORY: /home/circleci/ITK-dashboard
ExternalData_OBJECT_STORES: /home/circleci/.ExternalData
<<: *defaults
steps:
- checkout:
path : ~/ITK
- *generate-hash-step
- *restore-data-step
- restore_cache:
keys:
- ccache-{{ arch }}-{{ .Branch }}
- ccache-{{ arch }}-master
- run:
name: Cloning dashboard branch
command: |
git clone --single-branch ${CIRCLE_REPOSITORY_URL} -b dashboard ${DASHBOARD_BRANCH_DIRECTORY}
- run:
name: Dependencies
command: |
sudo apt-get install -y rsync ninja-build ccache
sudo pip install --upgrade pip
sudo pip install scikit-ci-addons
ci_addons circle/install_cmake.py 3.9.5
- *restore-ccache-step
- *clone-dashboard-step
- *dependencies
- *env-step
- run:
name: CCache initialization
command: |
ccache --show-stats
ccache --zero-stats
ccache --max-size=2.0G
- run: echo 'export DASHBOARD_MODEL=$( [[ "$CIRCLE_BRANCH" = "master" ]] && echo Continuous || echo Experimental )' >> $BASH_ENV
- run:
name: Build and Testing with CTest
environment:
ITK_GLOBAL_DEFAULT_NUMBER_OF_THREAD: 2
CTEST_OUTPUT_ON_FAILURE: 1
CTEST_CONFIGURATION_TYPE: "Release"
CTEST_BUILD_FLAGS: "-j 5"
PARALLEL_LEVEL: 4
CTEST_CMAKE_GENERATOR: "Ninja"
command: |
export PATH=/usr/lib/ccache:${PATH}
mkdir -p ${CTEST_BINARY_DIRECTORY}
ctest -V -Ddashboard_no_clean:BOOL=1 \
ctest -V \
-DCTEST_CUSTOM_WARNING_EXCEPTION:STRING="itkIndex.h:.*warning: array subscript is above array bounds" \
-S "${DASHBOARD_BRANCH_DIRECTORY}/circleci.cmake"
- run:
Expand All @@ -92,3 +96,44 @@ jobs:
- save_cache:
key: 'v1-external-data-{{ checksum "/home/circleci/external-data.hashable" }}'
paths: [ "/home/circleci/.ExternalData" ]

docs:
<<: *defaults
steps:
- checkout:
path : ~/ITK
- *generate-hash-step
- *restore-data-step
- *restore-ccache-step
- *clone-dashboard-step
- *dependencies
- *env-step
- run:
name: Additional Dependencies
command: |
sudo apt-get install -y doxygen graphviz
- run:
name: Build and Testing with CTest
no_output_timeout: 60.0m
environment:
CTEST_BUILD_TARGET: "Documentation"
CTEST_CACHE: "
BUILD_DOCUMENTATION:BOOL=ON"
command: |
ctest -V \
-DCTEST_TEST_ARGS="INCLUDE;Doxygen" \
-S "${CTEST_SOURCE_DIRECTORY}/.circleci/circleci.cmake"
- run:
name: Archiving directory for artifact
when: always
command: |
cd ${CTEST_BINARY_DIRECTORY}/Utilities/Doxygen
tar -zcvf ~/itk_doxygen_html.tar.gz html
- store_artifacts:
path: /home/circleci/itk_doxygen_html.tar.gz
workflows:
version: 2
build_and_test:
jobs:
- docs
- build
22 changes: 9 additions & 13 deletions Modules/Core/Common/include/itkIndex.h
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,13 @@ struct ITK_TEMPLATE_EXPORT Index final
/** Return a basis vector of the form [0, ..., 0, 1, 0, ... 0] where the "1"
* is positioned in the location specified by the parameter "dim". Valid
* values of "dim" are 0, ..., VDimension-1. */
static Self GetBasisIndex(unsigned int dim);
static Self GetBasisIndex(unsigned int dim)
{
Self ind{{0}};

ind.m_InternalArray[dim] = 1;
return ind;
}


// ======================= Mirror the access pattern behavior of the std::array class
Expand Down Expand Up @@ -445,18 +451,8 @@ struct ITK_TEMPLATE_EXPORT Index final
}
}

}; //------------ End struct Index

template <unsigned int VDimension>
Index<VDimension>
Index<VDimension>
::GetBasisIndex(unsigned int dim)
{
Self ind{{0}};

ind.m_InternalArray[dim] = 1;
return ind;
}
};
//------------ End struct Index

template <unsigned int VDimension>
std::ostream & operator<<(std::ostream & os, const Index<VDimension> & obj)
Expand Down
2 changes: 1 addition & 1 deletion Utilities/Doxygen/doxygen.config.in
Original file line number Diff line number Diff line change
Expand Up @@ -2321,7 +2321,7 @@ MSCFILE_DIRS =
# Minimum value: 0, maximum value: 10000, default value: 50.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_GRAPH_MAX_NODES = 150
DOT_GRAPH_MAX_NODES = 500

# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
# generated by dot. A depth value of 3 means that only nodes reachable from the
Expand Down