diff --git a/build-scripts/update-version.sh b/build-scripts/update-version.sh new file mode 100755 index 000000000..d70369597 --- /dev/null +++ b/build-scripts/update-version.sh @@ -0,0 +1,88 @@ +#!/bin/sh + +#set -x + +cd `dirname $0`/.. + +ARGSOKAY=1 +if [ -z $1 ]; then + ARGSOKAY=0 +fi +if [ -z $2 ]; then + ARGSOKAY=0 +fi +if [ -z $3 ]; then + ARGSOKAY=0 +fi + +if [ "x$ARGSOKAY" = "x0" ]; then + echo "USAGE: $0 " 1>&2 + exit 1 +fi + +MAJOR="$1" +MINOR="$2" +PATCH="$3" +NEWVERSION="$MAJOR.$MINOR.$PATCH" + +echo "Updating version to '$NEWVERSION' ..." + +# !!! FIXME: This first one is a kinda scary search/replace that might fail later if another X.Y.Z version is added to the file. +perl -w -pi -e 's/(\)\d+\.\d+\.\d+/${1}'$NEWVERSION'/;' Xcode/SDL/Info-Framework.plist + +DYVER=`expr $MINOR \* 100 + 1` +perl -w -pi -e 's/(DYLIB_CURRENT_VERSION\s*=\s*)\d+\.\d+\.\d+/${1}'$DYVER'.0.0/;' Xcode/SDL/SDL.xcodeproj/project.pbxproj + +# Set compat to major.minor.0 by default. +perl -w -pi -e 's/(DYLIB_COMPATIBILITY_VERSION\s*=\s*)\d+\.\d+\.\d+/${1}'$DYVER'.0.0/;' Xcode/SDL/SDL.xcodeproj/project.pbxproj + +# non-zero patch? +if [ "x$PATCH" != "x0" ]; then + if [ `expr $MINOR % 2` = "0" ]; then + # If patch is not zero, but minor is even, it's a bugfix release. + perl -w -pi -e 's/(DYLIB_CURRENT_VERSION\s*=\s*)\d+\.\d+\.\d+/${1}'$DYVER'.'$PATCH'.0/;' Xcode/SDL/SDL.xcodeproj/project.pbxproj + + else + # If patch is not zero, but minor is odd, it's a development prerelease. + DYVER=`expr $MINOR \* 100 + $PATCH + 1` + perl -w -pi -e 's/(DYLIB_CURRENT_VERSION\s*=\s*)\d+\.\d+\.\d+/${1}'$DYVER'.0.0/;' Xcode/SDL/SDL.xcodeproj/project.pbxproj + perl -w -pi -e 's/(DYLIB_COMPATIBILITY_VERSION\s*=\s*)\d+\.\d+\.\d+/${1}'$DYVER'.0.0/;' Xcode/SDL/SDL.xcodeproj/project.pbxproj + fi +fi + +perl -w -pi -e 's/\A(SDL_MAJOR_VERSION=)\d+/${1}'$MAJOR'/;' configure.ac +perl -w -pi -e 's/\A(SDL_MINOR_VERSION=)\d+/${1}'$MINOR'/;' configure.ac +perl -w -pi -e 's/\A(SDL_MICRO_VERSION=)\d+/${1}'$PATCH'/;' configure.ac + +perl -w -pi -e 's/\A(set\(SDL_MAJOR_VERSION\s+)\d+/${1}'$MAJOR'/;' CMakeLists.txt +perl -w -pi -e 's/\A(set\(SDL_MINOR_VERSION\s+)\d+/${1}'$MINOR'/;' CMakeLists.txt +perl -w -pi -e 's/\A(set\(SDL_MICRO_VERSION\s+)\d+/${1}'$PATCH'/;' CMakeLists.txt + +perl -w -pi -e 's/\A(MAJOR_VERSION\s*=\s*)\d+/${1}'$MAJOR'/;' Makefile.os2 +perl -w -pi -e 's/\A(MINOR_VERSION\s*=\s*)\d+/${1}'$MINOR'/;' Makefile.os2 +perl -w -pi -e 's/\A(MICRO_VERSION\s*=\s*)\d+/${1}'$PATCH'/;' Makefile.os2 + +perl -w -pi -e 's/\A(MAJOR_VERSION\s*=\s*)\d+/${1}'$MAJOR'/;' Makefile.w32 +perl -w -pi -e 's/\A(MINOR_VERSION\s*=\s*)\d+/${1}'$MINOR'/;' Makefile.w32 +perl -w -pi -e 's/\A(MICRO_VERSION\s*=\s*)\d+/${1}'$PATCH'/;' Makefile.w32 + +perl -w -pi -e 's/(\#define SDL_MAJOR_VERSION\s+)\d+/${1}'$MAJOR'/;' include/SDL_version.h +perl -w -pi -e 's/(\#define SDL_MINOR_VERSION\s+)\d+/${1}'$MINOR'/;' include/SDL_version.h +perl -w -pi -e 's/(\#define SDL_PATCHLEVEL\s+)\d+/${1}'$PATCH'/;' include/SDL_version.h + +perl -w -pi -e 's/(FILEVERSION\s+)\d+,\d+,\d+/${1}'$MAJOR','$MINOR','$PATCH'/;' src/main/windows/version.rc +perl -w -pi -e 's/(PRODUCTVERSION\s+)\d+,\d+,\d+/${1}'$MAJOR','$MINOR','$PATCH'/;' src/main/windows/version.rc +perl -w -pi -e 's/(VALUE "FileVersion", ")\d+, \d+, \d+/${1}'$MAJOR', '$MINOR', '$PATCH'/;' src/main/windows/version.rc +perl -w -pi -e 's/(VALUE "ProductVersion", ")\d+, \d+, \d+/${1}'$MAJOR', '$MINOR', '$PATCH'/;' src/main/windows/version.rc + +echo "Regenerating configure script with new version..." +./autogen.sh |grep -v 'Now you are ready to run ./configure' + +echo "Running test/versioning.sh to verify changes..." +./test/versioning.sh + +echo "All done." +echo "Run 'git diff' and make sure this looks correct, before 'git commit'." + +exit 0 + diff --git a/docs/release_checklist.md b/docs/release_checklist.md index 7fb9c5779..0c9e50124 100644 --- a/docs/release_checklist.md +++ b/docs/release_checklist.md @@ -4,27 +4,10 @@ * Update `WhatsNew.txt` -* Bump version number to 2.EVEN.0 in all these locations: +* Bump version number to 2.EVEN.0: - * `configure.ac`, `CMakeLists.txt`: `SDL_*_VERSION` - * `Xcode/SDL/Info-Framework.plist`: `CFBundleShortVersionString`, - `CFBundleVersion` - * `Makefile.os2`: `VERSION` - * `Makefile.w32`: `*_VERSION` - * `include/SDL_version.h`: `SDL_*_VERSION`, `SDL_PATCHLEVEL` - * `src/main/windows/version.rc`: `FILEVERSION`, `PRODUCTVERSION`, - `FileVersion`, `ProductVersion` - -* Bump ABI version information - - * `Xcode/SDL/SDL.xcodeproj/project.pbxproj`: - `DYLIB_CURRENT_VERSION`, `DYLIB_COMPATIBILITY_VERSION` - * set first number in `DYLIB_CURRENT_VERSION` to - (100 * *minor*) + 1 - * set second number in `DYLIB_CURRENT_VERSION` to 0 - * set `DYLIB_COMPATIBILITY_VERSION` to the same value - -* Regenerate `configure` + * `./build-scripts/update-version.sh 2 EVEN 0` + * (spaces between each component of the version, and `EVEN` will be a real number in real life. * Run test/versioning.sh to verify that everything is consistent @@ -38,16 +21,8 @@ * Bump version number from 2.Y.Z to 2.Y.(Z+1) (Y is even) - * Same places as listed above - -* Bump ABI version information - - * `Xcode/SDL/SDL.xcodeproj/project.pbxproj`: - `DYLIB_CURRENT_VERSION`, `DYLIB_COMPATIBILITY_VERSION` - * set second number in `DYLIB_CURRENT_VERSION` to *patchlevel* - * Leave `DYLIB_COMPATIBILITY_VERSION` unchanged - -* Regenerate `configure` + * `./build-scripts/update-version.sh 2 Y Z+1` + * (spaces between each component of the version, and `Y` and `Z+1` will be real numbers in real life. * Run test/versioning.sh to verify that everything is consistent @@ -59,12 +34,8 @@ * Bump version number to 2.ODD.0 for next development branch - * Same places as listed above - -* Bump ABI version information - - * Same places as listed above - * Assume that the next feature release will contain new API/ABI + * `./build-scripts/update-version.sh 2 ODD 0` + * (spaces between each component of the version, and `ODD` will be a real number in real life. * Run test/versioning.sh to verify that everything is consistent @@ -72,16 +43,8 @@ * Bump version number from 2.Y.Z to 2.Y.(Z+1) (Y is odd) - * Same places as listed above - -* Bump ABI version information - - * `Xcode/SDL/SDL.xcodeproj/project.pbxproj`: - `DYLIB_CURRENT_VERSION`, `DYLIB_COMPATIBILITY_VERSION` - * set first number in `DYLIB_CURRENT_VERSION` to - (100 * *minor*) + *patchlevel* + 1 - * set second number in `DYLIB_CURRENT_VERSION` to 0 - * set `DYLIB_COMPATIBILITY_VERSION` to the same value + * `./build-scripts/update-version.sh 2 Y Z+1` + * (spaces between each component of the version, and `Y` and `Z+1` will be real numbers in real life. * Regenerate `configure`