From db68a192f9377efb0afa7eccef86e45c5ea1fce4 Mon Sep 17 00:00:00 2001 From: Regina Obe Date: Sat, 11 Nov 2023 21:03:46 -0500 Subject: [PATCH] Prep for GEOS 3.8.4 release --- .github/workflows/release.yml | 77 +++++++++++++++++++++++++++++++++++ HOWTO_RELEASE | 53 +++++++++++++++--------- NEWS | 5 ++- Version.txt | 2 +- tools/ci/releasenotes.pl | 11 +++++ 5 files changed, 126 insertions(+), 22 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 tools/ci/releasenotes.pl diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000000..21c6571d81 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,77 @@ +# +# GitHub Actions for GEOS Web Pages +# Paul Ramsey , Regina Obe +# + +# +# Only run on tag +# Only release if distcheck succeeds +# Only release of the tag name is identical to the full version +# Use the first block of NEWS entries as release notes +# + +name: 'Release' + +on: + push: + tags: + - '*.*.*' + +jobs: + release: + name: 'Release on Tag' + runs-on: ubuntu-latest + + # Only run docbuild on central repo + if: github.repository == 'libgeos/geos' + steps: + + - name: 'Install' + run: | + pwd + uname -a + sudo -E apt-get -yq --no-install-suggests --no-install-recommends install make doxygen + + - name: 'Check Out' + uses: actions/checkout@v3 + + - name: Get tag + id: tag + uses: dawidd6/action-get-tag@v1 + + - name: 'Read Version' + id: version + run: | + pwd + source Version.txt + GEOS_FULL_VERSION=${GEOS_VERSION_MAJOR}.${GEOS_VERSION_MINOR}.${GEOS_VERSION_PATCH}${GEOS_PATCH_WORD} + echo GEOS_FULL_VERSION $GEOS_FULL_VERSION + echo "::set-output name=geosversion::${GEOS_FULL_VERSION}" + + - name: 'Create Release Notes' + id: notes + run: | + pwd + perl tools/ci/releasenotes.pl NEWS > release.md + echo "::set-output name=geosnotes::./release.md" + + - name: 'Bundle & Check Package' + id: bundle + run: | + pwd + set -e + mkdir _build && cd _build + cmake -DBUILD_DOCUMENTATION=YES .. + cmake --version + cmake --build . --target distcheck + + - name: Create Release + if: ${{ steps.tag.outputs.tag == steps.version.outputs.geosversion }} + id: create_release + uses: softprops/action-gh-release@v1 + with: + body_path: ${{ steps.notes.outputs.geosnotes }} + name: Release ${{ steps.version.outputs.geosversion }} + prerelease: false + files: | + ./_build/geos*.tar.bz2 \ No newline at end of file diff --git a/HOWTO_RELEASE b/HOWTO_RELEASE index 05853dccb7..e413bceab5 100644 --- a/HOWTO_RELEASE +++ b/HOWTO_RELEASE @@ -1,45 +1,60 @@ 1. Verify that the versions currently set in Version.txt - sense for this release. + make sense for this release. See file for instructions. - GEOS_VERSION_PATCH - GEOS_VERSION_MINOR - GEOS_VERSION_MAJOR + - GEOS_PATCH_WORD - CAPI_INTERFACE_CURRENT - CAPI_INTERFACE_REVISION - CAPI_INTERFACE_AGE -2. Run 'make distcheck', fix any problem with it. +2. Prepare the build directory. -3. Update the NEWS file (extract most important things from the - repository log). Make sure to update the release date. + $ mkdir _build && cd _build && cmake -DBUILD_DOCUMENTATION=YES .. -4. Commit the changes in the NEWS file. +3. Run the build, distcheck, docs targets, fix any problems with them. -5. Run 'make dist-bzip2'. + $ cmake --build . + $ cmake --build . --target docs + $ ctest --output-on-failure . + $ cmake --build . --target distcheck - $ ./autogen.sh && ./configure && make dist-bzip2 +4. Update the NEWS file (extract most important things from the repository log). + Make sure to update the release date. -6. Verify that you can un-pack and build the tarball. +5. Commit the changes in the NEWS file. + Push changes with: git push origin, + and confirm all bots are green before moving forward - - autotools: ./configure && make check - - cmake: mkdir build && cd build && cmake .. && make && make check - -7. Copy the tarball to upload.osgeo.org:/osgeo/download/geos - -8. Tag the release: +6. Tag the release: $ git tag MAJOR.MINOR.PATCH $ git push origin MAJOR.MINOR.PATCH -9. Increment all the version numbers for the next release (described in 1 above). +7. At this point the github/release.yml action should run, + wait for it to finish and then verify you can build with it. + + $ VERSION=MAJOR.MINOR.PATCH + $ wget https://github.com/libgeos/geos/releases/download/$VERSION/geos-$VERSION.tar.bz2 + $ tar xvfz geos-$VERSION.tar.bz2 + $ cd geos-$VERSION + $ mkdir _build && cd _build && cmake .. + $ cmake --build . + $ ctest --output-on-failure . -10. Update wiki page https://trac.osgeo.org/geos/ at Download section +8. Copy the tar.bz2 tarball to upload.osgeo.org:/osgeo/download/geos + +9. Create and push a release branch if this was a PATCH=0 release, + update the versions for next release in Version.txt (both in + main and release branch). + +10. Update download page in main branch: web/content/usage/download.md - Add latest release - Remove previous patch level release (if any) -11. Close the current trac milestone, and a new one for the next cycle. - -12. Announce on geos-devel +11. Close current GitHub milestone and add a new one for next release. +12. Announce on geos-devel \ No newline at end of file diff --git a/NEWS b/NEWS index b2dfcc6d6e..5966043d67 100644 --- a/NEWS +++ b/NEWS @@ -1,10 +1,11 @@ -Changes in 3.8.4 -20xx-xx-xx +Changes in 3.8.4rc1 +20xx-11-xx - Bug fixes / improvements - Fix PreparedGeometry to avoid crashes with EMPTY elements in input (GH-678, Martin Davis) - GEOSClipByRect: Fix case with POINT EMPTY (GH-913, Mike Taves) + - Fix Crash in GEOSIntersects with empty point inputs (GH-673, Daniel Baston) Changes in 3.8.3 diff --git a/Version.txt b/Version.txt index 51a91ff2ea..307994d749 100644 --- a/Version.txt +++ b/Version.txt @@ -5,7 +5,7 @@ GEOS_VERSION_MINOR=8 GEOS_VERSION_PATCH=4 # OPTIONS: "", "dev", "rc1" etc. -GEOS_PATCH_WORD=dev +GEOS_PATCH_WORD=rc1 # GEOS CAPI Versions # diff --git a/tools/ci/releasenotes.pl b/tools/ci/releasenotes.pl new file mode 100644 index 0000000000..4c22f38479 --- /dev/null +++ b/tools/ci/releasenotes.pl @@ -0,0 +1,11 @@ +my $first = 0; +while(<>) { + if (/^##/ && !$first) { + $first = 1; + next; + } + if (/^##/ && $first) { + exit; + } + print; +}