summaryrefslogtreecommitdiff
path: root/build2/version.sh
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2025-01-14 09:55:02 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2025-01-14 09:55:02 +0200
commitf5650c3b5b7e6e09d53cd9fd1df04fa58da4014e (patch)
tree99bdfb7eb371d7f0128b2be36e402ce1c8f6f648 /build2/version.sh
parent395436aacd96c4e9f40f2dd1651c1e5516daa200 (diff)
Release version 2.5.0v2.5.0
Diffstat (limited to 'build2/version.sh')
-rwxr-xr-xbuild2/version.sh137
1 files changed, 137 insertions, 0 deletions
diff --git a/build2/version.sh b/build2/version.sh
new file mode 100755
index 0000000..6d3673b
--- /dev/null
+++ b/build2/version.sh
@@ -0,0 +1,137 @@
+#!/bin/bash
+
+# Usage: run from the ODB repository root.
+#
+# Recommended procedure:
+#
+# ./version.sh
+# git diff # review (compare to previous release for any discrepancies)
+# git ci -a -m "Release version X.Y.Z"
+# git tag -a "vX.Y.Z" -m "Tag version X.Y.Z"
+#
+
+# @@ Fix libcutl and libstudxml version upon release if betas for LTS
+# and restore when re-opening for development. Otherwise, update
+# constraints to latest released.
+# @@ CLI dependency is managed manually.
+# @@ MySQL, PostgreSQL client dependencies are managed manually (tests, examples)
+# @@ Version/date/copyright in odb/doc/{*-prologuie,manual.xhtml,manual.html2ps} -
+# grep for 2.5, [cC]opyright.
+
+# Currently we use even beta numbers for snapshot version meaning
+# after the release b.1 becomes b.2.z, not b.1.z and at release b.2.z
+# becomes b.3.
+#
+#interface_num=20479
+interface_num=20500
+
+#interface_str=2.5-b.29
+interface_str=2.5
+
+#num=2049979
+num=2050000
+
+#str=2.5.0-b.29
+str=2.5.0
+
+#man_str=2.5.0-b.29
+#man_str=2.5.0-b.30.z
+#man_str=2.5.0-b.29+1
+man_str=2.5.0
+
+#profile_num=2047900
+profile_num=2050000
+
+#profile_str=2.5.0-b.29
+profile_str=2.5.0
+
+# No max, always >=.
+#
+# We should try to stay at least one version behind not to cause unnecessary
+# inconvenience.
+#
+build2=0.17.0
+bpkg=0.17.0
+
+#---------------------------------------------------------------------------
+
+mj="$(echo "$man_str" | sed -re 's/([^.]+)\..*/\1/')"
+mn="$(echo "$man_str" | sed -re 's/[^.]+\.([^.]+)\..*/\1/')"
+pt="$(echo "$man_str" | sed -re 's/[^.]+\.[^.]+\.([^.-]+).*/\1/')"
+ab="$(echo "$man_str" | sed -n -re 's/[^.]+\.[^.]+\.[^.-]+-([ab]).*/\1/p')"
+pr="$(echo "$man_str" | sed -n -re 's/[^.]+\.[^.]+\.[^.-]+-[ab]\.([^.+]+).*/\1/p')"
+
+# In manifests for alpha/beta we use an exact match. For snapshots -- snapshot
+# range. Otherwise an X.Y.* range.
+#
+if [ -n "$ab" ]; then
+ if [[ $man_str == *.z ]]; then
+ man="[$mj.$mn.$pt-$ab.$pr.1 $mj.$mn.$pt-$ab.$(($pr+1)))"
+ else
+ man="== $man_str"
+ fi
+else
+ man="[$mj.$mn.0 $mj.$(($mn+1)).0-); $mj.$mn.X"
+fi
+
+cd libodb
+
+sed -i -e "s/^\(#define ODB_VERSION \).*/\1$interface_num/" odb/version.hxx.in
+sed -i -e "s/^\(#define ODB_VERSION_STR \).*/\1\"$interface_str\"/" odb/version.hxx.in
+sed -i -e "s/^\(#define LIBODB_VERSION \).*/\1$num/" odb/version.hxx.in
+
+sed -i -e "s/^\(version:\).*/\1 $man_str/" manifest
+sed -i -e "s/^\(depends: \* build2\) .*/\1 >= $build2/" manifest
+sed -i -e "s/^\(depends: \* bpkg\) .*/\1 >= $bpkg/" manifest
+cd ..
+
+for db in mysql sqlite pgsql oracle mssql; do
+ DB=`echo $db | sed -e 's/\(.*\)/\U\1/'`
+ cd libodb-$db
+
+ sed -i -e "s/^\(#define LIBODB_${DB}_VERSION \).*/\1$num/" odb/$db/version.hxx.in
+
+ cd ..
+done
+
+for pr in boost qt; do
+ PR=`echo $pr | sed -e 's/\(.*\)/\U\1/'`
+ cd libodb-$pr
+
+ sed -i -e "s/^\(#define ODB_${PR}_VERSION \).*/\1$profile_num/" odb/$pr/version.hxx.in
+ sed -i -e "s/^\(#define ODB_${PR}_VERSION_STR \).*/\1\"$profile_str\"/" odb/$pr/version.hxx.in
+ sed -i -e "s/^\(#define LIBODB_${PR}_VERSION \).*/\1$num/" odb/$pr/version.hxx.in
+
+ sed -i -e "s/^\(--hxx-prologue '#if ODB_${PR}_VERSION != \).*/\1$profile_num \/\/ $profile_str'/" odb/$pr/version.options
+
+ cd ..
+done
+
+for l in sqlite pgsql mysql oracle mssql boost qt; do
+ cd libodb-$l
+
+ sed -i -e "s/^\(version:\).*/\1 $man_str/" manifest
+ sed -i -e "s/^\(depends: \* build2\) .*/\1 >= $build2/" manifest
+ sed -i -e "s/^\(depends: \* bpkg\) .*/\1 >= $bpkg/" manifest
+
+ cd ..
+done
+
+for t in tests examples; do
+ cd odb-$t
+
+ sed -i -e "s/^\(version:\).*/\1 $man_str/" manifest
+ sed -i -e "s/^\(depends: \* build2\) .*/\1 >= $build2/" manifest
+ sed -i -e "s/^\(depends: \* bpkg\) .*/\1 >= $bpkg/" manifest
+
+ cd ..
+done
+
+cd odb
+sed -i -e "s/^\(#define ODB_VERSION \).*/\1$interface_num/" odb/version.hxx.in
+sed -i -e "s/^\(#define ODB_COMPILER_VERSION_OLD \).*/\1$num/" odb/version.hxx.in
+
+sed -i -e "s/^\(version:\).*/\1 $man_str/" manifest
+sed -i -e "s/^\(depends: \* build2\) .*/\1 >= $build2/" manifest
+sed -i -e "s/^\(depends: \* bpkg\) .*/\1 >= $bpkg/" manifest
+cd ..