Description
Given our current codebase, the simplest way to produce installable packages would be to modify the CMakeLists.txt
to include install()
directives, which can then be picked up in a cpack
configuration used to generate packages for various package managers. I would like to have the following package types:
.tar
for generic linux distros.deb
for Debian and Ubuntu.rpm
for Redhat and its various spinoff distros.zip
for Windows.msi
or.exe
for less patient Windows developers- Nuget package for GitHub packages
I would describe the .msi
/.exe
targets as more aspirational, I do not know what exactly goes into generating such packages, but I imagine there is a nontrivial amount of overhead to such package generators in terms of metadata and third party software. For .deb
and .rpm
targets, although these package generators require some additional software and configuration, this is somewhat less daunting given their respective open source communities and the fact that our packages will not need to wrangle any dependencies.
The biggest questions will be:
- How much of these actions can be pushed into the CI/CD workflow?
- How should we go about covering various target architectures?
- How much testing is realistically needed to test these packages across these architectures?