FTBFS on Bionic/i386
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Go |
New
|
Unknown
|
|||
golang-1.16 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
High
|
Sergio Durigan Junior |
Bug Description
[ Impact ]
golang-1.16 is currently FTBFSing on Bionic/i386:
https:/
Building Go bootstrap cmd/go (go_bootstrap) using Go toolchain1.
unsupported setting GO386=387. Consider using GO386=softfloat instead.
unsupported setting GO386=387. Consider using GO386=softfloat instead.
go tool dist: FAILED: /<<PKGBUILDDIR>
go tool dist: FAILED: /<<PKGBUILDDIR>
go tool dist: open /tmp/go-
go tool dist: open /tmp/go-
go tool dist: open /tmp/go-
unsupported setting GO386=387. Consider using GO386=softfloat instead.
[ Test Plan ]
The package should build and work correctly on i386.
[ Where problems could occur ]
The fix is aimed specifically at fixing the i386 compilation, so it shouldn't affect other architectures. Moreover, the package hasn't been published to the regular Ubuntu user yet, so there is virtually no chance to introduce a regression. However, the fact that the generated Go binary will use SSE2 instructions on i386 will make it not run on old CPUs.
[ Other Info ]
The fix involves unsetting the "GO386" variable when compiling for Bionic/i386. This makes the build pass, but has the drawback of making the generated Go binary use SSE2 instructions, which means that it will not run on older CPUs (older than Pentium 4 and AMD Opteron/Athlon 64). For this reason, I've decided to extend the fix and make the Go binary package explicitly depend on "sse2-support".
It is possible to bootstrap golang-1.16 using "GO386=softfloat", but it requires using golang >= 1.14, which we don't have in Bionic.
Related branches
- git-ubuntu bot: Approve
- Lucas Kanashiro (community): Approve
- Canonical Server packageset reviewers: Pending requested
- Canonical Server Reporter: Pending requested
-
Diff: 64 lines (+20/-3)4 files modifieddebian/changelog (+9/-0)
debian/control (+2/-1)
debian/control.in (+2/-1)
debian/helpers/goenv.sh (+7/-1)
Changed in golang-1.16 (Ubuntu Bionic): | |
status: | New → In Progress |
importance: | Undecided → High |
assignee: | nobody → Sergio Durigan Junior (sergiodj) |
Changed in golang-1.16 (Ubuntu): | |
status: | In Progress → Invalid |
importance: | High → Undecided |
assignee: | Sergio Durigan Junior (sergiodj) → nobody |
summary: |
- FTBFS on i386 + FTBFS on Bionic/i386 |
description: | updated |
Changed in golang: | |
status: | Unknown → New |
tags: | added: cetest |
tags: | removed: cetest |
description: | updated |
tags: | removed: server-todo |
Would a two-stage build on i386 be another way to address this, like outlined in https:/ /github. com/golang/ go/issues/ 44500#issuecomm ent-784675990 ?
""" BOOTSTRAP= "../../ go-$GOOS- $GOARCH- bootstrap"
export GO386='softfloat'
GO386= ./bootstrap.bash
export GOROOT_
./make.bash
"""