mirror of
https://github.com/golang/go
synced 2024-11-18 03:14:44 -07:00
cmd/go: remove import path debugging hooks
These are no longer needed. Change-Id: Ie42a84f2bd24d2f59324bb66551c46e6af60c302 Reviewed-on: https://go-review.googlesource.com/109339 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
parent
5bd88b028b
commit
670cb7603a
@ -1,78 +0,0 @@
|
|||||||
// Copyright 2017 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
package load
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"encoding/json"
|
|
||||||
"errors"
|
|
||||||
"io/ioutil"
|
|
||||||
)
|
|
||||||
|
|
||||||
// DebugDeprecatedImportcfg is installed as the undocumented -debug-deprecated-importcfg build flag.
|
|
||||||
// It is useful for debugging subtle problems in the go command logic but not something
|
|
||||||
// we want users to depend on. The hope is that the "deprecated" will make that clear.
|
|
||||||
// We intend to remove this flag in Go 1.11.
|
|
||||||
var DebugDeprecatedImportcfg debugDeprecatedImportcfgFlag
|
|
||||||
|
|
||||||
type debugDeprecatedImportcfgFlag struct {
|
|
||||||
enabled bool
|
|
||||||
Import map[string]string
|
|
||||||
Pkg map[string]*debugDeprecatedImportcfgPkg
|
|
||||||
}
|
|
||||||
|
|
||||||
type debugDeprecatedImportcfgPkg struct {
|
|
||||||
Dir string
|
|
||||||
Import map[string]string
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
debugDeprecatedImportcfgMagic = []byte("# debug-deprecated-importcfg\n")
|
|
||||||
errImportcfgSyntax = errors.New("malformed syntax")
|
|
||||||
)
|
|
||||||
|
|
||||||
func (f *debugDeprecatedImportcfgFlag) String() string { return "" }
|
|
||||||
|
|
||||||
func (f *debugDeprecatedImportcfgFlag) Set(x string) error {
|
|
||||||
if x == "" {
|
|
||||||
*f = debugDeprecatedImportcfgFlag{}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
data, err := ioutil.ReadFile(x)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if !bytes.HasPrefix(data, debugDeprecatedImportcfgMagic) {
|
|
||||||
return errImportcfgSyntax
|
|
||||||
}
|
|
||||||
data = data[len(debugDeprecatedImportcfgMagic):]
|
|
||||||
|
|
||||||
f.Import = nil
|
|
||||||
f.Pkg = nil
|
|
||||||
if err := json.Unmarshal(data, &f); err != nil {
|
|
||||||
return errImportcfgSyntax
|
|
||||||
}
|
|
||||||
f.enabled = true
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *debugDeprecatedImportcfgFlag) lookup(parent *Package, path string) (dir, newPath string) {
|
|
||||||
newPath = path
|
|
||||||
if p := f.Import[path]; p != "" {
|
|
||||||
newPath = p
|
|
||||||
}
|
|
||||||
if parent != nil {
|
|
||||||
if p1 := f.Pkg[parent.ImportPath]; p1 != nil {
|
|
||||||
if p := p1.Import[path]; p != "" {
|
|
||||||
newPath = p
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if p2 := f.Pkg[newPath]; p2 != nil {
|
|
||||||
return p2.Dir, newPath
|
|
||||||
}
|
|
||||||
return "", ""
|
|
||||||
}
|
|
@ -423,14 +423,8 @@ func LoadImport(path, srcDir string, parent *Package, stk *ImportStack, importPo
|
|||||||
importPath := path
|
importPath := path
|
||||||
origPath := path
|
origPath := path
|
||||||
isLocal := build.IsLocalImport(path)
|
isLocal := build.IsLocalImport(path)
|
||||||
var debugDeprecatedImportcfgDir string
|
|
||||||
if isLocal {
|
if isLocal {
|
||||||
importPath = dirToImportPath(filepath.Join(srcDir, path))
|
importPath = dirToImportPath(filepath.Join(srcDir, path))
|
||||||
} else if DebugDeprecatedImportcfg.enabled {
|
|
||||||
if d, i := DebugDeprecatedImportcfg.lookup(parent, path); d != "" {
|
|
||||||
debugDeprecatedImportcfgDir = d
|
|
||||||
importPath = i
|
|
||||||
}
|
|
||||||
} else if mode&UseVendor != 0 {
|
} else if mode&UseVendor != 0 {
|
||||||
// We do our own vendor resolution, because we want to
|
// We do our own vendor resolution, because we want to
|
||||||
// find out the key to use in packageCache without the
|
// find out the key to use in packageCache without the
|
||||||
@ -452,26 +446,17 @@ func LoadImport(path, srcDir string, parent *Package, stk *ImportStack, importPo
|
|||||||
// Load package.
|
// Load package.
|
||||||
// Import always returns bp != nil, even if an error occurs,
|
// Import always returns bp != nil, even if an error occurs,
|
||||||
// in order to return partial information.
|
// in order to return partial information.
|
||||||
var bp *build.Package
|
buildMode := build.ImportComment
|
||||||
var err error
|
if mode&UseVendor == 0 || path != origPath {
|
||||||
if debugDeprecatedImportcfgDir != "" {
|
// Not vendoring, or we already found the vendored path.
|
||||||
bp, err = cfg.BuildContext.ImportDir(debugDeprecatedImportcfgDir, 0)
|
buildMode |= build.IgnoreVendor
|
||||||
} else if DebugDeprecatedImportcfg.enabled {
|
|
||||||
bp = new(build.Package)
|
|
||||||
err = fmt.Errorf("unknown import path %q: not in import cfg", importPath)
|
|
||||||
} else {
|
|
||||||
buildMode := build.ImportComment
|
|
||||||
if mode&UseVendor == 0 || path != origPath {
|
|
||||||
// Not vendoring, or we already found the vendored path.
|
|
||||||
buildMode |= build.IgnoreVendor
|
|
||||||
}
|
|
||||||
bp, err = cfg.BuildContext.Import(path, srcDir, buildMode)
|
|
||||||
}
|
}
|
||||||
|
bp, err := cfg.BuildContext.Import(path, srcDir, buildMode)
|
||||||
bp.ImportPath = importPath
|
bp.ImportPath = importPath
|
||||||
if cfg.GOBIN != "" {
|
if cfg.GOBIN != "" {
|
||||||
bp.BinDir = cfg.GOBIN
|
bp.BinDir = cfg.GOBIN
|
||||||
}
|
}
|
||||||
if debugDeprecatedImportcfgDir == "" && err == nil && !isLocal && bp.ImportComment != "" && bp.ImportComment != path &&
|
if err == nil && !isLocal && bp.ImportComment != "" && bp.ImportComment != path &&
|
||||||
!strings.Contains(path, "/vendor/") && !strings.HasPrefix(path, "vendor/") {
|
!strings.Contains(path, "/vendor/") && !strings.HasPrefix(path, "vendor/") {
|
||||||
err = fmt.Errorf("code in directory %s expects import %q", bp.Dir, bp.ImportComment)
|
err = fmt.Errorf("code in directory %s expects import %q", bp.Dir, bp.ImportComment)
|
||||||
}
|
}
|
||||||
@ -480,7 +465,7 @@ func LoadImport(path, srcDir string, parent *Package, stk *ImportStack, importPo
|
|||||||
p = setErrorPos(p, importPos)
|
p = setErrorPos(p, importPos)
|
||||||
}
|
}
|
||||||
|
|
||||||
if debugDeprecatedImportcfgDir == "" && origPath != cleanImport(origPath) {
|
if origPath != cleanImport(origPath) {
|
||||||
p.Error = &PackageError{
|
p.Error = &PackageError{
|
||||||
ImportStack: stk.Copy(),
|
ImportStack: stk.Copy(),
|
||||||
Err: fmt.Sprintf("non-canonical import path: %q should be %q", origPath, pathpkg.Clean(origPath)),
|
Err: fmt.Sprintf("non-canonical import path: %q should be %q", origPath, pathpkg.Clean(origPath)),
|
||||||
@ -557,13 +542,6 @@ func isDir(path string) bool {
|
|||||||
// x/vendor/path, vendor/path, or else stay path if none of those exist.
|
// x/vendor/path, vendor/path, or else stay path if none of those exist.
|
||||||
// VendoredImportPath returns the expanded path or, if no expansion is found, the original.
|
// VendoredImportPath returns the expanded path or, if no expansion is found, the original.
|
||||||
func VendoredImportPath(parent *Package, path string) (found string) {
|
func VendoredImportPath(parent *Package, path string) (found string) {
|
||||||
if DebugDeprecatedImportcfg.enabled {
|
|
||||||
if d, i := DebugDeprecatedImportcfg.lookup(parent, path); d != "" {
|
|
||||||
return i
|
|
||||||
}
|
|
||||||
return path
|
|
||||||
}
|
|
||||||
|
|
||||||
if parent == nil || parent.Root == "" {
|
if parent == nil || parent.Root == "" {
|
||||||
return path
|
return path
|
||||||
}
|
}
|
||||||
|
@ -229,7 +229,6 @@ func AddBuildFlags(cmd *base.Command) {
|
|||||||
|
|
||||||
// Undocumented, unstable debugging flags.
|
// Undocumented, unstable debugging flags.
|
||||||
cmd.Flag.StringVar(&cfg.DebugActiongraph, "debug-actiongraph", "", "")
|
cmd.Flag.StringVar(&cfg.DebugActiongraph, "debug-actiongraph", "", "")
|
||||||
cmd.Flag.Var(&load.DebugDeprecatedImportcfg, "debug-deprecated-importcfg", "")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// fileExtSplit expects a filename and returns the name
|
// fileExtSplit expects a filename and returns the name
|
||||||
|
Loading…
Reference in New Issue
Block a user