Skip to content

Commit a43fa9f

Browse files
committed
darwin: runtime support
This commit attemts to support containerd on darwin platform. With an external runtime shim, ctr run should work with, for instance, --runtime=io.containerd.runu.v1. An example of runtime and shim is managed under different repository (github.com/ukontainer/runu/). Signed-off-by: Hajime Tazaki <[email protected]>
1 parent 5dd3879 commit a43fa9f

5 files changed

Lines changed: 84 additions & 6 deletions

File tree

defaults/defaults_darwin.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ const (
3030
// DefaultFIFODir is the default location used by client-side cio library
3131
// to store FIFOs.
3232
DefaultFIFODir = "/var/run/containerd/fifo"
33-
// DefaultRuntime is the default Darwin runtime.
34-
// NOTE: there is no runtime on Darwin as of now.
33+
// DefaultRuntime would be a multiple of choices, thus empty
3534
DefaultRuntime = ""
3635
// DefaultConfigDir is the default location for config files.
3736
DefaultConfigDir = "/etc/containerd"

platforms/defaults_darwin.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// +build darwin
2+
3+
/*
4+
Copyright The containerd Authors.
5+
6+
Licensed under the Apache License, Version 2.0 (the "License");
7+
you may not use this file except in compliance with the License.
8+
You may obtain a copy of the License at
9+
10+
http://www.apache.org/licenses/LICENSE-2.0
11+
12+
Unless required by applicable law or agreed to in writing, software
13+
distributed under the License is distributed on an "AS IS" BASIS,
14+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
See the License for the specific language governing permissions and
16+
limitations under the License.
17+
*/
18+
19+
package platforms
20+
21+
import (
22+
"runtime"
23+
24+
specs "github.com/opencontainers/image-spec/specs-go/v1"
25+
)
26+
27+
// DefaultSpec returns the current platform's default platform specification.
28+
func DefaultSpec() specs.Platform {
29+
return specs.Platform{
30+
OS: runtime.GOOS,
31+
Architecture: runtime.GOARCH,
32+
// The Variant field will be empty if arch != ARM.
33+
Variant: cpuVariant(),
34+
}
35+
}
36+
37+
// Default returns the default matcher for the platform.
38+
func Default() MatchComparer {
39+
return Ordered(DefaultSpec(), specs.Platform{
40+
// darwin runtime also supports Linux binary via runu/LKL
41+
OS: "linux",
42+
Architecture: runtime.GOARCH,
43+
})
44+
}

platforms/defaults_unix.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
//go:build !windows
2-
// +build !windows
1+
//go:build !windows && !darwin
2+
// +build !windows,!darwin
33

44
/*
55
Copyright The containerd Authors.

services/tasks/local_darwin.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// +build darwin
2+
3+
/*
4+
Copyright The containerd Authors.
5+
6+
Licensed under the Apache License, Version 2.0 (the "License");
7+
you may not use this file except in compliance with the License.
8+
You may obtain a copy of the License at
9+
10+
http://www.apache.org/licenses/LICENSE-2.0
11+
12+
Unless required by applicable law or agreed to in writing, software
13+
distributed under the License is distributed on an "AS IS" BASIS,
14+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
See the License for the specific language governing permissions and
16+
limitations under the License.
17+
*/
18+
19+
package tasks
20+
21+
import (
22+
"github.com/containerd/containerd/plugin"
23+
"github.com/containerd/containerd/runtime"
24+
)
25+
26+
var tasksServiceRequires = []plugin.Type{
27+
plugin.RuntimePluginV2,
28+
plugin.MetadataPlugin,
29+
plugin.TaskMonitorPlugin,
30+
}
31+
32+
// loadV1Runtimes on darwin returns an empty map. There are no v1 runtimes
33+
func loadV1Runtimes(ic *plugin.InitContext) (map[string]runtime.PlatformRuntime, error) {
34+
return make(map[string]runtime.PlatformRuntime), nil
35+
}

services/tasks/local_unix.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
//go:build !windows && !freebsd
2-
// +build !windows,!freebsd
1+
//go:build !windows && !freebsd && !darwin
2+
// +build !windows,!freebsd,!darwin
33

44
/*
55
Copyright The containerd Authors.

0 commit comments

Comments
 (0)