diff --git a/client/client.go b/client/client.go index a88a5f97a..173d5d207 100644 --- a/client/client.go +++ b/client/client.go @@ -56,10 +56,10 @@ import ( "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/events" "github.com/containerd/containerd/v2/pkg/namespaces" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/containerd/v2/plugins/services/introspection" ptypes "github.com/containerd/containerd/v2/protobuf/types" + "github.com/containerd/platforms" "github.com/containerd/typeurl/v2" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/opencontainers/runtime-spec/specs-go" diff --git a/client/client_opts.go b/client/client_opts.go index e3b262c68..54b37d4ca 100644 --- a/client/client_opts.go +++ b/client/client_opts.go @@ -22,7 +22,7 @@ import ( "github.com/containerd/containerd/v2/core/images" "github.com/containerd/containerd/v2/core/remotes" "github.com/containerd/containerd/v2/core/snapshots" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "google.golang.org/grpc" diff --git a/client/container_checkpoint_opts.go b/client/container_checkpoint_opts.go index d04c365ab..9be0b45e4 100644 --- a/client/container_checkpoint_opts.go +++ b/client/container_checkpoint_opts.go @@ -29,9 +29,9 @@ import ( "github.com/containerd/containerd/v2/core/images" "github.com/containerd/containerd/v2/core/runtime/v2/runc/options" "github.com/containerd/containerd/v2/pkg/rootfs" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/protobuf" "github.com/containerd/containerd/v2/protobuf/proto" + "github.com/containerd/platforms" "github.com/opencontainers/go-digest" imagespec "github.com/opencontainers/image-spec/specs-go/v1" ) diff --git a/client/image.go b/client/image.go index 9974dfb1d..f0eef70ac 100644 --- a/client/image.go +++ b/client/image.go @@ -32,7 +32,7 @@ import ( "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/labels" "github.com/containerd/containerd/v2/pkg/rootfs" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" "github.com/opencontainers/go-digest" "github.com/opencontainers/image-spec/identity" ocispec "github.com/opencontainers/image-spec/specs-go/v1" diff --git a/client/import.go b/client/import.go index bc67d591d..847d27c40 100644 --- a/client/import.go +++ b/client/import.go @@ -23,7 +23,7 @@ import ( "github.com/containerd/containerd/v2/core/images" "github.com/containerd/containerd/v2/core/images/archive" "github.com/containerd/containerd/v2/pkg/errdefs" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" digest "github.com/opencontainers/go-digest" ocispec "github.com/opencontainers/image-spec/specs-go/v1" ) diff --git a/client/pull.go b/client/pull.go index fd4c8bce6..9b8178694 100644 --- a/client/pull.go +++ b/client/pull.go @@ -31,7 +31,7 @@ import ( "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/tracing" "github.com/containerd/containerd/v2/pkg/unpack" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ) const ( diff --git a/cmd/containerd/server/server.go b/cmd/containerd/server/server.go index 92d7a1f36..c3721f9b3 100644 --- a/cmd/containerd/server/server.go +++ b/cmd/containerd/server/server.go @@ -61,10 +61,10 @@ import ( "github.com/containerd/containerd/v2/pkg/dialer" "github.com/containerd/containerd/v2/pkg/sys" "github.com/containerd/containerd/v2/pkg/timeout" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/containerd/v2/plugins/content/local" "github.com/containerd/containerd/v2/plugins/services/warning" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/dynamic" "github.com/containerd/plugin/registry" diff --git a/cmd/ctr/commands/content/fetch.go b/cmd/ctr/commands/content/fetch.go index 3c295fe72..da6c70f5a 100644 --- a/cmd/ctr/commands/content/fetch.go +++ b/cmd/ctr/commands/content/fetch.go @@ -33,8 +33,8 @@ import ( "github.com/containerd/containerd/v2/core/remotes" "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/progress" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" "github.com/opencontainers/go-digest" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/urfave/cli" diff --git a/cmd/ctr/commands/images/convert.go b/cmd/ctr/commands/images/convert.go index 5e91e0dfe..29cb00dbf 100644 --- a/cmd/ctr/commands/images/convert.go +++ b/cmd/ctr/commands/images/convert.go @@ -23,7 +23,7 @@ import ( "github.com/containerd/containerd/v2/cmd/ctr/commands" "github.com/containerd/containerd/v2/core/images/converter" "github.com/containerd/containerd/v2/core/images/converter/uncompress" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" "github.com/urfave/cli" ) diff --git a/cmd/ctr/commands/images/export.go b/cmd/ctr/commands/images/export.go index 0f23f911e..a5a35b381 100644 --- a/cmd/ctr/commands/images/export.go +++ b/cmd/ctr/commands/images/export.go @@ -29,7 +29,7 @@ import ( "github.com/containerd/containerd/v2/pkg/transfer" tarchive "github.com/containerd/containerd/v2/pkg/transfer/archive" "github.com/containerd/containerd/v2/pkg/transfer/image" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ) var exportCommand = cli.Command{ diff --git a/cmd/ctr/commands/images/images.go b/cmd/ctr/commands/images/images.go index 28dda807f..a58b4f028 100644 --- a/cmd/ctr/commands/images/images.go +++ b/cmd/ctr/commands/images/images.go @@ -28,8 +28,8 @@ import ( "github.com/containerd/containerd/v2/core/images" "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/progress" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" "github.com/urfave/cli" ) diff --git a/cmd/ctr/commands/images/import.go b/cmd/ctr/commands/images/import.go index 21971797a..32cd72b84 100644 --- a/cmd/ctr/commands/images/import.go +++ b/cmd/ctr/commands/images/import.go @@ -31,8 +31,8 @@ import ( "github.com/containerd/containerd/v2/pkg/transfer" tarchive "github.com/containerd/containerd/v2/pkg/transfer/archive" "github.com/containerd/containerd/v2/pkg/transfer/image" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" ) var importCommand = cli.Command{ diff --git a/cmd/ctr/commands/images/mount.go b/cmd/ctr/commands/images/mount.go index 3ad277bc6..32be49cb6 100644 --- a/cmd/ctr/commands/images/mount.go +++ b/cmd/ctr/commands/images/mount.go @@ -26,7 +26,7 @@ import ( "github.com/containerd/containerd/v2/core/mount" "github.com/containerd/containerd/v2/defaults" "github.com/containerd/containerd/v2/pkg/errdefs" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" "github.com/opencontainers/image-spec/identity" "github.com/urfave/cli" ) diff --git a/cmd/ctr/commands/images/pull.go b/cmd/ctr/commands/images/pull.go index 489f8172d..83ff19604 100644 --- a/cmd/ctr/commands/images/pull.go +++ b/cmd/ctr/commands/images/pull.go @@ -32,8 +32,8 @@ import ( "github.com/containerd/containerd/v2/pkg/transfer" "github.com/containerd/containerd/v2/pkg/transfer/image" "github.com/containerd/containerd/v2/pkg/transfer/registry" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" "github.com/opencontainers/image-spec/identity" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/urfave/cli" diff --git a/cmd/ctr/commands/images/push.go b/cmd/ctr/commands/images/push.go index 9b0e55731..62d4aa2d8 100644 --- a/cmd/ctr/commands/images/push.go +++ b/cmd/ctr/commands/images/push.go @@ -36,8 +36,8 @@ import ( "github.com/containerd/containerd/v2/pkg/transfer" "github.com/containerd/containerd/v2/pkg/transfer/image" "github.com/containerd/containerd/v2/pkg/transfer/registry" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" digest "github.com/opencontainers/go-digest" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/urfave/cli" diff --git a/cmd/ctr/commands/oci/oci.go b/cmd/ctr/commands/oci/oci.go index 8d8368579..fce3756e2 100644 --- a/cmd/ctr/commands/oci/oci.go +++ b/cmd/ctr/commands/oci/oci.go @@ -24,7 +24,7 @@ import ( "github.com/containerd/containerd/v2/cmd/ctr/commands" "github.com/containerd/containerd/v2/core/containers" "github.com/containerd/containerd/v2/pkg/oci" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ) // Command is the parent for all OCI related tools under 'oci' diff --git a/cmd/ctr/commands/plugins/plugins.go b/cmd/ctr/commands/plugins/plugins.go index 770251896..ec60a8244 100644 --- a/cmd/ctr/commands/plugins/plugins.go +++ b/cmd/ctr/commands/plugins/plugins.go @@ -25,7 +25,7 @@ import ( "github.com/containerd/containerd/v2/api/types" "github.com/containerd/containerd/v2/cmd/ctr/commands" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" pluginutils "github.com/containerd/plugin" v1 "github.com/opencontainers/image-spec/specs-go/v1" "github.com/urfave/cli" diff --git a/cmd/ctr/commands/run/run_unix.go b/cmd/ctr/commands/run/run_unix.go index 061dbc439..29eb49124 100644 --- a/cmd/ctr/commands/run/run_unix.go +++ b/cmd/ctr/commands/run/run_unix.go @@ -38,8 +38,8 @@ import ( "github.com/containerd/containerd/v2/core/snapshots" "github.com/containerd/containerd/v2/pkg/oci" runtimeoptions "github.com/containerd/containerd/v2/pkg/runtimeoptions/v1" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" "github.com/intel/goresctrl/pkg/blockio" "github.com/opencontainers/runtime-spec/specs-go" "github.com/urfave/cli" diff --git a/contrib/fuzz/fuzz_images.go b/contrib/fuzz/fuzz_images.go index 1032266f9..9418c72ca 100644 --- a/contrib/fuzz/fuzz_images.go +++ b/contrib/fuzz/fuzz_images.go @@ -21,8 +21,8 @@ import ( fuzz "github.com/AdaLogics/go-fuzz-headers" "github.com/containerd/containerd/v2/core/images" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins/content/local" + "github.com/containerd/platforms" ocispec "github.com/opencontainers/image-spec/specs-go/v1" ) diff --git a/core/images/archive/exporter.go b/core/images/archive/exporter.go index 2034009c5..bd136a4b8 100644 --- a/core/images/archive/exporter.go +++ b/core/images/archive/exporter.go @@ -30,8 +30,8 @@ import ( "github.com/containerd/containerd/v2/core/images" "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/labels" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" digest "github.com/opencontainers/go-digest" ocispecs "github.com/opencontainers/image-spec/specs-go" ocispec "github.com/opencontainers/image-spec/specs-go/v1" diff --git a/core/images/archive/importer.go b/core/images/archive/importer.go index f5c804128..314c22ab8 100644 --- a/core/images/archive/importer.go +++ b/core/images/archive/importer.go @@ -32,8 +32,8 @@ import ( "github.com/containerd/containerd/v2/pkg/archive/compression" "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/labels" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" digest "github.com/opencontainers/go-digest" specs "github.com/opencontainers/image-spec/specs-go" ocispec "github.com/opencontainers/image-spec/specs-go/v1" diff --git a/core/images/converter/converter.go b/core/images/converter/converter.go index e88d702ec..20308cb55 100644 --- a/core/images/converter/converter.go +++ b/core/images/converter/converter.go @@ -23,7 +23,7 @@ import ( "github.com/containerd/containerd/v2/core/content" "github.com/containerd/containerd/v2/core/images" "github.com/containerd/containerd/v2/core/leases" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ) type convertOpts struct { diff --git a/core/images/converter/default.go b/core/images/converter/default.go index 538055d95..98f796536 100644 --- a/core/images/converter/default.go +++ b/core/images/converter/default.go @@ -26,8 +26,8 @@ import ( "github.com/containerd/containerd/v2/core/content" "github.com/containerd/containerd/v2/core/images" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" "github.com/opencontainers/go-digest" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "golang.org/x/sync/errgroup" diff --git a/core/images/handlers.go b/core/images/handlers.go index 0a4397583..407030ab3 100644 --- a/core/images/handlers.go +++ b/core/images/handlers.go @@ -24,7 +24,7 @@ import ( "github.com/containerd/containerd/v2/core/content" "github.com/containerd/containerd/v2/pkg/errdefs" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "golang.org/x/sync/errgroup" "golang.org/x/sync/semaphore" diff --git a/core/images/image.go b/core/images/image.go index 90b1669a1..16bc9f74e 100644 --- a/core/images/image.go +++ b/core/images/image.go @@ -25,8 +25,8 @@ import ( "github.com/containerd/containerd/v2/core/content" "github.com/containerd/containerd/v2/pkg/errdefs" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" digest "github.com/opencontainers/go-digest" ocispec "github.com/opencontainers/image-spec/specs-go/v1" ) diff --git a/core/images/usage/calculator.go b/core/images/usage/calculator.go index 0090d3806..738a459b8 100644 --- a/core/images/usage/calculator.go +++ b/core/images/usage/calculator.go @@ -25,7 +25,7 @@ import ( "github.com/containerd/containerd/v2/core/images" "github.com/containerd/containerd/v2/core/snapshots" "github.com/containerd/containerd/v2/pkg/errdefs" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "golang.org/x/sync/semaphore" diff --git a/core/images/usage/calculator_test.go b/core/images/usage/calculator_test.go index bbbde885f..84ed167e4 100644 --- a/core/images/usage/calculator_test.go +++ b/core/images/usage/calculator_test.go @@ -22,8 +22,8 @@ import ( "github.com/containerd/containerd/v2/core/images" "github.com/containerd/containerd/v2/core/images/imagetest" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log/logtest" + "github.com/containerd/platforms" ocispec "github.com/opencontainers/image-spec/specs-go/v1" ) diff --git a/core/metrics/cgroups/cgroups.go b/core/metrics/cgroups/cgroups.go index 7fcbc448f..604977cf0 100644 --- a/core/metrics/cgroups/cgroups.go +++ b/core/metrics/cgroups/cgroups.go @@ -24,8 +24,8 @@ import ( v2 "github.com/containerd/containerd/v2/core/metrics/cgroups/v2" "github.com/containerd/containerd/v2/core/runtime" "github.com/containerd/containerd/v2/pkg/events" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" metrics "github.com/docker/go-metrics" diff --git a/core/remotes/handlers.go b/core/remotes/handlers.go index 3afa22daa..8e9cbebcc 100644 --- a/core/remotes/handlers.go +++ b/core/remotes/handlers.go @@ -29,8 +29,8 @@ import ( "github.com/containerd/containerd/v2/core/images" "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/labels" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "golang.org/x/sync/semaphore" ) diff --git a/core/runtime/v2/manager.go b/core/runtime/v2/manager.go index a14a980b5..c5cc52f15 100644 --- a/core/runtime/v2/manager.go +++ b/core/runtime/v2/manager.go @@ -36,10 +36,10 @@ import ( "github.com/containerd/containerd/v2/pkg/events/exchange" "github.com/containerd/containerd/v2/pkg/namespaces" "github.com/containerd/containerd/v2/pkg/timeout" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/containerd/v2/protobuf" "github.com/containerd/log" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" ) diff --git a/core/runtime/v2/manager_unix.go b/core/runtime/v2/manager_unix.go index d4c147dc4..be6ce6e11 100644 --- a/core/runtime/v2/manager_unix.go +++ b/core/runtime/v2/manager_unix.go @@ -19,7 +19,7 @@ package v2 import ( - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ) func defaultPlatforms() []string { diff --git a/core/runtime/v2/manager_windows.go b/core/runtime/v2/manager_windows.go index 544e0afa9..b1bfbaa48 100644 --- a/core/runtime/v2/manager_windows.go +++ b/core/runtime/v2/manager_windows.go @@ -17,7 +17,7 @@ package v2 import ( - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ) func defaultPlatforms() []string { diff --git a/core/sandbox/controller.go b/core/sandbox/controller.go index b55f9b2fd..d30bb9f71 100644 --- a/core/sandbox/controller.go +++ b/core/sandbox/controller.go @@ -23,7 +23,7 @@ import ( "github.com/containerd/containerd/v2/api/types" "github.com/containerd/containerd/v2/core/mount" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" "github.com/containerd/typeurl/v2" ) diff --git a/core/sandbox/proxy/controller.go b/core/sandbox/proxy/controller.go index 9b06be186..6992c4531 100644 --- a/core/sandbox/proxy/controller.go +++ b/core/sandbox/proxy/controller.go @@ -24,7 +24,7 @@ import ( "github.com/containerd/containerd/v2/core/mount" "github.com/containerd/containerd/v2/core/sandbox" "github.com/containerd/containerd/v2/pkg/errdefs" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" "google.golang.org/protobuf/types/known/anypb" ) diff --git a/go.mod b/go.mod index 421a67143..31311757d 100644 --- a/go.mod +++ b/go.mod @@ -17,6 +17,7 @@ require ( github.com/containerd/go-runc v1.1.0 github.com/containerd/log v0.1.0 github.com/containerd/nri v0.5.0 + github.com/containerd/platforms v0.1.1 github.com/containerd/plugin v0.0.0-20231101173250-7ec69893e1e7 github.com/containerd/ttrpc v1.2.2 github.com/containerd/typeurl/v2 v2.1.1 diff --git a/go.sum b/go.sum index bad91f1bd..3df548056 100644 --- a/go.sum +++ b/go.sum @@ -58,6 +58,8 @@ github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/nri v0.5.0 h1:bwCtKpi8i5FCA8g8WjIZNod91CEfIloYpV0+TH2prnQ= github.com/containerd/nri v0.5.0/go.mod h1:qIu2NlP3r/qK4YGnNuQf0De4VPqQWP2i2CVBfAZbGzg= +github.com/containerd/platforms v0.1.1 h1:gp0xXBoY+1CjH54gJDon0kBjIbK2C4XSX1BGwP5ptG0= +github.com/containerd/platforms v0.1.1/go.mod h1:XOM2BS6kN6gXafPLg80V6y/QUib+xoLyC3qVmHzibko= github.com/containerd/plugin v0.0.0-20231101173250-7ec69893e1e7 h1:MUbtIMHEcMzj+8mPgHd5ett0WVbY/KYHa5tMvFs5Ejs= github.com/containerd/plugin v0.0.0-20231101173250-7ec69893e1e7/go.mod h1:j6HlpMtkiZMgT4UsfVNxPBUkwdw9KQGU6nCLfRxnq+w= github.com/containerd/ttrpc v1.2.2 h1:9vqZr0pxwOF5koz6N0N3kJ0zDHokrcPxIR/ZR2YFtOs= diff --git a/integration/build_local_containerd_helper_test.go b/integration/build_local_containerd_helper_test.go index f8355def1..f9577485e 100644 --- a/integration/build_local_containerd_helper_test.go +++ b/integration/build_local_containerd_helper_test.go @@ -28,9 +28,9 @@ import ( srvconfig "github.com/containerd/containerd/v2/cmd/containerd/server/config" "github.com/containerd/containerd/v2/core/content" "github.com/containerd/containerd/v2/pkg/cri/constants" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/log/logtest" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/opencontainers/go-digest" diff --git a/integration/client/client_test.go b/integration/client/client_test.go index 5b29a0a3e..d3b2bf374 100644 --- a/integration/client/client_test.go +++ b/integration/client/client_test.go @@ -40,8 +40,8 @@ import ( "github.com/containerd/containerd/v2/internal/testutil" "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/namespaces" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" ) var ( diff --git a/integration/client/client_unix_test.go b/integration/client/client_unix_test.go index ef7a9afac..59bea46a2 100644 --- a/integration/client/client_unix_test.go +++ b/integration/client/client_unix_test.go @@ -23,7 +23,7 @@ import ( . "github.com/containerd/containerd/v2/client" "github.com/containerd/containerd/v2/integration/images" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ) var ( diff --git a/integration/client/container_test.go b/integration/client/container_test.go index 939215d85..e5f554519 100644 --- a/integration/client/container_test.go +++ b/integration/client/container_test.go @@ -41,12 +41,12 @@ import ( "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/namespaces" "github.com/containerd/containerd/v2/pkg/oci" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" gogotypes "github.com/containerd/containerd/v2/protobuf/types" "github.com/containerd/continuity/fs" "github.com/containerd/go-runc" "github.com/containerd/log/logtest" + "github.com/containerd/platforms" "github.com/containerd/typeurl/v2" specs "github.com/opencontainers/runtime-spec/specs-go" "github.com/stretchr/testify/require" diff --git a/integration/client/convert_test.go b/integration/client/convert_test.go index 4f5f19c80..85f0f0c41 100644 --- a/integration/client/convert_test.go +++ b/integration/client/convert_test.go @@ -23,7 +23,7 @@ import ( "github.com/containerd/containerd/v2/core/images" "github.com/containerd/containerd/v2/core/images/converter" "github.com/containerd/containerd/v2/core/images/converter/uncompress" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/stretchr/testify/assert" ) diff --git a/integration/client/export_test.go b/integration/client/export_test.go index c1c9e3346..bf727f308 100644 --- a/integration/client/export_test.go +++ b/integration/client/export_test.go @@ -31,7 +31,7 @@ import ( "github.com/containerd/containerd/v2/core/images/archive" "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/namespaces" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" "github.com/google/uuid" ocispec "github.com/opencontainers/image-spec/specs-go/v1" ) diff --git a/integration/client/image_test.go b/integration/client/image_test.go index 105e41288..3d907e0bb 100644 --- a/integration/client/image_test.go +++ b/integration/client/image_test.go @@ -29,7 +29,7 @@ import ( imagelist "github.com/containerd/containerd/v2/integration/images" "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/labels" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ocispec "github.com/opencontainers/image-spec/specs-go/v1" ) diff --git a/integration/client/import_test.go b/integration/client/import_test.go index 4c7a03bb9..ced7ea1f6 100644 --- a/integration/client/import_test.go +++ b/integration/client/import_test.go @@ -44,7 +44,7 @@ import ( "github.com/containerd/containerd/v2/pkg/transfer" tarchive "github.com/containerd/containerd/v2/pkg/transfer/archive" "github.com/containerd/containerd/v2/pkg/transfer/image" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" "github.com/google/uuid" digest "github.com/opencontainers/go-digest" diff --git a/pkg/cri/cri.go b/pkg/cri/cri.go index 176045715..3488b9915 100644 --- a/pkg/cri/cri.go +++ b/pkg/cri/cri.go @@ -33,8 +33,8 @@ import ( "github.com/containerd/containerd/v2/pkg/cri/server" "github.com/containerd/containerd/v2/pkg/cri/server/base" nriservice "github.com/containerd/containerd/v2/pkg/nri" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" + "github.com/containerd/platforms" "google.golang.org/grpc" diff --git a/pkg/cri/server/base/cri_base.go b/pkg/cri/server/base/cri_base.go index f5eaa23cb..a28070700 100644 --- a/pkg/cri/server/base/cri_base.go +++ b/pkg/cri/server/base/cri_base.go @@ -34,9 +34,9 @@ import ( criconfig "github.com/containerd/containerd/v2/pkg/cri/config" "github.com/containerd/containerd/v2/pkg/cri/constants" "github.com/containerd/containerd/v2/pkg/oci" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/containerd/v2/plugins/services/warning" + "github.com/containerd/platforms" ) // CRIBase contains common dependencies for CRI's runtime, image, and podsandbox services. diff --git a/pkg/cri/server/container_create.go b/pkg/cri/server/container_create.go index 510e8d0e8..272096aaf 100644 --- a/pkg/cri/server/container_create.go +++ b/pkg/cri/server/container_create.go @@ -45,7 +45,7 @@ import ( containerstore "github.com/containerd/containerd/v2/pkg/cri/store/container" "github.com/containerd/containerd/v2/pkg/cri/util" "github.com/containerd/containerd/v2/pkg/oci" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ) func init() { diff --git a/pkg/cri/server/container_create_linux_test.go b/pkg/cri/server/container_create_linux_test.go index 21ff822f0..f106d327c 100644 --- a/pkg/cri/server/container_create_linux_test.go +++ b/pkg/cri/server/container_create_linux_test.go @@ -30,7 +30,7 @@ import ( "github.com/containerd/containerd/v2/core/containers" "github.com/containerd/containerd/v2/core/mount" "github.com/containerd/containerd/v2/pkg/oci" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" imagespec "github.com/opencontainers/image-spec/specs-go/v1" runtimespec "github.com/opencontainers/runtime-spec/specs-go" "github.com/opencontainers/selinux/go-selinux" diff --git a/pkg/cri/server/container_create_test.go b/pkg/cri/server/container_create_test.go index 2279f047f..f0f93fcbb 100644 --- a/pkg/cri/server/container_create_test.go +++ b/pkg/cri/server/container_create_test.go @@ -25,7 +25,7 @@ import ( "testing" ostesting "github.com/containerd/containerd/v2/pkg/os/testing" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" imagespec "github.com/opencontainers/image-spec/specs-go/v1" runtimespec "github.com/opencontainers/runtime-spec/specs-go" diff --git a/pkg/cri/server/images/check.go b/pkg/cri/server/images/check.go index bd3430084..89610df95 100644 --- a/pkg/cri/server/images/check.go +++ b/pkg/cri/server/images/check.go @@ -22,8 +22,8 @@ import ( "sync" "github.com/containerd/containerd/v2/core/images" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" ) // LoadImages checks all existing images to ensure they are ready to diff --git a/pkg/cri/server/images/image_pull_test.go b/pkg/cri/server/images/image_pull_test.go index 8ffece4e5..a3994e689 100644 --- a/pkg/cri/server/images/image_pull_test.go +++ b/pkg/cri/server/images/image_pull_test.go @@ -29,7 +29,7 @@ import ( "github.com/containerd/containerd/v2/pkg/cri/annotations" criconfig "github.com/containerd/containerd/v2/pkg/cri/config" "github.com/containerd/containerd/v2/pkg/cri/labels" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ) func TestParseAuth(t *testing.T) { diff --git a/pkg/cri/server/images/service.go b/pkg/cri/server/images/service.go index 8c2f8a35d..a73f988b1 100644 --- a/pkg/cri/server/images/service.go +++ b/pkg/cri/server/images/service.go @@ -29,8 +29,8 @@ import ( imagestore "github.com/containerd/containerd/v2/pkg/cri/store/image" snapshotstore "github.com/containerd/containerd/v2/pkg/cri/store/snapshot" "github.com/containerd/containerd/v2/pkg/events" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" docker "github.com/distribution/reference" imagedigest "github.com/opencontainers/go-digest" diff --git a/pkg/cri/server/images/service_test.go b/pkg/cri/server/images/service_test.go index 1c49e771f..177992051 100644 --- a/pkg/cri/server/images/service_test.go +++ b/pkg/cri/server/images/service_test.go @@ -24,7 +24,7 @@ import ( imagestore "github.com/containerd/containerd/v2/pkg/cri/store/image" snapshotstore "github.com/containerd/containerd/v2/pkg/cri/store/snapshot" "github.com/containerd/containerd/v2/pkg/errdefs" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" "github.com/stretchr/testify/assert" ) diff --git a/pkg/cri/server/podsandbox/controller.go b/pkg/cri/server/podsandbox/controller.go index 3953c7bbf..96a94f5b1 100644 --- a/pkg/cri/server/podsandbox/controller.go +++ b/pkg/cri/server/podsandbox/controller.go @@ -38,9 +38,9 @@ import ( "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/oci" osinterface "github.com/containerd/containerd/v2/pkg/os" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/containerd/v2/protobuf" + "github.com/containerd/platforms" ) func init() { diff --git a/pkg/cri/server/service_test.go b/pkg/cri/server/service_test.go index f22f29a1b..4b1e4aaa4 100644 --- a/pkg/cri/server/service_test.go +++ b/pkg/cri/server/service_test.go @@ -31,7 +31,7 @@ import ( servertesting "github.com/containerd/containerd/v2/pkg/cri/testing" "github.com/containerd/containerd/v2/pkg/errdefs" ostesting "github.com/containerd/containerd/v2/pkg/os/testing" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ) type fakeSandboxService struct{} diff --git a/pkg/cri/store/image/fake_image.go b/pkg/cri/store/image/fake_image.go index 041443f99..469c56f7f 100644 --- a/pkg/cri/store/image/fake_image.go +++ b/pkg/cri/store/image/fake_image.go @@ -19,7 +19,7 @@ package image import ( "fmt" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ) // NewFakeStore returns an image store with predefined images. diff --git a/pkg/cri/store/image/image.go b/pkg/cri/store/image/image.go index 8fd2ad232..34ecc1d04 100644 --- a/pkg/cri/store/image/image.go +++ b/pkg/cri/store/image/image.go @@ -28,7 +28,7 @@ import ( "github.com/containerd/containerd/v2/pkg/cri/labels" "github.com/containerd/containerd/v2/pkg/cri/util" "github.com/containerd/containerd/v2/pkg/errdefs" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" docker "github.com/distribution/reference" "k8s.io/apimachinery/pkg/util/sets" diff --git a/pkg/oci/spec.go b/pkg/oci/spec.go index a09b57c91..d4808cf68 100644 --- a/pkg/oci/spec.go +++ b/pkg/oci/spec.go @@ -30,7 +30,7 @@ import ( "github.com/containerd/containerd/v2/api/types" "github.com/containerd/containerd/v2/core/containers" "github.com/containerd/containerd/v2/pkg/namespaces" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ) const ( diff --git a/pkg/oci/spec_opts.go b/pkg/oci/spec_opts.go index e88a00278..e77a5b28e 100644 --- a/pkg/oci/spec_opts.go +++ b/pkg/oci/spec_opts.go @@ -33,9 +33,9 @@ import ( "github.com/containerd/containerd/v2/core/images" "github.com/containerd/containerd/v2/core/mount" "github.com/containerd/containerd/v2/pkg/namespaces" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/continuity/fs" "github.com/containerd/log" + "github.com/containerd/platforms" "github.com/moby/sys/user" v1 "github.com/opencontainers/image-spec/specs-go/v1" "github.com/opencontainers/runtime-spec/specs-go" diff --git a/pkg/transfer/archive/exporter.go b/pkg/transfer/archive/exporter.go index 98a0a9119..d89fa0a5a 100644 --- a/pkg/transfer/archive/exporter.go +++ b/pkg/transfer/archive/exporter.go @@ -31,8 +31,8 @@ import ( "github.com/containerd/containerd/v2/pkg/streaming" "github.com/containerd/containerd/v2/pkg/transfer/plugins" tstreaming "github.com/containerd/containerd/v2/pkg/transfer/streaming" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" ) func init() { diff --git a/pkg/transfer/image/imagestore.go b/pkg/transfer/image/imagestore.go index 075d68d67..16cb86631 100644 --- a/pkg/transfer/image/imagestore.go +++ b/pkg/transfer/image/imagestore.go @@ -33,7 +33,7 @@ import ( "github.com/containerd/containerd/v2/pkg/streaming" "github.com/containerd/containerd/v2/pkg/transfer" "github.com/containerd/containerd/v2/pkg/transfer/plugins" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ) func init() { diff --git a/pkg/transfer/local/pull_test.go b/pkg/transfer/local/pull_test.go index 908d030ab..c46cf07e9 100644 --- a/pkg/transfer/local/pull_test.go +++ b/pkg/transfer/local/pull_test.go @@ -22,7 +22,7 @@ import ( "github.com/containerd/containerd/v2/defaults" "github.com/containerd/containerd/v2/pkg/transfer" "github.com/containerd/containerd/v2/pkg/unpack" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" ) func TestGetSupportedPlatform(t *testing.T) { diff --git a/pkg/transfer/local/push.go b/pkg/transfer/local/push.go index 098dde638..120ae1688 100644 --- a/pkg/transfer/local/push.go +++ b/pkg/transfer/local/push.go @@ -27,7 +27,7 @@ import ( "github.com/containerd/containerd/v2/core/remotes" "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/transfer" - "github.com/containerd/containerd/v2/platforms" + "github.com/containerd/platforms" "github.com/opencontainers/go-digest" ocispec "github.com/opencontainers/image-spec/specs-go/v1" ) diff --git a/pkg/unpack/unpacker.go b/pkg/unpack/unpacker.go index ea41629bf..07bcc769b 100644 --- a/pkg/unpack/unpacker.go +++ b/pkg/unpack/unpacker.go @@ -38,8 +38,8 @@ import ( "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/labels" "github.com/containerd/containerd/v2/pkg/tracing" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/log" + "github.com/containerd/platforms" "github.com/opencontainers/go-digest" "github.com/opencontainers/image-spec/identity" ocispec "github.com/opencontainers/image-spec/specs-go/v1" diff --git a/platforms/compare_test.go b/platforms/compare_test.go deleted file mode 100644 index cbe90deea..000000000 --- a/platforms/compare_test.go +++ /dev/null @@ -1,415 +0,0 @@ -/* - Copyright The containerd Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -package platforms - -import ( - "testing" -) - -func TestOnly(t *testing.T) { - for _, tc := range []struct { - platform string - matches map[bool][]string - }{ - { - platform: "linux/amd64", - matches: map[bool][]string{ - true: { - "linux/amd64", - "linux/386", - }, - false: { - "linux/amd64/v2", - "linux/arm/v7", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "linux/amd64/v2", - matches: map[bool][]string{ - true: { - "linux/amd64", - "linux/amd64/v1", - "linux/amd64/v2", - "linux/386", - }, - false: { - "linux/amd64/v3", - "linux/amd64/v4", - "linux/arm/v7", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "linux/386", - matches: map[bool][]string{ - true: { - "linux/386", - }, - false: { - "linux/amd64", - "linux/arm/v7", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "windows/amd64", - matches: map[bool][]string{ - true: {"windows/amd64"}, - false: { - "linux/amd64", - "linux/arm/v7", - "linux/arm64", - "windows/arm", - }, - }, - }, - { - platform: "linux/arm/v8", - matches: map[bool][]string{ - true: { - "linux/arm", - "linux/arm/v5", - "linux/arm/v6", - "linux/arm/v7", - "linux/arm/v8", - }, - false: { - "linux/amd64", - "linux/arm/v4", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "linux/arm/v7", - matches: map[bool][]string{ - true: { - "linux/arm", - "linux/arm/v5", - "linux/arm/v6", - "linux/arm/v7", - }, - false: { - "linux/amd64", - "linux/arm/v4", - "linux/arm/v8", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "linux/arm/v6", - matches: map[bool][]string{ - true: { - "linux/arm/v5", - "linux/arm/v6", - }, - false: { - "linux/amd64", - "linux/arm", - "linux/arm/v4", - "linux/arm/v7", - "linux/arm/v8", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "linux/arm/v5", - matches: map[bool][]string{ - true: { - "linux/arm/v5", - }, - false: { - "linux/amd64", - "linux/arm", - "linux/arm/v4", - "linux/arm/v6", - "linux/arm/v7", - "linux/arm/v8", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "linux/arm/v4", - matches: map[bool][]string{ - true: { - "linux/arm/v4", - }, - false: { - "linux/amd64", - "linux/arm", - "linux/arm/v5", - "linux/arm/v6", - "linux/arm/v7", - "linux/arm/v8", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "linux/arm64", - matches: map[bool][]string{ - true: { - "linux/arm", - "linux/arm/v5", - "linux/arm/v6", - "linux/arm/v7", - "linux/arm/v8", - "linux/arm64", - "linux/arm64/v8", - }, - false: { - "linux/amd64", - "linux/arm/v4", - "linux/arm/v9", - "linux/arm64/v9", - "windows/amd64", - "windows/arm", - }, - }, - }, - } { - testcase := tc - t.Run(testcase.platform, func(t *testing.T) { - p, err := Parse(testcase.platform) - if err != nil { - t.Fatal(err) - } - m := Only(p) - for shouldMatch, platforms := range testcase.matches { - for _, matchPlatform := range platforms { - mp, err := Parse(matchPlatform) - if err != nil { - t.Fatal(err) - } - if match := m.Match(mp); shouldMatch != match { - t.Errorf("Only(%q).Match(%q) should return %v, but returns %v", testcase.platform, matchPlatform, shouldMatch, match) - } - } - } - }) - } -} - -func TestOnlyStrict(t *testing.T) { - for _, tc := range []struct { - platform string - matches map[bool][]string - }{ - { - platform: "linux/amd64", - matches: map[bool][]string{ - true: { - "linux/amd64", - }, - false: { - "linux/386", - "linux/arm/v7", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "linux/386", - matches: map[bool][]string{ - true: { - "linux/386", - }, - false: { - "linux/amd64", - "linux/arm/v7", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "windows/amd64", - matches: map[bool][]string{ - true: {"windows/amd64"}, - false: { - "linux/amd64", - "linux/arm/v7", - "linux/arm64", - "windows/arm", - }, - }, - }, - { - platform: "linux/arm/v8", - matches: map[bool][]string{ - true: { - "linux/arm/v8", - }, - false: { - "linux/arm", - "linux/arm/v5", - "linux/arm/v6", - "linux/arm/v7", - "linux/amd64", - "linux/arm/v4", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "linux/arm/v7", - matches: map[bool][]string{ - true: { - "linux/arm", - "linux/arm/v7", - }, - false: { - "linux/arm/v5", - "linux/arm/v6", - "linux/amd64", - "linux/arm/v4", - "linux/arm/v8", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "linux/arm/v6", - matches: map[bool][]string{ - true: { - "linux/arm/v6", - }, - false: { - "linux/arm/v5", - "linux/amd64", - "linux/arm", - "linux/arm/v4", - "linux/arm/v7", - "linux/arm/v8", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "linux/arm/v5", - matches: map[bool][]string{ - true: { - "linux/arm/v5", - }, - false: { - "linux/amd64", - "linux/arm", - "linux/arm/v4", - "linux/arm/v6", - "linux/arm/v7", - "linux/arm/v8", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "linux/arm/v4", - matches: map[bool][]string{ - true: { - "linux/arm/v4", - }, - false: { - "linux/amd64", - "linux/arm", - "linux/arm/v5", - "linux/arm/v6", - "linux/arm/v7", - "linux/arm/v8", - "linux/arm64", - "windows/amd64", - "windows/arm", - }, - }, - }, - { - platform: "linux/arm64", - matches: map[bool][]string{ - true: { - "linux/arm64", - "linux/arm64/v8", - }, - false: { - "linux/arm", - "linux/arm/v5", - "linux/arm/v6", - "linux/arm/v7", - "linux/arm/v8", - "linux/amd64", - "linux/arm/v4", - "linux/arm/v9", - "linux/arm64/v9", - "windows/amd64", - "windows/arm", - }, - }, - }, - } { - testcase := tc - t.Run(testcase.platform, func(t *testing.T) { - p, err := Parse(testcase.platform) - if err != nil { - t.Fatal(err) - } - m := OnlyStrict(p) - for shouldMatch, platforms := range testcase.matches { - for _, matchPlatform := range platforms { - mp, err := Parse(matchPlatform) - if err != nil { - t.Fatal(err) - } - if match := m.Match(mp); shouldMatch != match { - t.Errorf("OnlyStrict(%q).Match(%q) should return %v, but returns %v", testcase.platform, matchPlatform, shouldMatch, match) - } - } - } - }) - } -} diff --git a/platforms/cpuinfo_linux_test.go b/platforms/cpuinfo_linux_test.go deleted file mode 100644 index ecb11509d..000000000 --- a/platforms/cpuinfo_linux_test.go +++ /dev/null @@ -1,139 +0,0 @@ -/* - Copyright The containerd Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -package platforms - -import ( - "errors" - "runtime" - "testing" -) - -func TestCPUVariant(t *testing.T) { - if !isArmArch(runtime.GOARCH) { - t.Skip("only relevant on linux/arm") - } - - variants := []string{"v8", "v7", "v6", "v5", "v4", "v3"} - - p, err := getCPUVariant() - if err != nil { - t.Fatalf("Error getting CPU variant: %v", err) - return - } - - for _, variant := range variants { - if p == variant { - t.Logf("got valid variant as expected: %#v = %#v", p, variant) - return - } - } - - t.Fatalf("could not get valid variant as expected: %v", variants) -} - -func TestGetCPUVariantFromArch(t *testing.T) { - - for _, testcase := range []struct { - name string - input string - output string - expectedErr error - }{ - { - name: "Test aarch64", - input: "aarch64", - output: "8", - expectedErr: nil, - }, - { - name: "Test Armv8 with capital", - input: "Armv8", - output: "8", - expectedErr: nil, - }, - { - name: "Test armv7", - input: "armv7", - output: "7", - expectedErr: nil, - }, - { - name: "Test armv6", - input: "armv6", - output: "6", - expectedErr: nil, - }, - { - name: "Test armv5", - input: "armv5", - output: "5", - expectedErr: nil, - }, - { - name: "Test armv4", - input: "armv4", - output: "4", - expectedErr: nil, - }, - { - name: "Test armv3", - input: "armv3", - output: "3", - expectedErr: nil, - }, - { - name: "Test unknown input", - input: "armv9", - output: "unknown", - expectedErr: nil, - }, - { - name: "Test invalid input which doesn't start with armv", - input: "armxxxx", - output: "", - expectedErr: errInvalidArgument, - }, - { - name: "Test invalid input whose length is less than 5", - input: "armv", - output: "", - expectedErr: errInvalidArgument, - }, - } { - t.Run(testcase.name, func(t *testing.T) { - t.Logf("input: %v", testcase.input) - - variant, err := getCPUVariantFromArch(testcase.input) - - if err == nil { - if testcase.expectedErr != nil { - t.Fatalf("Expect to get error: %v, however no error got", testcase.expectedErr) - } else { - if variant != testcase.output { - t.Fatalf("Expect to get variant: %v, however %v returned", testcase.output, variant) - } - } - - } else { - if !errors.Is(err, testcase.expectedErr) { - t.Fatalf("Expect to get error: %v, however error %v returned", testcase.expectedErr, err) - } - } - }) - - } -} diff --git a/platforms/defaults_unix_test.go b/platforms/defaults_unix_test.go deleted file mode 100644 index 8aba95877..000000000 --- a/platforms/defaults_unix_test.go +++ /dev/null @@ -1,44 +0,0 @@ -//go:build !windows - -/* - Copyright The containerd Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -package platforms - -import ( - "reflect" - "runtime" - "testing" - - specs "github.com/opencontainers/image-spec/specs-go/v1" -) - -func TestDefault(t *testing.T) { - expected := specs.Platform{ - OS: runtime.GOOS, - Architecture: runtime.GOARCH, - Variant: cpuVariant(), - } - p := DefaultSpec() - if !reflect.DeepEqual(p, expected) { - t.Fatalf("default platform not as expected: %#v != %#v", p, expected) - } - - s := DefaultString() - if s != Format(p) { - t.Fatalf("default specifier should match formatted default spec: %v != %v", s, p) - } -} diff --git a/platforms/defaults_windows_test.go b/platforms/defaults_windows_test.go deleted file mode 100644 index ab73ddda0..000000000 --- a/platforms/defaults_windows_test.go +++ /dev/null @@ -1,374 +0,0 @@ -/* - Copyright The containerd Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -package platforms - -import ( - "fmt" - "reflect" - "runtime" - "sort" - "testing" - - imagespec "github.com/opencontainers/image-spec/specs-go/v1" - "github.com/stretchr/testify/assert" - "golang.org/x/sys/windows" -) - -func TestDefault(t *testing.T) { - major, minor, build := windows.RtlGetNtVersionNumbers() - expected := imagespec.Platform{ - OS: runtime.GOOS, - Architecture: runtime.GOARCH, - OSVersion: fmt.Sprintf("%d.%d.%d", major, minor, build), - Variant: cpuVariant(), - } - p := DefaultSpec() - if !reflect.DeepEqual(p, expected) { - t.Fatalf("default platform not as expected: %#v != %#v", p, expected) - } - - s := DefaultString() - if s != Format(p) { - t.Fatalf("default specifier should match formatted default spec: %v != %v", s, p) - } -} - -func TestDefaultMatchComparer(t *testing.T) { - defaultMatcher := Default() - - for _, test := range []struct { - platform imagespec.Platform - match bool - }{ - { - platform: DefaultSpec(), - match: true, - }, - { - platform: imagespec.Platform{ - OS: "linux", - Architecture: runtime.GOARCH, - }, - match: false, - }, - } { - assert.Equal(t, test.match, defaultMatcher.Match(test.platform)) - } - -} - -func TestMatchComparerMatch_WCOW(t *testing.T) { - major, minor, build := windows.RtlGetNtVersionNumbers() - buildStr := fmt.Sprintf("%d.%d.%d", major, minor, build) - m := windowsmatcher{ - Platform: DefaultSpec(), - osVersionPrefix: buildStr, - defaultMatcher: &matcher{ - Platform: Normalize(DefaultSpec()), - }, - } - for _, test := range []struct { - platform imagespec.Platform - match bool - }{ - { - platform: DefaultSpec(), - match: true, - }, - { - platform: imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - OSVersion: buildStr + ".1", - }, - match: true, - }, - { - platform: imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - OSVersion: buildStr + ".2", - }, - match: true, - }, - { - platform: imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - // Use an nonexistent Windows build so we don't get a match. Ws2019's build is 17763/ - OSVersion: "10.0.17762.1", - }, - match: false, - }, - { - platform: imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - // Use an nonexistent Windows build so we don't get a match. Ws2019's build is 17763/ - OSVersion: "10.0.17764.1", - }, - match: false, - }, - { - platform: imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - }, - match: true, - }, - { - platform: imagespec.Platform{ - Architecture: "amd64", - OS: "linux", - }, - match: false, - }, - } { - assert.Equal(t, test.match, m.Match(test.platform), "should match: %t, %s to %s", test.match, m.Platform, test.platform) - } -} - -// TestMatchComparerMatch_ABICheckWCOW checks windows platform matcher -// behavior for stable ABI and non-stable ABI compliant versions -func TestMatchComparerMatch_ABICheckWCOW(t *testing.T) { - platformWS2019 := imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.17763", - } - platformWS2022 := imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.20348", - } - platformWindows11 := imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.22621", - } - matcherWS2019 := windowsmatcher{ - Platform: platformWS2019, - osVersionPrefix: platformWS2019.OSVersion, - defaultMatcher: &matcher{ - Platform: Normalize(platformWS2019), - }, - } - matcherWS2022 := windowsmatcher{ - Platform: platformWS2022, - osVersionPrefix: platformWS2022.OSVersion, - defaultMatcher: &matcher{ - Platform: Normalize(platformWS2022), - }, - } - matcherWindows11 := windowsmatcher{ - Platform: platformWindows11, - osVersionPrefix: platformWindows11.OSVersion, - defaultMatcher: &matcher{ - Platform: Normalize(platformWindows11), - }, - } - - for _, test := range []struct { - hostPlatformMatcher windowsmatcher - testPlatform imagespec.Platform - match bool - }{ - { - hostPlatformMatcher: matcherWS2019, - testPlatform: imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.17763", - }, - match: true, - }, - { - hostPlatformMatcher: matcherWS2019, - testPlatform: imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.20348", - }, - match: false, - }, - { - hostPlatformMatcher: matcherWS2022, - testPlatform: imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.17763", - }, - match: false, - }, - { - hostPlatformMatcher: matcherWS2022, - testPlatform: imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.20348", - }, - match: true, - }, - { - hostPlatformMatcher: matcherWindows11, - testPlatform: imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.17763", - }, - match: false, - }, - { - hostPlatformMatcher: matcherWindows11, - testPlatform: imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.20348", - }, - match: true, - }, - } { - assert.Equal(t, test.match, test.hostPlatformMatcher.Match(test.testPlatform), "should match: %t, %s to %s", test.match, test.hostPlatformMatcher.Platform, test.testPlatform) - } -} - -func TestMatchComparerMatch_LCOW(t *testing.T) { - major, minor, build := windows.RtlGetNtVersionNumbers() - buildStr := fmt.Sprintf("%d.%d.%d", major, minor, build) - m := windowsmatcher{ - Platform: imagespec.Platform{ - OS: "linux", - Architecture: "amd64", - }, - osVersionPrefix: "", - defaultMatcher: &matcher{ - Platform: Normalize(imagespec.Platform{ - OS: "linux", - Architecture: "amd64", - }, - ), - }, - } - for _, test := range []struct { - platform imagespec.Platform - match bool - }{ - { - platform: DefaultSpec(), - match: false, - }, - { - platform: imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - }, - match: false, - }, - { - platform: imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - OSVersion: buildStr + ".2", - }, - match: false, - }, - { - platform: imagespec.Platform{ - Architecture: "amd64", - OS: "windows", - // Use an nonexistent Windows build so we don't get a match. Ws2019's build is 17763/ - OSVersion: "10.0.17762.1", - }, - match: false, - }, - { - platform: imagespec.Platform{ - Architecture: "amd64", - OS: "linux", - }, - match: true, - }, - } { - assert.Equal(t, test.match, m.Match(test.platform), "should match %b, %s to %s", test.match, m.Platform, test.platform) - } -} - -func TestMatchComparerLess(t *testing.T) { - m := windowsmatcher{ - Platform: DefaultSpec(), - osVersionPrefix: "10.0.17763", - defaultMatcher: &matcher{ - Platform: Normalize(DefaultSpec()), - }, - } - platforms := []imagespec.Platform{ - { - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.17764.1", - }, - { - Architecture: "amd64", - OS: "windows", - }, - { - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.17763.1", - }, - { - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.17763.2", - }, - { - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.17762.1", - }, - } - expected := []imagespec.Platform{ - { - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.17763.2", - }, - { - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.17763.1", - }, - { - Architecture: "amd64", - OS: "windows", - }, - { - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.17764.1", - }, - { - Architecture: "amd64", - OS: "windows", - OSVersion: "10.0.17762.1", - }, - } - sort.SliceStable(platforms, func(i, j int) bool { - return m.Less(platforms[i], platforms[j]) - }) - assert.Equal(t, expected, platforms) -} diff --git a/platforms/platforms_test.go b/platforms/platforms_test.go deleted file mode 100644 index c2af02178..000000000 --- a/platforms/platforms_test.go +++ /dev/null @@ -1,376 +0,0 @@ -/* - Copyright The containerd Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -package platforms - -import ( - "path" - "reflect" - "runtime" - "testing" - - specs "github.com/opencontainers/image-spec/specs-go/v1" -) - -func TestParseSelector(t *testing.T) { - var ( - defaultOS = runtime.GOOS - defaultArch = runtime.GOARCH - defaultVariant = "" - ) - - if defaultArch == "arm" && cpuVariant() != "v7" { - defaultVariant = cpuVariant() - } - - for _, testcase := range []struct { - skip bool - input string - expected specs.Platform - matches []specs.Platform - formatted string - }{ - // While wildcards are a valid use case for platform selection, - // addressing these cases is outside the initial scope for this - // package. When we do add platform wildcards, we should add in these - // testcases to ensure that they are correctly represented. - { - skip: true, - input: "*", - expected: specs.Platform{ - OS: "*", - Architecture: "*", - }, - formatted: "*/*", - }, - { - skip: true, - input: "linux/*", - expected: specs.Platform{ - OS: "linux", - Architecture: "*", - }, - formatted: "linux/*", - }, - { - skip: true, - input: "*/arm64", - expected: specs.Platform{ - OS: "*", - Architecture: "arm64", - }, - matches: []specs.Platform{ - { - OS: "*", - Architecture: "aarch64", - }, - { - OS: "*", - Architecture: "aarch64", - Variant: "v8", - }, - { - OS: "*", - Architecture: "arm64", - Variant: "v8", - }, - }, - formatted: "*/arm64", - }, - { - input: "linux/arm64", - expected: specs.Platform{ - OS: "linux", - Architecture: "arm64", - }, - matches: []specs.Platform{ - { - OS: "linux", - Architecture: "aarch64", - }, - { - OS: "linux", - Architecture: "aarch64", - Variant: "v8", - }, - { - OS: "linux", - Architecture: "arm64", - Variant: "v8", - }, - }, - formatted: "linux/arm64", - }, - { - input: "linux/arm64/v8", - expected: specs.Platform{ - OS: "linux", - Architecture: "arm64", - Variant: "v8", - }, - matches: []specs.Platform{ - { - OS: "linux", - Architecture: "aarch64", - }, - { - OS: "linux", - Architecture: "aarch64", - Variant: "v8", - }, - { - OS: "linux", - Architecture: "arm64", - }, - }, - formatted: "linux/arm64/v8", - }, - { - // NOTE(stevvooe): In this case, the consumer can assume this is v7 - // but we leave the variant blank. This will represent the vast - // majority of arm images. - input: "linux/arm", - expected: specs.Platform{ - OS: "linux", - Architecture: "arm", - }, - matches: []specs.Platform{ - { - OS: "linux", - Architecture: "arm", - Variant: "v7", - }, - { - OS: "linux", - Architecture: "armhf", - }, - { - OS: "linux", - Architecture: "arm", - Variant: "7", - }, - }, - formatted: "linux/arm", - }, - { - input: "linux/arm/v6", - expected: specs.Platform{ - OS: "linux", - Architecture: "arm", - Variant: "v6", - }, - matches: []specs.Platform{ - { - OS: "linux", - Architecture: "armel", - }, - }, - formatted: "linux/arm/v6", - }, - { - input: "linux/arm/v7", - expected: specs.Platform{ - OS: "linux", - Architecture: "arm", - Variant: "v7", - }, - matches: []specs.Platform{ - { - OS: "linux", - Architecture: "arm", - }, - { - OS: "linux", - Architecture: "armhf", - }, - }, - formatted: "linux/arm/v7", - }, - { - input: "arm", - expected: specs.Platform{ - OS: defaultOS, - Architecture: "arm", - }, - formatted: path.Join(defaultOS, "arm"), - }, - { - input: "armel", - expected: specs.Platform{ - OS: defaultOS, - Architecture: "arm", - Variant: "v6", - }, - formatted: path.Join(defaultOS, "arm/v6"), - }, - { - input: "armhf", - expected: specs.Platform{ - OS: defaultOS, - Architecture: "arm", - }, - formatted: path.Join(defaultOS, "arm"), - }, - { - input: "Aarch64", - expected: specs.Platform{ - OS: defaultOS, - Architecture: "arm64", - }, - formatted: path.Join(defaultOS, "arm64"), - }, - { - input: "x86_64", - expected: specs.Platform{ - OS: defaultOS, - Architecture: "amd64", - }, - formatted: path.Join(defaultOS, "amd64"), - }, - { - input: "Linux/x86_64", - expected: specs.Platform{ - OS: "linux", - Architecture: "amd64", - }, - formatted: "linux/amd64", - }, - { - input: "i386", - expected: specs.Platform{ - OS: defaultOS, - Architecture: "386", - }, - formatted: path.Join(defaultOS, "386"), - }, - { - input: "linux", - expected: specs.Platform{ - OS: "linux", - Architecture: defaultArch, - Variant: defaultVariant, - }, - formatted: path.Join("linux", defaultArch, defaultVariant), - }, - { - input: "s390x", - expected: specs.Platform{ - OS: defaultOS, - Architecture: "s390x", - }, - formatted: path.Join(defaultOS, "s390x"), - }, - { - input: "linux/s390x", - expected: specs.Platform{ - OS: "linux", - Architecture: "s390x", - }, - formatted: "linux/s390x", - }, - { - input: "macOS", - expected: specs.Platform{ - OS: "darwin", - Architecture: defaultArch, - Variant: defaultVariant, - }, - formatted: path.Join("darwin", defaultArch, defaultVariant), - }, - } { - t.Run(testcase.input, func(t *testing.T) { - if testcase.skip { - t.Skip("this case is not yet supported") - } - p, err := Parse(testcase.input) - if err != nil { - t.Fatal(err) - } - - if !reflect.DeepEqual(p, testcase.expected) { - t.Fatalf("platform did not match expected: %#v != %#v", p, testcase.expected) - } - - m := NewMatcher(p) - - // ensure that match works on the input to the output. - if ok := m.Match(testcase.expected); !ok { - t.Fatalf("expected specifier %q matches %#v", testcase.input, testcase.expected) - } - for _, mc := range testcase.matches { - if ok := m.Match(mc); !ok { - t.Fatalf("expected specifier %q matches %#v", testcase.input, mc) - } - } - - formatted := Format(p) - if formatted != testcase.formatted { - t.Fatalf("unexpected format: %q != %q", formatted, testcase.formatted) - } - - // re-parse the formatted output and ensure we are stable - reparsed, err := Parse(formatted) - if err != nil { - t.Fatalf("error parsing formatted output: %v", err) - } - - if Format(reparsed) != formatted { - t.Fatalf("normalized output did not survive the round trip: %v != %v", Format(reparsed), formatted) - } - }) - } -} - -func TestParseSelectorInvalid(t *testing.T) { - for _, testcase := range []struct { - input string - }{ - { - input: "", // empty - }, - { - input: "/linux/arm", // leading slash - }, - { - input: "linux/arm/", // trailing slash - }, - { - input: "linux /arm", // spaces - }, - { - input: "linux/&arm", // invalid character - }, - { - input: "linux/arm/foo/bar", // too many components - }, - } { - t.Run(testcase.input, func(t *testing.T) { - if _, err := Parse(testcase.input); err == nil { - t.Fatalf("should have received an error") - } - }) - } -} - -func FuzzPlatformsParse(f *testing.F) { - f.Add("linux/amd64") - f.Fuzz(func(t *testing.T, s string) { - pf, err := Parse(s) - if err != nil && (pf.OS != "" || pf.Architecture != "") { - t.Errorf("either %+v or %+v must be nil", err, pf) - } - }) -} diff --git a/platforms/platforms_windows_test.go b/platforms/platforms_windows_test.go deleted file mode 100644 index d5f3883f6..000000000 --- a/platforms/platforms_windows_test.go +++ /dev/null @@ -1,41 +0,0 @@ -/* - Copyright The containerd Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -package platforms - -import ( - "testing" - - specs "github.com/opencontainers/image-spec/specs-go/v1" - "github.com/stretchr/testify/require" -) - -func TestNormalize(t *testing.T) { - require.Equal(t, DefaultSpec(), Normalize(DefaultSpec())) -} - -func TestFallbackOnOSVersion(t *testing.T) { - p := specs.Platform{ - OS: "windows", - Architecture: "amd64", - OSVersion: "99.99.99.99", - } - - other := specs.Platform{OS: p.OS, Architecture: p.Architecture} - - m := NewMatcher(p) - require.True(t, m.Match(other)) -} diff --git a/plugins/cri/images/plugin.go b/plugins/cri/images/plugin.go index eb0c98d9d..c297a28a5 100644 --- a/plugins/cri/images/plugin.go +++ b/plugins/cri/images/plugin.go @@ -29,9 +29,9 @@ import ( "github.com/containerd/containerd/v2/pkg/cri/constants" "github.com/containerd/containerd/v2/pkg/cri/server/images" "github.com/containerd/containerd/v2/pkg/events" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/log" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" ) diff --git a/plugins/diff/walking/plugin/plugin.go b/plugins/diff/walking/plugin/plugin.go index cc2f27ccd..0c5ce67d0 100644 --- a/plugins/diff/walking/plugin/plugin.go +++ b/plugins/diff/walking/plugin/plugin.go @@ -20,9 +20,9 @@ import ( "github.com/containerd/containerd/v2/core/diff" "github.com/containerd/containerd/v2/core/diff/apply" "github.com/containerd/containerd/v2/core/metadata" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/containerd/v2/plugins/diff/walking" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" ) diff --git a/plugins/diff/windows/cimfs.go b/plugins/diff/windows/cimfs.go index 5a14abe06..d4985ce0d 100644 --- a/plugins/diff/windows/cimfs.go +++ b/plugins/diff/windows/cimfs.go @@ -30,8 +30,8 @@ import ( "github.com/containerd/containerd/v2/core/mount" "github.com/containerd/containerd/v2/pkg/archive" "github.com/containerd/containerd/v2/pkg/errdefs" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" ocispec "github.com/opencontainers/image-spec/specs-go/v1" diff --git a/plugins/diff/windows/windows.go b/plugins/diff/windows/windows.go index bdb68c859..d9fec7e12 100644 --- a/plugins/diff/windows/windows.go +++ b/plugins/diff/windows/windows.go @@ -37,9 +37,9 @@ import ( "github.com/containerd/containerd/v2/pkg/epoch" "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/labels" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/log" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" "github.com/opencontainers/go-digest" diff --git a/plugins/sandbox/controller.go b/plugins/sandbox/controller.go index 3b909490f..1020bff73 100644 --- a/plugins/sandbox/controller.go +++ b/plugins/sandbox/controller.go @@ -30,9 +30,9 @@ import ( "github.com/containerd/containerd/v2/pkg/errdefs" "github.com/containerd/containerd/v2/pkg/events" "github.com/containerd/containerd/v2/pkg/events/exchange" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/log" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" diff --git a/plugins/snapshots/blockfile/plugin/plugin.go b/plugins/snapshots/blockfile/plugin/plugin.go index a855efd18..69ee9ca6f 100644 --- a/plugins/snapshots/blockfile/plugin/plugin.go +++ b/plugins/snapshots/blockfile/plugin/plugin.go @@ -19,9 +19,9 @@ package plugin import ( "errors" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/containerd/v2/plugins/snapshots/blockfile" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" ) diff --git a/plugins/snapshots/btrfs/plugin/plugin.go b/plugins/snapshots/btrfs/plugin/plugin.go index bf3ed5886..3dfea38c5 100644 --- a/plugins/snapshots/btrfs/plugin/plugin.go +++ b/plugins/snapshots/btrfs/plugin/plugin.go @@ -23,9 +23,9 @@ import ( ocispec "github.com/opencontainers/image-spec/specs-go/v1" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/containerd/v2/plugins/snapshots/btrfs" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" ) diff --git a/plugins/snapshots/devmapper/plugin/plugin.go b/plugins/snapshots/devmapper/plugin/plugin.go index fd4d5f70b..143916c08 100644 --- a/plugins/snapshots/devmapper/plugin/plugin.go +++ b/plugins/snapshots/devmapper/plugin/plugin.go @@ -22,9 +22,9 @@ import ( "errors" "fmt" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/containerd/v2/plugins/snapshots/devmapper" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" ) diff --git a/plugins/snapshots/native/plugin/plugin.go b/plugins/snapshots/native/plugin/plugin.go index e68367b8d..816735912 100644 --- a/plugins/snapshots/native/plugin/plugin.go +++ b/plugins/snapshots/native/plugin/plugin.go @@ -19,9 +19,9 @@ package plugin import ( "errors" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/containerd/v2/plugins/snapshots/native" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" ) diff --git a/plugins/snapshots/overlay/plugin/plugin.go b/plugins/snapshots/overlay/plugin/plugin.go index 7cffb971c..1ea5d5413 100644 --- a/plugins/snapshots/overlay/plugin/plugin.go +++ b/plugins/snapshots/overlay/plugin/plugin.go @@ -21,10 +21,10 @@ package overlay import ( "errors" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/containerd/v2/plugins/snapshots/overlay" "github.com/containerd/containerd/v2/plugins/snapshots/overlay/overlayutils" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" ) diff --git a/plugins/snapshots/windows/cimfs.go b/plugins/snapshots/windows/cimfs.go index a4e2bbe9c..f60214267 100644 --- a/plugins/snapshots/windows/cimfs.go +++ b/plugins/snapshots/windows/cimfs.go @@ -33,9 +33,9 @@ import ( "github.com/containerd/containerd/v2/core/snapshots" "github.com/containerd/containerd/v2/core/snapshots/storage" "github.com/containerd/containerd/v2/pkg/errdefs" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/log" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" ocispec "github.com/opencontainers/image-spec/specs-go/v1" diff --git a/plugins/snapshots/windows/windows.go b/plugins/snapshots/windows/windows.go index d59496c34..87588eac2 100644 --- a/plugins/snapshots/windows/windows.go +++ b/plugins/snapshots/windows/windows.go @@ -33,10 +33,10 @@ import ( "github.com/containerd/containerd/v2/core/snapshots" "github.com/containerd/containerd/v2/core/snapshots/storage" "github.com/containerd/containerd/v2/pkg/errdefs" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/continuity/fs" "github.com/containerd/log" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" ocispec "github.com/opencontainers/image-spec/specs-go/v1" diff --git a/plugins/transfer/plugin.go b/plugins/transfer/plugin.go index 90185e78b..a3ea0d183 100644 --- a/plugins/transfer/plugin.go +++ b/plugins/transfer/plugin.go @@ -27,9 +27,9 @@ import ( "github.com/containerd/containerd/v2/pkg/imageverifier" "github.com/containerd/containerd/v2/pkg/transfer/local" "github.com/containerd/containerd/v2/pkg/unpack" - "github.com/containerd/containerd/v2/platforms" "github.com/containerd/containerd/v2/plugins" "github.com/containerd/log" + "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" diff --git a/vendor/github.com/containerd/platforms/.gitattributes b/vendor/github.com/containerd/platforms/.gitattributes new file mode 100644 index 000000000..a0717e4b3 --- /dev/null +++ b/vendor/github.com/containerd/platforms/.gitattributes @@ -0,0 +1 @@ +*.go text eol=lf \ No newline at end of file diff --git a/vendor/github.com/containerd/platforms/.golangci.yml b/vendor/github.com/containerd/platforms/.golangci.yml new file mode 100644 index 000000000..a695775df --- /dev/null +++ b/vendor/github.com/containerd/platforms/.golangci.yml @@ -0,0 +1,30 @@ +linters: + enable: + - exportloopref # Checks for pointers to enclosing loop variables + - gofmt + - goimports + - gosec + - ineffassign + - misspell + - nolintlint + - revive + - staticcheck + - tenv # Detects using os.Setenv instead of t.Setenv since Go 1.17 + - unconvert + - unused + - vet + - dupword # Checks for duplicate words in the source code + disable: + - errcheck + +run: + timeout: 5m + skip-dirs: + - api + - cluster + - design + - docs + - docs/man + - releases + - reports + - test # e2e scripts diff --git a/vendor/github.com/containerd/platforms/LICENSE b/vendor/github.com/containerd/platforms/LICENSE new file mode 100644 index 000000000..584149b6e --- /dev/null +++ b/vendor/github.com/containerd/platforms/LICENSE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright The containerd Authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/containerd/platforms/README.md b/vendor/github.com/containerd/platforms/README.md new file mode 100644 index 000000000..2059de771 --- /dev/null +++ b/vendor/github.com/containerd/platforms/README.md @@ -0,0 +1,32 @@ +# platforms + +A Go package for formatting, normalizing and matching container platforms. + +This package is based on the Open Containers Image Spec definition of a [platform](https://github.com/opencontainers/image-spec/blob/main/specs-go/v1/descriptor.go#L52). + +## Platform Specifier + +While the OCI platform specifications provide a tool for components to +specify structured information, user input typically doesn't need the full +context and much can be inferred. To solve this problem, this package introduces +"specifiers". A specifier has the format +`||/[/]`. The user can provide either the +operating system or the architecture or both. + +An example of a common specifier is `linux/amd64`. If the host has a default +runtime that matches this, the user can simply provide the component that +matters. For example, if an image provides `amd64` and `arm64` support, the +operating system, `linux` can be inferred, so they only have to provide +`arm64` or `amd64`. Similar behavior is implemented for operating systems, +where the architecture may be known but a runtime may support images from +different operating systems. + +## Project details + +**platforms** is a containerd sub-project, licensed under the [Apache 2.0 license](./LICENSE). +As a containerd sub-project, you will find the: + * [Project governance](https://github.com/containerd/project/blob/main/GOVERNANCE.md), + * [Maintainers](https://github.com/containerd/project/blob/main/MAINTAINERS), + * and [Contributing guidelines](https://github.com/containerd/project/blob/main/CONTRIBUTING.md) + +information in our [`containerd/project`](https://github.com/containerd/project) repository. \ No newline at end of file diff --git a/platforms/compare.go b/vendor/github.com/containerd/platforms/compare.go similarity index 100% rename from platforms/compare.go rename to vendor/github.com/containerd/platforms/compare.go diff --git a/platforms/cpuinfo.go b/vendor/github.com/containerd/platforms/cpuinfo.go similarity index 100% rename from platforms/cpuinfo.go rename to vendor/github.com/containerd/platforms/cpuinfo.go diff --git a/platforms/cpuinfo_linux.go b/vendor/github.com/containerd/platforms/cpuinfo_linux.go similarity index 100% rename from platforms/cpuinfo_linux.go rename to vendor/github.com/containerd/platforms/cpuinfo_linux.go diff --git a/platforms/cpuinfo_other.go b/vendor/github.com/containerd/platforms/cpuinfo_other.go similarity index 100% rename from platforms/cpuinfo_other.go rename to vendor/github.com/containerd/platforms/cpuinfo_other.go diff --git a/platforms/database.go b/vendor/github.com/containerd/platforms/database.go similarity index 100% rename from platforms/database.go rename to vendor/github.com/containerd/platforms/database.go diff --git a/platforms/defaults.go b/vendor/github.com/containerd/platforms/defaults.go similarity index 100% rename from platforms/defaults.go rename to vendor/github.com/containerd/platforms/defaults.go diff --git a/platforms/defaults_darwin.go b/vendor/github.com/containerd/platforms/defaults_darwin.go similarity index 100% rename from platforms/defaults_darwin.go rename to vendor/github.com/containerd/platforms/defaults_darwin.go diff --git a/platforms/defaults_freebsd.go b/vendor/github.com/containerd/platforms/defaults_freebsd.go similarity index 100% rename from platforms/defaults_freebsd.go rename to vendor/github.com/containerd/platforms/defaults_freebsd.go diff --git a/platforms/defaults_unix.go b/vendor/github.com/containerd/platforms/defaults_unix.go similarity index 100% rename from platforms/defaults_unix.go rename to vendor/github.com/containerd/platforms/defaults_unix.go diff --git a/platforms/defaults_windows.go b/vendor/github.com/containerd/platforms/defaults_windows.go similarity index 100% rename from platforms/defaults_windows.go rename to vendor/github.com/containerd/platforms/defaults_windows.go diff --git a/platforms/errors.go b/vendor/github.com/containerd/platforms/errors.go similarity index 100% rename from platforms/errors.go rename to vendor/github.com/containerd/platforms/errors.go diff --git a/platforms/platforms.go b/vendor/github.com/containerd/platforms/platforms.go similarity index 100% rename from platforms/platforms.go rename to vendor/github.com/containerd/platforms/platforms.go diff --git a/platforms/platforms_other.go b/vendor/github.com/containerd/platforms/platforms_other.go similarity index 100% rename from platforms/platforms_other.go rename to vendor/github.com/containerd/platforms/platforms_other.go diff --git a/platforms/platforms_windows.go b/vendor/github.com/containerd/platforms/platforms_windows.go similarity index 100% rename from platforms/platforms_windows.go rename to vendor/github.com/containerd/platforms/platforms_windows.go diff --git a/vendor/modules.txt b/vendor/modules.txt index 8694cbbe5..962f4a870 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -139,6 +139,9 @@ github.com/containerd/nri/pkg/net/multiplex github.com/containerd/nri/pkg/runtime-tools/generate github.com/containerd/nri/pkg/stub github.com/containerd/nri/types/v1 +# github.com/containerd/platforms v0.1.1 +## explicit; go 1.20 +github.com/containerd/platforms # github.com/containerd/plugin v0.0.0-20231101173250-7ec69893e1e7 ## explicit; go 1.20 github.com/containerd/plugin