Releasing Luanti
Before releasing
Announce a feature freeze
Usually, a feature freeze for one week is announced in #minetest-dev. New features aren't accepted in this time and people focus on finding and fixing bugs.
The feature freeze and release date is set by core developers.
Update changelog
Changelog can be found here.
The process
This is mostly done by several core developers.
Update version in source
- Define a new version number by running util/bump_version.sh. Verify that this script correctly
- updates the version number in CMakeLists.txt and the titles of doc/lua-api.txt and doc/menu_lua_api.txt
- comments out the line in CMakeLists.txt that sets VERSION_STRING to ${VERSION_STRING}-dev
- increments ANDROID_VERSION_CODE in build/android/Makefile
- and commits.
- Tag the version in local git to allow the cmake versioning script to remove the git hash from the version. Do not push the tag to GitHub yet.
- Build, get newest minetest_game, run and check if the thing seems to be working.
Build Windows version
- Visual Studio 2010 currently makes best results (?).
- Currently built by Krock/SmallJoker (0.4.15). They have sound, gettext, cURL, LuaJIT, LevelDB, Spatial index and TTF support.
- Since 0.4.8, a MinGW build is also included, built by sfan5.
- If at all possible, debug builds (for both MSVC and MinGW) should be produced along with the regular release builds.
Be sure that the Windows builds work before continuing to do anything!
Tweak Windows package a bit
- Include Minetest Game or other subgames that were decided on before the release.
- Include msvcr100.dll and wrap_oal.dll in the package (bin/). The latter is one of the OpenAL DLLs that the CMake install scripts are currently missing. Those making official builds probably already know what they are doing.
Upload Windows package to somewhere
- Windows packages are hosted at GitHub: https://github.com/minetest/minetest/releases.
Update branches and tags of minetest and minetest_game on GitHub
- See previous tags. Use the same tag for all of them; eg. "0.4.4".
- The new release should be merged to the stable-0.4 branch on both minetest and minetest_game. Its important to merge, and not just rebase, so that git describe works.
The problem on the engine's stable-0.4 branch
Usually, merging releases onto the stable-0.VER_MINOR branch just consists of adding the commits to the branch, as the stable-0.VER_MINOR branch contains direct anchestors of master commits, and git can do a fast forward. During release/freeze of 0.4.12, the anchestor rule has been broken. Therefore, you'll generate merge commits, but this shouldn't be a problem. In the case of merge conflicts, ensure that the changes on stable-0.4 are all discarded in favour of the tagged commit at master, by doing a merge commit like: git checkout version-tag; git merge -s ours origin/stable-0.4. Then push it with git push origin HEAD:stable-0.4
Update stuff on launchpad to get Ubuntu builds for the new version
Juhani Numminen hasn't been around in a long while, so celeron55, PilzAdam or est31 must update Launchpad.
Build and Publish Android APK
Notify the Android maintainers to update their APKs for their corresponding platforms:
- nerzhul (@ chat.freenode.net) for google play. He also holds the signature keys for the play app.
- est31 (@ chat.freenode.net) for f-droid. As f-droid signs its apps itself, the release can be done without him. Best way if est31 is unavailable is to ask on freenode channel #fdroid for help.
How-to for binary release app stores
You can do the following step to upload minetest to app stores like google play, where you only can submit an app in binary form:
- Sign the package: jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore keystore-minetest.jks bin/Minetest-release-unsigned.apk Minetest
- Zipalign the apk: zipalign -v 4 bin/Minetest-release-unsigned.apk Minetest-release.apk
Update links on minetest.net
Don't forget to edit the minetest.net page.
As of 0.4.12, when an MSVC Windows build is made, a .pdb file is also generated. Each such file must be be provided and clearly associated with its respective build.
After releasing
Reenable -dev version suffix
Check that the util/bump_version.sh script did the following steps:
- Change FALSE to TRUE for the line set(DEVELOPMENT_BUILD FALSE) in CMakeLists.txt. This will add the -dev suffix to the version name again.
- Commit.
Notify known package maintainers
- emptty (@ chat.freenode.net; Martin Quinson) maintains Debian packages.
- For Gentoo, one should mail proxy-maint@gentoo.org or talk on the #gentoo-proxy-maint channel on freenode (Zeitgeist_/damiel has resigned as proxy maintainer).
- nerzhul (@ chat.freenode.net) maintains the FreeBSD port and uploads new releases to the Google/Android Play Store.
- neoascetic (mail address on his GitHub profile page) maintains Minetest in the OSX Homebrew repository.
- Akien (@ chat.freenode.net) maintains the minetest package in Mageia.
Write a release notice
- Usually a new topic in the News section of the forum. See Changelog.
- Also make a post on the Google+ page. ShadowNinja, cisoun, Jordach, and VanessaE have access.