cmd/go: force LANG=C when looking for compiler version
authorIan Lance Taylor <ian@gcc.gnu.org>
Thu, 15 Mar 2018 16:56:24 +0000 (16:56 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Thu, 15 Mar 2018 16:56:24 +0000 (16:56 +0000)
    Tested by installing the gcc-locales package and running
        LANG=de_DE.utf8 go build hello.go
    Without this change, that fails, as described at
    https://gcc.gnu.org/PR84765.

    Reviewed-on: https://go-review.googlesource.com/100737

From-SVN: r258565

gcc/go/gofrontend/MERGE
libgo/go/cmd/go/internal/work/buildid.go

index 807609bb6b6779d2e947ef03ccb13d0f66daa426..6e4c73b161dc954993de23ce76e89ef7ae64260a 100644 (file)
@@ -1,4 +1,4 @@
-ce28919112dbb234366816ab39ce060ad45e8ca9
+e4464efc767b8dee4f4c18ffaf6c891f7b9deee7
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index e2ae85083d8bc628e1ae64b3a03e72517cba9674..a08de26c82307520362239fc52c25a01cee7ec16 100644 (file)
@@ -234,7 +234,18 @@ func (b *Builder) gccgoToolID(name, language string) (string, error) {
        // compile an empty file on standard input.
        cmdline := str.StringList(cfg.BuildToolexec, name, "-###", "-x", language, "-c", "-")
        cmd := exec.Command(cmdline[0], cmdline[1:]...)
-       cmd.Env = base.EnvForDir(cmd.Dir, os.Environ())
+
+       // Strip any LANG or LC_ environment variables, and force
+       // LANG=C, so that we get the untranslated output.
+       var env []string
+       for _, e := range os.Environ() {
+               if !strings.HasPrefix(e, "LANG=") && !strings.HasPrefix(e, "LC_") {
+                       env = append(env, e)
+               }
+       }
+       env = append(env, "LANG=C")
+
+       cmd.Env = base.EnvForDir(cmd.Dir, env)
        out, err := cmd.CombinedOutput()
        if err != nil {
                return "", fmt.Errorf("%s: %v; output: %q", name, err, out)