Difference between revisions of "Developer Meetings/20120814"
From Slicer Wiki
| Line 10: | Line 10: | ||
* Update on volume rendering for mac (nvidia)? | * Update on volume rendering for mac (nvidia)? | ||
* setting up Slicer 32/64 bit Slicer dashboard on Windows questions | * setting up Slicer 32/64 bit Slicer dashboard on Windows questions | ||
| + | ** Current issues: no .log file is generated; there are build errors, but ctest does not stop when errors are encountered; how to turn off multi-CPU during build? | ||
| + | ** .bat script: | ||
| + | <pre> | ||
| + | "C:\Program Files (x86)\CMake 2.8.8\bin\ctest.exe" -S C:\andrey\DashboardScripts\Lebesgue_Win7-32bits_slicer_release_nightly.cmake -V -o C:\S4D\Nightly-32bit.log | ||
| + | </pre> | ||
| + | ** .cmake config file: | ||
| + | <pre> | ||
| + | #################################################################################### | ||
| + | # OS : | ||
| + | # Hardware: | ||
| + | # GPU : | ||
| + | #################################################################################### | ||
| + | # WARNING - The specific version and processor type of this machine should be reported | ||
| + | # in the header above. Indeed, this file will be send to the dashboard as a NOTE file. | ||
| + | # | ||
| + | # On linux, you could run: | ||
| + | # 'uname -o' and 'cat /etc/*-release' to obtain the OS name. | ||
| + | # 'uname -mpi' to obtain hardware details. | ||
| + | # 'glxinfo | grep OpenGL' to obtain GPU details. | ||
| + | #################################################################################### | ||
| + | cmake_minimum_required(VERSION 2.8.8) | ||
| + | |||
| + | # | ||
| + | # For additional information, see http://http://www.slicer.org/slicerWiki/index.php/Documentation/Snapshot/Developers/Tutorials/DashboardSetup | ||
| + | # | ||
| + | |||
| + | #----------------------------------------------------------------------------- | ||
| + | # Dashboard properties | ||
| + | #----------------------------------------------------------------------------- | ||
| + | set(MY_OPERATING_SYSTEM "Windows") # Windows, Linux, Darwin... | ||
| + | set(MY_COMPILER "Visual Studio 9 2008") | ||
| + | set(MY_QT_VERSION "4.7.4") | ||
| + | set(QT_QMAKE_EXECUTABLE "C:/dev/Qt-4.7.4-win32/bin/qmake.exe") | ||
| + | set(CTEST_SITE "lebesgue.partners.org") # for example: mymachine.kitware, mymachine.bwh.harvard.edu, ... | ||
| + | set(CTEST_DASHBOARD_ROOT "C:/S4D/") | ||
| + | |||
| + | # Each dashboard script should specify a unique ID per CTEST_DASHBOARD_ROOT. | ||
| + | # It means the following directories will be created: | ||
| + | # <CTEST_DASHBOARD_ROOT>/<DIRECTORY_NAME>-<DIRECTORY_IDENTIFIER> # Source directory | ||
| + | # <CTEST_DASHBOARD_ROOT>/<DIRECTORY_NAME>-<DIRECTORY_IDENTIFIER>-build # Build directory | ||
| + | set(DIRECTORY_IDENTIFIER "0") | ||
| + | |||
| + | # Open a shell and type in "cmake --help" to obtain the proper spelling of the generator | ||
| + | set(CTEST_CMAKE_GENERATOR "Visual Studio 9 2008") | ||
| + | set(MY_BITNESS "32") | ||
| + | |||
| + | #----------------------------------------------------------------------------- | ||
| + | # Dashboard options | ||
| + | #----------------------------------------------------------------------------- | ||
| + | set(WITH_KWSTYLE FALSE) | ||
| + | set(WITH_MEMCHECK FALSE) | ||
| + | set(WITH_COVERAGE FALSE) | ||
| + | set(WITH_DOCUMENTATION FALSE) | ||
| + | #set(DOCUMENTATION_ARCHIVES_OUTPUT_DIRECTORY ) # for example: $ENV{HOME}/Projects/Doxygen | ||
| + | set(WITH_PACKAGES FALSE) | ||
| + | set(WITH_EXTENSIONS FALSE) # Indicates if 'trusted' Slicer extensions should be | ||
| + | # built, tested, packaged and uploaded. | ||
| + | set(CTEST_BUILD_CONFIGURATION "Release") | ||
| + | set(CTEST_TEST_TIMEOUT 500) | ||
| + | set(CTEST_BUILD_FLAGS "") # Use multiple CPU cores to build. For example "-j4" on unix | ||
| + | set(CTEST_PARALLEL_LEVEL 1) # Number of tests running in parallel | ||
| + | |||
| + | # experimental: | ||
| + | # - run_ctest() macro will be called *ONE* time | ||
| + | # - binary directory will *NOT* be cleaned | ||
| + | # continuous: | ||
| + | # - run_ctest() macro will be called EVERY 5 minutes ... | ||
| + | # - binary directory will *NOT* be cleaned | ||
| + | # - configure/build will be executed *ONLY* if the repository has been updated | ||
| + | # nightly: | ||
| + | # - run_ctest() macro will be called *ONE* time | ||
| + | # - binary directory *WILL BE* cleaned | ||
| + | set(SCRIPT_MODE "nightly") # "experimental", "continuous", "nightly" | ||
| + | |||
| + | # You could invoke the script with the following syntax: | ||
| + | # ctest -S karakoram_Slicer4_nightly.cmake -C <CTEST_BUILD_CONFIGURATION> -V | ||
| + | # | ||
| + | # Note that '-C <CTEST_BUILD_CONFIGURATION>' is mandatory on windows | ||
| + | |||
| + | #----------------------------------------------------------------------------- | ||
| + | # Additional CMakeCache options | ||
| + | #----------------------------------------------------------------------------- | ||
| + | set(ADDITIONAL_CMAKECACHE_OPTION " | ||
| + | ADDITIONAL_C_FLAGS:STRING= | ||
| + | ADDITIONAL_CXX_FLAGS:STRING= | ||
| + | Slicer_USE_PYTHONQT:BOOL=ON | ||
| + | Slicer_USE_PYTHONQT_WITH_TCL:BOOL=ON | ||
| + | Slicer_BUILD_CLI:BOOL=OFF | ||
| + | ") | ||
| + | |||
| + | #----------------------------------------------------------------------------- | ||
| + | # List of test that should be explicitly disabled on this machine | ||
| + | #----------------------------------------------------------------------------- | ||
| + | set(TEST_TO_EXCLUDE_REGEX "") | ||
| + | |||
| + | #----------------------------------------------------------------------------- | ||
| + | # Set any extra environment variables here | ||
| + | #----------------------------------------------------------------------------- | ||
| + | if(UNIX) | ||
| + | set(ENV{DISPLAY} ":0") | ||
| + | endif() | ||
| + | |||
| + | #----------------------------------------------------------------------------- | ||
| + | # Required executables | ||
| + | #----------------------------------------------------------------------------- | ||
| + | find_program(CTEST_SVN_COMMAND NAMES svn) | ||
| + | find_program(CTEST_GIT_COMMAND NAMES git) | ||
| + | find_program(CTEST_COVERAGE_COMMAND NAMES gcov) | ||
| + | find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind) | ||
| + | |||
| + | #----------------------------------------------------------------------------- | ||
| + | # Build Name | ||
| + | #----------------------------------------------------------------------------- | ||
| + | # Update the following variable to match the chosen build options. This variable is used to | ||
| + | # generate both the build directory and the build name. | ||
| + | # See http://www.cdash.org/CDash/index.php?project=Slicer4 for examples | ||
| + | set(BUILD_OPTIONS_STRING "${MY_BITNESS}bits-QT${MY_QT_VERSION}-PythonQt-With-Tcl-NoCLI") | ||
| + | |||
| + | #----------------------------------------------------------------------------- | ||
| + | # Directory name | ||
| + | #----------------------------------------------------------------------------- | ||
| + | set(DIRECTORY_NAME "Slicer") | ||
| + | |||
| + | #----------------------------------------------------------------------------- | ||
| + | # Build directory | ||
| + | #----------------------------------------------------------------------------- | ||
| + | set(CTEST_BINARY_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${DIRECTORY_NAME}-${DIRECTORY_IDENTIFIER}-build") | ||
| + | file(WRITE "${CTEST_DASHBOARD_ROOT}/${DIRECTORY_NAME}-${DIRECTORY_IDENTIFIER}-build - ${BUILD_OPTIONS_STRING}-${CTEST_BUILD_CONFIGURATION}-${SCRIPT_MODE}.txt" "Generated by ${CTEST_SCRIPT_NAME}") | ||
| + | |||
| + | #----------------------------------------------------------------------------- | ||
| + | # Source directory | ||
| + | #----------------------------------------------------------------------------- | ||
| + | set(CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${DIRECTORY_NAME}-${DIRECTORY_IDENTIFIER}") | ||
| + | |||
| + | |||
| + | ########################################## | ||
| + | # WARNING: DO NOT EDIT BEYOND THIS POINT # | ||
| + | ########################################## | ||
| + | |||
| + | set(CTEST_NOTES_FILES "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}") | ||
| + | |||
| + | # | ||
| + | # Project specific properties | ||
| + | # | ||
| + | set(CTEST_PROJECT_NAME "Slicer4") | ||
| + | set(CTEST_BUILD_NAME "${MY_OPERATING_SYSTEM}-${MY_COMPILER}-${BUILD_OPTIONS_STRING}-${CTEST_BUILD_CONFIGURATION}") | ||
| + | |||
| + | # | ||
| + | # Display build info | ||
| + | # | ||
| + | message("CTEST_SITE ................: ${CTEST_SITE}") | ||
| + | message("CTEST_BUILD_NAME ..........: ${CTEST_BUILD_NAME}") | ||
| + | message("SCRIPT_MODE ...............: ${SCRIPT_MODE}") | ||
| + | message("CTEST_BUILD_CONFIGURATION .: ${CTEST_BUILD_CONFIGURATION}") | ||
| + | message("WITH_KWSTYLE ..............: ${WITH_KWSTYLE}") | ||
| + | message("WITH_COVERAGE: ............: ${WITH_COVERAGE}") | ||
| + | message("WITH_MEMCHECK .............: ${WITH_MEMCHECK}") | ||
| + | message("WITH_PACKAGES .............: ${WITH_PACKAGES}") | ||
| + | message("WITH_DOCUMENTATION ........: ${WITH_DOCUMENTATION}") | ||
| + | message("DOCUMENTATION_ARCHIVES_OUTPUT_DIRECTORY: ${DOCUMENTATION_ARCHIVES_OUTPUT_DIRECTORY}") | ||
| + | |||
| + | # | ||
| + | # Convenient function allowing to download a file | ||
| + | # | ||
| + | function(download_file url dest) | ||
| + | file(DOWNLOAD ${url} ${dest} STATUS status) | ||
| + | list(GET status 0 error_code) | ||
| + | list(GET status 1 error_msg) | ||
| + | if(error_code) | ||
| + | message(FATAL_ERROR "error: Failed to download ${url} - ${error_msg}") | ||
| + | endif() | ||
| + | endfunction() | ||
| + | |||
| + | # | ||
| + | # Download and include dashboard driver script | ||
| + | # | ||
| + | set(url http://svn.slicer.org/Slicer4/trunk/CMake/SlicerDashboardDriverScript.cmake) | ||
| + | set(dest ${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}.driver) | ||
| + | download_file(${url} ${dest}) | ||
| + | include(${dest}) | ||
| + | </pre> | ||
== Conclusion == | == Conclusion == | ||
Revision as of 19:40, 14 August 2012
Home < Developer Meetings < 20120814Attendees:
To discuss
- Plan for 4.2 hangout
- Pick up general discussion from last time of the bug roadmap for slicer 4.2.
- Status update on Mac extensions packaging issues
- Reporting extension is missing on the dashboards -- why?
- RESOLVED (thanks Chris Mullins!): the git path was not read-only; issue has been submitted to notify developers of extensions of the issues while cloning so that they could fix http://na-mic.org/Mantis/view.php?id=2395
- Windows 64 bit nightly builds?
- Update on volume rendering for mac (nvidia)?
- setting up Slicer 32/64 bit Slicer dashboard on Windows questions
- Current issues: no .log file is generated; there are build errors, but ctest does not stop when errors are encountered; how to turn off multi-CPU during build?
- .bat script:
"C:\Program Files (x86)\CMake 2.8.8\bin\ctest.exe" -S C:\andrey\DashboardScripts\Lebesgue_Win7-32bits_slicer_release_nightly.cmake -V -o C:\S4D\Nightly-32bit.log
- .cmake config file:
####################################################################################
# OS :
# Hardware:
# GPU :
####################################################################################
# WARNING - The specific version and processor type of this machine should be reported
# in the header above. Indeed, this file will be send to the dashboard as a NOTE file.
#
# On linux, you could run:
# 'uname -o' and 'cat /etc/*-release' to obtain the OS name.
# 'uname -mpi' to obtain hardware details.
# 'glxinfo | grep OpenGL' to obtain GPU details.
####################################################################################
cmake_minimum_required(VERSION 2.8.8)
#
# For additional information, see http://http://www.slicer.org/slicerWiki/index.php/Documentation/Snapshot/Developers/Tutorials/DashboardSetup
#
#-----------------------------------------------------------------------------
# Dashboard properties
#-----------------------------------------------------------------------------
set(MY_OPERATING_SYSTEM "Windows") # Windows, Linux, Darwin...
set(MY_COMPILER "Visual Studio 9 2008")
set(MY_QT_VERSION "4.7.4")
set(QT_QMAKE_EXECUTABLE "C:/dev/Qt-4.7.4-win32/bin/qmake.exe")
set(CTEST_SITE "lebesgue.partners.org") # for example: mymachine.kitware, mymachine.bwh.harvard.edu, ...
set(CTEST_DASHBOARD_ROOT "C:/S4D/")
# Each dashboard script should specify a unique ID per CTEST_DASHBOARD_ROOT.
# It means the following directories will be created:
# <CTEST_DASHBOARD_ROOT>/<DIRECTORY_NAME>-<DIRECTORY_IDENTIFIER> # Source directory
# <CTEST_DASHBOARD_ROOT>/<DIRECTORY_NAME>-<DIRECTORY_IDENTIFIER>-build # Build directory
set(DIRECTORY_IDENTIFIER "0")
# Open a shell and type in "cmake --help" to obtain the proper spelling of the generator
set(CTEST_CMAKE_GENERATOR "Visual Studio 9 2008")
set(MY_BITNESS "32")
#-----------------------------------------------------------------------------
# Dashboard options
#-----------------------------------------------------------------------------
set(WITH_KWSTYLE FALSE)
set(WITH_MEMCHECK FALSE)
set(WITH_COVERAGE FALSE)
set(WITH_DOCUMENTATION FALSE)
#set(DOCUMENTATION_ARCHIVES_OUTPUT_DIRECTORY ) # for example: $ENV{HOME}/Projects/Doxygen
set(WITH_PACKAGES FALSE)
set(WITH_EXTENSIONS FALSE) # Indicates if 'trusted' Slicer extensions should be
# built, tested, packaged and uploaded.
set(CTEST_BUILD_CONFIGURATION "Release")
set(CTEST_TEST_TIMEOUT 500)
set(CTEST_BUILD_FLAGS "") # Use multiple CPU cores to build. For example "-j4" on unix
set(CTEST_PARALLEL_LEVEL 1) # Number of tests running in parallel
# experimental:
# - run_ctest() macro will be called *ONE* time
# - binary directory will *NOT* be cleaned
# continuous:
# - run_ctest() macro will be called EVERY 5 minutes ...
# - binary directory will *NOT* be cleaned
# - configure/build will be executed *ONLY* if the repository has been updated
# nightly:
# - run_ctest() macro will be called *ONE* time
# - binary directory *WILL BE* cleaned
set(SCRIPT_MODE "nightly") # "experimental", "continuous", "nightly"
# You could invoke the script with the following syntax:
# ctest -S karakoram_Slicer4_nightly.cmake -C <CTEST_BUILD_CONFIGURATION> -V
#
# Note that '-C <CTEST_BUILD_CONFIGURATION>' is mandatory on windows
#-----------------------------------------------------------------------------
# Additional CMakeCache options
#-----------------------------------------------------------------------------
set(ADDITIONAL_CMAKECACHE_OPTION "
ADDITIONAL_C_FLAGS:STRING=
ADDITIONAL_CXX_FLAGS:STRING=
Slicer_USE_PYTHONQT:BOOL=ON
Slicer_USE_PYTHONQT_WITH_TCL:BOOL=ON
Slicer_BUILD_CLI:BOOL=OFF
")
#-----------------------------------------------------------------------------
# List of test that should be explicitly disabled on this machine
#-----------------------------------------------------------------------------
set(TEST_TO_EXCLUDE_REGEX "")
#-----------------------------------------------------------------------------
# Set any extra environment variables here
#-----------------------------------------------------------------------------
if(UNIX)
set(ENV{DISPLAY} ":0")
endif()
#-----------------------------------------------------------------------------
# Required executables
#-----------------------------------------------------------------------------
find_program(CTEST_SVN_COMMAND NAMES svn)
find_program(CTEST_GIT_COMMAND NAMES git)
find_program(CTEST_COVERAGE_COMMAND NAMES gcov)
find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind)
#-----------------------------------------------------------------------------
# Build Name
#-----------------------------------------------------------------------------
# Update the following variable to match the chosen build options. This variable is used to
# generate both the build directory and the build name.
# See http://www.cdash.org/CDash/index.php?project=Slicer4 for examples
set(BUILD_OPTIONS_STRING "${MY_BITNESS}bits-QT${MY_QT_VERSION}-PythonQt-With-Tcl-NoCLI")
#-----------------------------------------------------------------------------
# Directory name
#-----------------------------------------------------------------------------
set(DIRECTORY_NAME "Slicer")
#-----------------------------------------------------------------------------
# Build directory
#-----------------------------------------------------------------------------
set(CTEST_BINARY_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${DIRECTORY_NAME}-${DIRECTORY_IDENTIFIER}-build")
file(WRITE "${CTEST_DASHBOARD_ROOT}/${DIRECTORY_NAME}-${DIRECTORY_IDENTIFIER}-build - ${BUILD_OPTIONS_STRING}-${CTEST_BUILD_CONFIGURATION}-${SCRIPT_MODE}.txt" "Generated by ${CTEST_SCRIPT_NAME}")
#-----------------------------------------------------------------------------
# Source directory
#-----------------------------------------------------------------------------
set(CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${DIRECTORY_NAME}-${DIRECTORY_IDENTIFIER}")
##########################################
# WARNING: DO NOT EDIT BEYOND THIS POINT #
##########################################
set(CTEST_NOTES_FILES "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}")
#
# Project specific properties
#
set(CTEST_PROJECT_NAME "Slicer4")
set(CTEST_BUILD_NAME "${MY_OPERATING_SYSTEM}-${MY_COMPILER}-${BUILD_OPTIONS_STRING}-${CTEST_BUILD_CONFIGURATION}")
#
# Display build info
#
message("CTEST_SITE ................: ${CTEST_SITE}")
message("CTEST_BUILD_NAME ..........: ${CTEST_BUILD_NAME}")
message("SCRIPT_MODE ...............: ${SCRIPT_MODE}")
message("CTEST_BUILD_CONFIGURATION .: ${CTEST_BUILD_CONFIGURATION}")
message("WITH_KWSTYLE ..............: ${WITH_KWSTYLE}")
message("WITH_COVERAGE: ............: ${WITH_COVERAGE}")
message("WITH_MEMCHECK .............: ${WITH_MEMCHECK}")
message("WITH_PACKAGES .............: ${WITH_PACKAGES}")
message("WITH_DOCUMENTATION ........: ${WITH_DOCUMENTATION}")
message("DOCUMENTATION_ARCHIVES_OUTPUT_DIRECTORY: ${DOCUMENTATION_ARCHIVES_OUTPUT_DIRECTORY}")
#
# Convenient function allowing to download a file
#
function(download_file url dest)
file(DOWNLOAD ${url} ${dest} STATUS status)
list(GET status 0 error_code)
list(GET status 1 error_msg)
if(error_code)
message(FATAL_ERROR "error: Failed to download ${url} - ${error_msg}")
endif()
endfunction()
#
# Download and include dashboard driver script
#
set(url http://svn.slicer.org/Slicer4/trunk/CMake/SlicerDashboardDriverScript.cmake)
set(dest ${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}.driver)
download_file(${url} ${dest})
include(${dest})