From fc54adafaba792a17e24c7930d8a1654fc8782196e001c7f320fdc718dff843d Mon Sep 17 00:00:00 2001 From: Aleksa Sarai Date: Thu, 7 Apr 2016 09:37:14 +0000 Subject: [PATCH] * Add patch from upstream (https://github.com/docker/docker/pull/21723) to fix compilation on Factory and Tumbleweed (which have btrfsprogs >= 4.5). + fix-btrfs-ioctl-structure.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization:containers/docker?expand=0&rev=89 --- docker.changes | 35 ++++++++++++++---------- docker.spec | 4 +++ fix-btrfs-ioctl-structure.patch | 48 +++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 14 deletions(-) create mode 100644 fix-btrfs-ioctl-structure.patch diff --git a/docker.changes b/docker.changes index 3eee7a4..286eac6 100644 --- a/docker.changes +++ b/docker.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu Apr 7 09:35:40 UTC 2016 - asarai@suse.de + +- Add patch from upstream (https://github.com/docker/docker/pull/21723) to fix + compilation on Factory and Tumbleweed (which have btrfsprogs >= 4.5). + + fix-btrfs-ioctl-structure.patch + ------------------------------------------------------------------- Tue Mar 22 15:27:26 UTC 2016 - fcastelli@suse.com @@ -381,11 +388,11 @@ Thu Sep 10 22:33:01 UTC 2015 - jmassaguerpla@suse.com see detailed changelog in - https://github.com/docker/docker/releases/tag/v1.8.2 + https://github.com/docker/docker/releases/tag/v1.8.2 fix bsc#946653 update do docker 1.8.2 -- devicemapper: fix zero-sized field access +- 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. @@ -393,7 +400,7 @@ Thu Sep 10 22:33:01 UTC 2015 - jmassaguerpla@suse.com 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. @@ -421,9 +428,9 @@ Thu Aug 13 09:00:25 UTC 2015 - jmassaguerpla@suse.com - Update to docker 1.8.0: see detailed changelog in - https://github.com/docker/docker/releases/tag/v1.8.0 + https://github.com/docker/docker/releases/tag/v1.8.0 -- remove docker-netns-aarch64.patch: This patch was adding +- remove docker-netns-aarch64.patch: This patch was adding vendor/src/github.com/vishvananda/netns/netns_linux_arm64.go which is now included upstream, so we don't need this patch anymore @@ -433,7 +440,7 @@ Fri Jul 24 14:24:16 UTC 2015 - jmassaguerpla@suse.com - Exclude archs where docker does not build. Otherwise it gets into and infinite loop when building. - We'll fix that later if we want to release for those archs. + We'll fix that later if we want to release for those archs. ------------------------------------------------------------------- Wed Jul 15 08:11:11 UTC 2015 - jmassaguerpla@suse.com @@ -462,18 +469,18 @@ Distribution Fix pulling private images Fix fallback between registry V2 and V1 - + ------------------------------------------------------------------- Fri Jul 10 11:22:00 UTC 2015 - jmassaguerpla@suse.com -- Exclude init scripts other than systemd from the test-package +- Exclude init scripts other than systemd from the test-package ------------------------------------------------------------------- Wed Jul 1 12:38:50 UTC 2015 - jmassaguerpla@suse.com - Exclude intel 32 bits arch. Docker does not built on that. Let's - make it explicit. + make it explicit. ------------------------------------------------------------------- Thu Jun 25 16:49:59 UTC 2015 - dmueller@suse.com @@ -525,7 +532,7 @@ Mon Jun 22 08:48:11 UTC 2015 - fcastelli@suse.com ------------------------------------------------------------------- Tue Jun 9 16:35:46 UTC 2015 - jmassaguerpla@suse.com -- Add test subpackage and fix line numbers in patches +- Add test subpackage and fix line numbers in patches ------------------------------------------------------------------- Fri Jun 5 15:29:45 UTC 2015 - fcastelli@suse.com @@ -698,7 +705,7 @@ Fri Dec 12 16:13:30 UTC 2014 - fcastelli@suse.com * Notable Features since 1.3.0: - Set key=value labels to the daemon (displayed in `docker info`), applied with new `-label` daemon flag - - Add support for `ENV` in Dockerfile of the form: + - Add support for `ENV` in Dockerfile of the form: `ENV name=value name2=value2...` - New Overlayfs Storage Driver - `docker info` now returns an `ID` and `Name` field @@ -1176,7 +1183,7 @@ Wed Feb 19 08:35:27 UTC 2014 - fcastelli@suse.com - Fix broken images API for version less than 1.7 - Use the right encoding for all API endpoints which return JSON - Move remote api client to api/ - - Queue calls to the API using generic socket wait + - Queue calls to the API using generic socket wait * Runtime: - Fix the use of custom settings for bridges and custom bridges - Refactor the devicemapper code to avoid many mount/unmount race @@ -1299,7 +1306,7 @@ Fri Jan 10 10:44:23 UTC 2014 - fcastelli@suse.com * Do not add hostname when networking is disabled * Return most recent image from the cache by date * Return all errors from docker wait - * Add Content-Type Header "application/json" to GET /version and /info responses + * Add Content-Type Header "application/json" to GET /version and /info responses * Other: - Update DCO to version 1.1 - Update Makefile to use "docker:GIT_BRANCH" as the generated image name @@ -1318,7 +1325,7 @@ Fri Jan 10 10:44:23 UTC 2014 - fcastelli@suse.com - Fix for wrong version warning on master instead of latest * Runtime: - Only get the image's rootfs when we need to calculate the image size - - Correctly handle unmapping UDP ports + - Correctly handle unmapping UDP ports - Make CopyFileWithTar use a pipe instead of a buffer to save memory on docker build - Fix login message to say pull instead of push - Fix "docker load" help by removing "SOURCE" prompt and mentioning STDIN diff --git a/docker.spec b/docker.spec index d6e8b40..49ab1df 100644 --- a/docker.spec +++ b/docker.spec @@ -49,6 +49,9 @@ Patch0: fix_platform_type_arm.patch Patch1: gcc5_socket_workaround.patch Patch2: fix-docker-init.patch Patch3: fix-apparmor.patch +# TODO: Remove this once we update to Docker 1.11.0. This has been merged in +# https://github.com/docker/docker/pull/21723 +Patch4: fix-btrfs-ioctl-structure.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 @@ -166,6 +169,7 @@ Test package for docker. It contains the source code and the tests. %endif %patch2 -p1 %patch3 -p1 +%patch4 -p1 %ifnarch %go_arches %patch101 -p1 %patch102 -p1 diff --git a/fix-btrfs-ioctl-structure.patch b/fix-btrfs-ioctl-structure.patch new file mode 100644 index 0000000..37cd6ec --- /dev/null +++ b/fix-btrfs-ioctl-structure.patch @@ -0,0 +1,48 @@ +From a038cccf88998814249a7a40b71a33a680e3f02f Mon Sep 17 00:00:00 2001 +From: Julio Montes +Date: Fri, 1 Apr 2016 08:58:29 -0600 +Subject: [PATCH] Fix compilation errors with btrfs-progs-4.5 + +btrfs-progs-4.5 introduces device delete by devid +for this reason btrfs_ioctl_vol_args_v2's name was encapsulated +in a union + +this patch is for setting btrfs_ioctl_vol_args_v2's name +using a C function in order to preserve compatibility +with all btrfs-progs versions + +Signed-off-by: Julio Montes +Signed-off-by: Aleksa Sarai +--- + daemon/graphdriver/btrfs/btrfs.go | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +Index: docker-1.10.3/daemon/graphdriver/btrfs/btrfs.go +=================================================================== +--- docker-1.10.3.orig/daemon/graphdriver/btrfs/btrfs.go ++++ docker-1.10.3/daemon/graphdriver/btrfs/btrfs.go +@@ -7,6 +7,10 @@ package btrfs + #include + #include + #include ++ ++static void set_name_btrfs_ioctl_vol_args_v2(struct btrfs_ioctl_vol_args_v2* btrfs_struct, const char* value) { ++ snprintf(btrfs_struct->name, BTRFS_SUBVOL_NAME_MAX, "%s", value); ++} + */ + import "C" + +@@ -160,9 +164,10 @@ func subvolSnapshot(src, dest, name stri + + var args C.struct_btrfs_ioctl_vol_args_v2 + args.fd = C.__s64(getDirFd(srcDir)) +- for i, c := range []byte(name) { +- args.name[i] = C.char(c) +- } ++ ++ var cs = C.CString(name) ++ C.set_name_btrfs_ioctl_vol_args_v2(&args, cs) ++ C.free(unsafe.Pointer(cs)) + + _, _, errno := syscall.Syscall(syscall.SYS_IOCTL, getDirFd(destDir), C.BTRFS_IOC_SNAP_CREATE_V2, + uintptr(unsafe.Pointer(&args)))