From 45dd051e8ee2e0e18d8ffec99f65878c20bd11e9 Mon Sep 17 00:00:00 2001 From: "Guillaume J. Charmes" Date: Thu, 30 Jan 2014 22:41:10 +0000 Subject: [PATCH 1/2] Remove all darwin specific files and use more generic _unsupported with build tags. Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes (github: creack) --- archive/{stat_darwin.go => stat_unsupported.go} | 1 + .../lxc/{lxc_init_darwin.go => lxc_init_unsupported.go} | 1 + graphdriver/aufs/{mount_darwin.go => mount_unsupported.go} | 1 + graphdriver/btrfs/dummy_unsupported.go | 2 +- pkg/mount/{flags_darwin.go => flags_unsupported.go} | 1 + pkg/mount/{mounter_darwin.go => mounter_unsupported.go} | 1 + pkg/netlink/{netlink_darwin.go => netlink_unsupported.go} | 1 + reflink_copy_darwin.go => reflink_copy_unsupported.go | 1 + utils/fs.go | 6 ++++-- utils/{uname_darwin.go => uname_unsupported.go} | 3 ++- 10 files changed, 14 insertions(+), 4 deletions(-) rename archive/{stat_darwin.go => stat_unsupported.go} (92%) rename execdriver/lxc/{lxc_init_darwin.go => lxc_init_unsupported.go} (78%) rename graphdriver/aufs/{mount_darwin.go => mount_unsupported.go} (89%) rename pkg/mount/{flags_darwin.go => flags_unsupported.go} (78%) rename pkg/mount/{mounter_darwin.go => mounter_unsupported.go} (88%) rename pkg/netlink/{netlink_darwin.go => netlink_unsupported.go} (96%) rename reflink_copy_darwin.go => reflink_copy_unsupported.go (91%) rename utils/{uname_darwin.go => uname_unsupported.go} (52%) diff --git a/archive/stat_darwin.go b/archive/stat_unsupported.go similarity index 92% rename from archive/stat_darwin.go rename to archive/stat_unsupported.go index e041783ec..6c2d3a04b 100644 --- a/archive/stat_darwin.go +++ b/archive/stat_unsupported.go @@ -1,3 +1,4 @@ +// +build: !linux !amd64 package archive import "syscall" diff --git a/execdriver/lxc/lxc_init_darwin.go b/execdriver/lxc/lxc_init_unsupported.go similarity index 78% rename from execdriver/lxc/lxc_init_darwin.go rename to execdriver/lxc/lxc_init_unsupported.go index c066fead9..6b19b9928 100644 --- a/execdriver/lxc/lxc_init_darwin.go +++ b/execdriver/lxc/lxc_init_unsupported.go @@ -1,3 +1,4 @@ +// +build: !linux !amd64 package lxc func setHostname(hostname string) error { diff --git a/graphdriver/aufs/mount_darwin.go b/graphdriver/aufs/mount_unsupported.go similarity index 89% rename from graphdriver/aufs/mount_darwin.go rename to graphdriver/aufs/mount_unsupported.go index 62c84fc7c..24b64226d 100644 --- a/graphdriver/aufs/mount_darwin.go +++ b/graphdriver/aufs/mount_unsupported.go @@ -1,3 +1,4 @@ +// +build: !linux !amd64 package aufs import "errors" diff --git a/graphdriver/btrfs/dummy_unsupported.go b/graphdriver/btrfs/dummy_unsupported.go index 5efd18081..6c4461576 100644 --- a/graphdriver/btrfs/dummy_unsupported.go +++ b/graphdriver/btrfs/dummy_unsupported.go @@ -1,3 +1,3 @@ -// +build !linux +// +build !linux !amd64 package btrfs diff --git a/pkg/mount/flags_darwin.go b/pkg/mount/flags_unsupported.go similarity index 78% rename from pkg/mount/flags_darwin.go rename to pkg/mount/flags_unsupported.go index e89d5e703..d0b59a63b 100644 --- a/pkg/mount/flags_darwin.go +++ b/pkg/mount/flags_unsupported.go @@ -1,3 +1,4 @@ +// +build: !linux !amd64 package mount func parseOptions(options string) (int, string) { diff --git a/pkg/mount/mounter_darwin.go b/pkg/mount/mounter_unsupported.go similarity index 88% rename from pkg/mount/mounter_darwin.go rename to pkg/mount/mounter_unsupported.go index 7615f94f9..1dd7458eb 100644 --- a/pkg/mount/mounter_darwin.go +++ b/pkg/mount/mounter_unsupported.go @@ -1,3 +1,4 @@ +// +build: !linux !amd64 package mount func mount(device, target, mType string, flag uintptr, data string) error { diff --git a/pkg/netlink/netlink_darwin.go b/pkg/netlink/netlink_unsupported.go similarity index 96% rename from pkg/netlink/netlink_darwin.go rename to pkg/netlink/netlink_unsupported.go index 298508ad1..3fa0c1e93 100644 --- a/pkg/netlink/netlink_darwin.go +++ b/pkg/netlink/netlink_unsupported.go @@ -1,3 +1,4 @@ +// +build: !linux !amd64 package netlink import ( diff --git a/reflink_copy_darwin.go b/reflink_copy_unsupported.go similarity index 91% rename from reflink_copy_darwin.go rename to reflink_copy_unsupported.go index 4f0ea8c4f..8ad94c4f6 100644 --- a/reflink_copy_darwin.go +++ b/reflink_copy_unsupported.go @@ -1,3 +1,4 @@ +// +build: !linux !amd64 package docker import ( diff --git a/utils/fs.go b/utils/fs.go index e71092621..92864e5e1 100644 --- a/utils/fs.go +++ b/utils/fs.go @@ -24,10 +24,12 @@ func TreeSize(dir string) (size int64, err error) { // Check inode to handle hard links correctly inode := fileInfo.Sys().(*syscall.Stat_t).Ino - if _, exists := data[inode]; exists { + // inode is not a uint64 on all platforms. Cast it to avoid issues. + if _, exists := data[uint64(inode)]; exists { return nil } - data[inode] = false + // inode is not a uint64 on all platforms. Cast it to avoid issues. + data[uint64(inode)] = false size += s diff --git a/utils/uname_darwin.go b/utils/uname_unsupported.go similarity index 52% rename from utils/uname_darwin.go rename to utils/uname_unsupported.go index a875e8c60..79ea51bd8 100644 --- a/utils/uname_darwin.go +++ b/utils/uname_unsupported.go @@ -1,3 +1,4 @@ +// +build: !linux !amd64 package utils import ( @@ -9,5 +10,5 @@ type Utsname struct { } func uname() (*Utsname, error) { - return nil, errors.New("Kernel version detection is not available on darwin") + return nil, errors.New("Kernel version detection is available only on linux") } From 065dd231dd7d7858df982a8decfade9df936cf63 Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Fri, 31 Jan 2014 03:16:42 -0700 Subject: [PATCH 2/2] Update/fix build tags, Dockerfile, and release.sh for proper building and releasing of linux/386 and linux/arm cross-compiled client binaries Docker-DCO-1.1-Signed-off-by: Andrew Page (github: tianon) --- Dockerfile | 5 +++-- archive/{stat_unsupported.go => stat_darwin.go} | 3 ++- execdriver/lxc/lxc_init_linux.go | 2 ++ execdriver/lxc/lxc_init_unsupported.go | 3 ++- graphdriver/aufs/mount_linux.go | 2 ++ graphdriver/aufs/mount_unsupported.go | 3 ++- graphdriver/btrfs/btrfs.go | 2 +- graphdriver/devmapper/attach_loopback.go | 2 +- graphdriver/devmapper/deviceset.go | 2 +- graphdriver/devmapper/devmapper.go | 2 +- graphdriver/devmapper/devmapper_log.go | 2 +- graphdriver/devmapper/devmapper_test.go | 2 +- graphdriver/devmapper/devmapper_wrapper.go | 2 +- graphdriver/devmapper/driver.go | 2 +- graphdriver/devmapper/driver_test.go | 2 +- graphdriver/devmapper/ioctl.go | 2 +- graphdriver/devmapper/mount.go | 2 +- graphdriver/devmapper/sys.go | 2 +- hack/release.sh | 3 ++- pkg/graphdb/conn_linux.go | 2 ++ pkg/graphdb/{conn_darwin.go => conn_unsupported.go} | 2 ++ pkg/mount/flags_linux.go | 2 ++ pkg/mount/flags_unsupported.go | 3 ++- pkg/mount/mounter_linux.go | 2 ++ pkg/mount/mounter_unsupported.go | 3 ++- pkg/netlink/netlink_linux.go | 2 ++ pkg/netlink/netlink_unsupported.go | 3 ++- reflink_copy_linux.go | 2 ++ reflink_copy_unsupported.go | 3 ++- utils/uname_linux.go | 2 ++ utils/uname_unsupported.go | 3 ++- 31 files changed, 51 insertions(+), 23 deletions(-) rename archive/{stat_unsupported.go => stat_darwin.go} (92%) rename pkg/graphdb/{conn_darwin.go => conn_unsupported.go} (79%) diff --git a/Dockerfile b/Dockerfile index 5cee5e67d..ce1c0957e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -68,8 +68,9 @@ ENV GOPATH /go:/go/src/github.com/dotcloud/docker/vendor RUN cd /usr/local/go/src && ./make.bash --no-clean 2>&1 # Compile Go for cross compilation -ENV DOCKER_CROSSPLATFORMS darwin/amd64 darwin/386 -# TODO add linux/386 and linux/arm +ENV DOCKER_CROSSPLATFORMS linux/386 linux/arm darwin/amd64 darwin/386 +# (set an explicit GOARM of 5 for maximum compatibility) +ENV GOARM 5 RUN cd /usr/local/go/src && bash -xc 'for platform in $DOCKER_CROSSPLATFORMS; do GOOS=${platform%/*} GOARCH=${platform##*/} ./make.bash --no-clean 2>&1; done' # Grab Go's cover tool for dead-simple code coverage testing diff --git a/archive/stat_unsupported.go b/archive/stat_darwin.go similarity index 92% rename from archive/stat_unsupported.go rename to archive/stat_darwin.go index 6c2d3a04b..32203299d 100644 --- a/archive/stat_unsupported.go +++ b/archive/stat_darwin.go @@ -1,4 +1,5 @@ -// +build: !linux !amd64 +// +build !linux !amd64 + package archive import "syscall" diff --git a/execdriver/lxc/lxc_init_linux.go b/execdriver/lxc/lxc_init_linux.go index b0055c366..7288f5877 100644 --- a/execdriver/lxc/lxc_init_linux.go +++ b/execdriver/lxc/lxc_init_linux.go @@ -1,3 +1,5 @@ +// +build amd64 + package lxc import ( diff --git a/execdriver/lxc/lxc_init_unsupported.go b/execdriver/lxc/lxc_init_unsupported.go index 6b19b9928..d68cb91a1 100644 --- a/execdriver/lxc/lxc_init_unsupported.go +++ b/execdriver/lxc/lxc_init_unsupported.go @@ -1,4 +1,5 @@ -// +build: !linux !amd64 +// +build !linux !amd64 + package lxc func setHostname(hostname string) error { diff --git a/graphdriver/aufs/mount_linux.go b/graphdriver/aufs/mount_linux.go index c86f1bbd6..6082d9f24 100644 --- a/graphdriver/aufs/mount_linux.go +++ b/graphdriver/aufs/mount_linux.go @@ -1,3 +1,5 @@ +// +build amd64 + package aufs import "syscall" diff --git a/graphdriver/aufs/mount_unsupported.go b/graphdriver/aufs/mount_unsupported.go index 24b64226d..273562411 100644 --- a/graphdriver/aufs/mount_unsupported.go +++ b/graphdriver/aufs/mount_unsupported.go @@ -1,4 +1,5 @@ -// +build: !linux !amd64 +// +build !linux !amd64 + package aufs import "errors" diff --git a/graphdriver/btrfs/btrfs.go b/graphdriver/btrfs/btrfs.go index e8dc6bd0e..a50f11f85 100644 --- a/graphdriver/btrfs/btrfs.go +++ b/graphdriver/btrfs/btrfs.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,amd64 package btrfs diff --git a/graphdriver/devmapper/attach_loopback.go b/graphdriver/devmapper/attach_loopback.go index 456b5645f..23339076e 100644 --- a/graphdriver/devmapper/attach_loopback.go +++ b/graphdriver/devmapper/attach_loopback.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,amd64 package devmapper diff --git a/graphdriver/devmapper/deviceset.go b/graphdriver/devmapper/deviceset.go index 6e3caf657..8432d92a4 100644 --- a/graphdriver/devmapper/deviceset.go +++ b/graphdriver/devmapper/deviceset.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,amd64 package devmapper diff --git a/graphdriver/devmapper/devmapper.go b/graphdriver/devmapper/devmapper.go index d3eba78a2..7f83a09df 100644 --- a/graphdriver/devmapper/devmapper.go +++ b/graphdriver/devmapper/devmapper.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,amd64 package devmapper diff --git a/graphdriver/devmapper/devmapper_log.go b/graphdriver/devmapper/devmapper_log.go index 8d54ad4e3..18dde7cca 100644 --- a/graphdriver/devmapper/devmapper_log.go +++ b/graphdriver/devmapper/devmapper_log.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,amd64 package devmapper diff --git a/graphdriver/devmapper/devmapper_test.go b/graphdriver/devmapper/devmapper_test.go index a43e32e05..3ffa163ce 100644 --- a/graphdriver/devmapper/devmapper_test.go +++ b/graphdriver/devmapper/devmapper_test.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,amd64 package devmapper diff --git a/graphdriver/devmapper/devmapper_wrapper.go b/graphdriver/devmapper/devmapper_wrapper.go index 7e6dd5e0c..bf558affc 100644 --- a/graphdriver/devmapper/devmapper_wrapper.go +++ b/graphdriver/devmapper/devmapper_wrapper.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,amd64 package devmapper diff --git a/graphdriver/devmapper/driver.go b/graphdriver/devmapper/driver.go index dae712b9b..664899cfb 100644 --- a/graphdriver/devmapper/driver.go +++ b/graphdriver/devmapper/driver.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,amd64 package devmapper diff --git a/graphdriver/devmapper/driver_test.go b/graphdriver/devmapper/driver_test.go index 9a2e409b6..785845ce6 100644 --- a/graphdriver/devmapper/driver_test.go +++ b/graphdriver/devmapper/driver_test.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,amd64 package devmapper diff --git a/graphdriver/devmapper/ioctl.go b/graphdriver/devmapper/ioctl.go index f9bf34f35..30bafff94 100644 --- a/graphdriver/devmapper/ioctl.go +++ b/graphdriver/devmapper/ioctl.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,amd64 package devmapper diff --git a/graphdriver/devmapper/mount.go b/graphdriver/devmapper/mount.go index d0050484b..4f19109bf 100644 --- a/graphdriver/devmapper/mount.go +++ b/graphdriver/devmapper/mount.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,amd64 package devmapper diff --git a/graphdriver/devmapper/sys.go b/graphdriver/devmapper/sys.go index 540c46898..5a9ab4d74 100644 --- a/graphdriver/devmapper/sys.go +++ b/graphdriver/devmapper/sys.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux,amd64 package devmapper diff --git a/hack/release.sh b/hack/release.sh index 9a38d2b6e..50913dd39 100755 --- a/hack/release.sh +++ b/hack/release.sh @@ -151,7 +151,8 @@ release_build() { S3ARCH=i386 ;; arm) - # GOARCH is fine + S3ARCH=armel + # someday, we might potentially support mutliple GOARM values, in which case we might get armhf here too ;; *) echo >&2 "error: can't convert $S3ARCH to an appropriate value for 'uname -m'" diff --git a/pkg/graphdb/conn_linux.go b/pkg/graphdb/conn_linux.go index 2bd51940c..7a1ab8c92 100644 --- a/pkg/graphdb/conn_linux.go +++ b/pkg/graphdb/conn_linux.go @@ -1,3 +1,5 @@ +// +build amd64 + package graphdb import ( diff --git a/pkg/graphdb/conn_darwin.go b/pkg/graphdb/conn_unsupported.go similarity index 79% rename from pkg/graphdb/conn_darwin.go rename to pkg/graphdb/conn_unsupported.go index 6e75fd8ed..c2d602569 100644 --- a/pkg/graphdb/conn_darwin.go +++ b/pkg/graphdb/conn_unsupported.go @@ -1,3 +1,5 @@ +// +build !linux !amd64 + package graphdb func NewSqliteConn(root string) (*Database, error) { diff --git a/pkg/mount/flags_linux.go b/pkg/mount/flags_linux.go index 6f4c7acff..e2e1f91ab 100644 --- a/pkg/mount/flags_linux.go +++ b/pkg/mount/flags_linux.go @@ -1,3 +1,5 @@ +// +build amd64 + package mount import ( diff --git a/pkg/mount/flags_unsupported.go b/pkg/mount/flags_unsupported.go index d0b59a63b..c894efe5b 100644 --- a/pkg/mount/flags_unsupported.go +++ b/pkg/mount/flags_unsupported.go @@ -1,4 +1,5 @@ -// +build: !linux !amd64 +// +build !linux !amd64 + package mount func parseOptions(options string) (int, string) { diff --git a/pkg/mount/mounter_linux.go b/pkg/mount/mounter_linux.go index dd4280c77..70b7798de 100644 --- a/pkg/mount/mounter_linux.go +++ b/pkg/mount/mounter_linux.go @@ -1,3 +1,5 @@ +// +build amd64 + package mount import ( diff --git a/pkg/mount/mounter_unsupported.go b/pkg/mount/mounter_unsupported.go index 1dd7458eb..ee27b35f8 100644 --- a/pkg/mount/mounter_unsupported.go +++ b/pkg/mount/mounter_unsupported.go @@ -1,4 +1,5 @@ -// +build: !linux !amd64 +// +build !linux !amd64 + package mount func mount(device, target, mType string, flag uintptr, data string) error { diff --git a/pkg/netlink/netlink_linux.go b/pkg/netlink/netlink_linux.go index ab572e397..0ea5b4dba 100644 --- a/pkg/netlink/netlink_linux.go +++ b/pkg/netlink/netlink_linux.go @@ -1,3 +1,5 @@ +// +build amd64 + package netlink import ( diff --git a/pkg/netlink/netlink_unsupported.go b/pkg/netlink/netlink_unsupported.go index 3fa0c1e93..cd796b373 100644 --- a/pkg/netlink/netlink_unsupported.go +++ b/pkg/netlink/netlink_unsupported.go @@ -1,4 +1,5 @@ -// +build: !linux !amd64 +// +build !linux !amd64 + package netlink import ( diff --git a/reflink_copy_linux.go b/reflink_copy_linux.go index 83c7f7541..74a0cb98f 100644 --- a/reflink_copy_linux.go +++ b/reflink_copy_linux.go @@ -1,3 +1,5 @@ +// +build amd64 + package docker // FIXME: This could be easily rewritten in pure Go diff --git a/reflink_copy_unsupported.go b/reflink_copy_unsupported.go index 8ad94c4f6..271ed0178 100644 --- a/reflink_copy_unsupported.go +++ b/reflink_copy_unsupported.go @@ -1,4 +1,5 @@ -// +build: !linux !amd64 +// +build !linux !amd64 + package docker import ( diff --git a/utils/uname_linux.go b/utils/uname_linux.go index 063f932c9..2f4afb41b 100644 --- a/utils/uname_linux.go +++ b/utils/uname_linux.go @@ -1,3 +1,5 @@ +// +build amd64 + package utils import ( diff --git a/utils/uname_unsupported.go b/utils/uname_unsupported.go index 79ea51bd8..57b82ecab 100644 --- a/utils/uname_unsupported.go +++ b/utils/uname_unsupported.go @@ -1,4 +1,5 @@ -// +build: !linux !amd64 +// +build !linux !amd64 + package utils import (