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 e041783ec6..6c2d3a04b3 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 c066fead93..6b19b99285 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 62c84fc7c9..24b64226d2 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 5efd18081f..6c44615763 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 e89d5e703a..d0b59a63bd 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 7615f94f9e..1dd7458eb0 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 298508ad10..3fa0c1e93f 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 4f0ea8c4fd..8ad94c4f60 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 e710926210..92864e5e16 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 a875e8c600..79ea51bd86 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 5cee5e67d0..ce1c0957e5 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 6c2d3a04b3..32203299dd 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 b0055c3668..7288f5877b 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 6b19b99285..d68cb91a1e 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 c86f1bbd63..6082d9f240 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 24b64226d2..2735624112 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 e8dc6bd0e9..a50f11f851 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 456b5645f4..23339076e8 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 6e3caf657d..8432d92a4e 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 d3eba78a27..7f83a09df9 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 8d54ad4e3a..18dde7cca5 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 a43e32e059..3ffa163ceb 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 7e6dd5e0cb..bf558affc8 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 dae712b9b5..664899cfbf 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 9a2e409b63..785845ce6e 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 f9bf34f353..30bafff943 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 d0050484bf..4f19109bf8 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 540c468988..5a9ab4d74b 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 9a38d2b6e9..50913dd395 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 2bd51940ce..7a1ab8c92f 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 6e75fd8edb..c2d602569f 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 6f4c7acffa..e2e1f91ab9 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 d0b59a63bd..c894efe5b1 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 dd4280c777..70b7798de5 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 1dd7458eb0..ee27b35f89 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 ab572e397a..0ea5b4dbac 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 3fa0c1e93f..cd796b373f 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 83c7f75413..74a0cb98f7 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 8ad94c4f60..271ed0178f 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 063f932c99..2f4afb41bd 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 79ea51bd86..57b82ecab8 100644 --- a/utils/uname_unsupported.go +++ b/utils/uname_unsupported.go @@ -1,4 +1,5 @@ -// +build: !linux !amd64 +// +build !linux !amd64 + package utils import (