ObjFW  Artifact [4bf01f0aa3]

Artifact 4bf01f0aa3e09870c6220de40e31a3e802355db431691b912bf740c95e9a3516:

Wiki page [Release process] by js on 2024-04-20 18:10:09.
D 2024-04-20T18:10:09.239
L Release\sprocess
N text/x-markdown
P 33345a0084ff02dcf1b7120878e9a39e43e2ac1b925177b90f8a72e20aabe366
U js
W 5688
# Release process

1. Update the `ChangeLog` and cherry-pick the change into `trunk`.
1. **Make sure the library version has been increased for all libraries that had changes / bug fixes! Don't forget to increase the minor for every library that had new features added and the patch level for every library that had bug fixes!**
1. Change the version in `AC_INIT` and the `BUNDLE_VERSION` in `configure.ac` and commit. This commit should have the `${version}-release` tag!
1. Push and make sure the tag propagates to Git as well.
1. Run `fossil up ${version}-release` and run `fossil clean -x -v`, then `./autogen.sh && ./configure`. Don't forget this, or the version might be wrong!
1. Generate and sign tarballs using `make release`.
1. Extract `objfw-${version}.tar.gz` and `objfw-docs-${version}.tar.gz` as well as `objfw-${previousVersion}.tar.gz` and `objfw-docs-${previousVersion}.tar.gz`. Then diff the current against the previous version and check nothing unexpected is in there.
1. Upload the tarballs and their signatures.
1. Extract the new documentation and put it [here](https://objfw.nil.im/docs/).
1. Update the [`LATEST`](https://objfw.nil.im/docs/LATEST) symlink.
1. Update the [](Releases) page.
1. Update the [](News) page.
1. Announce the new release on the [Fediverse](https://ap.nil.im/objfw).
1. Announce the new release in the Matrix room and change the topic to include the new release.

## Distributions

[Repology](https://repology.org/project/objfw/versions) is great for tracking what distribution is at what version, though it is neither exhaustive nor always update to date.

### pkgsrc

In `devel/objfw`:

1. Edit `Makefile` to increase version.
1. Run `make makesum` to update `distinfo`. Check it is correct.
1. Run `make package`.
1. Run `make print-PLIST >PLIST` to update the `PLIST`. Look at the diff and fix any custom `PLIST` entries that this reverted. Pay attention to what is already in the other `PLIST.*` files!
1. Commit (include the change log in the commit message) and run `make cce`.

### Fedora

1. Make sure to be on main.
1. Increase version in  `objfw.spec` and `git add` it.
1. Download the tarball and signature via `spectool -g objfw.spec`.
1. `fedpkg upload` both `objfw-${version}.tar.gz` and `objfw-${version}.tar.gz.sig`.
1. Remove the old version from `sources` and `.gitignore`, then `git add` both.
1. `git commit -m "Update to ${version}"`
1. `for i in rawhide f38 f39 f40 epel8 epel9; do git checkout $i && git merge main; done`
1. `git push`
1. `for i in rawhide f38 f39 f40 epel8 epel9; do git checkout $i && fedpkg build --nowait; done`
1. Wait for the builds to be done, then create the updates on [Bodhi](https://bodhi.fedoraproject.org/). Set the Karma required to 1.

### Homebrew

1. Edit the [Formula](https://github.com/Homebrew/homebrew-core/blob/master/Formula/o/objfw.rb) to increase the version and update the hash.
1. Commit with the message `objfw ${version}` and create a draft pull request. This will trigger CI.
1. Once CI passed, click on `Ready for review`.

### MSYS2

1. Edit the [`PKGBUILD`](https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-objfw/PKGBUILD) file to increase the version and update the hash.
1. Commit with the message `objfw: Update to ${version}` and create a draft pull request. This will trigger CI.
1. Once CI passed, click on `Ready for review`.

### OpenIndiana

1. Edit the [`Makefile`](https://github.com/OpenIndiana/oi-userland/blob/oi/hipster/components/library/objfw/Makefile) to increase the version and update the hash.
1. If a library minor increased, the `*.p5m` files need to be changed as well.
1. Run `gmake sample-manifest`, `gmake publish`, `gmake test` and `gmake REQUIRED_PACKAGES`.
1. Commit with the message `library/objfw: update to ${version}` and create a pull request.

### Alpine Linux

1. Edit the [`APKBUILD`](https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/community/objfw/APKBUILD?ref_type=heads) to increase the version and update the file name and hash.
1. Commit with the message `community/objfw: upgrade to ${version}` and create a draft pull request. This will trigger CI.
1. (Optional) Manually trigger the RISC-V build.
1. Once CI passed, click on `Mark as ready`.
1. Only for bug fix-only releases: Repeat the same for every stable branch, but prefix the commit message with the branch, e.g. `[3.19] community/objfw: upgrade to 1.0.6`.

### Haiku

In `dev-libs/objfw`:

1. Rename the recipe file to the new version.
1. Update the hash.
1. Update the library versions as necessary.
1. Run `haikuporter objfw_x86` (for gcc2h) or `haikuporter objfw`.
1. Commit & push.

### OpenBSD

In `devel/objfw`:

1. Edit `Makefile` and increase the version and potentially library versions.
1. Run `make makesum`.
1. Run `make update-plist` to update the `PLIST`. Look at the diff and revert any unwanted diffs.
1. Run `cvs diff` and send the output to [ports@openbsd.org](mailto:ports@openbsd.org).

### FreeBSD

In `devel/objfw`:

1. Edit `Makefile` and increase the version.
1. Run `make makesum`.
1. Run `make makeplist >pkg-plist` and check and edit `pkg-plist`.
1. Run `make install`.
1. Create a patch and create a [bug](https://bugs.freebsd.org/bugzilla/) titled `devel/objfw: Update to ${version}`.
1. Attach the patch and change log to the bug.
1. Mention whether the update should be applied to the quarterly.

### ArchLinux
1. Edit `PKGBUILD` in AUR and increase the version and update the hash.
1. Run `makepkg`.
1. Run `makepkg --printsrcinfo >.SRCINFO`.
1. `git add PKGBUILD .SRCINFO`, then commit and push.
Z 0f7aef008bc0df153e45b5d8179f3c2d