Skip to content

Commit f0890f9

Browse files
authored
Merge pull request #5375 from samuelkarp/freebsd-runtime
freebsd: runtime support
2 parents dda530a + b431fe4 commit f0890f9

3 files changed

Lines changed: 43 additions & 5 deletions

File tree

runtime/v2/binary.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,13 @@ func (b *binary) Start(ctx context.Context, opts *types.Any, onClose func()) (_
133133
func (b *binary) Delete(ctx context.Context) (*runtime.Exit, error) {
134134
log.G(ctx).Info("cleaning up dead shim")
135135

136-
// Windows cannot delete the current working directory while an
137-
// executable is in use with it. For the cleanup case we invoke with the
138-
// default work dir and forward the bundle path on the cmdline.
136+
// On Windows and FreeBSD, the current working directory of the shim should
137+
// not be the bundle path during the delete operation. Instead, we invoke
138+
// with the default work dir and forward the bundle path on the cmdline.
139+
// Windows cannot delete the current working directory while an executable
140+
// is in use with it. On FreeBSD, fork/exec can fail.
139141
var bundlePath string
140-
if gruntime.GOOS != "windows" {
142+
if gruntime.GOOS != "windows" && gruntime.GOOS != "freebsd" {
141143
bundlePath = b.bundle.Path
142144
}
143145

@@ -160,6 +162,7 @@ func (b *binary) Delete(ctx context.Context) (*runtime.Exit, error) {
160162
cmd.Stdout = out
161163
cmd.Stderr = errb
162164
if err := cmd.Run(); err != nil {
165+
log.G(ctx).WithField("cmd", cmd).WithError(err).Error("failed to delete")
163166
return nil, errors.Wrapf(err, "%s", errb.String())
164167
}
165168
s := errb.String()

services/tasks/local_freebsd.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// +build freebsd
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 FreeBSD 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: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// +build !windows
1+
// +build !windows,!freebsd
22

33
/*
44
Copyright The containerd Authors.

0 commit comments

Comments
 (0)