agda-releases-candidates.txt 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. Tested with `ghc-8.10.5` and `cabal-install 3.4.0.0`.
  2. When releasing a release candidate (RC) the following procedure can be
  3. followed:
  4. * Verify that the Travis builds and GitHub workflows have no errors.
  5. * Finish the release notes in the CHANGELOG.
  6. * Run the `closed-issues-for-milestone` program for adding the list of
  7. closed issues to the CHANGELOG.
  8. * Because some titles of some issues can generate new white-space
  9. issues after running the `closed-issues-for-milestone` program, run
  10. make check-whitespace
  11. and fix the issues both in the CHANGELOG file and GitHub.
  12. * Update the README.md, if necessary.
  13. * Update the list of contributors if necessary.
  14. Note: This is duplicated in the following locations:
  15. - Agda.cabal
  16. - doc/user-manual/conf.py
  17. - doc/user-manual/team.rst
  18. - LICENSE
  19. * Update the LICENSE file, if necessary.
  20. * Update Stackage resolvers, if necessary.
  21. * Update the copyright year range in
  22. - Agda.cabal
  23. - /doc/user-manual/conf.py
  24. - LICENSE
  25. * Get a clean Agda repository.
  26. MAJORVERSION=<current-development-version-eg-2.4.2>
  27. VERSION=<current-released-version-eg-2.4.0.2>
  28. git clone git@github.com:agda/agda.git agda-release
  29. cd agda-release
  30. git checkout master
  31. * Create the branch used for the release
  32. git checkout -b release-$MAJORVERSION
  33. * The version of the RC is $VERSION + current date
  34. RC_VERSION=<current-released-version-current-date-eg-2.4.0.2.20150913>
  35. * Update the Agda version
  36. ./src/release-tools/change-version.bash VERSION RC_VERSION
  37. * Obtain and install the standard library branch related to the Agda:
  38. make up-to-date-std-lib
  39. * Obtain and install the cubical library branch related to the Agda:
  40. make up-to-date-cubical
  41. * Run the test-suite:
  42. make compile-emacs-mode
  43. make test
  44. Note that "compile-emacs-mode" invokes "agda-mode compile", which should
  45. ensure that the Emacs mode can be compiled without errors or
  46. warnings (except for the "cl package required at runtime" warning).
  47. 1) Remove the Cabal test-suite from Agda.cabal.
  48. 2) Remove -Werror and -fprof-auto from Agda.cabal (this is required by
  49. `cabal --check`).
  50. 3) Removed unnecessary dependencies from stack-XYZ.yaml files:
  51. + Removed QuickCheck dependency
  52. + Removed tasty-* dependencies
  53. + Removed local package (src/size-solver)
  54. 4) Added to the extra-source-files field in Agda.cabal the file (see
  55. Issues #4216):
  56. doc/user-manual.pdf
  57. * Update the user manual:
  58. make user-manual-pdf
  59. * Build source distributions:
  60. cabal configure
  61. cabal check
  62. cabal sdist
  63. * Build documentation for uploading to Hackage.
  64. cabal haddock --haddock-for-hackage
  65. * Ensure that the package builds properly (with multiple versions of
  66. GHC if possible) in Linux, macOS and Windows.
  67. BASE=`pwd`
  68. cd ${TMPDIR:-/tmp}
  69. tar xzf $BASE/dist-newstyle/sdist/Agda-$RC_VERSION.tar.gz
  70. cd Agda-$RC_VERSION
  71. cabal install --program-suffix=-$RC_VERSION
  72. agda-$RC_VERSION --version
  73. agda-mode-$RC_VERSION compile
  74. * Tag the release candidate (do not forget to record the changes above
  75. first):
  76. cd $BASE
  77. git tag -a v$RC_VERSION -m "Agda $MAJORVERSION release candidate"
  78. * Upload the tarball and the documentation to Hackage of the RC:
  79. cd $BASE
  80. cabal upload dist-newstyle/sdist/Agda-$RC_VERSION.tar.gz
  81. cabal upload -d dist-newstyle/Agda-$RC_VERSION-docs.tar.gz
  82. * Revert changes made in 1), 2), 3) and 4).
  83. * Restore the Agda version
  84. ./src/release-tools/change-version.bash RC_VERSION VERSION
  85. * Push all changes (in the release-$MAJORVERSION branch):
  86. git push --set-upstream --follow-tags
  87. * Announce the release candidate on the Agda mailing lists (users and
  88. developers).