Discussion:
[ITK-users] [ITK] Recommended approach for cross-platform deploying ITK+Vtk+Qt5
Andras Lasso
2017-07-30 12:02:14 UTC
Permalink
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<mailto:***@outlook.com>
Sent: Sunday, July 30, 2017 6:58
To: Insight-users<mailto:insight-***@itk.org>
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%7Cd78814b1f1c44e2a656708d4d739f46e%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636370091291392316&sdata=JZ6ktuq1nz1216%2BoSl79nhNriJRXTZUtKJdvuiBDVOQ%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%7Cd78814b1f1c44e2a656708d4d739f46e%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636370091291392316&sdata=8J%2FnkzEr2y5k5i8O%2FrwntLbYY0biI2PjT0eCJHLUi3E%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
Matt McCormick
2017-07-31 14:36:25 UTC
Permalink
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

[2] https://github.com/thewtex/docker-opengl

[3] http://mxe.cc/

[4] https://blog.kitware.com/kitware-packages-on-os-x-with-homebrew/
Post by Andras Lasso
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
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?.
with closs-platform buildings ( https://github.com/dockcross/dockcross ),
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
https://github.com/thewtex/SlicerDocker, 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
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
http://www.kitware.com/products/protraining.php
http://www.itk.org/Wiki/ITK_FAQ
http://public.kitware.com/mailman/listinfo/insight-users
_____________________________________
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/i
Pablo Hernández
2017-08-03 00:29:39 UTC
Permalink
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, ***@kitware.com<mailto:***@kitware.com> <***@kitware.com<mailto:***@kitware.com>> 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

[2] https://github.com/thewtex/docker-opengl

[3] http://mxe.cc/

[4] https://blog.kitware.com/kitware-packages-on-os-x-with-homebrew/
Post by Andras Lasso
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
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?.
with closs-platform buildings ( https://github.com/dockcross/dockcross ),
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
https://github.com/thewtex/SlicerDocker, 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<http://www.kitware.com>
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
http://www.kitware.com/products/protraining.php
http://www.itk.org/Wiki/ITK_FAQ
http://public.kitware.com/mailman/listinfo/insight-users
Pablo Hernández
2017-08-03 00:29:41 UTC
Permalink
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, ***@kitware.com<mailto:***@kitware.com> <***@kitware.com<mailto:***@kitware.com>> 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

[2] https://github.com/thewtex/docker-opengl

[3] http://mxe.cc/

[4] https://blog.kitware.com/kitware-packages-on-os-x-with-homebrew/
Post by Andras Lasso
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
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?.
with closs-platform buildings ( https://github.com/dockcross/dockcross ),
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
https://github.com/thewtex/SlicerDocker, 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<http://www.kitware.com>
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
http://www.kitware.com/products/protraining.php
http://www.itk.org/Wiki/ITK_FAQ
http://public.kitware.com/mailman/listinfo/insight-users
Pablo Hernández
2017-08-03 00:29:45 UTC
Permalink
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, ***@kitware.com<mailto:***@kitware.com> <***@kitware.com<mailto:***@kitware.com>> 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

[2] https://github.com/thewtex/docker-opengl

[3] http://mxe.cc/

[4] https://blog.kitware.com/kitware-packages-on-os-x-with-homebrew/
Post by Andras Lasso
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
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?.
with closs-platform buildings ( https://github.com/dockcross/dockcross ),
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
https://github.com/thewtex/SlicerDocker, 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<http://www.kitware.com>
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
http://www.kitware.com/products/protraining.php
http://www.itk.org/Wiki/ITK_FAQ
http://public.kitware.com/mailman/listinfo/insight-users
Pablo Hernández
2017-08-03 00:29:51 UTC
Permalink
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, ***@kitware.com<mailto:***@kitware.com> <***@kitware.com<mailto:***@kitware.com>> 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

[2] https://github.com/thewtex/docker-opengl

[3] http://mxe.cc/

[4] https://blog.kitware.com/kitware-packages-on-os-x-with-homebrew/
Post by Andras Lasso
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
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?.
with closs-platform buildings ( https://github.com/dockcross/dockcross ),
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
https://github.com/thewtex/SlicerDocker, 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<http://www.kitware.com>
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
http://www.kitware.com/products/protraining.php
http://www.itk.org/Wiki/ITK_FAQ
http://public.kitware.com/mailman/listinfo/insight-users
Pablo Hernández
2017-08-11 03:51:42 UTC
Permalink
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 <***@outlook.com<mailto:***@outlook.com>> 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, ***@kitware.com<mailto:***@kitware.com> <***@kitware.com<mailto:***@kitware.com>> 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

[2] https://github.com/thewtex/docker-opengl

[3] http://mxe.cc/

[4] https://blog.kitware.com/kitware-packages-on-os-x-with-homebrew/
Post by Andras Lasso
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
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?.
with closs-platform buildings ( https://github.com/dockcross/dockcross ),
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
https://github.com/thewtex/SlicerDocker, 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<http://www.kitware.com>
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
http://www.kitware.com/products/protraining.php
http://www.itk.org/Wiki/ITK_FAQ
http://public.kitware.com/mailman/listinfo/insight-users
Pablo Hernández
2017-08-11 03:51:45 UTC
Permalink
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 <***@outlook.com<mailto:***@outlook.com>> 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, ***@kitware.com<mailto:***@kitware.com> <***@kitware.com<mailto:***@kitware.com>> 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

[2] https://github.com/thewtex/docker-opengl

[3] http://mxe.cc/

[4] https://blog.kitware.com/kitware-packages-on-os-x-with-homebrew/
Post by Andras Lasso
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
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?.
with closs-platform buildings ( https://github.com/dockcross/dockcross ),
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
https://github.com/thewtex/SlicerDocker, 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<http://www.kitware.com>
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
http://www.kitware.com/products/protraining.php
http://www.itk.org/Wiki/ITK_FAQ
http://public.kitware.com/mailman/listinfo/insight-users
Pablo Hernández
2017-08-11 03:51:48 UTC
Permalink
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 <***@outlook.com<mailto:***@outlook.com>> 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, ***@kitware.com<mailto:***@kitware.com> <***@kitware.com<mailto:***@kitware.com>> 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

[2] https://github.com/thewtex/docker-opengl

[3] http://mxe.cc/

[4] https://blog.kitware.com/kitware-packages-on-os-x-with-homebrew/
Post by Andras Lasso
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
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?.
with closs-platform buildings ( https://github.com/dockcross/dockcross ),
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
https://github.com/thewtex/SlicerDocker, 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<http://www.kitware.com>
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
http://www.kitware.com/products/protraining.php
http://www.itk.org/Wiki/ITK_FAQ
http://public.kitware.com/mailman/listinfo/insight-users
Andras Lasso
2017-08-11 13:08:55 UTC
Permalink
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:***@outlook.com]
Sent: Thursday, August 10, 2017 11:52 PM
To: ***@kitware.com
Cc: Insight-users <insight-***@itk.org>; Andras Lasso <***@queensu.ca>
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 <***@outlook.com<mailto:***@outlook.com>> 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, ***@kitware.com<mailto:***@kitware.com> <***@kitware.com<mailto:***@kitware.com>> 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>
Post by Andras Lasso
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
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?.
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
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>
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>
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>
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>
Loading...