Crascit / cmake-snap

Builds the official CMake snap
https://snapcraft.io/cmake
MIT License
5 stars 2 forks source link
cmake snapcraft snaps

image::snap/gui/CMake_Logo_wide.svg[CMake]

This is the snap for CMake, a cross-platform, open-source build system generator.

image::https://snapcraft.io/cmake/badge.svg[link="https://snapcraft.io/cmake"]

== Supported Architectures

Starting with the CMake 3.27 release series, snap packages are essentially just a wrapper around the official CMake binary releases from Kitware. Snap packages are only provided for the architectures that have an official Kitware release. Currently, that is only amd64 and arm64 (Kitware releases call these x86_64 and aarch64 respectively). For CMake 3.27 onward, these will be the only architectures for which new snap packages will be created.

For CMake 3.26 and earlier, snap packages were built using the snapcraft remote build service for architectures amd64, arm64, armhf, ppc64el, s390x and i386. These snaps had some differences to the official packages, mostly due to the way Qt was built and incorporated into the snap building process. These older snaps will continue to be available for all architectures, but armhf, ppc64el, s390x and i386 will not receive any updates for CMake 3.27 and later.

== Release Instructions

Each CMake feature release has its own corresponding branch in this repository. These branches follow the naming convention release/X.Y. When an official CMake release is made (including release candidates), create or checkout the branch tracking that feature release. The link:.github/workflows/build-snap-packages.yml[GitHub workflow file] must be updated with the appropriate feature release version and publishing track for that branch and version. The other CMake release version details in that file will determine the version of the snap that is built. Only tagged releases will upload and publish snaps. Set the release track to candidate for release candidates, or stable for regular releases.

CI jobs only publish snap packages to the specified release track. If publishing for the latest feature release, an extra manual step is required. The latest channel needs to be updated in the https://snapcraft.io/cmake/releases[Snapcraft Releases] area (login required). This should be a simple matter of promoting the just-published snaps to the relevant channel (latest/candidate or latest/stable). If this is the first regular release after previous release candidates, also close the latest/candidate channel after promoting to latest/stable. The candidate channel will then forward to the latest stable release, which ensures anyone tracking the candidate channel moves up to the stable release on their next update.