Hello community, here is the log from the commit of package docker for openSUSE:Factory checked in at 2015-09-17 09:20:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/docker (Old) and /work/SRC/openSUSE:Factory/.docker.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "docker" Changes: -------- --- /work/SRC/openSUSE:Factory/docker/docker.changes 2015-08-23 17:37:26.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.docker.new/docker.changes 2015-09-17 09:20:36.000000000 +0200 @@ -1,0 +2,24 @@ +Thu Sep 10 22:33:01 UTC 2015 - jmassaguer...@suse.com + +- Update docker to 1.8.2 version + + see detailed changelog in + + https://github.com/docker/docker/releases/tag/v1.8.2 + +- devicemapper: fix zero-sized field access + Fix issue #15279: does not build with Go 1.5 tip + Due to golang/go@7904946 + the devices field is dropped. + + This solution works on go1.4 and go1.5 + + See more in https://github.com/docker/docker/pull/15404 + + This fix was not included in v1.8.2. See previous link + on why. + + fix_15279.patch: contains the patch for issue#15279 + + +------------------------------------------------------------------- Old: ---- docker-1.8.1.tar.bz2 New: ---- docker-1.8.2.tar.gz fix_15279.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ docker.spec ++++++ --- /var/tmp/diff_new_pack.rYjn3d/_old 2015-09-17 09:20:37.000000000 +0200 +++ /var/tmp/diff_new_pack.rYjn3d/_new 2015-09-17 09:20:37.000000000 +0200 @@ -16,16 +16,16 @@ # -%define git_version 786b29d +%define git_version 0a8c2e3 %define go_arches %ix86 x86_64 Name: docker -Version: 1.8.1 +Version: 1.8.2 Release: 0 Summary: The Linux container runtime License: Apache-2.0 Group: System/Management Url: http://www.docker.io -Source: %{name}-%{version}.tar.bz2 +Source: %{name}-%{version}.tar.gz Source1: docker.service Source3: 80-docker.rules Source4: sysconfig.docker @@ -43,6 +43,7 @@ Patch0: fix-docker-init.patch # PATCH-FIX-OPENSUSE libcontainer-apparmor-fixes.patch -- mount rules aren't supported in our apparmor Patch1: libcontainer-apparmor-fixes.patch +Patch2: fix_15279.patch # Required to overcome some limitations of gcc-go: https://groups.google.com/forum/#!msg/golang-nuts/SlGCPYkjxo4/4DjcjXRCqAkJ # Right now docker passes the sha1sum of the dockerinit binary to the docker binary at build time # We cannot do that, right now a quick and really dirty way to get it running is @@ -141,6 +142,7 @@ %setup -q -n docker-%{version} %patch0 -p1 %patch1 -p1 +%patch2 -p1 %ifnarch %go_arches %patch100 -p1 %patch101 -p0 ++++++ fix_15279.patch ++++++ diff -Naur a/daemon/graphdriver/devmapper/deviceset.go b/daemon/graphdriver/devmapper/deviceset.go --- a/daemon/graphdriver/devmapper/deviceset.go 2015-09-10 20:43:43.000000000 +0200 +++ b/daemon/graphdriver/devmapper/deviceset.go 2015-09-11 00:27:54.818876198 +0200 @@ -1482,12 +1482,16 @@ if err != nil { return err } - if d, err := devicemapper.GetDeps(devname); err == nil { - // Access to more Debug output - logrus.Debugf("[devmapper] devicemapper.GetDeps() %s: %#v", devname, d) + + if devinfo.Exists == 0 { + return nil + } + if err := devicemapper.RemoveDevice(devname); err != nil { + return err } - if devinfo.Exists != 0 { - return devicemapper.RemoveDevice(devname) + + if d, err := devicemapper.GetDeps(devname); err == nil { + logrus.Warnf("[devmapper] device %s still has %d active dependents", devname, d.Count) } return nil diff -Naur a/pkg/devicemapper/devmapper_wrapper.go b/pkg/devicemapper/devmapper_wrapper.go --- a/pkg/devicemapper/devmapper_wrapper.go 2015-09-10 20:43:43.000000000 +0200 +++ b/pkg/devicemapper/devmapper_wrapper.go 2015-09-11 00:27:54.819876198 +0200 @@ -38,7 +38,10 @@ */ import "C" -import "unsafe" +import ( + "reflect" + "unsafe" +) type ( CDmTask C.struct_dm_task @@ -184,12 +187,21 @@ if Cdeps == nil { return nil } + + // golang issue: https://github.com/golang/go/issues/11925 + hdr := reflect.SliceHeader{ + Data: uintptr(unsafe.Pointer(uintptr(unsafe.Pointer(Cdeps)) + unsafe.Sizeof(*Cdeps))), + Len: int(Cdeps.count), + Cap: int(Cdeps.count), + } + devices := *(*[]C.uint64_t)(unsafe.Pointer(&hdr)) + deps := &Deps{ Count: uint32(Cdeps.count), Filler: uint32(Cdeps.filler), } - for _, device := range Cdeps.device { - deps.Device = append(deps.Device, (uint64)(device)) + for _, device := range devices { + deps.Device = append(deps.Device, uint64(device)) } return deps }