| --- |
| short-description: Creating releases |
| ... |
| |
| # Creating releases |
| |
| In addition to development, almost all projects provide periodical |
| source releases. These are standalone packages (usually either in |
| tar or zip format) of the source code. They do not contain any |
| revision control metadata, only the source code. Meson provides |
| a simple way of generating these, with the `meson dist` command. |
| |
| Meson provides a simple way of generating these. It consists of a |
| single command *(available since 0.52.0)*: |
| |
| ```sh |
| meson dist |
| ``` |
| |
| or alternatively (on older meson versions with `ninja` backend): |
| |
| ```sh |
| ninja dist |
| ``` |
| |
| This creates a file called `projectname-version.tar.xz` in the build |
| tree subdirectory `meson-dist`. This archive contains the full contents |
| of the latest commit in revision control including all the submodules |
| (recursively). All revision control metadata is removed. Meson then |
| takes this archive and tests that it works by doing a full |
| `compile` + `test` + `install` cycle. If all these pass, Meson will |
| then create a `SHA-256` checksum file next to the archive. |
| |
| |
| ## Autotools dist VS Meson dist |
| |
| Meson behaviour is different from Autotools. The Autotools "dist" |
| target packages up the current source tree. Meson packages the latest |
| revision control commit. The reason for this is that it prevents developers |
| from doing accidental releases where the distributed archive does not match |
| any commit in revision control (especially the one tagged for the release). |
| |
| |
| ## Include subprojects in your release |
| |
| The `meson dist` command has `--include-subprojects` command line option. |
| When enabled, the source tree of all subprojects used by the current build |
| will also be included in the final tarball. This is useful to distribute |
| self contained tarball that can be built offline (i.e. `--wrap-mode=nodownload`). |
| |
| |
| ## Skip build and test with `--no-tests` |
| |
| The `meson dist` command has a `--no-tests` option to skip build and |
| tests steps of generated packages. It can be used to not waste time |
| for example when done in CI that already does its own testing. |
| |
| So with `--no-tests` you can tell Meson "Do not build and test generated |
| packages.". |
| |