<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Yes, we dedicate a few regular desktop PCs to run nightly and continuous builds. On Windows we just test the master branch after integration, but pull requests are checked before on other platforms.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Andras<o:p></o:p></p>
<p class="MsoNormal"><a name="_MailEndCompose"><o:p> </o:p></a></p>
<span style="mso-bookmark:_MailEndCompose"></span>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b>From:</b> Pablo Hernández [mailto:pablo.hernandez.cerdan@outlook.com]
<br>
<b>Sent:</b> Thursday, August 10, 2017 11:52 PM<br>
<b>To:</b> matt.mccormick@kitware.com<br>
<b>Cc:</b> Insight-users <insight-users@itk.org>; Andras Lasso <lasso@queensu.ca><br>
<b>Subject:</b> Re: [ITK-users] [ITK] Recommended approach for cross-platform deploying ITK+Vtk+Qt5<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Hi Andreas, now that you mention, do you know how Slicer deals with
<b>Windows</b> for continuous integration? concretely in terms of: <o:p></o:p></p>
<div>
<p class="MsoNormal">- deploy <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- build<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">- test<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Particularly interested in the deploying part right now. Do they use their own servers for deployment?<br>
Pablo<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Thu, Aug 3, 2017 at 12:29 PM, Pablo Hernández <<a href="mailto:pablo.hernandez.cerdan@outlook.com" target="_blank">pablo.hernandez.cerdan@outlook.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">Hi Matt, this is super helpful.<br>
I created a Dockerfie with all the dependencies, but I used Ubuntu 16.04 as base... so, I should compile with an older glib...<br>
I will definitely check AppLauncher.<br>
<br>
Thanks!<br>
<br>
Pablo<br>
<br>
<br>
<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Tue, Aug 1, 2017 at 2:36 AM, <a href="mailto:matt.mccormick@kitware.com" target="_blank">
matt.mccormick@kitware.com</a> <<a href="mailto:matt.mccormick@kitware.com" target="_blank">matt.mccormick@kitware.com</a>> wrote:<o:p></o:p></p>
<div>
<div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<p class="MsoNormal">Hi Pablo,<br>
<br>
Good questions -- C++ ITK/VTK/Qt package development on GitHub CI<br>
services is non-trivial.<br>
<br>
A common issue is timeout's, and a strategy is to use pre-built<br>
binaries of ITK/VTK/Qt.<br>
<br>
<br>
Regarding Linux package development, CircleCI is recommended with a<br>
custom Docker image that has ITK / VTK / Qt pre-built. Since glibc is<br>
forward compatible but not backwards compatible, a base image that<br>
uses the oldest version of glibc will generate the most compatible<br>
image. For many projects, we use CentOS 5 with a newer GCC, but I<br>
think only Qt4 can be built with this and not Qt5.<br>
<br>
The build can be generated on one Linux Docker image for glibc<br>
purposes and tested on another that provides the graphical context.<br>
See the CommonTK AppLauncher configuration as an example [1]. This<br>
uses the thewtex/opengl Docker image [2] to provide a portable,<br>
reproducible, CPU-based graphical testing environment [2].<br>
<br>
The CTK AppLauncher is also of interest as an alternative to<br>
windowsqtdeploy, etc. It is cross-platform, and provides the setup to<br>
use shared libraries and avoid Qt LGPL licensing issues.<br>
<br>
<br>
For Windows builds, the dockcross/windows-x64 (uses MXE/MinGW-x64)<br>
image could work nicely. A derived image that builds the MXE packages<br>
for ITK / VTK / Qt could be created [3]. Since dockcross also comes<br>
with WINE for testing, it may also be possible to use thewtex/opengl<br>
for testing on CircleCI (although I have never tried this).<br>
<br>
<br>
For macOS builds, TravisCI has Homebrew installed on their images, and<br>
ITK / VTK / Qt can be installed via Homebrew [4].<br>
<br>
<br>
HTH,<br>
Matt<br>
<br>
<br>
[1] <a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fcommontk%2FAppLauncher%2Fblob%2F5b592f1baaa7dd41d68e1cd56a2a82e298196ebe%2Fcircle.yml&data=02%7C01%7Classo%40queensu.ca%7C660846f312e64922700408d4e06c4b62%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636380203111124063&sdata=57ZI%2FA%2BQl2AGrfFNx6oqOalC89RNq%2BfL%2BH3Xd1YdlRk%3D&reserved=0" target="_blank">
https://github.com/commontk/AppLauncher/blob/5b592f1baaa7dd41d68e1cd56a2a82e298196ebe/circle.yml</a><br>
<br>
[2] <a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fthewtex%2Fdocker-opengl&data=02%7C01%7Classo%40queensu.ca%7C660846f312e64922700408d4e06c4b62%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636380203111124063&sdata=%2BXBcEElxo02x51UZfDtZIjLiCsUx5ocsmw22RZKXZ44%3D&reserved=0" target="_blank">
https://github.com/thewtex/docker-opengl</a><br>
<br>
[3] <a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmxe.cc%2F&data=02%7C01%7Classo%40queensu.ca%7C660846f312e64922700408d4e06c4b62%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636380203111124063&sdata=VMfE8m9IxSqjA%2FYne9VItrS8cIPVykuWrHJ50OMbrTU%3D&reserved=0" target="_blank">
http://mxe.cc/</a><br>
<br>
[4] <a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fblog.kitware.com%2Fkitware-packages-on-os-x-with-homebrew%2F&data=02%7C01%7Classo%40queensu.ca%7C660846f312e64922700408d4e06c4b62%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636380203111124063&sdata=uFXevA8Ab353j9JmgHkx9CWZsQQgL3%2BNT6Xu6GG3prg%3D&reserved=0" target="_blank">
https://blog.kitware.com/kitware-packages-on-os-x-with-homebrew/</a><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal"><br>
On Sun, Jul 30, 2017 at 8:02 AM, Andras Lasso <<a href="mailto:lasso@queensu.ca" target="_blank">lasso@queensu.ca</a>> wrote:<br>
> Currently, Slicer does not use AppVeyor for continuous integration on<br>
> Windows. Also, the full test suite of Slicer takes several hours to run, so<br>
> CircleCI only checks for build errors.<br>
><br>
><br>
><br>
> Andras<br>
><br>
><br>
><br>
> From: Pablo Hernández<br>
> Sent: Sunday, July 30, 2017 6:58<br>
> To: Insight-users<br>
> Subject: [ITK] [ITK-users] Recommended approach for cross-platform deploying<br>
> ITK+Vtk+Qt5<br>
><br>
><br>
><br>
> Hi,<br>
> I wonder what is the recommended approach for deploying a cross-platform<br>
> application involving ITK+Vtk+Qt nowadays with all the available tools:<br>
> docker containers, travis-ci, appveyor, circle-ci etc.<br>
><br>
> Is it still recommended to create a SuperBuild with all your dependencies as<br>
> ExternalProjects in CMake? How do you reduce the time it takes to build?<br>
> The build time for all my dependencies (Vtk (with qt5), ITK, boost) plus my<br>
> small app is surpassing the 60min limit in both, AppVeyor and Travis-CI. To<br>
> alleviate this, do you use docker?.<br>
><br>
> My main concern is Windows, I have seen that @thewtex and @jcfr have a repo<br>
> with closs-platform buildings ( <a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fdockcross%2Fdockcross&data=02%7C01%7Classo%40queensu.ca%7C660846f312e64922700408d4e06c4b62%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636380203111124063&sdata=7ySL4yQMXkeOsf6WMFJthcCV6a2IpJTmpzDL%2FI2auHA%3D&reserved=0" target="_blank">
https://github.com/dockcross/dockcross</a> ),<br>
> there is a Windows64 there with Mingw that might help. I have no idea if I<br>
> can generate windows binaries from AppVeyor using docker, or instead, I<br>
> generate them using that docker image with Wine+MinGw in Travis-CI.<br>
><br>
> Instead of CPack from CMake I have been thinking to use windowsqtdeploy,<br>
> linuxqtdeploy from Qt...<br>
><br>
> I have been looking to Slicer source code to see how they are doing it, and<br>
> it seems super structured, but not 100% sure how they generate their nightly<br>
> packages ( I guess it involves these docker images:<br>
> <a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fthewtex%2FSlicerDocker&data=02%7C01%7Classo%40queensu.ca%7C660846f312e64922700408d4e06c4b62%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636380203111124063&sdata=Wy8c4rTeZg9C5cpo%2BnXNq%2FN68RycesF0%2BJRWILbKsog%3D&reserved=0" target="_blank">
https://github.com/thewtex/SlicerDocker</a>, but also in Windows?)<br>
><br>
> Maybe this is the not best forum to ask, but if you have any recommendations<br>
> for deploying a small GUI app based on ITK, I will be extremely grateful to<br>
> hear them. Thanks!<br>
><br>
> Cheers,<br>
> Pablo<br>
><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal">> _____________________________________<br>
> Powered by <a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com&data=02%7C01%7Classo%40queensu.ca%7C660846f312e64922700408d4e06c4b62%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636380203111124063&sdata=vx6c2SLTzh9eYPokYRSCIuqoX5SVVi57ITk6xdc95yw%3D&reserved=0" target="_blank">
www.kitware.com</a><br>
><br>
> Visit other Kitware open-source projects at<br>
> <a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40queensu.ca%7C660846f312e64922700408d4e06c4b62%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636380203111124063&sdata=XJxKbHe30wq9qVbNldoyoSvaK1uKsS4ISPb%2FX3yIQmc%3D&reserved=0" target="_blank">
http://www.kitware.com/opensource/opensource.html</a><br>
><br>
> Kitware offers ITK Training Courses, for more information visit:<br>
> <a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queensu.ca%7C660846f312e64922700408d4e06c4b62%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636380203111124063&sdata=60TyPQ4YK9DBEOIFYYCwCt8RoX%2F5SOMeWGNY9GTQu0I%3D&reserved=0" target="_blank">
http://www.kitware.com/products/protraining.php</a><br>
><br>
> Please keep messages on-topic and check the ITK FAQ at:<br>
> <a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.itk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C660846f312e64922700408d4e06c4b62%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636380203111124063&sdata=joETvph51Ud5T%2BN6GjrYEDlgTn%2BWQazbemDWsivpxBU%3D&reserved=0" target="_blank">
http://www.itk.org/Wiki/ITK_FAQ</a><br>
><br>
> Follow this link to subscribe/unsubscribe:<br>
> <a href="https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Finsight-users&data=02%7C01%7Classo%40queensu.ca%7C660846f312e64922700408d4e06c4b62%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636380203111124063&sdata=2hEqdDu%2FmUiG0Jv1EdF1mD%2FBdRHpATF%2FFNeHg%2BBZECY%3D&reserved=0" target="_blank">
http://public.kitware.com/mailman/listinfo/insight-users</a><br>
><o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>