diff options
author | Jim Mussared <jim.mussared@gmail.com> | 2023-10-04 11:20:47 +1100 |
---|---|---|
committer | Jim Mussared <jim.mussared@gmail.com> | 2023-10-06 12:10:14 +1100 |
commit | 69e34b6b6bdf45bc1111777c46839a8b5fcb30bd (patch) | |
tree | 757623344e1f4a4004234f93d7541c1d9472fdfa /tools/autobuild/autobuild.sh | |
parent | e00a144008f368df878c12606fdbf651af2a1dc0 (diff) | |
download | micropython-69e34b6b6bdf45bc1111777c46839a8b5fcb30bd.tar.gz micropython-69e34b6b6bdf45bc1111777c46839a8b5fcb30bd.zip |
all: Switch to new preview build versioning scheme.v1.22.0-preview
See https://github.com/micropython/micropython/issues/12127 for details.
Previously at the point when a release is made, we update mpconfig.h
and set a git tag. i.e. the version increments at the release.
Now the version increments immediately after the release. The workflow is:
1. Final commit in the cycle updates mpconfig.h to set (X, Y, 0, 0) (i.e.
clear the pre-release state).
2. This commit is tagged "vX.Y.0".
3. First commit for the new cycle updates mpconfig.h to set (X, Y+1, 0, 1)
(i.e. increment the minor version, set the pre-release state).
4. This commit is tagged "vX.Y+1.0-preview".
The idea is that a nightly build is actually a "preview" of the _next_
release. i.e. any documentation describing the current release may not
actually match the nightly build. So we use "preview" as our semver
pre-release identifier.
Changes in this commit:
- Add MICROPY_VERSION_PRERELEASE to mpconfig.h to allow indicating that
this is not a release version.
- Remove unused MICROPY_VERSION integer.
- Append "-preview" to MICROPY_VERSION_STRING when the pre-release state
is set.
- Update py/makeversionhdr.py to no longer generate MICROPY_GIT_HASH.
- Remove the one place MICROPY_GIT_HASH was used (it can use
MICROPY_GIT_TAG instead).
- Update py/makeversionhdr.py to also understand
MICROPY_VERSION_PRERELEASE in mpconfig.h.
- Update py/makeversionhdr.py to convert the git-describe output into
semver-compatible "X.Y.Z-preview.N.gHASH".
- Update autobuild.sh to generate filenames using the new scheme.
- Update remove_old_firmware.py to match new scheme.
- Update mpremote's pyproject.toml to handle the "-preview" suffix in the
tag. setuptools_scm maps to this "rc0" to match PEP440.
- Fix docs heading where it incorrectly said "vvX.Y.Z" for release docs.
This work was funded through GitHub Sponsors.
Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
Diffstat (limited to 'tools/autobuild/autobuild.sh')
-rwxr-xr-x | tools/autobuild/autobuild.sh | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/tools/autobuild/autobuild.sh b/tools/autobuild/autobuild.sh index e1f2287ee5..7854945bbe 100755 --- a/tools/autobuild/autobuild.sh +++ b/tools/autobuild/autobuild.sh @@ -54,9 +54,19 @@ pushd ${MICROPY_AUTOBUILD_MICROPYTHON_REPO} make -C mpy-cross # make the firmware tag +# final filename will be <BOARD><-VARIANT>-<DATE>-v<SEMVER>.ext +# where SEMVER is vX.Y.Z or vX.Y.Z-preview.N.gHASH or vX.Y.Z-preview.N.gHASH.dirty FW_DATE=$(date '+%Y%m%d') -FW_GIT="$(git describe --dirty || echo unknown)" -FW_TAG="-$FW_DATE-unstable-$FW_GIT" +# same logic as makeversionhdr.py, convert git-describe output into semver-compatible +FW_GIT_TAG="$(git describe --tags --dirty --always --match 'v[1-9].*')" +FW_SEMVER_MAJOR_MINOR_PATCH="$(echo $FW_GIT_TAG | cut -d'-' -f1)" +FW_SEMVER_PRERELEASE="$(echo $FW_GIT_TAG | cut -s -d'-' -f2-)" +if [ -z "$FW_SEMVER_PRERELEASE" ]; then + FW_SEMVER="$FW_SEMVER_MAJOR_MINOR_PATCH" +else + FW_SEMVER="$FW_SEMVER_MAJOR_MINOR_PATCH-$(echo $FW_SEMVER_PRERELEASE | tr - .)" +fi +FW_TAG="-$FW_DATE-$FW_SEMVER" # build new firmware cd ports/cc3200 |