From 045dd55a7d652b693ff34cbfcc3a2c97d46fbc4b Mon Sep 17 00:00:00 2001 From: Arnaud Porterie Date: Tue, 19 May 2015 15:09:58 -0700 Subject: [PATCH] Add DOCKER_EXPERIMENTAL environment variable The DOCKER_EXPERIMENTAL environment variable drives the activation of the 'experimental' build tag. Signed-off-by: Arnaud Porterie Upstream-commit: ca6722f1c5e4e2017a71e33579d91ac0d9ea2a25 Component: engine --- components/engine/Makefile | 1 + components/engine/api/client/info.go | 1 + components/engine/api/types/types.go | 1 + components/engine/daemon/info.go | 1 + components/engine/docker/docker.go | 5 +++++ .../docs/sources/reference/api/docker_remote_api_v1.19.md | 1 + components/engine/hack/make.sh | 6 ++++++ components/engine/utils/experimental.go | 7 +++++++ components/engine/utils/stubs.go | 7 +++++++ 9 files changed, 30 insertions(+) create mode 100644 components/engine/utils/experimental.go create mode 100644 components/engine/utils/stubs.go diff --git a/components/engine/Makefile b/components/engine/Makefile index b98424b6c0..054720f921 100644 --- a/components/engine/Makefile +++ b/components/engine/Makefile @@ -7,6 +7,7 @@ DOCKER_ENVS := \ -e BUILDFLAGS \ -e DOCKER_CLIENTONLY \ -e DOCKER_EXECDRIVER \ + -e DOCKER_EXPERIMENTAL \ -e DOCKER_GRAPHDRIVER \ -e DOCKER_STORAGE_OPTS \ -e TESTDIRS \ diff --git a/components/engine/api/client/info.go b/components/engine/api/client/info.go index 06a6f0ec54..918b6bbe7a 100644 --- a/components/engine/api/client/info.go +++ b/components/engine/api/client/info.go @@ -87,6 +87,7 @@ func (cli *DockerCli) CmdInfo(args ...string) error { fmt.Fprintf(cli.out, " %s\n", attribute) } } + fmt.Fprintf(cli.out, "Experimental: %t\n", info.ExperimentalBuild) return nil } diff --git a/components/engine/api/types/types.go b/components/engine/api/types/types.go index 56219f845e..457808f5e9 100644 --- a/components/engine/api/types/types.go +++ b/components/engine/api/types/types.go @@ -168,6 +168,7 @@ type Info struct { NoProxy string Name string Labels []string + ExperimentalBuild bool } // This struct is a temp struct used by execStart diff --git a/components/engine/daemon/info.go b/components/engine/daemon/info.go index 2cd1e5bc65..edec5f9ff7 100644 --- a/components/engine/daemon/info.go +++ b/components/engine/daemon/info.go @@ -85,6 +85,7 @@ func (daemon *Daemon) SystemInfo() (*types.Info, error) { MemTotal: meminfo.MemTotal, DockerRootDir: daemon.Config().Root, Labels: daemon.Config().Labels, + ExperimentalBuild: utils.ExperimentalBuild(), } if httpProxy := os.Getenv("http_proxy"); httpProxy != "" { diff --git a/components/engine/docker/docker.go b/components/engine/docker/docker.go index fd40f4b422..84457b177d 100644 --- a/components/engine/docker/docker.go +++ b/components/engine/docker/docker.go @@ -16,6 +16,7 @@ import ( flag "github.com/docker/docker/pkg/mflag" "github.com/docker/docker/pkg/reexec" "github.com/docker/docker/pkg/term" + "github.com/docker/docker/utils" ) const ( @@ -59,6 +60,10 @@ func main() { setLogLevel(logrus.DebugLevel) } + if utils.ExperimentalBuild() { + logrus.Warn("Running experimental build") + } + if len(flHosts) == 0 { defaultHost := os.Getenv("DOCKER_HOST") if defaultHost == "" || *flDaemon { diff --git a/components/engine/docs/sources/reference/api/docker_remote_api_v1.19.md b/components/engine/docs/sources/reference/api/docker_remote_api_v1.19.md index c9b780ea2b..5fec8b811c 100644 --- a/components/engine/docs/sources/reference/api/docker_remote_api_v1.19.md +++ b/components/engine/docs/sources/reference/api/docker_remote_api_v1.19.md @@ -1620,6 +1620,7 @@ Display system-wide information "Driver": "btrfs", "DriverStatus": [[""]], "ExecutionDriver": "native-0.1", + "ExperimentalBuild": false, "HttpProxy": "http://test:test@localhost:8080", "HttpsProxy": "https://test:test@localhost:8080", "ID": "7TRN:IPZB:QYBB:VPBQ:UMPP:KARE:6ZNR:XE6T:7EWV:PKF4:ZOJD:TPYS", diff --git a/components/engine/hack/make.sh b/components/engine/hack/make.sh index b9c2aef6a8..e43f360e82 100755 --- a/components/engine/hack/make.sh +++ b/components/engine/hack/make.sh @@ -93,6 +93,12 @@ if [ ! "$GOPATH" ]; then exit 1 fi +if [ "$DOCKER_EXPERIMENTAL" ]; then + echo >&2 '# WARNING! DOCKER_EXPERIMENTAL is set: building experimental features' + echo >&2 + DOCKER_BUILDTAGS+=" experimental" +fi + if [ -z "$DOCKER_CLIENTONLY" ]; then DOCKER_BUILDTAGS+=" daemon" fi diff --git a/components/engine/utils/experimental.go b/components/engine/utils/experimental.go new file mode 100644 index 0000000000..b308a59faf --- /dev/null +++ b/components/engine/utils/experimental.go @@ -0,0 +1,7 @@ +// +build experimental + +package utils + +func ExperimentalBuild() bool { + return true +} diff --git a/components/engine/utils/stubs.go b/components/engine/utils/stubs.go new file mode 100644 index 0000000000..b376f0cfb5 --- /dev/null +++ b/components/engine/utils/stubs.go @@ -0,0 +1,7 @@ +// +build !experimental + +package utils + +func ExperimentalBuild() bool { + return false +}