This makes it print out a diff when there is an error (instead of just a list of files that are wrong), which will make the error more obvious. I also added `workflow_dispatch` so we can run it manually.
> After reviewing the details (and how "ouroboros" it would be to solve this "properly", especially in the face of the long-term implications of https://golang.org/issues/54265), my updated proposal is that we effectively revert 11eef5dfbc for 1.21+ -- as of Go 1.21, the _only_ architecture we actually build from source across _all_ our supported variants/distributions is arm32v5 (Debian's `armel`) because Go's published `arm` binaries are explicitly `v6` (see also 40db26d6cc).
>
> The only suggestion of actual arm32v5 users I've managed to find is someone on one of the older Raspberry Pi devices (which are technically armv6) wanting to use a Debian-based image -- as of 1.21, the Alpine images are using the exact same upstream-provided pre-compiled binaries, so suggesting that those users switch to Alpine's arm32v6 images instead is extremely reasonable.
> packages main (build.go) and building_Go_requires_Go_1_17_13_or_later (notgo117.go)
Also, update GitHub Actions to test force building on Debian so we can avoid this problem in the future.
Co-authored-by: Tianon Gravi <admwiggin@gmail.com>
See https://golang.org/issues/44500 for details (tldr, Go 1.16 changes "GO386" from "387" to "softfloat" but the bootstrap compiler isn't 1.16 yet so balks at the changed value).
This also makes our "compilation" much more explicit by explicitly noting the "env" needed to build each bashbrew architecture we support and embedding those directly.
(I've also added "i386" to GitHub Actions, which will double our matrix size, but will hopefully help us catch issues like this in the future.)