mirror of
https://github.com/golang/go
synced 2024-11-26 09:48:14 -07:00
cmd/go/internal/imports: recognize "unix" build tag
This commit is contained in:
parent
a6219737e3
commit
cd2c6536b0
3
src/cmd/dist/build.go
vendored
3
src/cmd/dist/build.go
vendored
@ -939,7 +939,8 @@ func packagefile(pkg string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// unixOS is the set of GOOS values matched by the "unix" build tag.
|
// unixOS is the set of GOOS values matched by the "unix" build tag.
|
||||||
// This is the same list as in go/build/syslist.go.
|
// This is the same list as in go/build/syslist.go and
|
||||||
|
// cmd/go/internal/imports/build.go.
|
||||||
var unixOS = map[string]bool{
|
var unixOS = map[string]bool{
|
||||||
"aix": true,
|
"aix": true,
|
||||||
"android": true,
|
"android": true,
|
||||||
|
@ -20,6 +20,7 @@ package imports
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"cmd/go/internal/cfg"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/build/constraint"
|
"go/build/constraint"
|
||||||
@ -201,17 +202,22 @@ func matchTag(name string, tags map[string]bool, prefer bool) bool {
|
|||||||
return prefer
|
return prefer
|
||||||
}
|
}
|
||||||
|
|
||||||
have := tags[name]
|
if tags[name] {
|
||||||
if name == "linux" {
|
return true
|
||||||
have = have || tags["android"]
|
|
||||||
}
|
}
|
||||||
if name == "solaris" {
|
|
||||||
have = have || tags["illumos"]
|
switch name {
|
||||||
|
case "linux":
|
||||||
|
return tags["android"]
|
||||||
|
case "solaris":
|
||||||
|
return tags["illumos"]
|
||||||
|
case "darwin":
|
||||||
|
return tags["ios"]
|
||||||
|
case "unix":
|
||||||
|
return unixOS[cfg.BuildContext.GOOS]
|
||||||
|
default:
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
if name == "darwin" {
|
|
||||||
have = have || tags["ios"]
|
|
||||||
}
|
|
||||||
return have
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// eval is like
|
// eval is like
|
||||||
@ -322,6 +328,24 @@ var KnownOS = map[string]bool{
|
|||||||
"zos": true,
|
"zos": true,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// unixOS is the set of GOOS values matched by the "unix" build tag.
|
||||||
|
// This is not used for filename matching.
|
||||||
|
// This is the same list as in go/build/syslist.go and cmd/dist/build.go.
|
||||||
|
var unixOS = map[string]bool{
|
||||||
|
"aix": true,
|
||||||
|
"android": true,
|
||||||
|
"darwin": true,
|
||||||
|
"dragonfly": true,
|
||||||
|
"freebsd": true,
|
||||||
|
"hurd": true,
|
||||||
|
"illumos": true,
|
||||||
|
"ios": true,
|
||||||
|
"linux": true,
|
||||||
|
"netbsd": true,
|
||||||
|
"openbsd": true,
|
||||||
|
"solaris": true,
|
||||||
|
}
|
||||||
|
|
||||||
var KnownArch = map[string]bool{
|
var KnownArch = map[string]bool{
|
||||||
"386": true,
|
"386": true,
|
||||||
"amd64": true,
|
"amd64": true,
|
||||||
|
32
src/cmd/go/testdata/script/import_unix_tag.txt
vendored
Normal file
32
src/cmd/go/testdata/script/import_unix_tag.txt
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# Regression test for https://go.dev/issue/54712: the "unix" build constraint
|
||||||
|
# was not applied consistently during package loading.
|
||||||
|
|
||||||
|
go list -x -f '{{if .Module}}{{.ImportPath}}{{end}}' -deps .
|
||||||
|
stdout 'example.com/version'
|
||||||
|
|
||||||
|
-- go.mod --
|
||||||
|
module example
|
||||||
|
|
||||||
|
go 1.19
|
||||||
|
|
||||||
|
require example.com/version v1.1.0
|
||||||
|
-- go.sum --
|
||||||
|
example.com/version v1.1.0 h1:VdPnGmIF1NJrntStkxGrF3L/OfhaL567VzCjncGUgtM=
|
||||||
|
example.com/version v1.1.0/go.mod h1:S7K9BnT4o5wT4PCczXPfWVzpjD4ud4e7AJMQJEgiu2Q=
|
||||||
|
-- main_notunix.go --
|
||||||
|
//go:build !(aix || darwin || dragonfly || freebsd || hurd || linux || netbsd || openbsd || solaris)
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import _ "example.com/version"
|
||||||
|
|
||||||
|
func main() {}
|
||||||
|
|
||||||
|
-- main_unix.go --
|
||||||
|
//go:build unix
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import _ "example.com/version"
|
||||||
|
|
||||||
|
func main() {}
|
@ -33,7 +33,8 @@ var knownOS = map[string]bool{
|
|||||||
|
|
||||||
// unixOS is the set of GOOS values matched by the "unix" build tag.
|
// unixOS is the set of GOOS values matched by the "unix" build tag.
|
||||||
// This is not used for filename matching.
|
// This is not used for filename matching.
|
||||||
// This list also appears in cmd/dist/build.go.
|
// This list also appears in cmd/dist/build.go and
|
||||||
|
// cmd/go/internal/imports/build.go.
|
||||||
var unixOS = map[string]bool{
|
var unixOS = map[string]bool{
|
||||||
"aix": true,
|
"aix": true,
|
||||||
"android": true,
|
"android": true,
|
||||||
|
Loading…
Reference in New Issue
Block a user