Update Windows toolchain and docker fo CI
As a | CamiTK developer |
I would like to | have a new toolchain on windows and a new docker image for CI |
So that | I spend less time on installing and building CamiTK CE |
As a | CEP developer on Windows |
I would like to | have a simpler way to install the toolchain and develop my extension |
So that | I spend less time on the setup and have less difficulties to develop on Windows |
Description / Overview
Windows setup is fastidious and can have side effect on the installation (or the local installation can have side effect on the CEP development, e.g. installation of some LaTeX software provides Qt DLL that conflict with the CamiTK setup).
Some package/dev environment setup systems exist on Windows
- msys2 has an extensive list of available packages, and a good documentation. The compiler is mingw64.
- chocolatey (that what is used at the moment). The compiler is MSVC
- vcpkg.
This issue contains many aspect and:
- must answer the question : Should we move to msys2 or vcpkg or stay on chocolatey+MSVC?
- must provide a new toolchain documentation
- must provide a new docker image for CI
- (if possible) must provide a new documentation on how to use the docker image to develop on windows without installing software
See:
- msys2 description
- project that use msys2, to check how they use it, what's the impact on their toolchain, and how they manage their CI (e.g., inkscape and inkscape CI on gitlab.com).
- dockerization tentative for msys2
If MSys2 is adopted:
- All dependencies library should be available (xerces-c,...), including some that are not directly used in CCE but are known to be used/supported in CEPs (e.g., opencv, SDL2,...)
- MSC++ will not be used as the default compiler on windows (subsidiary question: does it have other side effects? Any impact on the future python binding?)
- that reinforce the recommendation of vscode as an ide on all platform (see #181), including windows mingw for vscode documentation
Additional questions
- impact CI performance (subsidiary question: is there a way to optimize the docker handling by windows? Is win11 better than win10 for handling containerized toolchain?)
- can the window docker image be used to build and run CEPs by CEP developers. That would certainly ease the setup process and will have zero impact on the developer installation. Iit is probably easy to build a CEP from vscode + devcontainer using the window docker image, but it might be harder/not possible/not efficient to run
camitk-imp
from the docker container → that remain to be tested! -
⚠ CMake macros. Some CamiTK CMake code (configuration and CI) depends on checking if the compiler is MSVC. There might be some problems to fix there as well if changing to mingw64. - using mingw64 might automatically close #64 (closed) (declimport/declexport). But then another decision will have to be taken about what to do with legacy code (remove the macros for managing declimport/declexport or not). And also a decision has to be taken for using the CMake property from now on...
Acceptance tests
-
window docker image for CI (updated or renewed) -
update website setup documentation -
update support policy web page -
in the develop
branch checkCMakeLists.txt
for minimal version and check if update is required -
update release documentation to add a step that uses the Windows toolchain and solve the compiler/linker warnings before adding the release tag (same as the clang) -
in the develop
branch move version requirements for the tests (VTK and ITK version) and update test file if required. For instance :component-stl-level3-2
,vtkimage
... (search forREQUIRES "${VTK_VERSION}
→9.1.0
andREQUIRES "${ITK_VERSION}
→5.3.0
-
Internal document to explain the decision -
(optional) re-generate the CamiTK5.2 package using the new image (to test the release process for future release)
Edited by Emmanuel Promayon