]> Cypherpunks repositories - gostls13.git/commitdiff
go/build: update deps list
authorRuss Cox <rsc@golang.org>
Thu, 23 Jul 2015 16:20:18 +0000 (12:20 -0400)
committerRuss Cox <rsc@golang.org>
Mon, 27 Jul 2015 16:06:01 +0000 (16:06 +0000)
A while back we discovered that the dependencies test allowed
arbitrary dependencies for packages we forgot to list.
To stop the damage we added a grandfathered list and fixed
the code to expect unlisted packages to have no dependencies.

This CL replaces the grandfathered list with some more
careful placement of dependency rules.

Thankfully, there were no terrible inversions.

Fixes #10487.

Change-Id: I5a6f92435bd2c66c47ec8ab629edbd88b189f028
Reviewed-on: https://go-review.googlesource.com/12575
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
src/go/build/deps_test.go

index 14b25b11610bf47658fbbef791146806d77426c9..1c2f33639c7dd631537ba92b9401983f5f7f248b 100644 (file)
@@ -124,9 +124,12 @@ var pkgDeps = map[string][]string{
        // End of linear dependency definitions.
 
        // Operating system access.
-       "syscall":       {"L0", "unicode/utf16"},
+       "syscall":                           {"L0", "unicode/utf16"},
+       "internal/syscall/unix":             {"L0", "syscall"},
+       "internal/syscall/windows":          {"L0", "syscall"},
+       "internal/syscall/windows/registry": {"L0", "syscall", "unicode/utf16"},
        "time":          {"L0", "syscall", "internal/syscall/windows/registry"},
-       "os":            {"L1", "os", "syscall", "time", "internal/syscall/windows", "C"},
+       "os":            {"L1", "os", "syscall", "time", "internal/syscall/windows"},
        "path/filepath": {"L2", "os", "syscall"},
        "io/ioutil":     {"L2", "os", "path/filepath", "time"},
        "os/exec":       {"L2", "os", "path/filepath", "syscall"},
@@ -154,9 +157,10 @@ var pkgDeps = map[string][]string{
        "runtime/trace":  {"L0"},
        "text/tabwriter": {"L2"},
 
-       "testing":        {"L2", "flag", "fmt", "os", "runtime/pprof", "runtime/trace", "time"},
-       "testing/iotest": {"L2", "log"},
-       "testing/quick":  {"L2", "flag", "fmt", "reflect"},
+       "testing":          {"L2", "flag", "fmt", "os", "runtime/pprof", "runtime/trace", "time"},
+       "testing/iotest":   {"L2", "log"},
+       "testing/quick":    {"L2", "flag", "fmt", "reflect"},
+       "internal/testenv": {"L2", "testing"},
 
        // L4 is defined as L3+fmt+log+time, because in general once
        // you're using L3 packages, use of fmt, log, or time is not a big deal.
@@ -184,44 +188,60 @@ var pkgDeps = map[string][]string{
                "go/token",
        },
 
+       "go/format":       {"L4", "GOPARSER", "internal/format"},
+       "internal/format": {"L4", "GOPARSER"},
+
+       // Go type checking.
+       "go/constant":               {"L4", "go/token", "math/big"},
+       "go/importer":               {"L4", "go/internal/gcimporter", "go/internal/gccgoimporter", "go/types"},
+       "go/internal/gcimporter":    {"L4", "OS", "go/build", "go/constant", "go/token", "go/types", "text/scanner"},
+       "go/internal/gccgoimporter": {"L4", "OS", "debug/elf", "go/constant", "go/token", "go/types", "text/scanner"},
+       "go/types":                  {"L4", "GOPARSER", "container/heap", "go/constant"},
+
        // One of a kind.
-       "archive/tar":          {"L4", "OS", "syscall"},
-       "archive/zip":          {"L4", "OS", "compress/flate"},
-       "compress/bzip2":       {"L4"},
-       "compress/flate":       {"L4"},
-       "compress/gzip":        {"L4", "compress/flate"},
-       "compress/lzw":         {"L4"},
-       "compress/zlib":        {"L4", "compress/flate"},
-       "database/sql":         {"L4", "container/list", "database/sql/driver"},
-       "database/sql/driver":  {"L4", "time"},
-       "debug/dwarf":          {"L4"},
-       "debug/elf":            {"L4", "OS", "debug/dwarf"},
-       "debug/gosym":          {"L4"},
-       "debug/macho":          {"L4", "OS", "debug/dwarf"},
-       "debug/pe":             {"L4", "OS", "debug/dwarf"},
-       "encoding":             {"L4"},
-       "encoding/ascii85":     {"L4"},
-       "encoding/asn1":        {"L4", "math/big"},
-       "encoding/csv":         {"L4"},
-       "encoding/gob":         {"L4", "OS", "encoding"},
-       "encoding/hex":         {"L4"},
-       "encoding/json":        {"L4", "encoding"},
-       "encoding/pem":         {"L4"},
-       "encoding/xml":         {"L4", "encoding"},
-       "flag":                 {"L4", "OS"},
-       "go/build":             {"L4", "OS", "GOPARSER"},
-       "html":                 {"L4"},
-       "image/draw":           {"L4", "image/internal/imageutil"},
-       "image/gif":            {"L4", "compress/lzw", "image/color/palette", "image/draw"},
-       "image/jpeg":           {"L4", "image/internal/imageutil"},
-       "image/png":            {"L4", "compress/zlib"},
-       "index/suffixarray":    {"L4", "regexp"},
-       "math/big":             {"L4"},
-       "mime":                 {"L4", "OS", "syscall", "internal/syscall/windows/registry"},
-       "mime/quotedprintable": {"L4"},
-       "net/url":              {"L4"},
-       "text/scanner":         {"L4", "OS"},
-       "text/template/parse":  {"L4"},
+       "archive/tar":              {"L4", "OS", "syscall"},
+       "archive/zip":              {"L4", "OS", "compress/flate"},
+       "container/heap":           {"sort"},
+       "compress/bzip2":           {"L4"},
+       "compress/flate":           {"L4"},
+       "compress/gzip":            {"L4", "compress/flate"},
+       "compress/lzw":             {"L4"},
+       "compress/zlib":            {"L4", "compress/flate"},
+       "database/sql":             {"L4", "container/list", "database/sql/driver"},
+       "database/sql/driver":      {"L4", "time"},
+       "debug/dwarf":              {"L4"},
+       "debug/elf":                {"L4", "OS", "debug/dwarf"},
+       "debug/gosym":              {"L4"},
+       "debug/macho":              {"L4", "OS", "debug/dwarf"},
+       "debug/pe":                 {"L4", "OS", "debug/dwarf"},
+       "debug/plan9obj":           {"L4", "OS"},
+       "encoding":                 {"L4"},
+       "encoding/ascii85":         {"L4"},
+       "encoding/asn1":            {"L4", "math/big"},
+       "encoding/csv":             {"L4"},
+       "encoding/gob":             {"L4", "OS", "encoding"},
+       "encoding/hex":             {"L4"},
+       "encoding/json":            {"L4", "encoding"},
+       "encoding/pem":             {"L4"},
+       "encoding/xml":             {"L4", "encoding"},
+       "flag":                     {"L4", "OS"},
+       "go/build":                 {"L4", "OS", "GOPARSER"},
+       "html":                     {"L4"},
+       "image/draw":               {"L4", "image/internal/imageutil"},
+       "image/gif":                {"L4", "compress/lzw", "image/color/palette", "image/draw"},
+       "image/internal/imageutil": {"L4"},
+       "image/jpeg":               {"L4", "image/internal/imageutil"},
+       "image/png":                {"L4", "compress/zlib"},
+       "index/suffixarray":        {"L4", "regexp"},
+       "internal/singleflight":    {"sync"},
+       "internal/trace":           {"L4", "OS"},
+       "math/big":                 {"L4"},
+       "mime":                     {"L4", "OS", "syscall", "internal/syscall/windows/registry"},
+       "mime/quotedprintable":     {"L4"},
+       "net/internal/socktest":    {"L4", "OS", "syscall"},
+       "net/url":                  {"L4"},
+       "text/scanner":             {"L4", "OS"},
+       "text/template/parse":      {"L4"},
 
        "html/template": {
                "L4", "OS", "encoding/json", "html", "text/template",
@@ -325,40 +345,18 @@ var pkgDeps = map[string][]string{
                "compress/gzip", "crypto/tls", "mime/multipart", "runtime/debug",
                "net/http/internal",
        },
+       "net/http/internal": {"L4"},
 
        // HTTP-using packages.
-       "expvar":            {"L4", "OS", "encoding/json", "net/http"},
-       "net/http/cgi":      {"L4", "NET", "OS", "crypto/tls", "net/http", "regexp"},
-       "net/http/fcgi":     {"L4", "NET", "OS", "net/http", "net/http/cgi"},
-       "net/http/httptest": {"L4", "NET", "OS", "crypto/tls", "flag", "net/http"},
-       "net/http/httputil": {"L4", "NET", "OS", "net/http", "net/http/internal"},
-       "net/http/pprof":    {"L4", "OS", "html/template", "net/http", "runtime/pprof", "runtime/trace"},
-       "net/rpc":           {"L4", "NET", "encoding/gob", "html/template", "net/http"},
-       "net/rpc/jsonrpc":   {"L4", "NET", "encoding/json", "net/rpc"},
-
-       // Packages below are grandfathered because of issue 10475.
-       // When updating these entries, move them to an appropriate
-       // location above and assign them a justified set of
-       // dependencies.  Do not simply update them in situ.
-       "container/heap":                    {"sort"},
-       "debug/plan9obj":                    {"encoding/binary", "errors", "fmt", "io", "os"},
-       "go/constant":                       {"fmt", "go/token", "math/big", "strconv"},
-       "go/format":                         {"bytes", "fmt", "go/ast", "go/parser", "go/printer", "go/token", "internal/format", "io"},
-       "go/importer":                       {"go/internal/gcimporter", "go/internal/gccgoimporter", "go/types", "io", "runtime"},
-       "go/internal/gcimporter":            {"bufio", "errors", "fmt", "go/build", "go/constant", "go/token", "go/types", "io", "os", "path/filepath", "sort", "strconv", "strings", "text/scanner"},
-       "go/internal/gccgoimporter":         {"bufio", "bytes", "debug/elf", "errors", "fmt", "go/constant", "go/token", "go/types", "io", "os", "os/exec", "path/filepath", "strconv", "strings", "text/scanner"},
-       "go/types":                          {"bytes", "container/heap", "fmt", "go/ast", "go/constant", "go/parser", "go/token", "io", "math", "path", "sort", "strconv", "strings", "sync", "unicode"},
-       "image/internal/imageutil":          {"image"},
-       "internal/format":                   {"bytes", "go/ast", "go/parser", "go/printer", "go/token", "strings"},
-       "internal/singleflight":             {"sync"},
-       "internal/syscall/unix":             {"runtime", "sync/atomic", "syscall", "unsafe"},
-       "internal/syscall/windows":          {"syscall", "unsafe"},
-       "internal/syscall/windows/registry": {"errors", "io", "syscall", "unicode/utf16", "unsafe"},
-       "internal/testenv":                  {"runtime", "strings", "testing"},
-       "internal/trace":                    {"bufio", "bytes", "fmt", "io", "os", "os/exec", "sort", "strconv", "strings"},
-       "net/http/cookiejar":                {"errors", "fmt", "net", "net/http", "net/url", "sort", "strings", "sync", "time", "unicode/utf8"},
-       "net/http/internal":                 {"bufio", "bytes", "errors", "fmt", "io"},
-       "net/internal/socktest":             {"fmt", "sync", "syscall"},
+       "expvar":             {"L4", "OS", "encoding/json", "net/http"},
+       "net/http/cgi":       {"L4", "NET", "OS", "crypto/tls", "net/http", "regexp"},
+       "net/http/cookiejar": {"L4", "NET", "net/http"},
+       "net/http/fcgi":      {"L4", "NET", "OS", "net/http", "net/http/cgi"},
+       "net/http/httptest":  {"L4", "NET", "OS", "crypto/tls", "flag", "net/http"},
+       "net/http/httputil":  {"L4", "NET", "OS", "net/http", "net/http/internal"},
+       "net/http/pprof":     {"L4", "OS", "html/template", "net/http", "runtime/pprof", "runtime/trace"},
+       "net/rpc":            {"L4", "NET", "encoding/gob", "html/template", "net/http"},
+       "net/rpc/jsonrpc":    {"L4", "NET", "encoding/json", "net/rpc"},
 }
 
 // isMacro reports whether p is a package dependency macro