1package main 2 3import ( 4 "log" 5 "os" 6 "path/filepath" 7 "strings" 8 9 "github.com/bazelbuild/rules_go/go/runfiles" 10) 11 12var GoBinRlocationPath = "not set" 13 14func main() { 15 goBin, err := runfiles.Rlocation(GoBinRlocationPath) 16 if err != nil { 17 log.Fatal(err) 18 } 19 // The go binary lies at $GOROOT/bin/go. 20 goRoot, err := filepath.Abs(filepath.Dir(filepath.Dir(goBin))) 21 if err != nil { 22 log.Fatal(err) 23 } 24 25 env := os.Environ() 26 var filteredEnv []string 27 for i := 0; i < len(env); i++ { 28 if !strings.HasPrefix(env[i], "GOROOT=") { 29 filteredEnv = append(filteredEnv, env[i]) 30 } 31 } 32 filteredEnv = append(filteredEnv, "GOROOT="+goRoot) 33 34 err = os.Chdir(os.Getenv("BUILD_WORKING_DIRECTORY")) 35 if err != nil { 36 log.Fatal(err) 37 } 38 39 args := append([]string{goBin}, os.Args[1:]...) 40 log.Fatal(ReplaceWithProcess(args, filteredEnv)) 41} 42