22
33## Next release:
44
5- * Adjust static binary build on Alpine. See
6- https://github.com/commercialhaskell/stack/issues/3045
7- * For minor release, ensure https://github.com/commercialhaskell/stack/commit/d3637126b9045b266d2e53387e183915cb4a912d cherry-picked
5+ * Create release candidate process (maybe switch to GHC-style versioning)
6+ * Maybe drop 32-bit CentOS 6 bindists, since GHC 8.2.1 seems to have dropped them.
7+ * Replace non-static Linux bindists with static (but keep old links active so
8+ links don't break and 'stack upgrade' in old versions still work)
89
910## Pre-release steps
1011
12+ * Check for any P0 and P1 issues.
1113* Ensure ` release ` and ` stable ` branches merged to ` master `
14+ * Check compatibility with latest Stackage snapshots
15+ * stack-* .yaml (where ` * ` is not ` nightly ` ): bump to use latest LTS minor
16+ version (be sure any extra-deps that exist only for custom flags have
17+ versions matching the snapshot)
18+ * Check for any redundant extra-deps
19+ * Run ` stack --stack-yaml=stack-*.yaml test --pedantic ` (replace ` * ` with
20+ the actual file)
1221* Check compatibility with latest nightly stackage snapshot:
13- * Update ` stack-nightly.yaml ` with latest nightly and remove extra-deps
22+ * Update ` stack-nightly.yaml ` with latest nightly and remove extra-deps (be
23+ sure any extra-deps that exist only for custom flags have versions
24+ matching the snapshot)
1425 * Run ` stack --stack-yaml=stack-nightly.yaml test --pedantic `
1526* Check pvp-bounds compatibility with Stackage snapshots:
1627 * Create an sdist using ` stack sdist --pvp-bounds=both `
1728 * Temporarily replace ` stack.cabal ` with the ` stack.cabal ` in that sdist
18- * Run ` stack --stack-yaml=stack-SNAPSHOT .yaml test --pedantic ` for each
29+ * Run ` stack --stack-yaml=stack-* .yaml test --pedantic ` for each
1930 ` stack-*.yaml ` and adjust upper bounds in original ` stack.cabal ` until it
2031 works with pvp-bounds.
2132* Ensure integration tests pass on a Windows, macOS, and Linux (Linux
2233 integration tests are run
2334 by
24- [ Jenkins ] ( https ://jenkins-public .fpcomplete.com/job /stack-integration-tests ) ):
35+ [ Gitlab ] ( http ://gitlab .fpcomplete.com/fpco-mirrors /stack/pipelines ) ):
2536 `stack install --pedantic && stack test --pedantic --flag
2637 stack: integration-tests `. The actual release script will perform a more
2738 thorough test for every platform/variant prior to uploading, so this is just a
2839 pre-check
2940* In master branch:
3041 * stack.cabal: bump the version number to release (even third
3142 component)
32- * ChangeLog: rename the "unreleased changes" section to the new version
43+ * ChangeLog: rename the "Unreleased changes" section to the new version
3344* Cut a release candidate branch ` rc/vX.Y.Z ` from master
3445* In master branch:
3546 * stack.cabal: bump version number to unstable (odd third component)
3647 * Changelog: add new "unreleased changes" section
37- * stack-* .yaml: bump to use latest LTS minor version or nightly, and check
38- whether extra-deps still needed
3948* In RC branch:
4049 * Update the ChangeLog:
4150 * Check for any important changes that missed getting an entry in
4958 * Look for any links to "latest" documentation, replace with version tag
5059 * Ensure all documentation pages listed in ` mkdocs.yaml `
5160 * Update ` .github/ISSUE_TEMPLATE.md ` to point at the new version.
52- * <del >
53- Check that any new Linux distribution versions added to
54- ` etc/scripts/release.hs ` and ` etc/scripts/vagrant-releases.sh `
55- * [ Ubuntu] ( https://wiki.ubuntu.com/Releases )
56- * [ Debian] ( https://www.debian.org/releases/ )
57- * [ CentOS] ( https://wiki.centos.org/Download )
58- * [ Fedora] ( https://fedoraproject.org/wiki/Releases )
59- </del >
6061 * Check for new [ FreeBSD release] ( https://www.freebsd.org/releases/ ) .
6162 * Check that no new entries need to be added to
6263 [ releases.yaml] ( https://github.com/fpco/stackage-content/blob/master/stack/releases.yaml ) ,
6566 ` README.md `
6667 * Remove unsupported/obsolete distribution versions from the release process.
6768 * [ Ubuntu] ( https://wiki.ubuntu.com/Releases )
68- * 12.04 EOL 2017-APR
69- * 16.10 EOL 2017-JUL
7069 * 14.04 EOL 2019-APR
7170 * 16.04 EOL 2021-APR
72- * [ Debian] ( https://www.debian.org/releases/ )
7371 * [ CentOS] ( https://wiki.centos.org/Download )
7472 * 6 EOL 2020-NOV-30
7573 * 7 EOL 2024-JUN-30
@@ -119,18 +117,18 @@ consistent and clean stack version.
119117* Build sdist using ` stack sdist . --pvp-bounds=both ` , and upload it to the
120118 Github release with a name like ` stack-X.Y.Z-sdist-0.tar.gz ` .
121119
122- * Publish Github release. Use e.g. ` git shortlog -s v1.1.2..rc/v1.2.0 |sed 's/^[0-9 ]*/* /'|sort -f `
120+ * Publish Github release. Use e.g. ` git shortlog -s release..HEAD |sed $ 's/^[0-9 \t ]*/* /'|sort -f `
123121 to get the list of contributors.
124122
125123* Upload package to Hackage: ` stack upload . --pvp-bounds=both `
126124
127- * Push signed Git tag, matching Github release tag name, e.g.: ` git tag -d vX.Y.Z; git tag -u 0x575159689BEFB442 vX.Y.Z && git push -f origin vX.Y.Z `
125+ * Push signed Git tag, matching Github release tag name, e.g.: ` git tag -d vX.Y.Z; git tag -u 0x575159689BEFB442 -m vX.Y.Z vX.Y.Z && git push -f origin vX.Y.Z `
128126
129127* Reset the ` release ` branch to the released commit, e.g.: ` git checkout release && git merge --ff-only vX.Y.Z && git push origin release `
130128
131129* Update the ` stable ` branch similarly
132130
133- * Delete the RC branch (locally and on origin)
131+ * Delete the RC branch and any RC tags (locally and on origin)
134132
135133* Activate version for new release tag on
136134 [ readthedocs.org] ( https://readthedocs.org/dashboard/stack/versions/ ) , and
@@ -139,17 +137,9 @@ consistent and clean stack version.
139137* Merge any changes made in the RC/release/stable branches to master.
140138
141139* On a machine with Vagrant installed:
140+ * Make sure you are on the same commit as when ` vagrant-release.sh ` was run.
142141 * Run ` etc/scripts/vagrant-distros.sh `
143142
144- * <del >Submit a PR for the
145- [ haskell-stack Homebrew formula] ( https://github.com/Homebrew/homebrew-core/blob/master/Formula/haskell-stack.rb )
146- * Ensure that the formula use the sdist uploaded to the Github release
147- * Be sure to update the SHA sum
148- * The commit message should just be ` haskell-stack <VERSION> `
149- </del >
150-
151- * <del >[ Flag the Arch Linux package as out-of-date] ( https://www.archlinux.org/packages/community/x86_64/stack/flag/ ) </del >
152-
153143* Upload haddocks to Hackage: ` etc/scripts/upload-haddocks.sh ` (if they weren't auto-built)
154144
155145@@ -264,21 +254,26 @@ line.
264254 qemu-system-arm -M vexpress-a9 -cpu cortex-a9 -kernel vmlinuz -initrd initrd.gz -sd armdisk.raw -append "root=/dev/mmcblk0p2" -m 1024M -redir tcp:2223::22 -dtb vexpress-v2p-ca9.dtb -append "console=ttyAMA0,115200" -serial stdio
265255
266256Now the Debian installer will run. Don't use LVM for partitioning (it won't
267- BOOT ), and add at least 2 GB swap during installation.
257+ boot ), and add at least 4 GB swap during installation.
268258
269259### Get boot files after install
270260
261+ Adjust the disk number ` /dev/disk3 ` below to match the output from ` hdiutil attach ` .
262+
271263 hdiutil attach -imagekey diskimage-class=CRawDiskImage -nomount armdisk.raw && \
272- mkdir -p /Volumes/armdeb && \
273- fuse-ext2 /dev/disk2s1 /Volumes/armdeb / && \
264+ sudo mkdir -p /Volumes/debarm && \
265+ sudo fuse-ext2 /dev/disk3s1 /Volumes/debarm / && \
274266 sleep 5 && \
275- cp /Volumes/armdeb/vmlinuz-3.16.0-4-armmp . && \
276- cp /Volumes/armdeb/initrd.img-3.16.0-4-armmp . && \
277- hdiutil detach /dev/disk2
267+ cp /Volumes/debarm/vmlinuz-3.16.0-4-armmp . && \
268+ cp /Volumes/debarm/initrd.img-3.16.0-4-armmp . && \
269+ sudo umount /Volumes/debarm && \
270+ hdiutil detach /dev/disk3
278271
279272### Boot VM
280273
281- qemu-system-arm -M vexpress-a9 -cpu cortex-a9 -kernel vmlinuz-3.16.0-4-armmp -initrd initrd.img-3.16.0-4-armmp -sd armdisk.raw -m 1024M -dtb vexpress-v2p-ca9.dtb -append "root=/dev/mmcblk0p2 console=ttyAMA0,115200" -serial stdio -redir tcp:2223::22
274+ Adjust ` /dev/mmcblk0p3 ` below to the root partition you created during installation.
275+
276+ qemu-system-arm -M vexpress-a9 -cpu cortex-a9 -kernel vmlinuz-3.16.0-4-armmp -initrd initrd.img-3.16.0-4-armmp -sd armdisk.raw -m 1024M -dtb vexpress-v2p-ca9.dtb -append "root=/dev/mmcblk0p3 console=ttyAMA0,115200" -serial stdio -redir tcp:2223::22
282277
283278### Setup rest of system
284279
@@ -292,27 +287,30 @@ during Debian installation):
292287Now you can SSH to the VM using ` ssh -p 2223 <<<USERNAME>>>@localhost ` and use ` sudo ` in
293288the shell.
294289
295- ### Install clang+llvmGHC/clang
290+ ### Install build tools and dependencies packages
291+
292+ sudo apt-get install -y g++ gcc libc6-dev libffi-dev libgmp-dev make xz-utils zlib1g-dev git gnupg
293+
294+ ### Install clang+llvm
296295
297296NOTE: the Debian jessie ` llvm ` packge does not work (executables built with it
298297just exit with "schedule: re-entered unsafely.").
299298
300299The version of LLVM needed depends on the version of GHC you need.
301300
302- #### GHC 7.10.3 (the standard for building Stack)
301+ #### GHC 8.0.2 (the standard for building Stack)
303302
304- sudo apt-get install -y g++ gcc libc6-dev libffi-dev libgmp-dev make xz-utils zlib1g-dev git gnupg && \
305- wget http://llvm.org/releases/3.5.2/clang+llvm-3.5.2-armv7a-linux-gnueabihf.tar.xz && \
306- sudo tar xvf clang+llvm-3.5.2-armv7a-linux-gnueabihf.tar.xz -C /opt
303+ wget http://llvm.org/releases/3.7.1/clang+llvm-3.7.1-armv7a-linux-gnueabihf.tar.xz && \
304+ sudo tar xvf clang+llvm-3.7.1-armv7a-linux-gnueabihf.tar.xz -C /opt
307305
308306Run this now and add it to the ` .profile ` :
309307
310- export PATH="$HOME/.local/bin:/opt/clang+llvm-3.5.2 -armv7a-linux-gnueabihf/bin:$PATH"
308+ export PATH="$HOME/.local/bin:/opt/clang+llvm-3.7.1 -armv7a-linux-gnueabihf/bin:$PATH"
311309
312- #### GHC 8.0.1
310+ #### GHC 7.10.3
313311
314- wget http://llvm.org/releases/3.7.1 /clang+llvm-3.7.1 -armv7a-linux-gnueabihf.tar.xz && \
315- sudo tar xvf clang+llvm-3.7.1 -armv7a-linux-gnueabihf.tar.xz -C /opt
312+ wget http://llvm.org/releases/3.5.2 /clang+llvm-3.5.2 -armv7a-linux-gnueabihf.tar.xz && \
313+ sudo tar xvf clang+llvm-3.5.2 -armv7a-linux-gnueabihf.tar.xz -C /opt
316314
317315Run this now and add it to the ` .profile ` :
318316
@@ -350,6 +348,10 @@ Edit `~/.cabal/config`, and set `executable-stripping: False` and
350348 cabal install && \
351349 mv ~/.cabal/bin/stack ~/.local/bin
352350
351+ ### Import GPG private key
352+
353+ Import the
` [email protected] ` (0x575159689BEFB442) GPG secret key
354+
353355### Resources
354356
355357 - http://mashu.github.io/2015/08/12/QEMU-Debian-armhf.html
0 commit comments