Skip to content

Release Procedure

Roger Binns edited this page Apr 16, 2024 · 23 revisions

#summary The steps to go through to make a release

  • Build against latest Python alpha/beta dev release to check compiler warnings and changed APIs

  • More extensive tests

    make pycoverage
    make coverage
  • env CFLAGS=-Wshadow python3 setup.py build_ext --inplace --force --debug to ensure no shadowed variables

  • make stubtest to verify type stubs are sensible

  • make unwrapped to find unwrapped SQLite APIs

  • Edit tools/checksums.py to add new SQLite releases and then run it. Add any lines it outputs to the checksums file. Run setup.py fetch --all to check checksums are picked up correctly.

  • Update Makefile: Update the version number and release date at the top of the Makefile. Run make header to ensure the header file is updated. Edit doc/about.rst to set minimum supported SQLite version. Edit src/apsw.c to set #if check for minimum supported SQLite version

  • make fulltest valgrind1 to check for deeper issues

  • Check it works: Edit megatest.py near the bottom to ensure it includes all supported SQLite and Python versions. Run it and check test output. On Windows, run make compile-win will run all tests.

  • Update in local directory: Ensure you build and run the tests with the supported SQLite version. Output from the example program will end up in the HTML file and needs to have correct versions etc.

  • Check no public symbols make showsymbols should be clear

  • touch *.py src/*.c ;make docs check docs are ok

  • Commit: This is the last chance to make changes for the release. Do your git commit to save all changes.

  • Verify github actions for test pypi and pypi builds are identical (except upload details)

    diff -u .github/workflows/build-testpypi.yml .github/workflows/build-pypi.yml
  • Build and publish to test PyPI https://github.com/rogerbinns/apsw/actions/workflows/build-testpypi.yml

  • Tag the release: make tagpush

  • rm -rf dist to clear out dist directory.

  • Make the doc+source release: make source. This populates the dist directory

  • make release to sign everything in dist directory.

  • Update online doc ; make publish ; cd ../apsw-publish ; git commit -am release; git status ; git push

  • Create github release and upload source

  • Build and publish to PyPI https://github.com/rogerbinns/apsw/actions/workflows/build-pypi.yml

  • Send announcement to mailing list, copying changes from published doc so links are correct

Clone this wiki locally