1*5a6e8488SAndroid Build Coastguard Worker# Release Checklist 2*5a6e8488SAndroid Build Coastguard Worker 3*5a6e8488SAndroid Build Coastguard WorkerThis is the checklist for cutting a release. 4*5a6e8488SAndroid Build Coastguard Worker 5*5a6e8488SAndroid Build Coastguard WorkerFor a lot of these steps, they are only needed if the code that would be 6*5a6e8488SAndroid Build Coastguard Workeraffected was changed. For example, I don't need to run the `scripts/randmath.py` 7*5a6e8488SAndroid Build Coastguard Workertest if I did not change any of the math code. 8*5a6e8488SAndroid Build Coastguard Worker 9*5a6e8488SAndroid Build Coastguard Worker1. Run `./scripts/format.sh`. 10*5a6e8488SAndroid Build Coastguard Worker2. Update the README. 11*5a6e8488SAndroid Build Coastguard Worker3. Update the manuals. 12*5a6e8488SAndroid Build Coastguard Worker4. Test with POSIX test suite. 13*5a6e8488SAndroid Build Coastguard Worker5. Run the `scripts/randmath.py` script an excessive amount and add failing 14*5a6e8488SAndroid Build Coastguard Worker tests to test suite. 15*5a6e8488SAndroid Build Coastguard Worker * debug 16*5a6e8488SAndroid Build Coastguard Worker * release 17*5a6e8488SAndroid Build Coastguard Worker * minrelease 18*5a6e8488SAndroid Build Coastguard Worker6. Fuzz with AFL. 19*5a6e8488SAndroid Build Coastguard Worker * reldebug 20*5a6e8488SAndroid Build Coastguard Worker7. Fix AFL crashes. 21*5a6e8488SAndroid Build Coastguard Worker8. Find ASan crashes on AFL test cases. 22*5a6e8488SAndroid Build Coastguard Worker9. Fix ASan crashes. 23*5a6e8488SAndroid Build Coastguard Worker10. Build on Windows, no errors or warnings. 24*5a6e8488SAndroid Build Coastguard Worker * Debug/`x64`. 25*5a6e8488SAndroid Build Coastguard Worker * Debug/`x86`. 26*5a6e8488SAndroid Build Coastguard Worker * Release{MD,MT}/`x64`. 27*5a6e8488SAndroid Build Coastguard Worker * Release{MD,MT}/`x86`. 28*5a6e8488SAndroid Build Coastguard Worker11. Run and pass the `scripts/release.sh` script on my own machine. 29*5a6e8488SAndroid Build Coastguard Worker12. Run and pass the `scripts/release.sh` script, without generated tests and 30*5a6e8488SAndroid Build Coastguard Worker sanitizers, on FreeBSD. 31*5a6e8488SAndroid Build Coastguard Worker13. Run and pass the `scripts/release.sh` script, without generated tests, 32*5a6e8488SAndroid Build Coastguard Worker sanitizers, and 64-bit, on an ARM server. 33*5a6e8488SAndroid Build Coastguard Worker14. Run and pass the release script, with no generated tests, no clang, no 34*5a6e8488SAndroid Build Coastguard Worker sanitizers, and no valgrind, on NetBSD. 35*5a6e8488SAndroid Build Coastguard Worker15. Run and pass the release script, with no generated tests, no sanitizers, and 36*5a6e8488SAndroid Build Coastguard Worker no valgrind, on OpenBSD. 37*5a6e8488SAndroid Build Coastguard Worker16. Run `scan-build make`. 38*5a6e8488SAndroid Build Coastguard Worker17. Run `./scripts/lint.sh`. 39*5a6e8488SAndroid Build Coastguard Worker18. Repeat steps 3-16 again and repeat until nothing is found. 40*5a6e8488SAndroid Build Coastguard Worker19. Update the benchmarks. 41*5a6e8488SAndroid Build Coastguard Worker20. Update the version and `NEWS.md` and commit. 42*5a6e8488SAndroid Build Coastguard Worker21. Boot into Windows. 43*5a6e8488SAndroid Build Coastguard Worker22. Build all release versions of everything. 44*5a6e8488SAndroid Build Coastguard Worker * Release/`x64` for `bc`. 45*5a6e8488SAndroid Build Coastguard Worker * Release/`x64` for `dc`. 46*5a6e8488SAndroid Build Coastguard Worker * Release{MD,MT}/`x64` for `bcl`. 47*5a6e8488SAndroid Build Coastguard Worker * Release/`x86` for `bc`. 48*5a6e8488SAndroid Build Coastguard Worker * Release/`x86` for `dc`. 49*5a6e8488SAndroid Build Coastguard Worker * Release{MD,MT}/`x86` for `bcl`. 50*5a6e8488SAndroid Build Coastguard Worker23. Put the builds where Linux can access them. 51*5a6e8488SAndroid Build Coastguard Worker24. Boot back into Linux. 52*5a6e8488SAndroid Build Coastguard Worker25. Run `make clean_tests`. 53*5a6e8488SAndroid Build Coastguard Worker26. Run the `scripts/package.sh` script. 54*5a6e8488SAndroid Build Coastguard Worker27. Upload the custom tarball and Windows builds to the Gavin Howard Gitea. 55*5a6e8488SAndroid Build Coastguard Worker28. Add output from `scripts/package.sh` to Gavin Howard Gitea release notes. 56*5a6e8488SAndroid Build Coastguard Worker29. Edit Gavin Howard Gitea release notes for the changelog. 57*5a6e8488SAndroid Build Coastguard Worker30. Upload the custom tarball to GitHub. 58*5a6e8488SAndroid Build Coastguard Worker31. Add output from `scripts/package.sh` to GitHub release notes. 59*5a6e8488SAndroid Build Coastguard Worker32. Edit GitHub release notes for the changelog. 60*5a6e8488SAndroid Build Coastguard Worker33. Notify the following: 61*5a6e8488SAndroid Build Coastguard Worker * FreeBSD 62*5a6e8488SAndroid Build Coastguard Worker * Adelie Linux 63*5a6e8488SAndroid Build Coastguard Worker * Ataraxia Linux 64*5a6e8488SAndroid Build Coastguard Worker * Sabotage 65*5a6e8488SAndroid Build Coastguard Worker * xstatic 66*5a6e8488SAndroid Build Coastguard Worker * OpenBSD 67*5a6e8488SAndroid Build Coastguard Worker * NetBSD 68*5a6e8488SAndroid Build Coastguard Worker34. Submit new packages for the following: 69*5a6e8488SAndroid Build Coastguard Worker * Gentoo Linux 70*5a6e8488SAndroid Build Coastguard Worker * Termux 71*5a6e8488SAndroid Build Coastguard Worker * Linux from Scratch 72*5a6e8488SAndroid Build Coastguard Worker * Alpine Linux 73*5a6e8488SAndroid Build Coastguard Worker * Void Linux 74*5a6e8488SAndroid Build Coastguard Worker * Arch Linux 75