diff options
Diffstat (limited to 'debian/patches/pr77857.diff')
-rw-r--r-- | debian/patches/pr77857.diff | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/debian/patches/pr77857.diff b/debian/patches/pr77857.diff new file mode 100644 index 0000000..967fa82 --- /dev/null +++ b/debian/patches/pr77857.diff @@ -0,0 +1,75 @@ +# DP: Fix PR go/77857, gccgo vendoring. Taken from the trunk. + +--- a/src/libgo/go/cmd/go/build.go ++++ b/src/libgo/go/cmd/go/build.go +@@ -2398,14 +2398,6 @@ + } + } + +- for _, path := range p.Imports { +- if i := strings.LastIndex(path, "/vendor/"); i >= 0 { +- gcargs = append(gcargs, "-importmap", path[i+len("/vendor/"):]+"="+path) +- } else if strings.HasPrefix(path, "vendor/") { +- gcargs = append(gcargs, "-importmap", path[len("vendor/"):]+"="+path) +- } +- } +- + args := []interface{}{buildToolExec, tool("compile"), "-o", ofile, "-trimpath", b.work, buildGcflags, gcargs, "-D", p.localPrefix, importArgs} + if ofile == archive { + args = append(args, "-pack") +@@ -2706,6 +2698,55 @@ + if p.localPrefix != "" { + gcargs = append(gcargs, "-fgo-relative-import-path="+p.localPrefix) + } ++ savedirs := []string{} ++ for _, incdir := range importArgs { ++ if incdir != "-I" { ++ savedirs = append(savedirs, incdir) ++ } ++ } ++ ++ for _, path := range p.Imports { ++ // If this is a new vendor path, add it to the list of importArgs ++ if i := strings.LastIndex(path, "/vendor"); i >= 0 { ++ for _, dir := range savedirs { ++ // Check if the vendor path is already included in dir ++ if strings.HasSuffix(dir, path[:i+len("/vendor")]) { ++ continue ++ } ++ // Make sure this vendor path is not already in the list for importArgs ++ vendorPath := dir + "/" + path[:i+len("/vendor")] ++ for _, imp := range importArgs { ++ if imp == "-I" { ++ continue ++ } ++ // This vendorPath is already in the list ++ if imp == vendorPath { ++ goto nextSuffixPath ++ } ++ } ++ // New vendorPath not yet in the importArgs list, so add it ++ importArgs = append(importArgs, "-I", vendorPath) ++ nextSuffixPath: ++ } ++ } else if strings.HasPrefix(path, "vendor/") { ++ for _, dir := range savedirs { ++ // Make sure this vendor path is not already in the list for importArgs ++ vendorPath := dir + "/" + path[len("/vendor"):] ++ for _, imp := range importArgs { ++ if imp == "-I" { ++ continue ++ } ++ if imp == vendorPath { ++ goto nextPrefixPath ++ } ++ } ++ // This vendor path is needed and not already in the list, so add it ++ importArgs = append(importArgs, "-I", vendorPath) ++ nextPrefixPath: ++ } ++ } ++ } ++ + args := stringList(tools.compiler(), importArgs, "-c", gcargs, "-o", ofile, buildGccgoflags) + for _, f := range gofiles { + args = append(args, mkAbs(p.Dir, f)) |