{"record":{"id":"a8452c3dc5417742","repo":"golang/go","slug":"s-entry-cannot-contain-only-space","errorCode":null,"errorMessage":"%s entry cannot contain only space","messagePattern":"(.+?) entry cannot contain only space","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cmd/go/internal/envcmd/env.go","lineNumber":686,"sourceCode":"\t\t\treturn fmt.Errorf(\"GOPATH entry cannot start with shell metacharacter '~': %q\", val)\n\t\t}\n\t\tif !filepath.IsAbs(val) && val != \"\" {\n\t\t\treturn fmt.Errorf(\"GOPATH entry is relative; must be absolute path: %q\", val)\n\t\t}\n\tcase \"GOMODCACHE\":\n\t\tif !filepath.IsAbs(val) && val != \"\" {\n\t\t\treturn fmt.Errorf(\"GOMODCACHE entry is relative; must be absolute path: %q\", val)\n\t\t}\n\tcase \"CC\", \"CXX\":\n\t\tif val == \"\" {\n\t\t\tbreak\n\t\t}\n\t\targs, err := quoted.Split(val)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"invalid %s: %v\", key, err)\n\t\t}\n\t\tif len(args) == 0 {\n\t\t\treturn fmt.Errorf(\"%s entry cannot contain only space\", key)\n\t\t}\n\t\tif !filepath.IsAbs(args[0]) && args[0] != filepath.Base(args[0]) {\n\t\t\treturn fmt.Errorf(\"%s entry is relative; must be absolute path: %q\", key, args[0])\n\t\t}\n\t}\n\n\tif !utf8.ValidString(val) {\n\t\treturn fmt.Errorf(\"invalid UTF-8 in %s=... value\", key)\n\t}\n\tif strings.Contains(val, \"\\x00\") {\n\t\treturn fmt.Errorf(\"invalid NUL in %s=... value\", key)\n\t}\n\tif strings.ContainsAny(val, \"\\v\\r\\n\") {\n\t\treturn fmt.Errorf(\"invalid newline in %s=... value\", key)\n\t}\n\treturn nil\n}\n","sourceCodeStart":668,"sourceCodeEnd":704,"githubUrl":"https://github.com/golang/go/blob/b6b368adc57c96c3151d224d172029f233ead2c3/src/cmd/go/internal/envcmd/env.go#L668-L704","documentation":"Returned by checkEnvWrite for CC/CXX when quoted.Split succeeds but returns zero tokens (the value was only whitespace). An empty compiler is allowed (val == \"\" short-circuits earlier), but a whitespace-only value is rejected because it has no executable name.","triggerScenarios":"`go env -w CC=\"   \"`, `go env -w CXX=\"\\t\"`, or any CC/CXX value consisting solely of spaces/tabs.","commonSituations":"Config generators emitting placeholder whitespace; copy-paste that loses the compiler name but keeps surrounding spaces; scripts concatenating flags onto an empty CC.","solutions":["If you want CGO disabled, set `CGO_ENABLED=0` instead of blanking CC.","Provide an actual compiler name: `go env -w CC=gcc`.","If you genuinely want the default, set CC to empty (val == \"\" is allowed): `go env -w CC=`."],"exampleFix":"# before\n$ go env -w CC=\"   \"\nerror: CC entry cannot contain only space\n# after — disable cgo properly\n$ go env -w CGO_ENABLED=0","handlingStrategy":"validation","validationCode":"parts, err := quoted.Split(v)\nif err != nil { return err }\nif v != \"\" && len(parts) == 0 {\n    return fmt.Errorf(\"CC/CXX value has no tokens\")\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use empty string (not whitespace) to express 'unset'.","Disable cgo via CGO_ENABLED=0 rather than blanking CC.","Lint configs for whitespace-only CC/CXX entries."],"tags":["config","env","cc","cxx","cgo","validation"],"analyzedSha":"b6b368adc57c96c3151d224d172029f233ead2c3","analyzedAt":"2026-08-12T00:22:02.250Z","schemaVersion":2},"datasetVersion":"2026-08-12T08:17:17.861Z"}