<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2F4.5%2FDevelopers%2FTutorials%2FDashboardSetup</id>
	<title>Documentation/4.5/Developers/Tutorials/DashboardSetup - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2F4.5%2FDevelopers%2FTutorials%2FDashboardSetup"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.5/Developers/Tutorials/DashboardSetup&amp;action=history"/>
	<updated>2026-04-10T19:38:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.5/Developers/Tutorials/DashboardSetup&amp;diff=43616&amp;oldid=prev</id>
		<title>UpdateBot: Nightly -&gt; 4.5</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.5/Developers/Tutorials/DashboardSetup&amp;diff=43616&amp;oldid=prev"/>
		<updated>2015-11-12T22:04:58Z</updated>

		<summary type="html">&lt;p&gt;Nightly -&amp;gt; 4.5&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
=Prerequisites=&lt;br /&gt;
&lt;br /&gt;
Use the latest CMake stable release.&lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
Disable detachedHead warnings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global advice.detachedHead false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Follow these instructions to set up dashboard: (by JC, from [http://massmail.spl.harvard.edu/public-archives/slicer-devel/2011/006703.html])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ mkdir Dashboards&lt;br /&gt;
$ mkdir DashboardScripts&lt;br /&gt;
$ cd DashboardScripts&lt;br /&gt;
$ wget http://svn.slicer.org/Slicer4/trunk/CMake/SlicerDashboardScript.TEMPLATE.cmake&lt;br /&gt;
$ mv SlicerDashboardScript.TEMPLATE.cmake &amp;lt;MachineName&amp;gt;_&amp;lt;OperatingSystem&amp;gt;-64bits_slicer_release_nightly.cmake&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit the file &amp;lt;code&amp;gt;&amp;lt;MachineName&amp;gt;_&amp;lt;OperatingSystem&amp;gt;-64bits_slicer_release_nightly.cmake&amp;lt;/code&amp;gt; to match&lt;br /&gt;
your machine settings. You should update the following variables:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set(MY_OPERATING_SYSTEM   &amp;quot;&amp;lt;OperatingSystem&amp;gt;&amp;quot;) # Windows, Linux, Darwin...&lt;br /&gt;
set(MY_COMPILER           &amp;quot;g++4.4.3&amp;quot;)&lt;br /&gt;
set(MY_QT_VERSION         &amp;quot;4.7.4&amp;quot;)&lt;br /&gt;
set(QT_QMAKE_EXECUTABLE   &amp;quot;$ENV{HOME}/Projects/QtSDK-1.2/Desktop/Qt/474/gcc/bin/qmake&amp;quot;)&lt;br /&gt;
set(CTEST_SITE            &amp;quot;karakoram.kitware&amp;quot;)&lt;br /&gt;
set(CTEST_DASHBOARD_ROOT  &amp;quot;$ENV{HOME}/Dashboards/&amp;quot;)&lt;br /&gt;
...&lt;br /&gt;
set(CTEST_BUILD_CONFIGURATION &amp;quot;Release&amp;quot;)&lt;br /&gt;
...&lt;br /&gt;
set(SCRIPT_MODE &amp;quot;nightly&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If git and svn are not in the path, make sure to set the variables CTEST_SVN_COMMAND and CTEST_GIT_COMMAND.&lt;br /&gt;
&lt;br /&gt;
By default, the following directory will be created:&lt;br /&gt;
   &amp;lt;CTEST_DASHBOARD_ROOT&amp;gt;/Slicer-&amp;lt;DIRECTORY_IDENTIFIER&amp;gt;        # Source directory&lt;br /&gt;
   &amp;lt;CTEST_DASHBOARD_ROOT&amp;gt;/Slicer-&amp;lt;DIRECTORY_IDENTIFIER&amp;gt;-build  # Build directory&lt;br /&gt;
&lt;br /&gt;
The associated build options will be combined together to create an empty text file with the following name:&lt;br /&gt;
   &amp;lt;CTEST_DASHBOARD_ROOT&amp;gt;/Slicer-&amp;lt;DIRECTORY_IDENTIFIER&amp;gt;-build - &amp;lt;BUILD_OPTIONS_STRING&amp;gt;-&amp;lt;CTEST_BUILD_CONFIGURATION&amp;gt;-&amp;lt;SCRIPT_MODE&amp;gt;.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This approach has been implemented to keep build directory short and overcome [http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#maxpath path length limitation specific to windows].&lt;br /&gt;
&lt;br /&gt;
It means that if you setting up more than on client in a given &amp;lt;code&amp;gt;&amp;lt;CTEST_DASHBOARD_ROOT&amp;gt;&amp;lt;/code&amp;gt; folder, you MUST increment the value associated with &amp;lt;code&amp;gt;DIRECTORY_IDENTIFIER&amp;lt;/code&amp;gt; variable.&lt;br /&gt;
&lt;br /&gt;
Finally, you can use &amp;lt;code&amp;gt;CTEST_BUILD_FLAGS&amp;lt;/code&amp;gt; to set the number of CPUs to be used by ''make'' (eg, -j4), and CTEST_PARALLEL_LEVEL to set the number of tests to run in parallel (see comments in the [http://svn.slicer.org/Slicer4/trunk/CMake/SlicerDashboardScript.TEMPLATE.cmake configuration script]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scheduling on Unix-like ==&lt;br /&gt;
&lt;br /&gt;
So that your dashboard can automatically start at 11pm daily, you could add an entry similar to the following one in your &amp;lt;code&amp;gt;[http://en.wikipedia.org/wiki/Cron crontab]&amp;lt;/code&amp;gt;. (On ubuntu, I am running &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt; to edit the current user cron list)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0 23 * * * /path/to/cmake-2.8.7/bin/ctest -S /Users/JOE/DashboardScripts/&amp;lt;MachineName&amp;gt;_&amp;lt;OperatingSystem&amp;gt;-64bits_slicer_release_nightly.cmake -VV -O /Users/JOE/Dashboards/Logs/&amp;lt;MachineName&amp;gt;-&amp;lt;OperatingSystem&amp;gt;-64bits_slicer_release_nightly.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Scheduling on Mac OS X==&lt;br /&gt;
Mac OS X is deprecating the use of cron in favor of launchd.  &lt;br /&gt;
&lt;br /&gt;
Create a file $HOME/Library/LaunchAgents/org.slicer.NightlyDashboard.plist&lt;br /&gt;
&lt;br /&gt;
This is Jim's plist file which has extra EnvironmentVariables to get through his firewall.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;dict&amp;gt;&lt;br /&gt;
  &amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;string&amp;gt;org.slicer.NightlyDashboard&amp;lt;/string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;key&amp;gt;ProgramArguments&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;array&amp;gt;&lt;br /&gt;
    &amp;lt;string&amp;gt;/usr/local/bin/ctest&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;string&amp;gt;-S&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;string&amp;gt;/Users/millerjv/Projects/Slicer4-Dashboard/SlicerDashboardScript.cmake&amp;lt;/string&amp;gt;&lt;br /&gt;
  &amp;lt;/array&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;key&amp;gt;EnvironmentVariables&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;dict&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;ALL_PROXY&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;proxy.research.ge.com:8080&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;http_proxy&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;proxy.research.ge.com:8080&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;RSYNC_PROXY&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;proxy.research.ge.com:8080&amp;lt;/string&amp;gt;&lt;br /&gt;
  &amp;lt;/dict&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;key&amp;gt;Nice&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;key&amp;gt;StartCalendarInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;dict&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;Hour&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;Minute&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;integer&amp;gt;03&amp;lt;/integer&amp;gt;&lt;br /&gt;
  &amp;lt;/dict&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;key&amp;gt;StandardErrorPath&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;string&amp;gt;/tmp/org.slicer.NightlyDashboard.err&amp;lt;/string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;key&amp;gt;StandardOutPath&amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;string&amp;gt;/tmp/org.slicer.NightlyDashboard.out&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/plist&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can manually load this agent using&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ launchctl load $HOME/Library/LaunchAgents/org.slicer.NightlyDashboard.plist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and the agent will be reloaded automatically on a reboot.&lt;br /&gt;
&lt;br /&gt;
It seems I have to be logged onto the console for the launch agent to get installed and run.  What I do is log on, then select &amp;quot;Login Window...&amp;quot; so that other people can log onto the console. This is suboptimal as I need to do this after each reboot of the system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scheduling on Windows==&lt;br /&gt;
&lt;br /&gt;
===Create a .bat file that performs the build===&lt;br /&gt;
&lt;br /&gt;
For example, a clean nightly build can be performed by a batch file like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rmdir /S /Q c:\SAB\Slicer-build-64bit-nightly&lt;br /&gt;
&amp;quot;c:\Program Files (x86)\CMake 2.8\bin\ctest.exe&amp;quot; -S .\Windows7-64bits_Slicer_Release_Nightly.cmake -VV c:\SAB\Logs\Windows7-64bits_Slicer_Release_Nightly.log -C Release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Create a new scheduled task that runs the .bat file===&lt;br /&gt;
* Windows XP: Create a new scheduled task at Control Panel / Scheduled Tasks / Add Scheduled&lt;br /&gt;
* Windows 7: Task scheduler can be found at Start Menu / All Programs / Accessories / System Tools / Task Scheduler.&lt;br /&gt;
&lt;br /&gt;
==Setting up a continuous dashboard==&lt;br /&gt;
&lt;br /&gt;
Similarly if you want to setup a continuous dashboard,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cp &amp;lt;MachineName&amp;gt;_&amp;lt;OperatingSystem&amp;gt;-64bits_slicer_release_nightly.cmake &amp;lt;MachineName&amp;gt;_&amp;lt;OperatingSystem&amp;gt;-64bits_slicer_release_continuous.cmake&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;lt;code&amp;gt;&amp;lt;MachineName&amp;gt;_&amp;lt;OperatingSystem&amp;gt;-64bits_slicer_release_continuous.cmake&amp;lt;/code&amp;gt; and set&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set(SCRIPT_MODE &amp;quot;*continuous*&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then add the corresponding entry in &amp;lt;code&amp;gt;crontab&amp;lt;/code&amp;gt; so that it starts everyday at 6am:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0 6 * * * /path/to/cmake-2.8.7/bin/ctest -S /Users/JOE/DashboardScripts/&amp;lt;MachineName&amp;gt;_&amp;lt;OperatingSystem&amp;gt;-64bits_slicer_release_continuous.cmake -VV -O /Users/JOE/Dashboards/Logs/&amp;lt;MachineName&amp;gt;_&amp;lt;OperatingSystem&amp;gt;-64bits_slicer_release_nightly.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output of the build is contained in &amp;lt;code&amp;gt;ctest_package_make_package_output.txt&amp;lt;/code&amp;gt; in your slicer build directory, you can check this file if something went wrong.&lt;br /&gt;
&lt;br /&gt;
= Remarks =&lt;br /&gt;
&lt;br /&gt;
==Setting up a dashboard on a Windows machine==&lt;br /&gt;
=== Disabling TortoiseSVN Icon Overlay ===&lt;br /&gt;
If you're using an interface for version control such as TortoiseSVN, make sure in the Icon Overlay settings that the status cache is set to None.&lt;br /&gt;
[[Image:TortoiseGit.png|thumb|300px|Make sure the status cache is set to &amp;quot;None.&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=== Keep short path ===&lt;br /&gt;
Keep the paths to your Nightly, Continuous, and Experimental directories as terse as possible.  A good standard is &amp;lt;code&amp;gt;C:\D&amp;lt;/code&amp;gt; for dashboards, and C:\D\&amp;lt;N,C,E&amp;gt; subdirectories for Nightly, Continuous, and Experimental.  Otherwise, CMake will choke on the paths.&lt;br /&gt;
&lt;br /&gt;
=== How can I prevent the “… has stopped working” window ===&lt;br /&gt;
&lt;br /&gt;
As documented [http://msdn.microsoft.com/en-us/library/2ac5yxx6(VS.80).aspx here], set registry key &amp;lt;code&amp;gt;HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\DbgJITDebugLaunchSetting&amp;lt;/code&amp;gt; value to 1.&lt;br /&gt;
&lt;br /&gt;
Value 1 simply return control. This results in a stack dump, after which the process is terminated.&lt;br /&gt;
&lt;br /&gt;
This has been documented while trying to prevent the dialog &amp;quot;Microsoft Visual Studio 8 has stopped working&amp;quot; from appearing when Slicer extensions dashboard were running. The details associated with the dialog were:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Problem signature:&lt;br /&gt;
  Problem Event Name:	BEX&lt;br /&gt;
  Application Name:	devenv.exe&lt;br /&gt;
  Application Version:	9.0.21022.8&lt;br /&gt;
  Application Timestamp:	47317b3d&lt;br /&gt;
  Fault Module Name:	VCProjectEngine.dll_unloaded&lt;br /&gt;
  Fault Module Version:	0.0.0.0&lt;br /&gt;
  Fault Module Timestamp:	47318038&lt;br /&gt;
  Exception Offset:	72dbdce0&lt;br /&gt;
  Exception Code:	c0000005&lt;br /&gt;
  Exception Data:	00000008&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
* http://stackoverflow.com/questions/2507464/how-can-i-prevent-the-has-stopped-working-window-on-my-server-2008-r2-dev&lt;br /&gt;
* http://msdn.microsoft.com/en-us/library/2ac5yxx6(VS.80).aspx&lt;br /&gt;
&lt;br /&gt;
===Lockhunter: Unlock directories or folders ===&lt;br /&gt;
Often on Windows, once a dashboard build is started, it is impossible to delete anything from the source or build directory.  Windows will report that this file is currently in use by another program, or &amp;quot;locking&amp;quot; it.  For this, we recommend installing [http://www.lockhunter.com Lockhunter].&lt;br /&gt;
[[Image:LockHunderExample.png|thumb|left|300px| Lockhunter screenshot]]&lt;/div&gt;</summary>
		<author><name>UpdateBot</name></author>
		
	</entry>
</feed>