go cmd/dist: ensure consistency between (*tester).supportedBuildmode and cmd/internal/sys.BuildModeSupported

inb24sb2  于 3个月前  发布在  Go
关注(0)|答案(3)|浏览(48)

(*cmd/dist.tester).supportedBuildmode 包含一个大型开关,用于确定给定的 GOOS / GOARCH 是否支持给定的构建模式:
go/src/cmd/dist/test.go
第977行到第1038行 in fa90aac
| | func (t*tester) supportedBuildmode(modestring) bool { |
| | pair:=goos+"-"+goarch |
| | switchmode { |
| | case"c-archive": |
| | if!t.extLink() { |
| | returnfalse |
| | } |
| | switchpair { |
| | case"aix-ppc64", |
| | "darwin-amd64", "darwin-arm64", "ios-arm64", |
| | "linux-amd64", "linux-386", "linux-ppc64le", "linux-s390x", |
| | "freebsd-amd64", |
| | "windows-amd64", "windows-386": |
| | returntrue |
| | } |
| | returnfalse |
| | case"c-shared": |
| | switchpair { |
| | case"linux-386", "linux-amd64", "linux-arm", "linux-arm64", "linux-ppc64le", "linux-s390x", |
| | "darwin-amd64", "darwin-arm64", |
| | "freebsd-amd64", |
| | "android-arm", "android-arm64", "android-386", |
| | "windows-amd64", "windows-386": |
| | returntrue |
| | } |
| | returnfalse |
| | case"shared": |
| | switchpair { |
| | case"linux-386", "linux-amd64", "linux-arm", "linux-arm64", "linux-ppc64le", "linux-s390x": |
| | returntrue |
| | } |
| | returnfalse |
| | case"plugin": |
| | // linux-arm64 is missing because it causes the external linker //
| | // to crash, see https://golang.org/issue/17138 |
| | switchpair { |
| | case"linux-386", "linux-amd64", "linux-arm", "linux-s390x", "linux-ppc64le": |
| | returntrue |
| | case"darwin-amd64", "darwin-arm64": |
| | returntrue |
| | case"freebsd-amd64": |
| | returntrue |
| | } |
| | returnfalse |
| | case"pie": |
| | switchpair { |
| // ...省略部分代码... //

dojqjjoe

dojqjjoe1#

我的理解是,cmd/dist需要使用Go 1.4进行构建,因此无法导入cmd/internal/sys。这就是为什么我最初编写了两个版本的原因。

uttx8gqw

uttx8gqw2#

啊,那可能是这样。
但是在这种情况下,我们仍然应该有一些东西来确保这两个开关是等效的,例如一个回归测试来比较这两个函数。
或者,也许 (*tester).supportedBuildmode 应该探测 cmd/go 来确定支持,而不是在其过程中编码自己的并行假设。

bqf10yzr

bqf10yzr3#

https://go.dev/cl/403014提到了这个问题:cmd/dist: add build mode support regression test for issue #43571

相关问题