aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/ryml/ext/c4core/.github/release.sh
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2025-11-07 14:49:13 +0100
committerGitHub Enterprise <[email protected]>2025-11-07 14:49:13 +0100
commit24e43a913f29ac3b314354e8ce5175f135bcc64f (patch)
treeca442937ceeb63461012b33a4576e9835099f106 /thirdparty/ryml/ext/c4core/.github/release.sh
parentget oplog attachments (#622) (diff)
downloadzen-24e43a913f29ac3b314354e8ce5175f135bcc64f.tar.xz
zen-24e43a913f29ac3b314354e8ce5175f135bcc64f.zip
switch to xmake for package management (#611)
This change removes our dependency on vcpkg for package management, in favour of bringing some code in-tree in the `thirdparty` folder as well as using the xmake build-in package management feature. For the latter, all the package definitions are maintained in the zen repo itself, in the `repo` folder. It should now also be easier to build the project as it will no longer depend on having the right version of vcpkg installed, which has been a common problem for new people coming in to the codebase. Now you should only need xmake to build. * Bumps xmake requirement on github runners to 2.9.9 to resolve an issue where xmake on Windows invokes cmake with `v144` toolchain which does not exist * BLAKE3 is now in-tree at `thirdparty/blake3` * cpr is now in-tree at `thirdparty/cpr` * cxxopts is now in-tree at `thirdparty/cxxopts` * fmt is now in-tree at `thirdparty/fmt` * robin-map is now in-tree at `thirdparty/robin-map` * ryml is now in-tree at `thirdparty/ryml` * sol2 is now in-tree at `thirdparty/sol2` * spdlog is now in-tree at `thirdparty/spdlog` * utfcpp is now in-tree at `thirdparty/utfcpp` * xmake package repo definitions is in `repo` * implemented support for sanitizers. ASAN is supported on windows, TSAN, UBSAN, MSAN etc are supported on Linux/MacOS though I have not yet tested it extensively on MacOS * the zencore encryption implementation also now supports using mbedTLS which is used on MacOS, though for now we still use openssl on Linux * crashpad * bumps libcurl to 8.11.0 (from 8.8.0) which should address a rare build upload bug
Diffstat (limited to 'thirdparty/ryml/ext/c4core/.github/release.sh')
-rw-r--r--thirdparty/ryml/ext/c4core/.github/release.sh129
1 files changed, 129 insertions, 0 deletions
diff --git a/thirdparty/ryml/ext/c4core/.github/release.sh b/thirdparty/ryml/ext/c4core/.github/release.sh
new file mode 100644
index 000000000..68d24d3d0
--- /dev/null
+++ b/thirdparty/ryml/ext/c4core/.github/release.sh
@@ -0,0 +1,129 @@
+#!/bin/bash
+
+
+# useful to iterate when fixing the release:
+# ver=0.2.1 ; ( set -x ; git tag -d v$ver ; git push origin :v$ver ) ; (set -x ; set -e ; tbump --only-patch --non-interactive $ver ; git add -u ; git commit --amend --no-edit ; git tag --annotate --message "v$ver" "v$ver" ; git push -f --tags origin )
+
+
+function c4_release_create()
+{
+ ( \
+ set -euxo pipefail ; \
+ ver=$(_c4_validate_ver $1) ; \
+ branch=$(_c4_validate_branch) ; \
+ c4_release_bump $ver ; \
+ c4_release_commit $ver $branch \
+ )
+}
+
+function c4_release_redo()
+{
+ ( \
+ set -euxo pipefail ; \
+ ver=$(_c4_validate_ver $1) ; \
+ branch=$(_c4_validate_branch) ; \
+ c4_release_delete $ver ; \
+ c4_release_bump $ver ; \
+ c4_release_amend $ver $branch \
+ )
+}
+
+function c4_release_bump()
+{
+ ( \
+ set -euxo pipefail ; \
+ ver=$(_c4_validate_ver $1) ; \
+ tbump --non-interactive --only-patch $ver \
+ )
+}
+
+function c4_release_commit()
+{
+ ( \
+ set -euxo pipefail ; \
+ ver=$(_c4_validate_ver $1) ; \
+ branch=$(_c4_validate_branch) ; \
+ tag=v$ver ; \
+ git add -u ; \
+ git commit -m $tag ; \
+ git tag --annotate --message $tag $tag ; \
+ )
+}
+
+function c4_release_amend()
+{
+ ( \
+ set -euxo pipefail ; \
+ ver=$(_c4_validate_ver $1) ; \
+ branch=$(_c4_validate_branch) ; \
+ tag=v$ver ; \
+ git add -u ; \
+ git commit --amend -m $tag ; \
+ git tag --annotate --message $tag $tag ; \
+ )
+}
+
+function c4_release_delete()
+{
+ ( \
+ set -euxo pipefail ; \
+ ver=$(_c4_validate_ver $1) ; \
+ git tag -d v$ver ; \
+ git push origin :v$ver \
+ )
+}
+
+function c4_release_push()
+{
+ ( \
+ set -euxo pipefail ; \
+ ver=$(_c4_validate_ver $1) ; \
+ branch=$(_c4_validate_branch) ; \
+ tag=v$ver ; \
+ git push origin $branch ; \
+ git push --tags origin $tag \
+ )
+}
+
+function c4_release_force_push()
+{
+ ( \
+ set -euxo pipefail ; \
+ ver=$(_c4_validate_ver $1) ; \
+ branch=$(_c4_validate_branch) ; \
+ tag=v$ver ; \
+ git push -f origin $branch ; \
+ git push -f --tags origin $tag \
+ )
+}
+
+function _c4_validate_ver()
+{
+ ver=$1
+ if [ -z "$ver" ] ; then \
+ exit 1
+ fi
+ ver=$(echo $ver | sed "s:v\(.*\):\1:")
+ #sver=$(echo $ver | sed "s:\([0-9]*\.[0-9]*\..[0-9]*\).*:\1:")
+ if [ ! -f changelog/$ver.md ] ; then \
+ if [ -f changelog/current.md ] ; then
+ git mv changelog/current.md changelog/$ver.md
+ touch changelog/current.md
+ git add changelog/current.md
+ else
+ echo "ERROR: could not find changelog/$ver.md or changelog/current.md"
+ exit 1
+ fi
+ fi
+ echo $ver
+}
+
+function _c4_validate_branch()
+{
+ branch=$(git rev-parse --abbrev-ref HEAD)
+ if [ "$branch" != "master" ] ; then
+ echo "ERROR: release branch must be master"
+ exit 1
+ fi
+ echo $branch
+}