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)
-       }
-}