make docker compile on freebsd

Signed-off-by: Alexey Guskov <lexag@mail.ru>
This commit is contained in:
Alexey Guskov 2015-07-29 21:25:56 +03:00
parent 2cd058ce4f
commit 26c03d561a
25 changed files with 154 additions and 12 deletions

View file

@ -1,4 +1,4 @@
// +build linux
// +build freebsd linux
package server

View file

@ -1,4 +1,4 @@
// +build linux
// +build freebsd linux
package builder

View file

@ -1,3 +1,5 @@
// +build linux freebsd
package daemon
import (

View file

@ -1,4 +1,4 @@
// +build !windows
// +build linux freebsd
package daemon

View file

@ -1,4 +1,4 @@
// +build exclude_graphdriver_aufs,linux
// +build exclude_graphdriver_aufs,linux freebsd
package daemon

View file

@ -1,4 +1,4 @@
// +build !exclude_graphdriver_zfs,linux
// +build !exclude_graphdriver_zfs,linux !exclude_graphdriver_zfs,freebsd
package daemon

9
daemon/exec_freebsd.go Normal file
View file

@ -0,0 +1,9 @@
// +build freebsd
package daemon
// checkExecSupport returns an error if the exec driver does not support exec,
// or nil if it is supported.
func checkExecSupport(drivername string) error {
return nil
}

View file

@ -0,0 +1,19 @@
// +build freebsd
package execdrivers
import (
"fmt"
"github.com/docker/docker/daemon/execdriver"
"github.com/docker/docker/pkg/sysinfo"
)
// NewDriver returns a new execdriver.Driver from the given name configured with the provided options.
func NewDriver(name string, options []string, root, libPath, initPath string, sysInfo *sysinfo.SysInfo) (execdriver.Driver, error) {
switch name {
case "jail":
return nil, fmt.Errorf("jail driver not yet supported on FreeBSD")
}
return nil, fmt.Errorf("unknown exec driver %s", name)
}

View file

@ -0,0 +1,8 @@
package graphdriver
var (
// Slice of drivers that should be used in an order
priority = []string{
"zfs",
}
)

View file

@ -1,4 +1,4 @@
// +build !linux,!windows
// +build !linux,!windows,!freebsd
package graphdriver

View file

@ -1,4 +1,4 @@
// +build linux
// +build linux freebsd
package zfs

14
daemon/stats_freebsd.go Normal file
View file

@ -0,0 +1,14 @@
package daemon
import (
"github.com/docker/docker/api/types"
"github.com/opencontainers/runc/libcontainer"
)
// convertStatsToAPITypes converts the libcontainer.Stats to the api specific
// structs. This is done to preserve API compatibility and versioning.
func convertStatsToAPITypes(ls *libcontainer.Stats) *types.Stats {
// TODO FreeBSD. Refactor accordingly to fill in stats.
s := &types.Stats{}
return s
}

9
daemon/utils_freebsd.go Normal file
View file

@ -0,0 +1,9 @@
package daemon
import (
"github.com/docker/docker/runconfig"
)
func mergeLxcConfIntoOptions(hostConfig *runconfig.HostConfig) ([]string, error) {
return nil, nil
}

7
docker/daemon_linux.go Normal file
View file

@ -0,0 +1,7 @@
// +build daemon
package main
import (
_ "github.com/docker/docker/daemon/execdriver/lxc"
)

View file

@ -11,7 +11,6 @@ import (
"github.com/docker/docker/daemon"
"github.com/docker/docker/pkg/system"
_ "github.com/docker/docker/daemon/execdriver/lxc"
_ "github.com/docker/docker/daemon/execdriver/native"
)

View file

@ -1,4 +1,4 @@
// +build linux
// +build linux freebsd
package directory

View file

@ -0,0 +1,18 @@
package operatingsystem
import (
"errors"
)
// GetOperatingSystem gets the name of the current operating system.
func GetOperatingSystem() (string, error) {
// TODO: Implement OS detection
return "", errors.New("Cannot detect OS version")
}
// IsContainerized returns true if we are running inside a container.
// No-op on FreeBSD, always returns false.
func IsContainerized() (bool, error) {
// TODO: Implement jail detection
return false, errors.New("Cannot detect if we are in container")
}

View file

@ -0,0 +1,23 @@
// +build freebsd
package reexec
import (
"os/exec"
)
// Self returns the path to the current process's binary.
// Uses os.Args[0].
func Self() string {
return naiveSelf()
}
// Command returns *exec.Cmd which have Path as current binary.
// For example if current binary is "docker" at "/usr/bin/", then cmd.Path will
// be set to "/usr/bin/docker".
func Command(args ...string) *exec.Cmd {
return &exec.Cmd{
Path: Self(),
Args: args,
}
}

View file

@ -1,4 +1,4 @@
// +build !linux,!windows
// +build !linux,!windows,!freebsd
package reexec

View file

@ -1,4 +1,4 @@
// +build linux
// +build linux freebsd
package sockets

View file

@ -0,0 +1,7 @@
package sysinfo
// TODO FreeBSD
func New(quiet bool) *SysInfo {
sysInfo := &SysInfo{}
return sysInfo
}

View file

@ -0,0 +1,27 @@
package system
import (
"syscall"
)
// fromStatT converts a syscall.Stat_t type to a system.Stat_t type
func fromStatT(s *syscall.Stat_t) (*Stat_t, error) {
return &Stat_t{size: s.Size,
mode: uint32(s.Mode),
uid: s.Uid,
gid: s.Gid,
rdev: uint64(s.Rdev),
mtim: s.Mtimespec}, nil
}
// Stat takes a path to a file and returns
// a system.Stat_t type pertaining to that file.
//
// Throws an error if the file does not exist
func Stat(path string) (*Stat_t, error) {
s := &syscall.Stat_t{}
if err := syscall.Stat(path, s); err != nil {
return nil, err
}
return fromStatT(s)
}

View file

@ -1,4 +1,4 @@
// +build !linux,!windows
// +build !linux,!windows,!freebsd
package system