- Run the full testsuite (``tests\testament\tester all``) and ensure it's green; actually ensure travis is green (Usually the case these days) - Update news.txt - write a news ticker entry - Update the version - In system.nim - Recompile koch! - Generate the full docs; koch web0 - Test the installers: koch testinstall - Tag the release, e.g. ```git tag -am "Version 0.15.0" v0.15.0``` - Push the tag: ```git push origin [tagname]``` - The CI generates the installers. Download from ci.nim-lang.org - Merge devel into master - Update csources via ``koch pushcsources`` Shell script to build a source tarball: ```sh #!/bin/sh set -eu tmp_dir=$(mktemp -d) cd $tmp_dir git clone -q --depth 1 https://github.com/nim-lang/Nim.git cd Nim git clone -q --depth 1 https://github.com/nim-lang/csources ( cd csources && sh build.sh ) bin/nim c koch ./koch boot -d:release ./koch web0 PATH=$PATH:$(pwd)/bin ./koch csource -d:release ./koch xz -d:release ``` Shell script, work in progress: ```sh #!/bin/sh set -eu # Test and release a new Nim version ask() { echo "$1 Enter to continue, Ctrl-C to stop" read _ } ask "Ensure that https://travis-ci.org/nim-lang/Nim is green" ask "Ensure the last build on http://ci.nim-lang.org/ is successful" orig_dir=$(pwd) tmp_dir=$(mktemp -d) cd $tmp_dir # Clone repos #git clone https://github.com/nim-lang/nim.git --depth 1 cp -a /tmp/nim . cd nim #git clone https://github.com/nim-lang/nimble.git --depth 1 cp -a /tmp/nimble . #git clone --depth 1 https://github.com/nim-lang/csources cp -a /tmp/csources . # Build Nim cd csources && sh build.sh cd .. bin/nim c koch ./koch boot -d:release # Run the full testsuite (tests\testament\tester all) and ensure it's green; actually ensure travis is green (Usually the case these days) # Set version old_version=$(grep ^version compiler.nimble | cut -d'"' -f2) nim_major="$1" nim_minor="$2" nim_patch="$3" new_version="$nim_major.$nim_minor.$nim_patch" ask "Old version is $old_version - new version is $new_version" # Update the version sed -i "s/^ NimMajor\*: int = [0-9]*$/ NimMajor*: int = $nim_major/" lib/system.nim sed -i "s/^ NimMinor\*: int = [0-9]*$/ NimMinor*: int = $nim_minor/" lib/system.nim sed -i "s/^ NimPatch\*: int = [0-9]*$/ NimPatch*: int = $nim_patch/" lib/system.nim git diff | cat -n ask "Ensure the version was updated in 3 files" # Update news.txt # write a news ticker entry # Generate the full docs ./koch web0 # Generate the installers ./koch csource -d:release ./koch xz -d:release ./koch nsis ```