Re: [ITK-users] [ITK] Recommended approach for cross-platform deploying ITK+Vtk+Qt5

Andras Lasso <lasso-Hdeug890q6mw5LPnMra/[email protected]>
Newsgroups gmane.comp.lib.itk.user
Message-ID <BY2PR0701MB194160C09B687077C2D565F1D8890@BY2PR0701MB1941.namprd07.prod.outlook.com>
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.

Andras

From: Pablo Hernández [mailto:[email protected]]
Sent: Thursday, August 10, 2017 11:52 PM
To: [email protected]
Cc: Insight-users <[email protected]>; Andras Lasso <[email protected]>
Subject: Re: [ITK-users] [ITK] Recommended approach for cross-platform deploying ITK+Vtk+Qt5

Hi Andreas, now that you mention, do you know how Slicer deals with Windows for continuous integration? concretely in terms of:
- deploy
- build
- test

Particularly interested in the deploying part right now. Do they use their own servers for deployment?
Pablo

On Thu, Aug 3, 2017 at 12:29 PM, Pablo Hernández <[email protected]<mailto:[email protected]>> wrote:
Hi Matt, this is super helpful.
I created a Dockerfie with all the dependencies, but I used Ubuntu 16.04 as base... so, I should compile with an older glib...
I will definitely check AppLauncher.

Thanks!

Pablo



On Tue, Aug 1, 2017 at 2:36 AM, [email protected]<mailto:[email protected]> <[email protected]<mailto:[email protected]>> wrote:
Hi Pablo,

Good questions -- C++ ITK/VTK/Qt package development on GitHub CI
services is non-trivial.

A common issue is timeout's, and a strategy is to use pre-built
binaries of ITK/VTK/Qt.


Regarding Linux package development, CircleCI is recommended with a
custom Docker image that has ITK / VTK / Qt pre-built. Since glibc is
forward compatible but not backwards compatible, a base image that
uses the oldest version of glibc will generate the most compatible
image. For many projects, we use CentOS 5 with a newer GCC, but I
think only Qt4 can be built with this and not Qt5.

The build can be generated on one Linux Docker image for glibc
purposes and tested on another that provides the graphical context.
See the CommonTK AppLauncher configuration as an example [1]. This
uses the thewtex/opengl Docker image [2] to provide a portable,
reproducible, CPU-based graphical testing environment [2].

The CTK AppLauncher is also of interest as an alternative to
windowsqtdeploy, etc. It is cross-platform, and provides the setup to
use shared libraries and avoid Qt LGPL licensing issues.


For Windows builds, the dockcross/windows-x64 (uses MXE/MinGW-x64)
image could work nicely. A derived image that builds the MXE packages
for ITK / VTK / Qt could be created [3]. Since dockcross also comes
with WINE for testing, it may also be possible to use thewtex/opengl
for testing on CircleCI (although I have never tried this).


For macOS builds, TravisCI has Homebrew installed on their images, and
ITK / VTK / Qt can be installed via Homebrew [4].


HTH,
Matt


[1] https://github.com/commontk/AppLauncher/blob/5b592f1baaa7dd41d68e1cd56a2a82e298196ebe/circle.yml<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>

[2] https://github.com/thewtex/docker-opengl<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>

[3] http://mxe.cc/<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>

[4] https://blog.kitware.com/kitware-packages-on-os-x-with-homebrew/<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>

On Sun, Jul 30, 2017 at 8:02 AM, Andras Lasso <[email protected]<mailto:[email protected]>> wrote:
> Currently, Slicer does not use AppVeyor for continuous integration on
> Windows. Also, the full test suite of Slicer takes several hours to run, so
> CircleCI only checks for build errors.
>
>
>
> Andras
>
>
>
> From: Pablo Hernández
> Sent: Sunday, July 30, 2017 6:58
> To: Insight-users
> Subject: [ITK] [ITK-users] Recommended approach for cross-platform deploying
> ITK+Vtk+Qt5
>
>
>
> Hi,
> I wonder what is the recommended approach for deploying a cross-platform
> application involving ITK+Vtk+Qt nowadays with all the available tools:
> docker containers, travis-ci, appveyor, circle-ci etc.
>
> Is it still recommended to create a SuperBuild with all your dependencies as
> ExternalProjects in CMake? How do you reduce the time it takes to build?
> The build time for all my dependencies (Vtk (with qt5), ITK, boost) plus my
> small app is surpassing the 60min limit in both, AppVeyor and Travis-CI. To
> alleviate this, do you use docker?.
>
> My main concern is Windows, I have seen that @thewtex and @jcfr have a repo
> with closs-platform buildings ( https://github.com/dockcross/dockcross<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> ),
> there is a Windows64 there with Mingw that might help. I have no idea if I
> can generate windows binaries from AppVeyor using docker, or instead, I
> generate them using that docker image with Wine+MinGw in Travis-CI.
>
> Instead of CPack from CMake I have been thinking to use windowsqtdeploy,
> linuxqtdeploy from Qt...
>
> I have been looking to Slicer source code to see how they are doing it, and
> it seems super structured, but not 100% sure how they generate their nightly
> packages ( I guess it involves these docker images:
> https://github.com/thewtex/SlicerDocker<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>, but also in Windows?)
>
> Maybe this is the not best forum to ask, but if you have any recommendations
> for deploying a small GUI app based on ITK, I will be extremely grateful to
> hear them. Thanks!
>
> Cheers,
> Pablo
>
> _____________________________________
> Powered by www.kitware.com<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>
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html<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>
>
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.php<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>
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ<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>
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/insight-users<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>
>

_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.