Browse Source

Fix downstream client API build errors on Solaris

The client API at fsouza/go-dockerclient has dependencies on packages in
the docker/docker repository which currently do not build on Solaris. In
particular, stat_unsupported.go makes use of the Mtimespec field of the
syscall.Stat_t struct, which is not present on Solaris, and a number of
Unix-specific packages do not list Solaris in their compile targets.

This commit adds enough support to be able to build
fsouza/go-dockerclient on SmartOS using Go 1.5.1 without affecting other
platforms.

Signed-off-by: James Nugent <james@jen20.com>
James Nugent 9 years ago
parent
commit
c12dbb8c82
3 changed files with 19 additions and 2 deletions
  1. 17 0
      pkg/system/stat_solaris.go
  2. 1 1
      pkg/system/stat_unsupported.go
  3. 1 1
      volume/volume_unix.go

+ 17 - 0
pkg/system/stat_solaris.go

@@ -0,0 +1,17 @@
+// +build solaris
+
+package system
+
+import (
+	"syscall"
+)
+
+// fromStatT creates a system.StatT type from a syscall.Stat_t type
+func fromStatT(s *syscall.Stat_t) (*StatT, error) {
+	return &StatT{size: s.Size,
+		mode: uint32(s.Mode),
+		uid:  s.Uid,
+		gid:  s.Gid,
+		rdev: uint64(s.Rdev),
+		mtim: s.Mtim}, nil
+}

+ 1 - 1
pkg/system/stat_unsupported.go

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

+ 1 - 1
volume/volume_unix.go

@@ -1,4 +1,4 @@
-// +build linux freebsd darwin
+// +build linux freebsd darwin solaris
 
 package volume