Skip to content

Commit b02ce5b

Browse files
committed
Create tools package to isolate dependencies
Using a dedicated package for tools.go prevents callers who import hcshim from adding the tools to their package's dependencies, while still allowing us to track and vendor them.t p Signed-off-by: Hamza El-Saawy <[email protected]>
1 parent 5e97eb3 commit b02ce5b

30 files changed

Lines changed: 2182 additions & 11 deletions

File tree

cmd/containerd-shim-runhcs-v1/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const usage = ``
3030
const ttrpcAddressEnv = "TTRPC_ADDRESS"
3131

3232
// Add a manifest to get proper Windows version detection.
33-
//go:generate go run github.com/josephspurrier/goversioninfo/cmd/goversioninfo@v1.4.0 -platform-specific
33+
//go:generate go run github.com/josephspurrier/goversioninfo/cmd/goversioninfo -platform-specific
3434

3535
// version will be populated by the Makefile, read from
3636
// VERSION file of the source code.

cmd/runhcs/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818
)
1919

2020
// Add a manifest to get proper Windows version detection.
21-
//go:generate go run github.com/josephspurrier/goversioninfo/cmd/goversioninfo@v1.4.0 -platform-specific
21+
//go:generate go run github.com/josephspurrier/goversioninfo/cmd/goversioninfo -platform-specific
2222

2323
// version will be populated by the Makefile, read from
2424
// VERSION file of the source code.

cmd/wclayer/wclayer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
)
1414

1515
// Add a manifest to get proper Windows version detection.
16-
//go:generate go run github.com/josephspurrier/goversioninfo/cmd/goversioninfo@v1.4.0 -platform-specific
16+
//go:generate go run github.com/josephspurrier/goversioninfo/cmd/goversioninfo -platform-specific
1717

1818
var usage = `Windows Container layer utility
1919

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ require (
1717
github.com/containerd/typeurl/v2 v2.1.1
1818
github.com/google/go-cmp v0.5.9
1919
github.com/google/go-containerregistry v0.15.2
20+
github.com/josephspurrier/goversioninfo v1.4.0
2021
github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3
2122
github.com/mattn/go-shellwords v1.0.12
2223
github.com/open-policy-agent/opa v0.42.2
@@ -41,6 +42,7 @@ require (
4142
require (
4243
github.com/OneOfOne/xxhash v1.2.8 // indirect
4344
github.com/agnivade/levenshtein v1.0.1 // indirect
45+
github.com/akavel/rsrc v0.10.2 // indirect
4446
github.com/containerd/continuity v0.4.1 // indirect
4547
github.com/containerd/fifo v1.1.0 // indirect
4648
github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko
107107
github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ=
108108
github.com/agnivade/levenshtein v1.0.1 h1:3oJU7J3FGFmyhn8KHjmVaZCN5hxTr7GxgRue+sxIXdQ=
109109
github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
110+
github.com/akavel/rsrc v0.10.2 h1:Zxm8V5eI1hW4gGaYsJQUhxpjkENuG91ki8B4zCrvEsw=
111+
github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c=
110112
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
111113
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
112114
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
@@ -644,6 +646,8 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfC
644646
github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8=
645647
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
646648
github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8=
649+
github.com/josephspurrier/goversioninfo v1.4.0 h1:Puhl12NSHUSALHSuzYwPYQkqa2E1+7SrtAPJorKK0C8=
650+
github.com/josephspurrier/goversioninfo v1.4.0/go.mod h1:JWzv5rKQr+MmW+LvM412ToT/IkYDZjaclF2pKDss8IY=
647651
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
648652
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
649653
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=

test/go.mod

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ require (
3939
github.com/containerd/console v1.0.3 // indirect
4040
github.com/containerd/continuity v0.4.1 // indirect
4141
github.com/containerd/fifo v1.1.0 // indirect
42-
github.com/containerd/protobuild v0.3.0 // indirect
4342
github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect
4443
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
4544
github.com/cyphar/filepath-securejoin v0.2.3 // indirect
@@ -97,14 +96,12 @@ require (
9796
github.com/yashtewari/glob-intersection v0.1.0 // indirect
9897
go.opentelemetry.io/otel v1.14.0 // indirect
9998
go.opentelemetry.io/otel/trace v1.14.0 // indirect
100-
go.uber.org/mock v0.2.0 // indirect
10199
golang.org/x/crypto v0.9.0 // indirect
102100
golang.org/x/mod v0.10.0 // indirect
103101
golang.org/x/net v0.10.0 // indirect
104102
golang.org/x/text v0.9.0 // indirect
105103
golang.org/x/tools v0.8.0 // indirect
106104
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
107-
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 // indirect
108105
gopkg.in/yaml.v2 v2.4.0 // indirect
109106
gopkg.in/yaml.v3 v3.0.1 // indirect
110107
sigs.k8s.io/yaml v1.3.0 // indirect

test/go.sum

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,7 @@ github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm
662662
github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk=
663663
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
664664
github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM=
665+
github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c=
665666
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
666667
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
667668
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
@@ -845,7 +846,6 @@ github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFY
845846
github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY=
846847
github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY=
847848
github.com/containerd/nri v0.3.0/go.mod h1:Zw9q2lP16sdg0zYybemZ9yTDy8g7fPCIB3KXOGlggXI=
848-
github.com/containerd/protobuild v0.3.0 h1:RIyEIu+D+iIha6E1PREBPAXspSMFaDVam81JlolZWpg=
849849
github.com/containerd/protobuild v0.3.0/go.mod h1:5mNMFKKAwCIAkFBPiOdtRx2KiQlyEJeMXnL5R1DsWu8=
850850
github.com/containerd/stargz-snapshotter/estargz v0.14.3 h1:OqlDCK3ZVUO6C3B/5FSkDwbkEETK84kQgEeFwDC+62k=
851851
github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o=
@@ -1289,6 +1289,7 @@ github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHW
12891289
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
12901290
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
12911291
github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8=
1292+
github.com/josephspurrier/goversioninfo v1.4.0/go.mod h1:JWzv5rKQr+MmW+LvM412ToT/IkYDZjaclF2pKDss8IY=
12921293
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
12931294
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
12941295
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
@@ -1854,7 +1855,6 @@ go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66
18541855
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
18551856
go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
18561857
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
1857-
go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU=
18581858
go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM=
18591859
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
18601860
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
@@ -2617,7 +2617,6 @@ google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3
26172617
google.golang.org/grpc v1.56.2 h1:fVRFRnXvU+x6C4IlHZewvJOVHoOv1TUuQyoRsYnB4bI=
26182618
google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
26192619
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
2620-
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA=
26212620
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y=
26222621
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
26232622
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=

test/pkg/manifest/manifest.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
// This package allows tests can include the .syso to manifest them to pick up the right Windows build
44
package manifest
55

6-
//go:generate go run github.com/josephspurrier/goversioninfo/cmd/goversioninfo@v1.4.0 -platform-specific
6+
//go:generate go run github.com/josephspurrier/goversioninfo/cmd/goversioninfo -platform-specific

tools/README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Tools
2+
3+
This package contains imports to various tools used (eg, via `//go:generate`) within the hcsshim repo,
4+
allowing them to be versioned and ensuring their dependencies match what the shim use
5+
(specifically for auto-generated protobuf code).
6+
7+
Calls to `go run <cmd/import/path>` (or `//go:generate go run <cmd/import/path>`) for go executables
8+
included here will use the version specified in `go.mod` and build the executable from vendored code.
9+
10+
Using a dedicate package prevents callers who import `github.com/Microsoft/hcsshim` from including these
11+
tools in their dependencies.
12+
13+
Based on golang [guidance].
14+
15+
## Adding Dependencies
16+
17+
To add a new dependency, add a `_ "cmd/import/path"` to `tools.go`, and then tidy and vendor the repo.
18+
19+
In general executables used in auto-generating code (eg, `protobuild`, `protoc-gen-go-*`, and co.), or testing
20+
(eg, `gotestsum`, `benchstat`) should be included here.
21+
22+
[guidance]: https://github.com/golang/go/wiki/Modules#how-can-i-track-tool-dependencies-for-a-module

tools.go renamed to tools/tools.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//go:build tools
22

3-
package hcsshim
3+
package tools
44

55
import (
66
// protobuf/gRPC/ttrpc generation
@@ -15,6 +15,9 @@ import (
1515
// generate Win32 API code
1616
_ "github.com/Microsoft/go-winio/tools/mkwinsyscall"
1717

18+
// create syso files for manifesting
19+
_ "github.com/josephspurrier/goversioninfo/cmd/goversioninfo"
20+
1821
// mock gRPC client and servers
1922
_ "go.uber.org/mock/mockgen"
2023
)

0 commit comments

Comments
 (0)