diff --git a/builder/dockerfile/evaluator.go b/builder/dockerfile/evaluator.go index 270e3a4ffe..905675d0e0 100644 --- a/builder/dockerfile/evaluator.go +++ b/builder/dockerfile/evaluator.go @@ -21,7 +21,6 @@ package dockerfile import ( "fmt" - "runtime" "strings" "github.com/docker/docker/builder/dockerfile/command" @@ -200,16 +199,3 @@ func (b *Builder) dispatch(stepN int, ast *parser.Node) error { return fmt.Errorf("Unknown instruction: %s", upperCasedCmd) } - -// platformSupports is a short-term function to give users a quality error -// message if a Dockerfile uses a command not supported on the platform. -func platformSupports(command string) error { - if runtime.GOOS != "windows" { - return nil - } - switch command { - case "expose", "user", "stopsignal", "arg": - return fmt.Errorf("The daemon on this platform does not support the command '%s'", command) - } - return nil -} diff --git a/builder/dockerfile/evaluator_unix.go b/builder/dockerfile/evaluator_unix.go new file mode 100644 index 0000000000..28fd5b156b --- /dev/null +++ b/builder/dockerfile/evaluator_unix.go @@ -0,0 +1,9 @@ +// +build !windows + +package dockerfile + +// platformSupports is a short-term function to give users a quality error +// message if a Dockerfile uses a command not supported on the platform. +func platformSupports(command string) error { + return nil +} diff --git a/builder/dockerfile/evaluator_windows.go b/builder/dockerfile/evaluator_windows.go new file mode 100644 index 0000000000..d79dd62980 --- /dev/null +++ b/builder/dockerfile/evaluator_windows.go @@ -0,0 +1,26 @@ +// +build windows + +package dockerfile + +import ( + "fmt" + + "github.com/Microsoft/hcsshim" +) + +// platformSupports is a short-term function to give users a quality error +// message if a Dockerfile uses a command not supported on the platform. +func platformSupports(command string) error { + switch command { + // TODO Windows TP5. Expose can be removed from here once TP4 is + // no longer supported. + case "expose": + if !hcsshim.IsTP4() { + break + } + fallthrough + case "user", "stopsignal", "arg": + return fmt.Errorf("The daemon on this platform does not support the command '%s'", command) + } + return nil +}