env: get GOROOT from env variable or go env GOROOT

This commit is contained in:
Li Jie
2025-01-08 21:29:02 +08:00
parent 6e6b8b404f
commit 95c4456ccc
2 changed files with 18 additions and 1 deletions

View File

@@ -135,7 +135,7 @@ func Do(args []string, conf *Config) ([]Package, error) {
cfg.Overlay = make(map[string][]byte)
for file, src := range overlayFiles {
overlay := unsafe.Slice(unsafe.StringData(src), len(src))
cfg.Overlay[filepath.Join(runtime.GOROOT(), "src", file)] = overlay
cfg.Overlay[filepath.Join(env.GOROOT(), "src", file)] = overlay
}
}

View File

@@ -1,7 +1,9 @@
package env
import (
"bytes"
"os"
"os/exec"
"path/filepath"
"strings"
)
@@ -12,6 +14,21 @@ const (
LLGoRuntimePkg = LLGoCompilerPkg + "/" + LLGoRuntimePkgName
)
func GOROOT() string {
root := os.Getenv("GOROOT")
if root != "" {
return root
}
cmd := exec.Command("go", "env", "GOROOT")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err == nil {
return strings.TrimSpace(out.String())
}
panic("cannot get GOROOT: " + err.Error())
}
func LLGoRuntimeDir() string {
root := LLGoROOT()
if root != "" {