diff --git a/go/tools/builders/cgo2.go b/go/tools/builders/cgo2.go index 9c77e52c3c..79ca5e9915 100644 --- a/go/tools/builders/cgo2.go +++ b/go/tools/builders/cgo2.go @@ -195,14 +195,19 @@ func cgo2(goenv *env, goSrcs, cgoSrcs, cSrcs, cxxSrcs, objcSrcs, objcxxSrcs, sSr // Copy regular Go source files into the work directory so that we can // use -trimpath=workDir. - goBases, err := gatherSrcs(workDir, goSrcs) + subDir := filepath.Join(workDir, packagePath) + err = os.MkdirAll(subDir, 0755) + if err != nil { + return "", nil, nil, err + } + goBases, err := gatherSrcs(subDir, goSrcs) if err != nil { return "", nil, nil, err } allGoSrcs = make([]string, len(goSrcs)+len(genGoSrcs)) for i := range goSrcs { - allGoSrcs[i] = filepath.Join(workDir, goBases[i]) + allGoSrcs[i] = filepath.Join(subDir, goBases[i]) } copy(allGoSrcs[len(goSrcs):], genGoSrcs) return workDir, allGoSrcs, cObjs, nil diff --git a/go/tools/builders/compilepkg.go b/go/tools/builders/compilepkg.go index c8896d5b10..dcaf9c6c85 100644 --- a/go/tools/builders/compilepkg.go +++ b/go/tools/builders/compilepkg.go @@ -284,7 +284,16 @@ func compileArchive( return err } } - gcFlags = append(gcFlags, "-trimpath=.") + subDir := filepath.Join(workDir, packagePath) + err := os.MkdirAll(subDir, 0755) + if err != nil { + return err + } + goBases, err := gatherSrcs(subDir, goSrcs) + for i, base := range goBases { + goSrcs[i] = filepath.Join(subDir, base) + } + gcFlags = append(gcFlags, "-trimpath="+workDir) } // Check that the filtered sources don't import anything outside of