return errors.New("binary-only packages are no longer supported")
}
+ if p.Module != nil && !allowedVersion(p.Module.GoVersion) {
+ return errors.New("module requires Go " + p.Module.GoVersion + " or later")
+ }
+
if err := b.checkDirectives(a); err != nil {
return err
}
ofile, out, err := BuildToolchain.gc(b, a, objpkg, icfg.Bytes(), embedcfg, symabis, len(sfiles) > 0, gofiles)
if len(out) > 0 {
output := b.processOutput(out)
- if p.Module != nil && !allowedVersion(p.Module.GoVersion) {
- output += "note: module requires Go " + p.Module.GoVersion + "\n"
- }
-
if err != nil {
return formatOutput(b.WorkDir, p.Dir, p.ImportPath, p.Desc(), output)
} else {
}
}
if err != nil {
- if p.Module != nil && !allowedVersion(p.Module.GoVersion) {
- b.showOutput(a, p.Dir, p.Desc(), "note: module requires Go "+p.Module.GoVersion+"\n")
- }
return err
}
if ofile != objpkg {
env GO111MODULE=on
go list
-go build
-go build sub.1
-go build subver.1
-! stderr 'module requires'
-! go build badsub.1
-stderr '^note: module requires Go 1.11111$'
-
-go build versioned.1
-go mod edit -require versioned.1@v1.1.0
-! go build versioned.1
-stderr '^note: module requires Go 1.99999$'
-
-[short] stop
-
-# The message should be printed even if the compiler emits no output.
-go build -o $WORK/nooutput.exe nooutput.go
-! go build -toolexec=$WORK/nooutput.exe versioned.1
-stderr '^# versioned.1\nnote: module requires Go 1.99999$'
+! go build sub
+stderr '^sub: module requires Go 1.999 or later$'
-- go.mod --
module m
-go 1.999
+go 1.1
require (
- sub.1 v1.0.0
- subver.1 v1.0.0
- badsub.1 v1.0.0
- versioned.1 v1.0.0
+ sub v1.0.0
)
replace (
- sub.1 => ./sub
- subver.1 => ./subver
- badsub.1 => ./badsub
- versioned.1 v1.0.0 => ./versioned1
- versioned.1 v1.1.0 => ./versioned2
+ sub => ./sub
)
-- x.go --
-- sub/go.mod --
module m
-go 1.11
+go 1.999
-- sub/x.go --
package x
-
--- subver/go.mod --
-module m
-go 1.11111
-
--- subver/x.go --
-package x
-
--- badsub/go.mod --
-module m
-go 1.11111
-
--- badsub/x.go --
-package x
-invalid syntax
-
--- versioned1/go.mod --
-module versioned
-go 1.0
-
--- versioned1/x.go --
-package x
-
--- versioned2/go.mod --
-module versioned
-go 1.99999
-
--- versioned2/x.go --
-package x
-invalid syntax
-
--- nooutput.go --
-// +build ignore
-
-package main
-
-import (
- "bytes"
- "os"
- "os/exec"
- "strings"
-)
-
-func main() {
- stderr := new(bytes.Buffer)
- stdout := new(bytes.Buffer)
-
- cmd := exec.Command(os.Args[1], os.Args[2:]...)
- cmd.Stderr = stderr
- cmd.Stdout = stdout
-
- err := cmd.Run()
- if strings.HasPrefix(os.Args[2], "-V") {
- os.Stderr.Write(stderr.Bytes())
- os.Stdout.Write(stdout.Bytes())
- }
- if err != nil {
- os.Exit(1)
- }
-}