docker.io (1.11.2~ds1-5) unstable; urgency=medium
authorTianon Gravi <tianon@debian.org>
Tue, 12 Jul 2016 14:46:35 +0000 (15:46 +0100)
committerTianon Gravi <tianon@debian.org>
Tue, 12 Jul 2016 14:46:35 +0000 (15:46 +0100)
  * Skip racy "TestRunCommandWithOutputAndTimeoutKilled" during build (see also
    https://github.com/docker/docker/issues/22965)

[dgit import unpatched docker.io 1.11.2~ds1-5]

53 files changed:
1  2 
debian/Dockerfile
debian/README.Debian
debian/changelog
debian/clean
debian/compat
debian/control
debian/copyright
debian/docker-doc.docs
debian/docker.io.NEWS
debian/docker.io.bash-completion
debian/docker.io.dirs
debian/docker.io.docker.default
debian/docker.io.docker.init
debian/docker.io.docker.service
debian/docker.io.docker.upstart
debian/docker.io.docs
debian/docker.io.install
debian/docker.io.maintscript
debian/docker.io.manpages
debian/docker.io.postinst
debian/docker.io.postrm
debian/docker.io.prerm
debian/docker.io.udev
debian/gbp.conf
debian/golang-github-docker-docker-dev.install
debian/helpers/gen-build-depends.sh
debian/helpers/gitcommit.sh
debian/patches/21491--systemd-tasksmax.patch
debian/patches/22000--ignore-invalid-host-header.patch
debian/patches/23063--update-aws-sdk-go.patch
debian/patches/cgroupfs-mount-convenience-copy.patch
debian/patches/change-system-unit-env-file.patch
debian/patches/check-v1.patch
debian/patches/fatal-error-old-kernels.patch
debian/patches/opencontainer-specs--no-mountlabel.patch
debian/patches/opencontainer-specs-0.5.0.patch
debian/patches/overlay.patch
debian/patches/remove-docker-prefix.patch
debian/patches/series
debian/patches/skip-privileged-unit-tests.patch
debian/patches/skip-racy-unit-tests.patch
debian/repack.sh
debian/repack/keep/vendor
debian/repack/prune/vendor
debian/rules
debian/source/format
debian/tests/basic-smoke
debian/tests/control
debian/tests/integration
debian/upstream-version-gitcommits
debian/vim-syntax-docker.install
debian/vim-syntax-docker.yaml
debian/watch

index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..80639c66ca97c7b068d86e419d99527459d0437a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,21 @@@
++FROM tianon/debian-devel
++
++RUN echo 'deb http://incoming.debian.org/debian-buildd buildd-unstable main contrib non-free' > /etc/apt/sources.list.d/incoming.list
++
++# start by adding just "debian/control" so we can get mk-build-deps with maximum caching
++COPY control /usr/src/docker.io/debian/
++WORKDIR /usr/src/docker.io
++
++# get all the build deps of _this_ package in a nice repeatable way
++RUN apt-get update && mk-build-deps -irt'apt-get --no-install-recommends -yV' debian/control && dpkg-checkbuilddeps
++
++# need our debian/ directory to compile _this_ package
++COPY . /usr/src/docker.io/debian
++
++# go download and unpack our upstream source
++RUN uscan --force-download --verbose --download-current-version
++RUN DOCKER_TARBALLS=.. ./debian/helpers/download-libcontainer
++RUN /tianon/extract-origtargz.sh
++
++# tianon is _really_ lazy, and likes a preseeded bash history
++RUN echo '/tianon/extract-origtargz.sh && dpkg-buildpackage -us -uc && lintian -EvIL+pedantic' >> /root/.bash_history
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d9343d855e00f3d54cd0d2bc903d3a1df9c99aa7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,35 @@@
++Docker on Debian
++================
++
++To enable docker memory limitation, the kernel needs to be loaded with
++boot parameters: cgroup_enable=memory swapaccount=1.
++
++This is because enabling memory cgroup support has some run-time overhead,
++and kernel maintainers don't want to slow down systems unnecessarily.
++
++http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg764104.html
++https://github.com/docker/docker/issues/396
++
++To instruct the kernel to enable memory cgroup support, edit
++/etc/default/grub and extend GRUB_CMDLINE_LINUX_DEFAULT like:
++
++GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"
++
++Then run update-grub, and reboot.
++
++
++As noted in the upstream documentation (https://docs.docker.io), Docker will
++allow non-root users in the "docker" group to access "docker.sock" and thus
++communicate with the daemon.  To add yourself to the "docker" group, use
++something like:
++
++adduser YOURUSER docker
++
++As also noted in the upstream documentation, the "docker" group (and any other
++means of accessing the Docker API) is root-equivalent.  If you don't trust a
++user with root on your box, you shouldn't trust them with Docker either.
++If you are interested in further information about the security aspects of
++Docker, please be sure to read the "Docker Security" article in the
++upstream documentation:
++
++    https://docs.docker.com/engine/security/security/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d8a9d2c1a19be827cb5c7bdad862ea70bab8907a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,406 @@@
++docker.io (1.11.2~ds1-5) unstable; urgency=medium
++
++  * Skip racy "TestRunCommandWithOutputAndTimeoutKilled" during build (see also
++    https://github.com/docker/docker/issues/22965)
++
++ -- Tianon Gravi <tianon@debian.org>  Tue, 12 Jul 2016 07:46:35 -0700
++
++docker.io (1.11.2~ds1-4) unstable; urgency=medium
++
++  [ Tianon Gravi ]
++  * Add new script to generate Build-Depends based on "go list" instead of
++    "hack/vendor.sh" (and update Build-Depends using it)
++  * Update "/etc/default/docker" text to aggressively discourage use, linking to
++    upstream's documentation for the recommended alternatives
++    ("/etc/docker/daemon.json" and systemd drop-ins)
++  * Update gbp.conf for pristine-tar usage now that we're no longer multi-orig
++  * Remove "/var/lib/docker" upon purge (Closes: #739257)
++
++  [ Dmitry Smirnov ]
++  * Add support for DEB_BUILD_OPTIONS=nocheck in debian/rules
++
++ -- Tianon Gravi <tianon@debian.org>  Mon, 11 Jul 2016 22:09:01 -0700
++
++docker.io (1.11.2~ds1-3) unstable; urgency=medium
++
++  * Team upload.
++  * Updated "skip-privileged-unit-tests.patch" to skip more privileged
++    tests in order to fix FTBFS in pbuilder.
++  * Install "opts" directory to -dev package.
++
++ -- Dmitry Smirnov <onlyjob@debian.org>  Sat, 09 Jul 2016 13:49:02 +1000
++
++docker.io (1.11.2~ds1-2) unstable; urgency=medium
++
++  * Add Tim Potter (tpot) and Dmitry Smirnov (onlyjob) to debian/copyright; they
++    were instrumental in getting 1.11 into the archive!
++  * Fix golang-github-docker-docker-dev install location (Closes: #830478);
++    thanks nicoo!
++
++ -- Tianon Gravi <tianon@debian.org>  Fri, 08 Jul 2016 08:47:44 -0700
++
++docker.io (1.11.2~ds1-1) unstable; urgency=medium
++
++  * Update to 1.11.2 upstream release
++    (Closes: #806887, #820149, #822628, #812838)
++  * Add NEWS file describing the AUFS issue and the unfortunate possible
++    "solutions" (Closes: #799386, #805725)
++  * Add "/etc/docker" to the directories explicitly installed by the package
++    to help combat issues like #806261
++  * Update "Homepage" to "dockerproject.org" (versus ".com" which now redirects)
++  * Update "Vcs-Browser" to use https
++  * Shrink the Ubuntu delta by pulling in many of the changes
++  * Replace "btrfs-tools" relations with "btrfs-progs" (Closes: #824833)
++  * Adjust "repack.sh" to allow keeping minor bits of vendor/
++  * Fix bad URL in README (Closes: #816844); thanks Clint!
++  * Move documentation to dedicated "docker-doc" package
++  * Refresh patches, add minor patch to get unit tests running
++  * Use gccgo on non-golang architectures (Closes: #785093)
++  * Use "dh-golang" to calculate "Built-Using" more accurately
++  * Add simple "basic-smoke" DEP8 test
++
++ -- Tianon Gravi <tianon@debian.org>  Mon, 04 Jul 2016 09:59:44 -0700
++
++docker.io (1.8.3~ds1-2) unstable; urgency=medium
++
++  * Move "overlay" higher in priority (Closes: #799087)
++  * Adjust "native.cgroupdriver" to default to "cgroupfs" (Closes: #798778)
++
++ -- Tianon Gravi <tianon@debian.org>  Wed, 04 Nov 2015 00:09:02 -0800
++
++docker.io (1.8.3~ds1-1) unstable; urgency=medium
++
++  * Update to 1.8.3 upstream release (CVE-2014-8178, CVE-2014-8179)
++
++ -- Tianon Gravi <tianon@debian.org>  Thu, 29 Oct 2015 19:40:51 -0700
++
++docker.io (1.8.2~ds1-2) unstable; urgency=medium
++
++  * Swap Build-Depends order to appease buildds (Closes: #803136)
++
++ -- Tianon Gravi <tianon@debian.org>  Thu, 29 Oct 2015 07:23:10 -0700
++
++docker.io (1.8.2~ds1-1) unstable; urgency=medium
++
++  * Update to 1.8.2 upstream release
++  * Rename golang-docker-dev package to golang-github-docker-docker-dev
++  * Add SELinux support (Closes: #799620)
++
++ -- Tianon Gravi <tianon@debian.org>  Wed, 28 Oct 2015 14:21:00 -0700
++
++docker.io (1.7.1~dfsg1-1) unstable; urgency=medium
++
++  * Update to 1.7.1 upstream release
++  * Remove patches applied upstream; refresh other patches
++  * Update Build-Depends
++
++ -- Tianon Gravi <tianon@debian.org>  Wed, 26 Aug 2015 10:13:48 -0700
++
++docker.io (1.6.2~dfsg1-2) unstable; urgency=medium
++
++  * Add DEP8 tests
++    - integration: runs upstream's integration tests
++  * Replace "code.google.com/p/go.net" with canonical "golang.org/x/net"
++    (Closes: #789736)
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Wed, 01 Jul 2015 07:45:19 -0600
++
++docker.io (1.6.2~dfsg1-1) unstable; urgency=medium
++
++  * Update to 1.6.2 upstream release
++  * Update deps in d/control to match upstream's hack/vendor.sh specifications
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Thu, 21 May 2015 00:47:43 -0600
++
++docker.io (1.6.1+dfsg1-2) unstable; urgency=medium
++
++  * Add --no-restart-on-upgrade to dh_installinit so that we don't force
++    a stop on upgrade, which can cause other units to fall over. Many thanks
++    to Michael Stapelberg (sECuRE) for the tip!
++
++ -- Paul Tagliamonte <paultag@debian.org>  Sun, 10 May 2015 13:02:54 -0400
++
++docker.io (1.6.1+dfsg1-1) unstable; urgency=high
++
++  * Update to 1.6.1 upstream release (Closes: #784726)
++    - CVE-2015-3627
++      Insecure opening of file-descriptor 1 leading to privilege escalation
++    - CVE-2015-3629
++      Symlink traversal on container respawn allows local privilege escalation
++    - CVE-2015-3630
++      Read/write proc paths allow host modification & information disclosure
++    - CVE-2015-3631
++      Volume mounts allow LSM profile escalation
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Fri, 08 May 2015 17:57:10 -0600
++
++docker.io (1.6.0+dfsg1-1) unstable; urgency=medium
++
++  * Upload to unstable
++  * Backport PR 12943 to support golang-go-patricia 2.*
++  * Remove convenience copies of cgroupfs-mount in init.d / upstart scripts
++    (Re: #783143)
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Tue, 05 May 2015 15:10:49 -0600
++
++docker.io (1.6.0+dfsg1-1~exp1) experimental; urgency=medium
++
++  * Update to 1.6.0 upstream release
++  * Adjust "repack.sh" to be more tolerant of "dfsg" suffixes
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Thu, 16 Apr 2015 18:00:21 -0600
++
++docker.io (1.6.0~rc7~dfsg1-1~exp1) experimental; urgency=low
++
++  * Update to 1.6.0-rc7 upstream release
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Wed, 15 Apr 2015 19:35:46 -0600
++
++docker.io (1.6.0~rc4~dfsg1-1) experimental; urgency=low
++
++  [ Tianon Gravi ]
++  * Update to 1.6.0-rc4 upstream release
++    - drop golang 1.2 support (no longer supported upstream)
++    - update Homepage to https://dockerproject.com
++    - add check-config.sh to /usr/share/docker.io/contrib
++    - add "distribution" as a new multitarball orig
++    - backport auto "btrfs_noversion" patch from
++      https://github.com/docker/docker/pull/12048
++      (simplifying our logic for detecting whether to use it)
++    - switch from dh-golang to direct install since we're not actually using the
++      features it offers (due to upstream's build system)
++    - enable "docker.service" on boot by default for restart policies to work
++
++  [ Felipe Sateler ]
++  * Add Built-Using for glibc (Closes: #769351).
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Mon, 06 Apr 2015 17:11:33 -0600
++
++docker.io (1.5.0~dfsg1-1) experimental; urgency=low
++
++  * Update to 1.5.0 upstream release (Closes: #773495)
++  * Remove several patches applied upstream!
++    - 9637-fix-nuke-bashism.patch
++    - enable-non-amd64-arches.patch
++  * Fix btrfs-tools handling to allow for building with btrfs-tools < 1.16.1
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Tue, 10 Mar 2015 22:58:49 -0600
++
++docker.io (1.3.3~dfsg1-2) unstable; urgency=medium
++
++  * Add fatal-error-old-kernels.patch to make Docker refuse to start on old,
++    unsupported kernels (Closes: #774376)
++  * Fix dh_auto_clean to clean up after the build properly, especially to avoid
++    FTBFS when built twice (Closes: #774482)
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Sat, 03 Jan 2015 00:11:47 -0700
++
++docker.io (1.3.3~dfsg1-1) unstable; urgency=medium
++
++  [ Tianon Gravi ]
++  * Update to 1.3.3 upstream release (Closes: #772909)
++    - Fix for CVE-2014-9356 (Path traversal during processing of absolute
++      symlinks)
++    - Fix for CVE-2014-9357 (Escalation of privileges during decompression of
++      LZMA (.xz) archives)
++    - Fix for CVE-2014-9358 (Path traversal and spoofing opportunities presented
++      through image identifiers)
++  * Fix bashism in nuke-graph-directory.sh (Closes: #772261)
++
++  [ Didier Roche ]
++  * Support starting systemd service without /etc/default/docker
++    (Closes: #770293)
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Thu, 18 Dec 2014 21:54:12 -0700
++
++docker.io (1.3.2~dfsg1-1) unstable; urgency=high
++
++  * Severity is set to high due to the sensitive nature of the CVEs this
++    upload fixes.
++  * Update to 1.3.2 upstream release
++    - Fix for CVE-2014-6407 (Archive extraction host privilege escalation)
++    - Fix for CVE-2014-6408 (Security options applied to image could lead
++                             to container escalation)
++  * Remove Daniel Mizyrycki from Uploaders. Thanks for all your work!
++
++ -- Paul Tagliamonte <paultag@debian.org>  Mon, 24 Nov 2014 19:14:28 -0500
++
++docker.io (1.3.1~dfsg1-2) unstable; urgency=medium
++
++  * Remove deprecated /usr/bin/docker.io symlink
++    - added as a temporary shim in 1.0.0~dfsg1-1 (13 Jun 2014)
++    - unused by package-installed files in 1.2.0~dfsg1-1 (13 Sep 2014)
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Fri, 07 Nov 2014 13:11:34 -0700
++
++docker.io (1.3.1~dfsg1-1) unstable; urgency=high
++
++  * Update to 1.3.1 upstream release
++    - fix for CVE-2014-5277
++    - https://groups.google.com/d/topic/docker-user/oYm0i3xShJU/discussion
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Mon, 03 Nov 2014 08:26:29 -0700
++
++docker.io (1.3.0~dfsg1-1) unstable; urgency=medium
++
++  * Updated to 1.3.0 upstream release.
++  * Enable systemd socket activation (Closes: #752555).
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Fri, 17 Oct 2014 00:56:07 -0600
++
++docker.io (1.2.0~dfsg1-2) unstable; urgency=medium
++
++  * Added "golang-docker-dev" package for the reusable bits of Docker's source.
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Thu, 09 Oct 2014 00:08:11 +0000
++
++docker.io (1.2.0~dfsg1-1) unstable; urgency=medium
++
++  * Updated to 1.2.0 upstream release (Closes: #757183, #757023, #757024).
++  * Added upstream man pages.
++  * Updated bash and zsh completions to be installed as "docker" and "_docker".
++  * Updated init scripts to also be installed as "docker".
++  * Fixed "equivalent" typo in README.Debian (Closes: #756395). Thanks Reuben!
++  * Removed "docker.io" mention in README.Debian (Closes: #756290). Thanks
++    Olivier!
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Sat, 13 Sep 2014 11:43:17 -0600
++
++docker.io (1.0.0~dfsg1-1) unstable; urgency=medium
++
++  * Updated to 1.0.0 upstream release. Huzzah!
++  * I've removed what is commonly called a `button' of patches against
++    the docker package. Exact patches:
++     - bash-completion-docker.io.patch
++     - systemd-docker.io.patch
++     - sysvinit-provides-docker.io.patch
++     - zsh-completion-docker.io.patch
++     - mkimage-docker.io.patch
++  * I know y'all are guessing why; and the answer's pretty simple -- we're
++    no longer docker.io(1). Since the src:docker package now ships wmdocker(1),
++    we can safely declare a breaks/replaces on the pre-wmdocker version of the
++    package, allowing existing users to safely update, both src:docker and
++    src:docker.io side. This brings us into line with other distros, which
++    now ship wmdocker(1) and docker(1).
++  * As a stop-gap, I'm still shipping a docker.io(1) symlink to allow
++    migration away.
++
++ -- Paul Tagliamonte <paultag@debian.org>  Fri, 13 Jun 2014 21:04:53 -0400
++
++docker.io (0.11.1~dfsg1-1) unstable; urgency=medium
++
++  [ Paul Tagliamonte ]
++  * Use EnvironmentFile with the systemd unit file. (Closes: #746774)
++  * Patch out version checking code. (Closes: #747140)
++  * Remove all host checking for non-amd64 host arches. Let docker build
++    and run on all platforms now. (Closes: #747139, #739914)
++
++  [ Tianon Gravi ]
++  * Updated to 0.11.1 upstream release.
++  * Added backported upstream patch for removing RemoteAddr assumptions
++    that cause events to not be delivered to more than one unix socket
++    listener.
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Fri, 09 May 2014 17:30:45 -0400
++
++docker.io (0.9.1~dfsg1-2) unstable; urgency=medium
++
++  * Added upstream apparmor patch to fix newer apparmor versions (such as the
++    version appearing in Ubuntu 14.04).
++  * Added mkimage-* docker.io binary name patches (Closes: #740855).
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Tue, 08 Apr 2014 23:19:08 -0400
++
++docker.io (0.9.1~dfsg1-1) unstable; urgency=medium
++
++  * Updated to 0.9.1 upstream release (Closes: #743424).
++  * Added cgroupfs-mount dependency (Closes: #742641).
++  * Added Suggests entries for optional features, chiefly lxc (Closes: #742081).
++  * Added notes about "root-equivalence" to README.Debian (Closes: #742387).
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Thu, 03 Apr 2014 21:38:30 -0400
++
++docker.io (0.9.0+dfsg1-1) unstable; urgency=medium
++
++  * Updated README.Debian to not be quite so outdated (Closes: #740850).
++  * Updated to 0.9.0 upstream release.
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Tue, 11 Mar 2014 22:24:31 -0400
++
++docker.io (0.8.1+dfsg1-1) unstable; urgency=medium
++
++  * Updated to 0.8.1 upstream release.
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Tue, 25 Feb 2014 20:56:31 -0500
++
++docker.io (0.8.0+dfsg1-2) unstable; urgency=medium
++
++  [ Tianon Gravi ]
++  * Added more license notes to debian/copyright (Closes: #738627).
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Sat, 15 Feb 2014 17:51:58 -0500
++
++docker.io (0.8.0+dfsg1-1) unstable; urgency=medium
++
++  [ Prach Pongpanich ]
++  * Added zsh completion.
++
++  [ Tianon Gravi ]
++  * Updated to 0.8.0 upstream release.
++  * Added vim syntax files in new vim-syntax-docker package.
++  * Added note about minimum recommended kernel version to Description.
++  * Added contrib/*-integration files in /usr/share/docker.io/contrib.
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Mon, 10 Feb 2014 20:41:10 -0500
++
++docker.io (0.7.6+dfsg1-1) unstable; urgency=medium
++
++  [ Johan Euphrosine ]
++  * Updated to 0.7.6.
++  * Added dependency to gocapability.
++  * Clean patches.
++
++  [ Tianon Gravi ]
++  * Added contrib/mk* scripts from upstream into /usr/share/docker.io/contrib
++    (Closes: #736068).
++  * Added upstream udev rules file to stop device-mapper devices and mounts from
++    appearing in desktop environments through udisks.
++
++ -- Johan Euphrosine <proppy@google.com>  Wed, 22 Jan 2014 22:50:47 -0500
++
++docker.io (0.7.1+dfsg1-1) unstable; urgency=medium
++
++  [ Prach Pongpanich ]
++  * Fixed "docker: command not found" errors while using bash tab completion
++    (Closes: #735372).
++
++  [ Tianon Gravi ]
++  * Updated to 0.7.1 upstream release (while we wait for gocapability to be
++    packaged).
++  * Added xz-utils recommend which is required for decompressing certain images
++    from the index.
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Wed, 15 Jan 2014 20:22:34 -0500
++
++docker.io (0.6.7+dfsg1-3) unstable; urgency=medium
++
++  * Fixed FTBFS on non-amd64 platforms by setting the correct GOPATH.
++  * Fixed issues with Docker finding a valid dockerinit (Closes: #734758).
++  * Added aufs-tools dependency.
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Thu, 09 Jan 2014 20:10:20 -0500
++
++docker.io (0.6.7+dfsg1-2) unstable; urgency=medium
++
++  * Added iptables dependency required for Docker to start.
++  * Added ca-certificates recommend required for pulling from the index.
++
++ -- Tianon Gravi <admwiggin@gmail.com>  Wed, 08 Jan 2014 19:14:02 -0500
++
++docker.io (0.6.7+dfsg1-1) unstable; urgency=medium
++
++  * Initial release (Closes: #706060, #730569)
++  * Document missing licenses in the source tree. Bad, paultag. Thanks
++    alteholz.
++
++ -- Paul Tagliamonte <paultag@debian.org>  Tue, 07 Jan 2014 21:06:10 -0500
diff --cc debian/clean
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..26382b296916de25b045c1152f772997d859d9cd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5 @@@
++## Useless non-doc files:
++docs/.gitignore
++docs/Dockerfile
++docs/Makefile
++docs/touch-up.sh
diff --cc debian/compat
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ec635144f60048986bc560c5576355344005e6e7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++9
diff --cc debian/control
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cd0a71fc4105b1d940905cd70a1b7590d8f2e6fa
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,184 @@@
++Source: docker.io
++Section: admin
++Priority: optional
++Maintainer: Paul Tagliamonte <paultag@debian.org>
++Uploaders: Docker Packaging Team <docker-maint@lists.alioth.debian.org>,
++           Tianon Gravi <tianon@debian.org>
++Build-Conflicts: golang-github-docker-docker-dev
++Build-Depends: bash-completion,
++               btrfs-progs,
++               ca-certificates,
++               debhelper (>= 9),
++               dh-exec,
++               dh-golang (>= 1.14~),
++               dh-systemd,
++               git,
++               go-md2man (>= 1.0.3~),
++               golang-any (>= 2:1.6~) | golang-1.6-go,
++               golang-dbus-dev (>= 3~) | golang-github-godbus-dbus-dev (>= 3~),
++               golang-dns-dev (>= 0.0~git20151201~) | golang-github-miekg-dns-dev (>= 0.0~git20151201~),
++               golang-ed25519-dev (>= 0~20140907~) | golang-github-agl-ed25519-dev (>= 0~20140907~),
++               golang-etcd-server-dev (>= 2.2.0~) | golang-github-coreos-etcd-dev (>= 2.2.0~),
++               golang-github-armon-go-metrics-dev (>= 0.0~git20150106~),
++               golang-github-aws-aws-sdk-go-dev (>= 0.9.9~),
++               golang-github-boltdb-bolt-dev (>= 1.2.0~),
++               golang-github-burntsushi-toml-dev (>= 0.0~git20150127~),
++               golang-github-coreos-go-systemd-dev (>= 4~),
++               golang-github-deckarep-golang-set-dev (>= 0.0~git20141121~),
++               golang-github-docker-containerd-dev (>= 0.2.1~),
++               golang-github-docker-distribution-dev (>= 2.4.1~),
++               golang-github-docker-engine-api-dev (>= 0.3.3~),
++               golang-github-docker-go-connections-dev (>= 0.2.0~),
++               golang-github-docker-go-dev (>= 0.0~git20151102~),
++               golang-github-docker-go-units-dev (>= 0.0~git20151218~),
++               golang-github-docker-libkv-dev (>= 0.0~git20151014~),
++               golang-github-docker-libnetwork-dev (>= 0.7.0~rc.6~),
++               golang-github-docker-libtrust-dev (>= 0.0~git20150526~),
++               golang-github-fluent-fluent-logger-golang-dev (>= 1.1.0~),
++               golang-github-fsnotify-fsnotify-dev (>= 1.2.0~) | golang-gopkg-fsnotify.v1-dev (>= 1.2.0~),
++               golang-github-gorilla-context-dev (>= 0.0~git20140604~),
++               golang-github-gorilla-mux-dev (>= 0.0~git20140926~),
++               golang-github-graylog2-go-gelf-dev (>= 0.0~git20160208~),
++               golang-github-hashicorp-consul-dev (>= 0.5.2~),
++               golang-github-hashicorp-go-msgpack-dev (>= 0.0~git20140221~),
++               golang-github-hashicorp-memberlist-dev (>= 0.0~git20150107~),
++               golang-github-hashicorp-serf-dev (>= 0.0~git20150212~),
++               golang-github-imdario-mergo-dev (>= 0.2.1~),
++               golang-github-kr-pty-dev (>= 0.0~git20150511~),
++               golang-github-mattn-go-shellwords-dev (>= 1.0.0~),
++               golang-github-mattn-go-sqlite3-dev (>= 1.1.0~),
++               golang-github-miekg-pkcs11-dev (>= 0.0~git20160222~),
++               golang-github-opencontainers-runc-dev (>= 0.1.0~),
++               golang-github-opencontainers-specs-dev (>= 0.0~git20160422~),
++               golang-github-philhofer-fwd-dev (>= 0.0~git20150401~),
++               golang-github-racksec-srslog-dev (>= 0.0~git20160120~),
++               golang-github-samuel-go-zookeeper-dev (>= 0.0~git20150415~),
++               golang-github-sirupsen-logrus-dev (>= 0.9.0~),
++               golang-github-tchap-go-patricia-dev (>= 2.1.0~),
++               golang-github-tinylib-msgp-dev (>= 0.0~git20150407~),
++               golang-github-ugorji-go-codec-dev (>= 0.0~git20150803~) | golang-github-ugorji-go-dev (>= 0.0~git20150803~),
++               golang-github-vaughan0-go-ini-dev (>= 0.0~git20130923~),
++               golang-github-vbatts-tar-split-dev (>= 0.9.11~),
++               golang-github-vdemeester-shakers-dev (>= 0.0~git20160210~),
++               golang-github-vishvananda-netlink-dev (>= 0.0~git20160214~),
++               golang-github-vishvananda-netns-dev (>= 0.0~git20150710~),
++               golang-go-zfs-dev (>= 2.1.1~) | golang-github-mistifyio-go-zfs-dev (>= 2.1.1~),
++               golang-gocapability-dev (>= 0.0~git20150614~) | golang-github-syndtr-gocapability-dev (>= 0.0~git20150614~),
++               golang-golang-x-net-dev (>= 0.0~git20160407~),
++               golang-golang-x-oauth2-dev (>= 0.0~git20151203~),
++               golang-google-api-dev (>= 0.0~git20151216~),
++               golang-google-cloud-dev (>= 0.0~git20151216~),
++               golang-google-grpc-dev (>= 0.0~git20151216~),
++               golang-gopkg-check.v1-dev (>= 0.0~git20160311~) | golang-github-go-check-check-dev (>= 0.0~git20160311~),
++               golang-goprotobuf-dev (>= 0.0~git20151207~) | golang-github-golang-protobuf-dev (>= 0.0~git20151207~),
++               libapparmor-dev,
++               libdevmapper-dev (>= 2:1.02.68~),
++               pkg-config,
++               procps
++Standards-Version: 3.9.8
++Homepage: https://dockerproject.org
++Vcs-Git: https://anonscm.debian.org/git/docker/docker.io.git
++Vcs-Browser: https://anonscm.debian.org/cgit/docker/docker.io.git
++XS-Go-Import-Path: github.com/docker/docker
++
++Package: docker.io
++Architecture: linux-any
++Depends: adduser,
++         containerd (>= 0.2.1~),
++         iptables,
++         runc (>= 0.1.0~),
++         ${misc:Depends},
++         ${perl:Depends},
++         ${shlibs:Depends}
++Recommends: ca-certificates,
++            cgroupfs-mount | cgroup-lite,
++            git,
++            xz-utils,
++            ${apparmor:Recommends}
++Replaces: docker (<< 1.5~)
++Breaks: docker (<< 1.5~)
++Suggests: aufs-tools, btrfs-progs, debootstrap, lxc, rinse, zfs-fuse | zfsutils
++Built-Using: ${misc:Built-Using}, ${libc:Built-Using}
++Description: Linux container runtime
++ Docker complements kernel namespacing with a high-level API which operates at
++ the process level. It runs unix processes with strong guarantees of isolation
++ and repeatability across servers.
++ .
++ Docker is a great building block for automating distributed systems:
++ large-scale web deployments, database clusters, continuous deployment systems,
++ private PaaS, service-oriented architectures, etc.
++ .
++ This package contains the daemon and client. Using docker.io on non-amd64 hosts
++ is not supported at this time. Please be careful when using it on anything
++ besides amd64.
++ .
++ Also, note that kernel version 3.8 or above is required for proper operation of
++ the daemon process, and that any lower versions may have subtle and/or glaring
++ issues.
++
++Package: vim-syntax-docker
++Architecture: all
++Depends: vim, ${misc:Depends}
++Recommends: vim-addon-manager
++Suggests: docker.io
++Description: Docker container engine - Vim highlighting syntax files
++ This package provides syntax files for the Vim editor for editing Dockerfiles
++ from the Docker container engine.
++
++Package: golang-github-docker-docker-dev
++Architecture: all
++Depends: golang-github-docker-go-connections-dev,
++         golang-github-docker-go-units-dev,
++         golang-github-docker-libkv-dev,
++         golang-github-fsnotify-fsnotify-dev,
++         golang-github-gorilla-mux-dev,
++         golang-github-mattn-go-shellwords-dev,
++         golang-github-mattn-go-sqlite3-dev,
++         golang-github-opencontainers-runc-dev,
++         golang-github-sirupsen-logrus-dev,
++         golang-github-tchap-go-patricia-dev,
++         golang-github-vdemeester-shakers-dev,
++         golang-golang-x-net-dev,
++         golang-gopkg-check.v1-dev,
++         ${misc:Depends}
++Built-Using: ${misc:Built-Using}
++Replaces: golang-docker-dev (<< 1.8.2~ds1-1~)
++Breaks: golang-docker-dev (<< 1.8.2~ds1-1~)
++Provides: golang-docker-dev
++Description: Externally reusable Go packages included with Docker
++ These packages are intentionally developed by upstream in such a way that they
++ are reusable to projects outside Docker and only rely on each other or other
++ external dependencies to be built.
++
++Package: golang-docker-dev
++Section: oldlibs
++Priority: extra
++Architecture: all
++Depends: golang-github-docker-docker-dev, ${misc:Depends}
++Description: Transitional package for golang-github-docker-docker-dev
++ This is a transitional package to ease upgrades to the
++ golang-github-docker-docker-dev package. It can safely be removed.
++
++Package: docker-doc
++Provides: docker.io-doc
++Section: doc
++Architecture: all
++Depends: ${misc:Depends}
++Description: Linux container runtime -- documentation
++ Docker complements kernel namespacing with a high-level API which operates at
++ the process level. It runs unix processes with strong guarantees of isolation
++ and repeatability across servers.
++ .
++ Docker is a great building block for automating distributed systems:
++ large-scale web deployments, database clusters, continuous deployment systems,
++ private PaaS, service-oriented architectures, etc.
++ .
++ This package contains the daemon and client. Using docker.io on non-amd64 hosts
++ is not supported at this time. Please be careful when using it on anything
++ besides amd64.
++ .
++ Also, note that kernel version 3.8 or above is required for proper operation of
++ the daemon process, and that any lower versions may have subtle and/or glaring
++ issues.
++ .
++ This package provides documentation for Docker.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..071530c1078297c324c1cd7183a3ee3ffd9007ec
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,179 @@@
++Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
++Upstream-Name: Docker
++Upstream-Contact: Docker, Inc. <support@docker.com>
++Source: https://github.com/docker/docker
++
++Files: *
++Copyright: 2012-2016 Docker, Inc. <support@docker.com>
++License: Apache-2.0
++
++Files: debian/*
++Copyright: 2013-2014 Daniel Mizyrycki <daniel@docker.com>
++           2013-2014 Paul Tagliamonte <paultag@debian.org>
++           2012-2014 Michael Stapelberg <stapelberg@debian.org>
++           2013-2014 Tianon Gravi <tianon@debian.org>
++           2013-2014 Johan Euphrosine <proppy@google.com>
++           2014 Prach Pongpanich <prachpub@gmail.com>
++           2016 Tim Potter <timothy.potter@hpe.com>
++           2016 Dmitry Smirnov <onlyjob@debian.org>
++License: Apache-2.0
++
++Files: contrib/init/openrc/docker.initd
++Copyright: 1999-2013 Gentoo Foundation
++License: GPL-2
++
++Files: contrib/syntax/vim/*
++Copyright: 2013 Honza Pokorny
++License: BSD-2-clause
++
++Files:
++    pkg/mflag/*
++    pkg/symlink/fs.go
++Copyright: 2014-2016 The Docker & Go Authors
++License: BSD-3-clause-Google
++
++Files: contrib/completion/zsh/*
++Copyright: 2013-2014 Felix Riedel
++License: BSD-3-clause-Generic
++
++Files: contrib/docker-engine-selinux/*
++Copyright: 2012-2016 Docker Inc.
++License: GPL-2
++Comment:
++ No explicit copyright statement; assuming upstream copyright.
++
++Files: vendor/src/github.com/docker/notary/tuf/*
++Copyright: 2015      Docker, Inc.
++           2014-2015 Prime Directive, Inc.
++License: BSD-3-clause-Prime
++
++License: Apache-2.0
++ Licensed under the Apache License, Version 2.0 (the "License");
++ you may not use this file except in compliance with the License.
++ You may obtain a copy of the License at
++ .
++ http://www.apache.org/licenses/LICENSE-2.0
++ .
++ Unless required by applicable law or agreed to in writing, software
++ distributed under the License is distributed on an "AS IS" BASIS,
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ See the License for the specific language governing permissions and
++ limitations under the License.
++ .
++ On Debian systems, the complete text of the Apache version 2.0 license
++ can be found in "/usr/share/common-licenses/Apache-2.0".
++
++License: GPL-2
++ This file is part of Buildbot.  Buildbot is free software: you can
++ redistribute it and/or modify it under the terms of the GNU General Public
++ License as published by the Free Software Foundation, version 2.
++ .
++ This program is distributed in the hope that it will be useful, but WITHOUT
++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
++ FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
++ details.
++ .
++ You should have received a copy of the GNU General Public License along with
++ this program; if not, write to the Free Software Foundation, Inc., 51
++ Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ .
++ On Debian systems, the complete text of the Apache version 2.0 license
++ can be found in "/usr/share/common-licenses/GPL-2".
++
++License: BSD-2-clause
++ Redistribution and use in source and binary forms, with or without
++ modification, are permitted provided that the following conditions are met:
++ .
++ 1. Redistributions of source code must retain the above copyright
++    notice, this list of conditions and the following disclaimer.
++ 2. Redistributions in binary form must reproduce the above copyright
++    notice, this list of conditions and the following disclaimer in the
++    documentation and/or other materials provided with the distribution.
++ .
++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
++ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
++ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
++ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
++ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++
++License: BSD-3-clause-Google
++ Redistribution and use in source and binary forms, with or without
++ modification, are permitted provided that the following conditions are
++ met:
++ .
++    * Redistributions of source code must retain the above copyright
++ notice, this list of conditions and the following disclaimer.
++    * Redistributions in binary form must reproduce the above
++ copyright notice, this list of conditions and the following disclaimer
++ in the documentation and/or other materials provided with the
++ distribution.
++    * Neither the name of Google Inc. nor the names of its
++ contributors may be used to endorse or promote products derived from
++ this software without specific prior written permission.
++ .
++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++
++License: BSD-3-clause-Generic
++ Redistribution and use in source and binary forms, with or without
++ modification, are permitted provided that the following conditions are met:
++     * Redistributions of source code must retain the above copyright
++       notice, this list of conditions and the following disclaimer.
++     * Redistributions in binary form must reproduce the above copyright
++       notice, this list of conditions and the following disclaimer in the
++       documentation and/or other materials provided with the distribution.
++     * Neither the name of the <organization> nor the
++       names of its contributors may be used to endorse or promote products
++       derived from this software without specific prior written permission.
++ .
++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
++ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
++ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
++ DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
++ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
++ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
++ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
++ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++
++License: BSD-3-clause-Prime
++ Redistribution and use in source and binary forms, with or without
++ modification, are permitted provided that the following conditions are
++ met:
++ .
++   * Redistributions of source code must retain the above copyright
++     notice, this list of conditions and the following disclaimer.
++   * Redistributions in binary form must reproduce the above
++     copyright notice, this list of conditions and the following disclaimer
++     in the documentation and/or other materials provided with the
++     distribution.
++   * Neither the name of Prime Directive, Inc. nor the names of its
++     contributors may be used to endorse or promote products derived from
++     this software without specific prior written permission.
++ .
++ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
++ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
++ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a188e0692f3dd37b2e8ec2b3d3cfe74ce884d3e9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++docs/*
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..82ae42e480edcf6b3dea6d3fa88160292d39ca66
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++docker.io (1.11.2~ds1-1) unstable; urgency=medium
++
++  As of src:linux 4.0+ (specifically, >= 3.18-1~exp1), AUFS support is no longer
++  included in official Debian-compiled kernels.  What this means to Docker users
++  is that if your existing images are stored within the "AUFS" graph driver that
++  once you update your kernel, your images (and containers) will become
++  inaccessible (due to the kernel not having the necessary aufs modules to mount
++  them).  To recover from this, there are a couple options (detailed below).
++
++  1. Use the included nuke script to blow away your existing "/var/lib/docker"
++     contents and start fresh with Linux 4.0+:
++
++       service docker stop
++       /usr/share/docker.io/contrib/nuke-graph-directory.sh /var/lib/docker
++       service docker start
++
++  2. Use "docker save" (see "docker help save" for usage) before booting 4.0+ to
++     preserve your images on-disk as tar files, then follow the nuke step from
++     the previous option followed by using "docker load" to re-load your images.
++
++  3. Update to src:linux >= 4.1.1-1~exp1 ("aufs: Apply patches to enable
++     building aufs out-of-tree"), and then compile the aufs modules out-of-tree
++     (a package for doing this module compilation automatically doesn't yet
++     exist at the time of this writing, but might in the future).
++
++ -- Tianon Gravi <tianon@debian.org>  Tue, 01 Dec 2015 01:02:44 -0800
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6ea111930886df72c9c7083a4f277d824328ddc9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++contrib/completion/bash/docker
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4d7117b0f7d7f503dc315a2c22bd3ee7ad4cd1a5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++etc/docker
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..802416a236e83b193fa8d5cea7c9245414f1f678
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,12 @@@
++# Here in Debian, this file is sourced by:
++#   - /etc/init.d/docker (sysvinit)
++#   - /etc/init/docker (upstart)
++#   - systemd's docker.service
++
++# Use of this file for configuring your Docker daemon is discouraged.
++
++# The recommended alternative is "/etc/docker/daemon.json", as described in:
++#   https://docs.docker.com/v1.11/engine/reference/commandline/daemon/#daemon-configuration-file
++
++# If that does not suit your needs, try a systemd drop-in file, as described in:
++#   https://docs.docker.com/v1.11/engine/admin/systemd/#custom-docker-daemon-options
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e27f04950f5cc3c7371be7240489cff1bd0e688d
new file mode 120000 (symlink)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++../contrib/init/sysvinit-debian/docker
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..747caae1eda83b263712fc657f169897141e7bfb
new file mode 120000 (symlink)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++../contrib/init/systemd/docker.service
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4df3220e7353f65be870c831e28988c2b5acbed8
new file mode 120000 (symlink)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++../contrib/init/upstart/docker.conf
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ac2a209bdf43e87064ede143459e3d572b5be72b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++README.md
++ROADMAP.md
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6a1f54b448444d9fff9ed1dbcbd3bd53eb368b40
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,11 @@@
++#!/usr/bin/dh-exec
++
++# docker itself
++bundles/${DOCKER_VERSION}/${DOCKER_BUILD_TARGET}/docker-${DOCKER_VERSION} => usr/bin/docker
++
++contrib/*-integration usr/share/docker.io/contrib/
++contrib/check-config.sh usr/share/docker.io/contrib/
++contrib/completion/zsh/_docker usr/share/zsh/vendor-completions/
++contrib/init/systemd/docker.socket lib/systemd/system/
++contrib/mk* usr/share/docker.io/contrib/
++contrib/nuke-graph-directory.sh usr/share/docker.io/contrib/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..421ce02bd2bccb0b948ff07594e0f0c1ecfbc6c2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5 @@@
++mv_conffile /etc/bash_completion.d/docker.io /etc/bash_completion.d/docker 1.2.0~
++mv_conffile /etc/default/docker.io /etc/default/docker 1.2.0~
++mv_conffile /etc/init.d/docker.io /etc/init.d/docker 1.2.0~
++mv_conffile /etc/init/docker.io.conf /etc/init/docker.conf 1.2.0~
++rm_conffile /etc/bash_completion.d/docker 1.11.2~
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1aa62186a68f959c7dfbbf4a29d7d3b8fef797cf
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++man/man*/*
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5fd8847277fc8b1c03ae4c79f55bab6a4da1e34d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,18 @@@
++#!/bin/sh
++set -e
++
++case "$1" in
++      configure)
++              if [ -z "$2" ]; then
++                      addgroup --system docker
++              fi
++              ;;
++      abort-*)
++              # How'd we get here??
++              exit 1
++              ;;
++      *)
++              ;;
++esac
++
++#DEBHELPER#
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f01f7c7101e4484dd71eb660d845078ace3308c2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,17 @@@
++#!/bin/sh
++set -e
++
++#DEBHELPER#
++
++case "$1" in
++      purge)
++              # if we have our saved "nuke-graph-directory.sh", let's use it
++              # see also docker.io.prerm
++              if [ -x /var/lib/docker/nuke-graph-directory.sh ]; then
++                      /var/lib/docker/nuke-graph-directory.sh /var/lib/docker
++              fi
++              ;;
++
++      *)
++              ;;
++esac
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..71f9e6e6e98e31b4b34fd0acf4824175f8128171
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,23 @@@
++#!/bin/sh
++set -e
++
++case "$1" in
++      remove)
++              # if we're removing, we need to save "nuke-graph-directory.sh" so that
++              # we can still purge "/var/lib/docker" later if necessary
++              # see also docker.io.postrm
++              if \
++                      [ -d /var/lib/docker ] \
++                      && [ -x /usr/share/docker.io/contrib/nuke-graph-directory.sh ] \
++              ; then
++                      if cp -v /usr/share/docker.io/contrib/nuke-graph-directory.sh /var/lib/docker/; then
++                              chmod +x /var/lib/docker/nuke-graph-directory.sh || :
++                      fi
++              fi
++              ;;
++
++      *)
++              ;;
++esac
++
++#DEBHELPER#
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d7fd2eb6f98c101b4768455cd7eab6dcc2d9a171
new file mode 120000 (symlink)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++../contrib/udev/80-docker.rules
diff --cc debian/gbp.conf
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b465658e9e2d04032492ad1b5a70ee209b57343e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,15 @@@
++[DEFAULT]
++cleaner = fakeroot debian/rules clean
++pristine-tar = True
++merge = False
++debian-tag = %(version)s
++
++[git-buildpackage]
++export-dir = ../build-area/
++tarball-dir = ../tarballs/
++
++[dch]
++id-length = 0
++meta = True
++auto = True
++full = True
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..60ef77de5acd1fa0aa7da5126a91677e23fdd250
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5 @@@
++#!/usr/bin/dh-exec
++
++dockerversion usr/share/gocode/src/${DH_GOPKG}/
++pkg usr/share/gocode/src/${DH_GOPKG}/
++opts usr/share/gocode/src/${DH_GOPKG}/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..763c27c2b8e923436574ba0f36a42c589e16d1f2
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,190 @@@
++#!/bin/bash
++set -eu
++set -o pipefail
++
++goBuildTags='apparmor cgo daemon pkcs11 selinux'
++
++debDir="$PWD/debian"
++
++debVer="$(dpkg-parsechangelog -SVersion)"
++origVer="${debVer%-*}" # strip everything from the last dash
++origVer="$(echo "$origVer" | sed -r 's/^[0-9]+://')" # strip epoch
++upstreamVer="${origVer%%[+~]ds*}"
++upstreamVer="${upstreamVer//[~]/-}"
++
++goImportPath="$(awk -F ': ' '$1 == "XS-Go-Import-Path" { print $2; exit }' debian/control)"
++[ "$goImportPath" ]
++
++upstreamArchiveUri="https://$goImportPath/archive/v${upstreamVer}.tar.gz"
++
++tempDir="$(mktemp -d -t debian-docker-gen-build-depends-XXXXXXXXXX)"
++trap "rm -rf '$tempDir'" EXIT
++cd "$tempDir"
++
++mkdir -p "gopath/src/$goImportPath"
++wget -qO archive.tar.gz "$upstreamArchiveUri"
++tar \
++      --extract \
++      --file archive.tar.gz \
++      --directory "gopath/src/$goImportPath" \
++      --strip-components 1
++export GOPATH="$PWD/gopath:$PWD/gopath/src/$goImportPath/vendor"
++cd "gopath/src/$goImportPath"
++
++IFS=$'\n'
++# get the full list of "docker/docker" Go packages
++goPkgs=( $(go list "$goImportPath/..." | grep -vE "^$goImportPath/vendor/") )
++# get the list of their dependencies, normalized:
++#   - skip stdlib, docker/docker
++#   - adjust known hosting locations for their top-level repos
++goDeps=( $(
++      go list \
++              -e \
++              -tags "$goBuildTags" \
++              -f '{{ join .Deps "\n" }}{{ "\n" }}{{ join .TestImports "\n" }}' \
++              "${goPkgs[@]}" \
++      | grep -vE '^$' \
++      | grep -vE '^[^/]+$' \
++      | grep -vE "^$goImportPath/" \
++      | sort -u \
++      | xargs \
++              go list \
++                      -e \
++                      -f '{{ if not .Standard }}{{ .ImportPath }}{{ end }}' \
++      | grep -vE '^$' \
++      | sed -r \
++              -e 's!^(github.com/[^/]+/[^/]+)/.*$!\1!' \
++              -e 's!^(golang.org/x/[^/]+)/.*$!\1!' \
++              -e 's!^(google.golang.org/[^/]+)/.*$!\1!' \
++              -e 's!^(gopkg.in/[^/]+)/.*$!\1!' \
++      | sort -u
++) )
++unset IFS
++
++# converts a given "goPkg" into the relevant Debian "-dev" package name
++debian_pkg() {
++      local goPkg="$1"
++      local domain="${goPkg%%/*}"
++      domain="${domain%%.*}"
++      local goPkgPath="${goPkg#*/}"
++      local package="golang-$domain-${goPkgPath//\//-}-dev"
++      package="${package,,}"
++      echo "$package"
++}
++
++# converts "gitRepo" and "gitRef" into a concrete version number
++git_version() {
++      local goPkg="$1"; shift
++      local gitRepo="$1"; shift
++      local gitRef="$1"; shift
++
++      [ "$gitRef" ] || return
++
++      local gitSnapshotPrefix='0.0~git'
++
++      # normalize a few "special" cases
++      case "$goPkg=$gitRef" in
++              github.com/docker/go=*-*-*-*)
++                      # turn "v1.5.1-1-1-gbaf439e" into "v1.5.1-1" so we can "ls-remote" and generate via commit instead of version
++                      local remoteCommit="$(git ls-remote "$gitRepo" "refs/tags/${gitRef%-*-*}" | cut -d$'\t' -f1)"
++                      if [ "$remoteCommit" ]; then
++                              gitRef="$remoteCommit"
++                      fi
++                      ;;
++
++              github.com/docker/libnetwork=v0.7.2-rc.1)
++                      # TODO get newer version in the archive
++                      gitRef='v0.7.0~rc.6'
++                      ;;
++
++              github.com/docker/distribution=467fc068d88aa6610691b7f1a677271a3fac4aac)
++                      # TODO get newer version in the archive (467fc068d88aa6610691b7f1a677271a3fac4aac really corresponds to v2.5.0-rc.1+)
++                      gitRef='v2.4.1'
++                      ;;
++
++              github.com/agl/ed25519=*)
++                      gitSnapshotPrefix='0~'
++                      ;;
++
++              github.com/docker/containerd=*|github.com/opencontainers/runc=*)
++                      # attempt to resolve commit to tag
++                      local remoteTag="$(git ls-remote --tags "$gitRepo" | awk -F '[\t/]' '$1 == "'"$gitRef"'" { print $4; exit }')"
++                      if [ "$remoteTag" ]; then
++                              gitRef="$remoteTag"
++                      fi
++                      # TODO get newer (compatible) versions of each of these into the archive
++                      case "$goPkg" in
++                              github.com/docker/containerd)
++                                      gitRef='v0.2.1'
++                                      ;;
++                              github.com/opencontainers/runc)
++                                      gitRef='v0.1.0'
++                                      ;;
++                      esac
++                      ;;
++      esac
++
++      case "$gitRef" in
++              v[0-9]*|[0-9].*)
++                      echo "${gitRef#v}"
++                      return
++                      ;;
++      esac
++
++      local commitDate
++      case "$goPkg" in
++              github.com/*)
++                      # for GitHub repos, we can shortcut the date calculation (saves a _lot_ of time)
++                      local githubPatchUri="https://$goPkg/commit/$gitRef.patch"
++                      commitDate="$(wget -qO- "$githubPatchUri" | awk -F ': ' '$1 == "Date" { print $2 }' | tail -1)"
++                      # ".patch" returns potentially multiple commits, so we want the final "Date:" value, hence the "tail -1"
++                      ;;
++
++              *)
++                      mkdir -p "$tempDir/git/$goPkg"
++                      git clone --quiet "$gitRepo" "$tempDir/git/$goPkg"
++                      local commitUnix="$(git -C "$tempDir/git/$goPkg" log -1 --format='%at' "$gitRef" --)"
++                      commitDate="@$commitUnix"
++                      ;;
++      esac
++      [ "$commitDate" ]
++      commitDate="$(TZ=UTC date --date="$commitDate" +'%Y%m%d')"
++      echo "$gitSnapshotPrefix$commitDate"
++}
++
++declare -A transitionals=(
++      [golang-github-agl-ed25519-dev]='golang-ed25519-dev'
++      [golang-github-coreos-etcd-dev]='golang-etcd-server-dev'
++      [golang-github-go-check-check-dev]='golang-gopkg-check.v1-dev'
++      [golang-github-godbus-dbus-dev]='golang-dbus-dev'
++      [golang-github-golang-protobuf-dev]='golang-goprotobuf-dev'
++      [golang-github-miekg-dns-dev]='golang-dns-dev'
++      [golang-github-mistifyio-go-zfs-dev]='golang-go-zfs-dev'
++      [golang-github-syndtr-gocapability-dev]='golang-gocapability-dev'
++      [golang-github-ugorji-go-dev]='golang-github-ugorji-go-codec-dev'
++      [golang-gopkg-fsnotify.v1-dev]='golang-github-fsnotify-fsnotify-dev'
++)
++
++for goDep in "${goDeps[@]}"; do
++      if grep -q "^vendor/src/$goDep\$" "$debDir"/repack/keep/* 2>/dev/null; then
++              # skip vendored deps we don't remove
++              continue
++      fi
++
++      debPkg="$(debian_pkg "$goDep")"
++
++      gitRepoRef="$(awk '$1 == "clone" && $2 == "git" && $3 == "'"$goDep"'" { print ($5 && $5 != "#" ? $5 : "") "=" $4; exit }' hack/vendor.sh)"
++      gitRepo="${gitRepoRef%=*}"
++      gitRef="${gitRepoRef##$gitRepo=}"
++      : "${gitRepo:=https://$goDep}"
++
++      debVer="$(git_version "$goDep" "$gitRepo" "$gitRef")"
++
++      # deal with "golang-dns-dev" and friends of that nature
++      transitional="${transitionals[$debPkg]:-}"
++      if [ "$transitional" ]; then
++              echo -n "$transitional${debVer:+ (>= ${debVer}~)} | "
++      fi
++
++      echo "$debPkg${debVer:+ (>= ${debVer}~)},"
++done | sort
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3ca038d1952ea8d1d5331062450993166e215209
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,34 @@@
++#!/bin/bash
++set -e
++
++uVersion="$1"
++dVersion="$2"
++
++if [ -z "$uVersion" ]; then
++      uVersion="$(cat VERSION)"
++fi
++if [ -z "$dVersion" ]; then
++      dVersion="$(dpkg-parsechangelog --show-field Version)"
++fi
++
++if [ "${uVersion%-dev}" = "$uVersion" ]; then
++      # this is a straight-up release!  easy-peasy
++      exec awk -F ': ' '$1 == "'"$uVersion"'" { print $2 }' debian/upstream-version-gitcommits
++fi
++
++# must be a nightly, so let's look for clues about what the git commit is
++
++if git rev-parse &> /dev/null; then
++      # well, this will be easy ;)
++      exec git rev-parse --short HEAD
++fi
++
++if [ "${dVersion#*+*+}" != "$dVersion" ]; then
++      # must be something like "1.1.2+10013+8c38a3d-1~utopic1" (nightly!)
++      commit="${dVersion#*+*+}"
++      commit="${commit%%-*}"
++      exec echo "$commit"
++fi
++
++# unknown...
++echo >&2 'warning: unable to determine DOCKER_GITCOMMIT'
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..73eecd98f13b083ab8f49d1f942b7c91b0de68fa
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,25 @@@
++From 33a8ab29ed9e51697772a0642b8d651b9a845532 Mon Sep 17 00:00:00 2001
++From: Pierre Carrier <pierre@meteor.com>, Tianon Gravi <tianon@debian.org>
++Date: Thu, 24 Mar 2016 16:14:30 -0700
++Subject: [PATCH] docker.service: don't limit tasks
++Origin: https://github.com/docker/docker/pull/21491
++
++Signed-off-by: Pierre Carrier <pierre@meteor.com>
++---
++ contrib/init/systemd/docker.service | 3 +++
++ 1 file changed, 3 insertions(+)
++
++diff --git a/contrib/init/systemd/docker.service b/contrib/init/systemd/docker.service
++index 75cb68c..28d2f4e 100644
++--- a/contrib/init/systemd/docker.service
+++++ b/contrib/init/systemd/docker.service
++@@ -14,6 +14,9 @@ MountFlags=slave
++ LimitNOFILE=1048576
++ LimitNPROC=1048576
++ LimitCORE=infinity
+++# Uncomment TasksMax if your systemd version supports it.
+++# Only systemd 226 and above support this version.
+++TasksMax=infinity
++ TimeoutStartSec=0
++ # set delegate yes so that systemd does not reset the cgroups of docker containers
++ Delegate=yes
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2a64ebb23a50d0f857ec9e44073cb7bb370d1590
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,336 @@@
++Origin: https://github.com/docker/docker/pull/22000, https://github.com/docker/docker/pull/22888, https://github.com/docker/docker/pull/23046
++Author: Antonio Murdaca <runcom@redhat.com>, Darren Shepherd <darren@rancher.com>, Shijiang Wei <mountkin@gmail.com>, Tianon Gravi <tianon@debian.org> (rebased for 1.11)
++Subject: Ignore invalid "Host:" header between go1.6 and old docker clients
++
++diff --git a/docker/daemon.go b/docker/daemon.go
++index bee921c..7cd8adc 100644
++--- a/docker/daemon.go
+++++ b/docker/daemon.go
++@@ -250,13 +250,14 @@ func (cli *DaemonCli) CmdDaemon(args ...string) error {
++              if len(protoAddrParts) != 2 {
++                      logrus.Fatalf("bad format %s, expected PROTO://ADDR", protoAddr)
++              }
++-             l, err := listeners.Init(protoAddrParts[0], protoAddrParts[1], serverConfig.SocketGroup, serverConfig.TLSConfig)
+++             ls, err := listeners.Init(protoAddrParts[0], protoAddrParts[1], serverConfig.SocketGroup, serverConfig.TLSConfig)
++              if err != nil {
++                      logrus.Fatal(err)
++              }
+++             ls = wrapListeners(protoAddrParts[0], ls)
++ 
++              logrus.Debugf("Listener created for HTTP on %s (%s)", protoAddrParts[0], protoAddrParts[1])
++-             api.Accept(protoAddrParts[1], l...)
+++             api.Accept(protoAddrParts[1], ls...)
++      }
++ 
++      if err := migrateKey(); err != nil {
++diff --git a/docker/daemon_unix.go b/docker/daemon_unix.go
++index b65eb1f..4e4b498 100644
++--- a/docker/daemon_unix.go
+++++ b/docker/daemon_unix.go
++@@ -4,10 +4,13 @@ package main
++ 
++ import (
++      "fmt"
+++     "net"
++      "os"
++      "os/signal"
++      "syscall"
++ 
+++     "github.com/docker/docker/docker/hack"
+++
++      "github.com/Sirupsen/logrus"
++      apiserver "github.com/docker/docker/api/server"
++      "github.com/docker/docker/daemon"
++@@ -80,3 +83,15 @@ func (cli *DaemonCli) getPlatformRemoteOptions() []libcontainerd.RemoteOption {
++      }
++      return opts
++ }
+++
+++func wrapListeners(proto string, ls []net.Listener) []net.Listener {
+++     switch proto {
+++     case "unix":
+++             ls[0] = &hack.MalformedHostHeaderOverride{ls[0]}
+++     case "fd":
+++             for i := range ls {
+++                     ls[i] = &hack.MalformedHostHeaderOverride{ls[i]}
+++             }
+++     }
+++     return ls
+++}
++diff --git a/docker/daemon_windows.go b/docker/daemon_windows.go
++index ae8d737..b5ffbf9 100644
++--- a/docker/daemon_windows.go
+++++ b/docker/daemon_windows.go
++@@ -4,6 +4,7 @@ package main
++ 
++ import (
++      "fmt"
+++     "net"
++      "os"
++      "syscall"
++ 
++@@ -62,3 +63,7 @@ func setupConfigReloadTrap(configFile string, flags *mflag.FlagSet, reload func(
++ func (cli *DaemonCli) getPlatformRemoteOptions() []libcontainerd.RemoteOption {
++      return nil
++ }
+++
+++func wrapListeners(proto string, ls []net.Listener) []net.Listener {
+++     return ls
+++}
++diff --git a/docker/hack/malformed_host_override.go b/docker/hack/malformed_host_override.go
++new file mode 100644
++index 0000000..d4aa3dd
++--- /dev/null
+++++ b/docker/hack/malformed_host_override.go
++@@ -0,0 +1,121 @@
+++// +build !windows
+++
+++package hack
+++
+++import "net"
+++
+++// MalformedHostHeaderOverride is a wrapper to be able
+++// to overcome the 400 Bad request coming from old docker
+++// clients that send an invalid Host header.
+++type MalformedHostHeaderOverride struct {
+++     net.Listener
+++}
+++
+++// MalformedHostHeaderOverrideConn wraps the underlying unix
+++// connection and keeps track of the first read from http.Server
+++// which just reads the headers.
+++type MalformedHostHeaderOverrideConn struct {
+++     net.Conn
+++     first bool
+++}
+++
+++var closeConnHeader = []byte("\r\nConnection: close\r")
+++
+++// Read reads the first *read* request from http.Server to inspect
+++// the Host header. If the Host starts with / then we're talking to
+++// an old docker client which send an invalid Host header. To not
+++// error out in http.Server we rewrite the first bytes of the request
+++// to sanitize the Host header itself.
+++// In case we're not dealing with old docker clients the data is just passed
+++// to the server w/o modification.
+++func (l *MalformedHostHeaderOverrideConn) Read(b []byte) (n int, err error) {
+++     // http.Server uses a 4k buffer
+++     if l.first && len(b) == 4096 {
+++             // This keeps track of the first read from http.Server which just reads
+++             // the headers
+++             l.first = false
+++             // The first read of the connection by http.Server is done limited to
+++             // DefaultMaxHeaderBytes (usually 1 << 20) + 4096.
+++             // Here we do the first read which gets us all the http headers to
+++             // be inspected and modified below.
+++             c, err := l.Conn.Read(b)
+++             if err != nil {
+++                     return c, err
+++             }
+++
+++             var (
+++                     start, end    int
+++                     firstLineFeed = -1
+++                     buf           []byte
+++             )
+++             for i := 0; i <= c-1-7; i++ {
+++                     if b[i] == '\n' && firstLineFeed == -1 {
+++                             firstLineFeed = i
+++                     }
+++                     if b[i] != '\n' {
+++                             continue
+++                     }
+++
+++                     if b[i+1] == '\r' && b[i+2] == '\n' {
+++                             return c, nil
+++                     }
+++
+++                     if b[i+1] != 'H' {
+++                             continue
+++                     }
+++                     if b[i+2] != 'o' {
+++                             continue
+++                     }
+++                     if b[i+3] != 's' {
+++                             continue
+++                     }
+++                     if b[i+4] != 't' {
+++                             continue
+++                     }
+++                     if b[i+5] != ':' {
+++                             continue
+++                     }
+++                     if b[i+6] != ' ' {
+++                             continue
+++                     }
+++                     if b[i+7] != '/' {
+++                             continue
+++                     }
+++                     // ensure clients other than the docker clients do not get this hack
+++                     if i != firstLineFeed {
+++                             return c, nil
+++                     }
+++                     start = i + 7
+++                     // now find where the value ends
+++                     for ii, bbb := range b[start:c] {
+++                             if bbb == '\n' {
+++                                     end = start + ii
+++                                     break
+++                             }
+++                     }
+++                     buf = make([]byte, 0, c+len(closeConnHeader)-(end-start))
+++                     // strip the value of the host header and
+++                     // inject `Connection: close` to ensure we don't reuse this connection
+++                     buf = append(buf, b[:start]...)
+++                     buf = append(buf, closeConnHeader...)
+++                     buf = append(buf, b[end:c]...)
+++                     copy(b, buf)
+++                     break
+++             }
+++             if len(buf) == 0 {
+++                     return c, nil
+++             }
+++             return len(buf), nil
+++     }
+++     return l.Conn.Read(b)
+++}
+++
+++// Accept makes the listener accepts connections and wraps the connection
+++// in a MalformedHostHeaderOverrideConn initilizing first to true.
+++func (l *MalformedHostHeaderOverride) Accept() (net.Conn, error) {
+++     c, err := l.Listener.Accept()
+++     if err != nil {
+++             return c, err
+++     }
+++     return &MalformedHostHeaderOverrideConn{c, true}, nil
+++}
++diff --git a/docker/hack/malformed_host_override_test.go b/docker/hack/malformed_host_override_test.go
++new file mode 100644
++index 0000000..1a0a60b
++--- /dev/null
+++++ b/docker/hack/malformed_host_override_test.go
++@@ -0,0 +1,124 @@
+++// +build !windows
+++
+++package hack
+++
+++import (
+++     "bytes"
+++     "io"
+++     "net"
+++     "strings"
+++     "testing"
+++)
+++
+++type bufConn struct {
+++     net.Conn
+++     buf *bytes.Buffer
+++}
+++
+++func (bc *bufConn) Read(b []byte) (int, error) {
+++     return bc.buf.Read(b)
+++}
+++
+++func TestHeaderOverrideHack(t *testing.T) {
+++     tests := [][2][]byte{
+++             {
+++                     []byte("GET /foo\nHost: /var/run/docker.sock\nUser-Agent: Docker\r\n\r\n"),
+++                     []byte("GET /foo\nHost: \r\nConnection: close\r\nUser-Agent: Docker\r\n\r\n"),
+++             },
+++             {
+++                     []byte("GET /foo\nHost: /var/run/docker.sock\nUser-Agent: Docker\nFoo: Bar\r\n"),
+++                     []byte("GET /foo\nHost: \r\nConnection: close\r\nUser-Agent: Docker\nFoo: Bar\r\n"),
+++             },
+++             {
+++                     []byte("GET /foo\nHost: /var/run/docker.sock\nUser-Agent: Docker\r\n\r\ntest something!"),
+++                     []byte("GET /foo\nHost: \r\nConnection: close\r\nUser-Agent: Docker\r\n\r\ntest something!"),
+++             },
+++             {
+++                     []byte("GET /foo\nHost: /var/run/docker.sock\nUser-Agent: Docker\r\n\r\ntest something! " + strings.Repeat("test", 15000)),
+++                     []byte("GET /foo\nHost: \r\nConnection: close\r\nUser-Agent: Docker\r\n\r\ntest something! " + strings.Repeat("test", 15000)),
+++             },
+++             {
+++                     []byte("GET /foo\nFoo: Bar\nHost: /var/run/docker.sock\nUser-Agent: Docker\r\n\r\n"),
+++                     []byte("GET /foo\nFoo: Bar\nHost: /var/run/docker.sock\nUser-Agent: Docker\r\n\r\n"),
+++             },
+++     }
+++
+++     // Test for https://github.com/docker/docker/issues/23045
+++     h0 := "GET /foo\nUser-Agent: Docker\r\n\r\n"
+++     h0 = h0 + strings.Repeat("a", 4096-len(h0)-1) + "\n"
+++     tests = append(tests, [2][]byte{[]byte(h0), []byte(h0)})
+++
+++     for _, pair := range tests {
+++             read := make([]byte, 4096)
+++             client := &bufConn{
+++                     buf: bytes.NewBuffer(pair[0]),
+++             }
+++             l := MalformedHostHeaderOverrideConn{client, true}
+++
+++             n, err := l.Read(read)
+++             if err != nil && err != io.EOF {
+++                     t.Fatalf("read: %d - %d, err: %v\n%s", n, len(pair[0]), err, string(read[:n]))
+++             }
+++             if !bytes.Equal(read[:n], pair[1][:n]) {
+++                     t.Fatalf("\n%s\n%s\n", read[:n], pair[1][:n])
+++             }
+++     }
+++}
+++
+++func BenchmarkWithHack(b *testing.B) {
+++     client, srv := net.Pipe()
+++     done := make(chan struct{})
+++     req := []byte("GET /foo\nHost: /var/run/docker.sock\nUser-Agent: Docker\n")
+++     read := make([]byte, 4096)
+++     b.SetBytes(int64(len(req) * 30))
+++
+++     l := MalformedHostHeaderOverrideConn{client, true}
+++     go func() {
+++             for {
+++                     if _, err := srv.Write(req); err != nil {
+++                             srv.Close()
+++                             break
+++                     }
+++                     l.first = true // make sure each subsequent run uses the hack parsing
+++             }
+++             close(done)
+++     }()
+++
+++     for i := 0; i < b.N; i++ {
+++             for i := 0; i < 30; i++ {
+++                     if n, err := l.Read(read); err != nil && err != io.EOF {
+++                             b.Fatalf("read: %d - %d, err: %v\n%s", n, len(req), err, string(read[:n]))
+++                     }
+++             }
+++     }
+++     l.Close()
+++     <-done
+++}
+++
+++func BenchmarkNoHack(b *testing.B) {
+++     client, srv := net.Pipe()
+++     done := make(chan struct{})
+++     req := []byte("GET /foo\nHost: /var/run/docker.sock\nUser-Agent: Docker\n")
+++     read := make([]byte, 4096)
+++     b.SetBytes(int64(len(req) * 30))
+++
+++     go func() {
+++             for {
+++                     if _, err := srv.Write(req); err != nil {
+++                             srv.Close()
+++                             break
+++                     }
+++             }
+++             close(done)
+++     }()
+++
+++     for i := 0; i < b.N; i++ {
+++             for i := 0; i < 30; i++ {
+++                     if _, err := client.Read(read); err != nil && err != io.EOF {
+++                             b.Fatal(err)
+++                     }
+++             }
+++     }
+++     client.Close()
+++     <-done
+++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ff88e99a87c096e3752f7d3f453758ea24c1a75e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,95 @@@
++Description: Update aws-sdk-go
++Origin: https://github.com/docker/docker/pull/23063
++
++diff --git a/daemon/logger/awslogs/cloudwatchlogs.go b/daemon/logger/awslogs/cloudwatchlogs.go
++index 698a95d..78a230f 100644
++--- a/daemon/logger/awslogs/cloudwatchlogs.go
+++++ b/daemon/logger/awslogs/cloudwatchlogs.go
++@@ -14,9 +14,9 @@ import (
++      "github.com/Sirupsen/logrus"
++      "github.com/aws/aws-sdk-go/aws"
++      "github.com/aws/aws-sdk-go/aws/awserr"
++-     "github.com/aws/aws-sdk-go/aws/defaults"
++      "github.com/aws/aws-sdk-go/aws/ec2metadata"
++      "github.com/aws/aws-sdk-go/aws/request"
+++     "github.com/aws/aws-sdk-go/aws/session"
++      "github.com/aws/aws-sdk-go/service/cloudwatchlogs"
++      "github.com/docker/docker/daemon/logger"
++      "github.com/docker/docker/dockerversion"
++@@ -66,11 +66,8 @@ type regionFinder interface {
++ 
++ type byTimestamp []*cloudwatchlogs.InputLogEvent
++ 
++-// init registers the awslogs driver and sets the default region, if provided
+++// init registers the awslogs driver
++ func init() {
++-     if os.Getenv(regionEnvKey) != "" {
++-             defaults.DefaultConfig.Region = aws.String(os.Getenv(regionEnvKey))
++-     }
++      if err := logger.RegisterLogDriver(name, New); err != nil {
++              logrus.Fatal(err)
++      }
++@@ -113,7 +110,7 @@ func New(ctx logger.Context) (logger.Logger, error) {
++ // newRegionFinder is a variable such that the implementation
++ // can be swapped out for unit tests.
++ var newRegionFinder = func() regionFinder {
++-     return ec2metadata.New(nil)
+++     return ec2metadata.New(session.New())
++ }
++ 
++ // newAWSLogsClient creates the service client for Amazon CloudWatch Logs.
++@@ -121,28 +118,30 @@ var newRegionFinder = func() regionFinder {
++ // User-Agent string and automatic region detection using the EC2 Instance
++ // Metadata Service when region is otherwise unspecified.
++ func newAWSLogsClient(ctx logger.Context) (api, error) {
++-     config := defaults.DefaultConfig
+++     var region *string
+++     if os.Getenv(regionEnvKey) != "" {
+++             region = aws.String(os.Getenv(regionEnvKey))
+++     }
++      if ctx.Config[regionKey] != "" {
++-             config = defaults.DefaultConfig.Merge(&aws.Config{
++-                     Region: aws.String(ctx.Config[regionKey]),
++-             })
+++             region = aws.String(ctx.Config[regionKey])
++      }
++-     if config.Region == nil || *config.Region == "" {
+++     if region == nil || *region == "" {
++              logrus.Info("Trying to get region from EC2 Metadata")
++              ec2MetadataClient := newRegionFinder()
++-             region, err := ec2MetadataClient.Region()
+++             r, err := ec2MetadataClient.Region()
++              if err != nil {
++                      logrus.WithFields(logrus.Fields{
++                              "error": err,
++                      }).Error("Could not get region from EC2 metadata, environment, or log option")
++                      return nil, errors.New("Cannot determine region for awslogs driver")
++              }
++-             config.Region = &region
+++             region = &r
++      }
++      logrus.WithFields(logrus.Fields{
++-             "region": *config.Region,
+++             "region": *region,
++      }).Debug("Created awslogs client")
++-     client := cloudwatchlogs.New(config)
+++
+++     client := cloudwatchlogs.New(session.New(), aws.NewConfig().WithRegion(*region))
++ 
++      client.Handlers.Build.PushBackNamed(request.NamedHandler{
++              Name: "DockerUserAgentHandler",
++diff --git a/daemon/logger/awslogs/cloudwatchlogs_test.go b/daemon/logger/awslogs/cloudwatchlogs_test.go
++index 0c53407..48882c4 100644
++--- a/daemon/logger/awslogs/cloudwatchlogs_test.go
+++++ b/daemon/logger/awslogs/cloudwatchlogs_test.go
++@@ -47,8 +47,8 @@ func TestNewAWSLogsClientUserAgentHandler(t *testing.T) {
++              },
++      }
++      buildHandlerList.Run(request)
++-     expectedUserAgentString := fmt.Sprintf("Docker %s (%s) %s/%s",
++-             dockerversion.Version, runtime.GOOS, aws.SDKName, aws.SDKVersion)
+++     expectedUserAgentString := fmt.Sprintf("Docker %s (%s) %s/%s (%s; %s; %s)",
+++             dockerversion.Version, runtime.GOOS, aws.SDKName, aws.SDKVersion, runtime.Version(), runtime.GOOS, runtime.GOARCH)
++      userAgent := request.HTTPRequest.Header.Get("User-Agent")
++      if userAgent != expectedUserAgentString {
++              t.Errorf("Wrong User-Agent string, expected \"%s\" but was \"%s\"",
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..938a55c355bc6873b9ea0f4cf21d1c8e77c6cc48
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,81 @@@
++Author: Tianon Gravi <admwiggin@gmail.com>
++Description: remove convenience copies of cgroupfs-mount in init.d / upstart
++Forwarded: not-needed
++Bug-Debian: https://bugs.debian.org/783143
++
++diff --git a/contrib/init/sysvinit-debian/docker b/contrib/init/sysvinit-debian/docker
++index 11500a0..3ad9e2e 100755
++--- a/contrib/init/sysvinit-debian/docker
+++++ b/contrib/init/sysvinit-debian/docker
++@@ -59,37 +59,12 @@ fail_unless_root() {
++      fi
++ }
++ 
++-cgroupfs_mount() {
++-     # see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount
++-     if grep -v '^#' /etc/fstab | grep -q cgroup \
++-             || [ ! -e /proc/cgroups ] \
++-             || [ ! -d /sys/fs/cgroup ]; then
++-             return
++-     fi
++-     if ! mountpoint -q /sys/fs/cgroup; then
++-             mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
++-     fi
++-     (
++-             cd /sys/fs/cgroup
++-             for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
++-                     mkdir -p $sys
++-                     if ! mountpoint -q $sys; then
++-                             if ! mount -n -t cgroup -o $sys cgroup $sys; then
++-                                     rmdir $sys || true
++-                             fi
++-                     fi
++-             done
++-     )
++-}
++-
++ case "$1" in
++      start)
++              check_init
++              
++              fail_unless_root
++ 
++-             cgroupfs_mount
++-
++              touch "$DOCKER_LOGFILE"
++              chgrp docker "$DOCKER_LOGFILE"
++ 
++diff --git a/contrib/init/upstart/docker.conf b/contrib/init/upstart/docker.conf
++index ec50b35..75858f8 100644
++--- a/contrib/init/upstart/docker.conf
+++++ b/contrib/init/upstart/docker.conf
++@@ -9,29 +9,6 @@ respawn
++ 
++ kill timeout 20
++ 
++-pre-start script
++-     # see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount
++-     if grep -v '^#' /etc/fstab | grep -q cgroup \
++-             || [ ! -e /proc/cgroups ] \
++-             || [ ! -d /sys/fs/cgroup ]; then
++-             exit 0
++-     fi
++-     if ! mountpoint -q /sys/fs/cgroup; then
++-             mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
++-     fi
++-     (
++-             cd /sys/fs/cgroup
++-             for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
++-                     mkdir -p $sys
++-                     if ! mountpoint -q $sys; then
++-                             if ! mount -n -t cgroup -o $sys cgroup $sys; then
++-                                     rmdir $sys || true
++-                             fi
++-                     fi
++-             done
++-     )
++-end script
++-
++ script
++      # modify these in /etc/default/$UPSTART_JOB (/etc/default/docker)
++      DOCKER=/usr/bin/$UPSTART_JOB
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..242aebf8b08558fa2e931f208609f29c1cc818c1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,20 @@@
++Author: Paul R. Tagliamonte <paultag@debian.org>
++Last-Update: 2014-05-07
++Description: Use EnvironmentFile with the systemd unit file.
++Bug-Debian: http://bugs.debian.org/746774
++Forwarded: no
++
++diff --git a/contrib/init/systemd/docker.service b/contrib/init/systemd/docker.service
++index 75cb68c..f98012c 100644
++--- a/contrib/init/systemd/docker.service
+++++ b/contrib/init/systemd/docker.service
++@@ -9,7 +9,8 @@ Type=notify
++ # the default is not to use systemd for cgroups because the delegate issues still
++ # exists and systemd currently does not support the cgroup feature set required
++ # for containers run by docker
++-ExecStart=/usr/bin/docker daemon -H fd://
+++EnvironmentFile=-/etc/default/docker
+++ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS
++ MountFlags=slave
++ LimitNOFILE=1048576
++ LimitNPROC=1048576
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f2b1ca59ae76ca0cd954398895cba7944622a013
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1487 @@@
++Description: account for the "github.com/go-check/check" -> "gopkg.in/check.v1" rename
++Author: Tianon Gravi <tianon@debian.org>
++Forwarded: not-needed
++Notes: find -name '*.go' -exec sed -i 's!github.com/go-check/check!gopkg.in/check.v1!g' '{}' + && git checkout -- vendor && git diff -- '*.go' > check-v1.patch
++
++diff --git a/integration-cli/benchmark_test.go b/integration-cli/benchmark_test.go
++index 647d014..3398305 100644
++--- a/integration-cli/benchmark_test.go
+++++ b/integration-cli/benchmark_test.go
++@@ -9,7 +9,7 @@ import (
++      "sync"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) BenchmarkConcurrentContainerActions(c *check.C) {
++diff --git a/integration-cli/check_test.go b/integration-cli/check_test.go
++index aab8e4a..971ac31 100644
++--- a/integration-cli/check_test.go
+++++ b/integration-cli/check_test.go
++@@ -8,7 +8,7 @@ import (
++ 
++      "github.com/docker/docker/cliconfig"
++      "github.com/docker/docker/pkg/reexec"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func Test(t *testing.T) {
++diff --git a/integration-cli/daemon.go b/integration-cli/daemon.go
++index 2e3985a..f6f5f55 100644
++--- a/integration-cli/daemon.go
+++++ b/integration-cli/daemon.go
++@@ -18,7 +18,7 @@ import (
++      "github.com/docker/docker/pkg/ioutils"
++      "github.com/docker/docker/pkg/tlsconfig"
++      "github.com/docker/go-connections/sockets"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // Daemon represents a Docker daemon for the testing framework.
++diff --git a/integration-cli/docker_api_attach_test.go b/integration-cli/docker_api_attach_test.go
++index a0a8e7d..620f5a9 100644
++--- a/integration-cli/docker_api_attach_test.go
+++++ b/integration-cli/docker_api_attach_test.go
++@@ -9,7 +9,7 @@ import (
++      "time"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++      "golang.org/x/net/websocket"
++ )
++ 
++diff --git a/integration-cli/docker_api_auth_test.go b/integration-cli/docker_api_auth_test.go
++index 63e78ab..6445064 100644
++--- a/integration-cli/docker_api_auth_test.go
+++++ b/integration-cli/docker_api_auth_test.go
++@@ -5,7 +5,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/engine-api/types"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // Test case for #22244
++diff --git a/integration-cli/docker_api_build_test.go b/integration-cli/docker_api_build_test.go
++index 49de71c..7132900 100644
++--- a/integration-cli/docker_api_build_test.go
+++++ b/integration-cli/docker_api_build_test.go
++@@ -6,7 +6,7 @@ import (
++      "net/http"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestBuildApiDockerfilePath(c *check.C) {
++diff --git a/integration-cli/docker_api_containers_test.go b/integration-cli/docker_api_containers_test.go
++index 2622a54..2249ed1 100644
++--- a/integration-cli/docker_api_containers_test.go
+++++ b/integration-cli/docker_api_containers_test.go
++@@ -21,7 +21,7 @@ import (
++      "github.com/docker/engine-api/types"
++      containertypes "github.com/docker/engine-api/types/container"
++      networktypes "github.com/docker/engine-api/types/network"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestContainerApiGetAll(c *check.C) {
++diff --git a/integration-cli/docker_api_create_test.go b/integration-cli/docker_api_create_test.go
++index d29b355..727d971 100644
++--- a/integration-cli/docker_api_create_test.go
+++++ b/integration-cli/docker_api_create_test.go
++@@ -5,7 +5,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestApiCreateWithNotExistImage(c *check.C) {
++diff --git a/integration-cli/docker_api_events_test.go b/integration-cli/docker_api_events_test.go
++index cb219fb..b5a6a30 100644
++--- a/integration-cli/docker_api_events_test.go
+++++ b/integration-cli/docker_api_events_test.go
++@@ -11,7 +11,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/jsonmessage"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestEventsApiEmptyOutput(c *check.C) {
++diff --git a/integration-cli/docker_api_exec_resize_test.go b/integration-cli/docker_api_exec_resize_test.go
++index 2c0c876..cf56a42 100644
++--- a/integration-cli/docker_api_exec_resize_test.go
+++++ b/integration-cli/docker_api_exec_resize_test.go
++@@ -10,7 +10,7 @@ import (
++      "sync"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestExecResizeApiHeightWidthNoInt(c *check.C) {
++diff --git a/integration-cli/docker_api_exec_test.go b/integration-cli/docker_api_exec_test.go
++index f16582f..c8729ab 100644
++--- a/integration-cli/docker_api_exec_test.go
+++++ b/integration-cli/docker_api_exec_test.go
++@@ -11,7 +11,7 @@ import (
++      "time"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // Regression test for #9414
++diff --git a/integration-cli/docker_api_images_test.go b/integration-cli/docker_api_images_test.go
++index 9d35b0c..0bee32c 100644
++--- a/integration-cli/docker_api_images_test.go
+++++ b/integration-cli/docker_api_images_test.go
++@@ -8,7 +8,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/engine-api/types"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestApiImagesFilter(c *check.C) {
++diff --git a/integration-cli/docker_api_info_test.go b/integration-cli/docker_api_info_test.go
++index 9e6af66..a154c15 100644
++--- a/integration-cli/docker_api_info_test.go
+++++ b/integration-cli/docker_api_info_test.go
++@@ -4,7 +4,7 @@ import (
++      "net/http"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestInfoApi(c *check.C) {
++diff --git a/integration-cli/docker_api_inspect_test.go b/integration-cli/docker_api_inspect_test.go
++index 6b55159..e4a2421 100644
++--- a/integration-cli/docker_api_inspect_test.go
+++++ b/integration-cli/docker_api_inspect_test.go
++@@ -9,7 +9,7 @@ import (
++      "github.com/docker/docker/pkg/stringutils"
++      "github.com/docker/engine-api/types"
++      "github.com/docker/engine-api/types/versions/v1p20"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestInspectApiContainerResponse(c *check.C) {
++diff --git a/integration-cli/docker_api_inspect_unix_test.go b/integration-cli/docker_api_inspect_unix_test.go
++index fe59860..5a9c8a3 100644
++--- a/integration-cli/docker_api_inspect_unix_test.go
+++++ b/integration-cli/docker_api_inspect_unix_test.go
++@@ -8,7 +8,7 @@ import (
++      "net/http"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // #16665
++diff --git a/integration-cli/docker_api_logs_test.go b/integration-cli/docker_api_logs_test.go
++index 2ff27f8..c71b1cf 100644
++--- a/integration-cli/docker_api_logs_test.go
+++++ b/integration-cli/docker_api_logs_test.go
++@@ -9,7 +9,7 @@ import (
++      "time"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestLogsApiWithStdout(c *check.C) {
++diff --git a/integration-cli/docker_api_network_test.go b/integration-cli/docker_api_network_test.go
++index e65c7b5..967a7d2 100644
++--- a/integration-cli/docker_api_network_test.go
+++++ b/integration-cli/docker_api_network_test.go
++@@ -12,7 +12,7 @@ import (
++      "github.com/docker/engine-api/types"
++      "github.com/docker/engine-api/types/filters"
++      "github.com/docker/engine-api/types/network"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestApiNetworkGetDefaults(c *check.C) {
++diff --git a/integration-cli/docker_api_resize_test.go b/integration-cli/docker_api_resize_test.go
++index 73023dd..9466e71 100644
++--- a/integration-cli/docker_api_resize_test.go
+++++ b/integration-cli/docker_api_resize_test.go
++@@ -5,7 +5,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestResizeApiResponse(c *check.C) {
++diff --git a/integration-cli/docker_api_stats_test.go b/integration-cli/docker_api_stats_test.go
++index 7c3f8d3..40082d6 100644
++--- a/integration-cli/docker_api_stats_test.go
+++++ b/integration-cli/docker_api_stats_test.go
++@@ -13,7 +13,7 @@ import (
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/version"
++      "github.com/docker/engine-api/types"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ var expectedNetworkInterfaceStats = strings.Split("rx_bytes rx_dropped rx_errors rx_packets tx_bytes tx_dropped tx_errors tx_packets", " ")
++diff --git a/integration-cli/docker_api_test.go b/integration-cli/docker_api_test.go
++index a725777..cb22bb8 100644
++--- a/integration-cli/docker_api_test.go
+++++ b/integration-cli/docker_api_test.go
++@@ -12,7 +12,7 @@ import (
++ 
++      "github.com/docker/docker/api"
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestApiOptionsRoute(c *check.C) {
++diff --git a/integration-cli/docker_api_update_unix_test.go b/integration-cli/docker_api_update_unix_test.go
++index 607e76a..a5b69ba 100644
++--- a/integration-cli/docker_api_update_unix_test.go
+++++ b/integration-cli/docker_api_update_unix_test.go
++@@ -6,7 +6,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestApiUpdateContainer(c *check.C) {
++diff --git a/integration-cli/docker_api_version_test.go b/integration-cli/docker_api_version_test.go
++index ccb1484..d71a6bb 100644
++--- a/integration-cli/docker_api_version_test.go
+++++ b/integration-cli/docker_api_version_test.go
++@@ -7,7 +7,7 @@ import (
++      "github.com/docker/docker/dockerversion"
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/engine-api/types"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestGetVersion(c *check.C) {
++diff --git a/integration-cli/docker_api_volumes_test.go b/integration-cli/docker_api_volumes_test.go
++index 732271d..d4ed266 100644
++--- a/integration-cli/docker_api_volumes_test.go
+++++ b/integration-cli/docker_api_volumes_test.go
++@@ -7,7 +7,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/engine-api/types"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestVolumesApiList(c *check.C) {
++diff --git a/integration-cli/docker_cli_attach_test.go b/integration-cli/docker_cli_attach_test.go
++index 0ac3e1a..91934ad 100644
++--- a/integration-cli/docker_cli_attach_test.go
+++++ b/integration-cli/docker_cli_attach_test.go
++@@ -10,7 +10,7 @@ import (
++      "time"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ const attachWait = 5 * time.Second
++diff --git a/integration-cli/docker_cli_attach_unix_test.go b/integration-cli/docker_cli_attach_unix_test.go
++index 7af761d..b5eab25 100644
++--- a/integration-cli/docker_cli_attach_unix_test.go
+++++ b/integration-cli/docker_cli_attach_unix_test.go
++@@ -10,7 +10,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/stringid"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++      "github.com/kr/pty"
++ )
++ 
++diff --git a/integration-cli/docker_cli_authz_unix_test.go b/integration-cli/docker_cli_authz_unix_test.go
++index 0a208d7..ee469b8 100644
++--- a/integration-cli/docker_cli_authz_unix_test.go
+++++ b/integration-cli/docker_cli_authz_unix_test.go
++@@ -20,7 +20,7 @@ import (
++      "github.com/docker/docker/pkg/authorization"
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/plugins"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ const (
++diff --git a/integration-cli/docker_cli_build_test.go b/integration-cli/docker_cli_build_test.go
++index a53df64..e759574 100644
++--- a/integration-cli/docker_cli_build_test.go
+++++ b/integration-cli/docker_cli_build_test.go
++@@ -21,7 +21,7 @@ import (
++      "github.com/docker/docker/pkg/archive"
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/stringutils"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestBuildJSONEmptyRun(c *check.C) {
++diff --git a/integration-cli/docker_cli_build_unix_test.go b/integration-cli/docker_cli_build_unix_test.go
++index 56ab66e..179eef2 100644
++--- a/integration-cli/docker_cli_build_unix_test.go
+++++ b/integration-cli/docker_cli_build_unix_test.go
++@@ -16,7 +16,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/go-units"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestBuildResourceConstraintsAreUsed(c *check.C) {
++diff --git a/integration-cli/docker_cli_by_digest_test.go b/integration-cli/docker_cli_by_digest_test.go
++index f3948d6..713d409 100644
++--- a/integration-cli/docker_cli_by_digest_test.go
+++++ b/integration-cli/docker_cli_by_digest_test.go
++@@ -14,7 +14,7 @@ import (
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/stringutils"
++      "github.com/docker/engine-api/types"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ var (
++diff --git a/integration-cli/docker_cli_commit_test.go b/integration-cli/docker_cli_commit_test.go
++index 086a203..42fc2d5 100644
++--- a/integration-cli/docker_cli_commit_test.go
+++++ b/integration-cli/docker_cli_commit_test.go
++@@ -4,7 +4,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestCommitAfterContainerIsDone(c *check.C) {
++diff --git a/integration-cli/docker_cli_config_test.go b/integration-cli/docker_cli_config_test.go
++index 6015231..568954b 100644
++--- a/integration-cli/docker_cli_config_test.go
+++++ b/integration-cli/docker_cli_config_test.go
++@@ -12,7 +12,7 @@ import (
++      "github.com/docker/docker/dockerversion"
++      "github.com/docker/docker/pkg/homedir"
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestConfigHttpHeader(c *check.C) {
++diff --git a/integration-cli/docker_cli_cp_from_container_test.go b/integration-cli/docker_cli_cp_from_container_test.go
++index 677085a..470b498 100644
++--- a/integration-cli/docker_cli_cp_from_container_test.go
+++++ b/integration-cli/docker_cli_cp_from_container_test.go
++@@ -5,7 +5,7 @@ import (
++      "path/filepath"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // docker cp CONTAINER:PATH LOCALPATH
++diff --git a/integration-cli/docker_cli_cp_test.go b/integration-cli/docker_cli_cp_test.go
++index f1ae760..d4de712 100644
++--- a/integration-cli/docker_cli_cp_test.go
+++++ b/integration-cli/docker_cli_cp_test.go
++@@ -11,7 +11,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ const (
++diff --git a/integration-cli/docker_cli_cp_to_container_test.go b/integration-cli/docker_cli_cp_to_container_test.go
++index 63fbd44..1170cb6 100644
++--- a/integration-cli/docker_cli_cp_to_container_test.go
+++++ b/integration-cli/docker_cli_cp_to_container_test.go
++@@ -4,7 +4,7 @@ import (
++      "os"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // docker cp LOCALPATH CONTAINER:PATH
++diff --git a/integration-cli/docker_cli_cp_to_container_unix_test.go b/integration-cli/docker_cli_cp_to_container_unix_test.go
++index 45d85ba..be4fac2 100644
++--- a/integration-cli/docker_cli_cp_to_container_unix_test.go
+++++ b/integration-cli/docker_cli_cp_to_container_unix_test.go
++@@ -9,7 +9,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/system"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // Check ownership is root, both in non-userns and userns enabled modes
++diff --git a/integration-cli/docker_cli_cp_utils.go b/integration-cli/docker_cli_cp_utils.go
++index 0501c5d..6da0da9 100644
++--- a/integration-cli/docker_cli_cp_utils.go
+++++ b/integration-cli/docker_cli_cp_utils.go
++@@ -11,7 +11,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/archive"
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ type fileType uint32
++diff --git a/integration-cli/docker_cli_create_test.go b/integration-cli/docker_cli_create_test.go
++index a22bb3e..5e72d19 100644
++--- a/integration-cli/docker_cli_create_test.go
+++++ b/integration-cli/docker_cli_create_test.go
++@@ -15,7 +15,7 @@ import (
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/stringid"
++      "github.com/docker/go-connections/nat"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // Make sure we can create a simple container with some args
++diff --git a/integration-cli/docker_cli_daemon_experimental_test.go b/integration-cli/docker_cli_daemon_experimental_test.go
++index fea887d..0e3829d 100644
++--- a/integration-cli/docker_cli_daemon_experimental_test.go
+++++ b/integration-cli/docker_cli_daemon_experimental_test.go
++@@ -9,7 +9,7 @@ import (
++      "strings"
++      "time"
++ 
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // TestDaemonRestartWithKilledRunningContainer requires live restore of running containers
++diff --git a/integration-cli/docker_cli_daemon_not_experimental_test.go b/integration-cli/docker_cli_daemon_not_experimental_test.go
++index 8c5634c..584e033 100644
++--- a/integration-cli/docker_cli_daemon_not_experimental_test.go
+++++ b/integration-cli/docker_cli_daemon_not_experimental_test.go
++@@ -7,7 +7,7 @@ import (
++      "os"
++      "strings"
++ 
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // os.Kill should kill daemon ungracefully, leaving behind container mounts.
++diff --git a/integration-cli/docker_cli_daemon_test.go b/integration-cli/docker_cli_daemon_test.go
++index 348653b..abcc5f7 100644
++--- a/integration-cli/docker_cli_daemon_test.go
+++++ b/integration-cli/docker_cli_daemon_test.go
++@@ -25,7 +25,7 @@ import (
++      "github.com/docker/go-units"
++      "github.com/docker/libnetwork/iptables"
++      "github.com/docker/libtrust"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++      "github.com/kr/pty"
++ )
++ 
++diff --git a/integration-cli/docker_cli_diff_test.go b/integration-cli/docker_cli_diff_test.go
++index e0d0914..797f576 100644
++--- a/integration-cli/docker_cli_diff_test.go
+++++ b/integration-cli/docker_cli_diff_test.go
++@@ -4,7 +4,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // ensure that an added file shows up in docker diff
++diff --git a/integration-cli/docker_cli_events_test.go b/integration-cli/docker_cli_events_test.go
++index f17b711..1190607 100644
++--- a/integration-cli/docker_cli_events_test.go
+++++ b/integration-cli/docker_cli_events_test.go
++@@ -14,7 +14,7 @@ import (
++ 
++      "github.com/docker/docker/daemon/events/testutils"
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestEventsTimestampFormats(c *check.C) {
++diff --git a/integration-cli/docker_cli_events_unix_test.go b/integration-cli/docker_cli_events_unix_test.go
++index c5e48f2..ca8cf1b 100644
++--- a/integration-cli/docker_cli_events_unix_test.go
+++++ b/integration-cli/docker_cli_events_unix_test.go
++@@ -13,7 +13,7 @@ import (
++      "unicode"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++      "github.com/kr/pty"
++ )
++ 
++diff --git a/integration-cli/docker_cli_exec_test.go b/integration-cli/docker_cli_exec_test.go
++index a8150ad..007b1a2 100644
++--- a/integration-cli/docker_cli_exec_test.go
+++++ b/integration-cli/docker_cli_exec_test.go
++@@ -15,7 +15,7 @@ import (
++      "time"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestExec(c *check.C) {
++diff --git a/integration-cli/docker_cli_exec_unix_test.go b/integration-cli/docker_cli_exec_unix_test.go
++index 42db409..a063afa 100644
++--- a/integration-cli/docker_cli_exec_unix_test.go
+++++ b/integration-cli/docker_cli_exec_unix_test.go
++@@ -10,7 +10,7 @@ import (
++      "time"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++      "github.com/kr/pty"
++ )
++ 
++diff --git a/integration-cli/docker_cli_experimental_test.go b/integration-cli/docker_cli_experimental_test.go
++index 8795078..c7476cc 100644
++--- a/integration-cli/docker_cli_experimental_test.go
+++++ b/integration-cli/docker_cli_experimental_test.go
++@@ -4,7 +4,7 @@ package main
++ 
++ import (
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++      "strings"
++ )
++ 
++diff --git a/integration-cli/docker_cli_export_import_test.go b/integration-cli/docker_cli_export_import_test.go
++index 069dc08..59c79e5 100644
++--- a/integration-cli/docker_cli_export_import_test.go
+++++ b/integration-cli/docker_cli_export_import_test.go
++@@ -6,7 +6,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // export an image and try to import it into a new one
++diff --git a/integration-cli/docker_cli_external_graphdriver_unix_test.go b/integration-cli/docker_cli_external_graphdriver_unix_test.go
++index 33fe405..316bc54 100644
++--- a/integration-cli/docker_cli_external_graphdriver_unix_test.go
+++++ b/integration-cli/docker_cli_external_graphdriver_unix_test.go
++@@ -17,7 +17,7 @@ import (
++      "github.com/docker/docker/daemon/graphdriver/vfs"
++      "github.com/docker/docker/pkg/archive"
++      "github.com/docker/docker/pkg/plugins"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func init() {
++diff --git a/integration-cli/docker_cli_help_test.go b/integration-cli/docker_cli_help_test.go
++index 93ccbeb..123115e 100644
++--- a/integration-cli/docker_cli_help_test.go
+++++ b/integration-cli/docker_cli_help_test.go
++@@ -8,7 +8,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/homedir"
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestHelpTextVerify(c *check.C) {
++diff --git a/integration-cli/docker_cli_history_test.go b/integration-cli/docker_cli_history_test.go
++index 0ee1c46..b700020 100644
++--- a/integration-cli/docker_cli_history_test.go
+++++ b/integration-cli/docker_cli_history_test.go
++@@ -7,7 +7,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // This is a heisen-test.  Because the created timestamp of images and the behavior of
++diff --git a/integration-cli/docker_cli_images_test.go b/integration-cli/docker_cli_images_test.go
++index dbceddf..9720618 100644
++--- a/integration-cli/docker_cli_images_test.go
+++++ b/integration-cli/docker_cli_images_test.go
++@@ -12,7 +12,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/stringid"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestImagesEnsureImageIsListed(c *check.C) {
++diff --git a/integration-cli/docker_cli_import_test.go b/integration-cli/docker_cli_import_test.go
++index 9420daf..0e33a4e 100644
++--- a/integration-cli/docker_cli_import_test.go
+++++ b/integration-cli/docker_cli_import_test.go
++@@ -10,7 +10,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestImportDisplay(c *check.C) {
++diff --git a/integration-cli/docker_cli_info_test.go b/integration-cli/docker_cli_info_test.go
++index dd23694..4a545f1 100644
++--- a/integration-cli/docker_cli_info_test.go
+++++ b/integration-cli/docker_cli_info_test.go
++@@ -7,7 +7,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/utils"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // ensure docker info succeeds
++diff --git a/integration-cli/docker_cli_inspect_experimental_test.go b/integration-cli/docker_cli_inspect_experimental_test.go
++index 0d9a261..2fb1649 100644
++--- a/integration-cli/docker_cli_inspect_experimental_test.go
+++++ b/integration-cli/docker_cli_inspect_experimental_test.go
++@@ -5,7 +5,7 @@ package main
++ import (
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/engine-api/types"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestInspectNamedMountPoint(c *check.C) {
++diff --git a/integration-cli/docker_cli_inspect_test.go b/integration-cli/docker_cli_inspect_test.go
++index 2961453..4b00859 100644
++--- a/integration-cli/docker_cli_inspect_test.go
+++++ b/integration-cli/docker_cli_inspect_test.go
++@@ -11,7 +11,7 @@ import (
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/engine-api/types"
++      "github.com/docker/engine-api/types/container"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func checkValidGraphDriver(c *check.C, name string) {
++diff --git a/integration-cli/docker_cli_kill_test.go b/integration-cli/docker_cli_kill_test.go
++index 05d9a55..5091fc0 100644
++--- a/integration-cli/docker_cli_kill_test.go
+++++ b/integration-cli/docker_cli_kill_test.go
++@@ -6,7 +6,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestKillContainer(c *check.C) {
++diff --git a/integration-cli/docker_cli_links_test.go b/integration-cli/docker_cli_links_test.go
++index 322b58c..5f43d2d 100644
++--- a/integration-cli/docker_cli_links_test.go
+++++ b/integration-cli/docker_cli_links_test.go
++@@ -7,7 +7,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/runconfig"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestLinksPingUnlinkedContainers(c *check.C) {
++diff --git a/integration-cli/docker_cli_links_unix_test.go b/integration-cli/docker_cli_links_unix_test.go
++index 1af9279..a5f7d9e 100644
++--- a/integration-cli/docker_cli_links_unix_test.go
+++++ b/integration-cli/docker_cli_links_unix_test.go
++@@ -7,7 +7,7 @@ import (
++      "os"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestLinksEtcHostsContentMatch(c *check.C) {
++diff --git a/integration-cli/docker_cli_login_test.go b/integration-cli/docker_cli_login_test.go
++index 01de75d..d5bbe9f 100644
++--- a/integration-cli/docker_cli_login_test.go
+++++ b/integration-cli/docker_cli_login_test.go
++@@ -5,7 +5,7 @@ import (
++      "os/exec"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestLoginWithoutTTY(c *check.C) {
++diff --git a/integration-cli/docker_cli_logout_test.go b/integration-cli/docker_cli_logout_test.go
++index 6658da5..87c5f5c 100644
++--- a/integration-cli/docker_cli_logout_test.go
+++++ b/integration-cli/docker_cli_logout_test.go
++@@ -7,7 +7,7 @@ import (
++      "path/filepath"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerRegistryAuthHtpasswdSuite) TestLogoutWithExternalAuth(c *check.C) {
++diff --git a/integration-cli/docker_cli_logs_bench_test.go b/integration-cli/docker_cli_logs_bench_test.go
++index eeb008d..c05dd71 100644
++--- a/integration-cli/docker_cli_logs_bench_test.go
+++++ b/integration-cli/docker_cli_logs_bench_test.go
++@@ -5,7 +5,7 @@ import (
++      "strings"
++      "time"
++ 
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) BenchmarkLogsCLIRotateFollow(c *check.C) {
++diff --git a/integration-cli/docker_cli_logs_test.go b/integration-cli/docker_cli_logs_test.go
++index e18916d..a6f08ad 100644
++--- a/integration-cli/docker_cli_logs_test.go
+++++ b/integration-cli/docker_cli_logs_test.go
++@@ -10,7 +10,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/jsonlog"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // This used to work, it test a log of PageSize-1 (gh#4851)
++diff --git a/integration-cli/docker_cli_nat_test.go b/integration-cli/docker_cli_nat_test.go
++index 7f4cc2c..45496d3 100644
++--- a/integration-cli/docker_cli_nat_test.go
+++++ b/integration-cli/docker_cli_nat_test.go
++@@ -7,7 +7,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func startServerContainer(c *check.C, msg string, port int) string {
++diff --git a/integration-cli/docker_cli_netmode_test.go b/integration-cli/docker_cli_netmode_test.go
++index 142f192..8266711 100644
++--- a/integration-cli/docker_cli_netmode_test.go
+++++ b/integration-cli/docker_cli_netmode_test.go
++@@ -3,7 +3,7 @@ package main
++ import (
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/runconfig"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // GH14530. Validates combinations of --net= with other options
++diff --git a/integration-cli/docker_cli_network_unix_test.go b/integration-cli/docker_cli_network_unix_test.go
++index 902766d..c5ef222 100644
++--- a/integration-cli/docker_cli_network_unix_test.go
+++++ b/integration-cli/docker_cli_network_unix_test.go
++@@ -22,7 +22,7 @@ import (
++      "github.com/docker/libnetwork/ipamapi"
++      remoteipam "github.com/docker/libnetwork/ipams/remote/api"
++      "github.com/docker/libnetwork/netlabel"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++      "github.com/vishvananda/netlink"
++ )
++ 
++diff --git a/integration-cli/docker_cli_oom_killed_test.go b/integration-cli/docker_cli_oom_killed_test.go
++index ff77f57..01c8564 100644
++--- a/integration-cli/docker_cli_oom_killed_test.go
+++++ b/integration-cli/docker_cli_oom_killed_test.go
++@@ -4,7 +4,7 @@ package main
++ 
++ import (
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestInspectOomKilledTrue(c *check.C) {
++diff --git a/integration-cli/docker_cli_pause_test.go b/integration-cli/docker_cli_pause_test.go
++index a42c2f5..f12baae 100644
++--- a/integration-cli/docker_cli_pause_test.go
+++++ b/integration-cli/docker_cli_pause_test.go
++@@ -5,7 +5,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestPause(c *check.C) {
++diff --git a/integration-cli/docker_cli_port_test.go b/integration-cli/docker_cli_port_test.go
++index 80b00fe..68ca3f8 100644
++--- a/integration-cli/docker_cli_port_test.go
+++++ b/integration-cli/docker_cli_port_test.go
++@@ -8,7 +8,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestPortList(c *check.C) {
++diff --git a/integration-cli/docker_cli_proxy_test.go b/integration-cli/docker_cli_proxy_test.go
++index e5699ca..9a131ed 100644
++--- a/integration-cli/docker_cli_proxy_test.go
+++++ b/integration-cli/docker_cli_proxy_test.go
++@@ -6,7 +6,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestCliProxyDisableProxyUnixSock(c *check.C) {
++diff --git a/integration-cli/docker_cli_ps_test.go b/integration-cli/docker_cli_ps_test.go
++index 72650ff..c2e7b78 100644
++--- a/integration-cli/docker_cli_ps_test.go
+++++ b/integration-cli/docker_cli_ps_test.go
++@@ -13,7 +13,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/stringid"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestPsListContainersBase(c *check.C) {
++diff --git a/integration-cli/docker_cli_pull_local_test.go b/integration-cli/docker_cli_pull_local_test.go
++index 1f85832..b96d9d5 100644
++--- a/integration-cli/docker_cli_pull_local_test.go
+++++ b/integration-cli/docker_cli_pull_local_test.go
++@@ -16,7 +16,7 @@ import (
++      "github.com/docker/distribution/manifest/manifestlist"
++      "github.com/docker/distribution/manifest/schema2"
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // testPullImageWithAliases pulls a specific image tag and verifies that any aliases (i.e., other
++diff --git a/integration-cli/docker_cli_pull_test.go b/integration-cli/docker_cli_pull_test.go
++index ac211d2..81a8bbb 100644
++--- a/integration-cli/docker_cli_pull_test.go
+++++ b/integration-cli/docker_cli_pull_test.go
++@@ -9,7 +9,7 @@ import (
++ 
++      "github.com/docker/distribution/digest"
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // TestPullFromCentralRegistry pulls an image from the central registry and verifies that the client
++diff --git a/integration-cli/docker_cli_pull_trusted_test.go b/integration-cli/docker_cli_pull_trusted_test.go
++index 6bc38e6..25e628f 100644
++--- a/integration-cli/docker_cli_pull_trusted_test.go
+++++ b/integration-cli/docker_cli_pull_trusted_test.go
++@@ -8,7 +8,7 @@ import (
++      "time"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerTrustSuite) TestTrustedPull(c *check.C) {
++diff --git a/integration-cli/docker_cli_push_test.go b/integration-cli/docker_cli_push_test.go
++index 6b3d823..8bf9cea 100644
++--- a/integration-cli/docker_cli_push_test.go
+++++ b/integration-cli/docker_cli_push_test.go
++@@ -15,7 +15,7 @@ import (
++      "github.com/docker/distribution/digest"
++      "github.com/docker/docker/cliconfig"
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // Pushing an image to a private registry.
++diff --git a/integration-cli/docker_cli_registry_user_agent_test.go b/integration-cli/docker_cli_registry_user_agent_test.go
++index 67a950c..5ab294c 100644
++--- a/integration-cli/docker_cli_registry_user_agent_test.go
+++++ b/integration-cli/docker_cli_registry_user_agent_test.go
++@@ -5,7 +5,7 @@ import (
++      "net/http"
++      "regexp"
++ 
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // unescapeBackslashSemicolonParens unescapes \;()
++diff --git a/integration-cli/docker_cli_rename_test.go b/integration-cli/docker_cli_rename_test.go
++index cbb60f8..1c3dfa7 100644
++--- a/integration-cli/docker_cli_rename_test.go
+++++ b/integration-cli/docker_cli_rename_test.go
++@@ -5,7 +5,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/stringid"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestRenameStoppedContainer(c *check.C) {
++diff --git a/integration-cli/docker_cli_restart_test.go b/integration-cli/docker_cli_restart_test.go
++index 31c8920..7bca267 100644
++--- a/integration-cli/docker_cli_restart_test.go
+++++ b/integration-cli/docker_cli_restart_test.go
++@@ -7,7 +7,7 @@ import (
++      "time"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestRestartStoppedContainer(c *check.C) {
++diff --git a/integration-cli/docker_cli_rm_test.go b/integration-cli/docker_cli_rm_test.go
++index 0186c56..73c5658 100644
++--- a/integration-cli/docker_cli_rm_test.go
+++++ b/integration-cli/docker_cli_rm_test.go
++@@ -5,7 +5,7 @@ import (
++      "os"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestRmContainerWithRemovedVolume(c *check.C) {
++diff --git a/integration-cli/docker_cli_rmi_test.go b/integration-cli/docker_cli_rmi_test.go
++index 697be32..c251d51 100644
++--- a/integration-cli/docker_cli_rmi_test.go
+++++ b/integration-cli/docker_cli_rmi_test.go
++@@ -8,7 +8,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/stringid"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestRmiWithContainerFails(c *check.C) {
++diff --git a/integration-cli/docker_cli_run_test.go b/integration-cli/docker_cli_run_test.go
++index 6e45fca..eee0d94 100644
++--- a/integration-cli/docker_cli_run_test.go
+++++ b/integration-cli/docker_cli_run_test.go
++@@ -25,7 +25,7 @@ import (
++      "github.com/docker/go-connections/nat"
++      "github.com/docker/libnetwork/netutils"
++      "github.com/docker/libnetwork/resolvconf"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++      libcontainerUser "github.com/opencontainers/runc/libcontainer/user"
++ )
++ 
++diff --git a/integration-cli/docker_cli_run_unix_test.go b/integration-cli/docker_cli_run_unix_test.go
++index fe7cc69..9ddac61 100644
++--- a/integration-cli/docker_cli_run_unix_test.go
+++++ b/integration-cli/docker_cli_run_unix_test.go
++@@ -21,7 +21,7 @@ import (
++      "github.com/docker/docker/pkg/mount"
++      "github.com/docker/docker/pkg/parsers"
++      "github.com/docker/docker/pkg/sysinfo"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++      "github.com/kr/pty"
++ )
++ 
++diff --git a/integration-cli/docker_cli_save_load_test.go b/integration-cli/docker_cli_save_load_test.go
++index b21c987..2dd3106 100644
++--- a/integration-cli/docker_cli_save_load_test.go
+++++ b/integration-cli/docker_cli_save_load_test.go
++@@ -15,7 +15,7 @@ import (
++ 
++      "github.com/docker/distribution/digest"
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // save a repo using gz compression and try to load it using stdout
++diff --git a/integration-cli/docker_cli_save_load_unix_test.go b/integration-cli/docker_cli_save_load_unix_test.go
++index d9dd95f..5cdba85 100644
++--- a/integration-cli/docker_cli_save_load_unix_test.go
+++++ b/integration-cli/docker_cli_save_load_unix_test.go
++@@ -10,7 +10,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++      "github.com/kr/pty"
++ )
++ 
++diff --git a/integration-cli/docker_cli_search_test.go b/integration-cli/docker_cli_search_test.go
++index dfab810..f7a988b 100644
++--- a/integration-cli/docker_cli_search_test.go
+++++ b/integration-cli/docker_cli_search_test.go
++@@ -4,7 +4,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // search for repos named  "registry" on the central registry
++diff --git a/integration-cli/docker_cli_sni_test.go b/integration-cli/docker_cli_sni_test.go
++index fb896d5..cba8d97 100644
++--- a/integration-cli/docker_cli_sni_test.go
+++++ b/integration-cli/docker_cli_sni_test.go
++@@ -10,7 +10,7 @@ import (
++      "os/exec"
++      "strings"
++ 
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestClientSetsTLSServerName(c *check.C) {
++diff --git a/integration-cli/docker_cli_start_test.go b/integration-cli/docker_cli_start_test.go
++index 4334219..aedfd4d 100644
++--- a/integration-cli/docker_cli_start_test.go
+++++ b/integration-cli/docker_cli_start_test.go
++@@ -6,7 +6,7 @@ import (
++      "time"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // Regression test for https://github.com/docker/docker/issues/7843
++diff --git a/integration-cli/docker_cli_start_volume_driver_unix_test.go b/integration-cli/docker_cli_start_volume_driver_unix_test.go
++index cc5d0b1..c511cf0 100644
++--- a/integration-cli/docker_cli_start_volume_driver_unix_test.go
+++++ b/integration-cli/docker_cli_start_volume_driver_unix_test.go
++@@ -17,7 +17,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/engine-api/types"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func init() {
++diff --git a/integration-cli/docker_cli_stats_test.go b/integration-cli/docker_cli_stats_test.go
++index e3c7a3e..97861e2 100644
++--- a/integration-cli/docker_cli_stats_test.go
+++++ b/integration-cli/docker_cli_stats_test.go
++@@ -8,7 +8,7 @@ import (
++      "time"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestStatsNoStream(c *check.C) {
++diff --git a/integration-cli/docker_cli_tag_test.go b/integration-cli/docker_cli_tag_test.go
++index 1e60152..e290999 100644
++--- a/integration-cli/docker_cli_tag_test.go
+++++ b/integration-cli/docker_cli_tag_test.go
++@@ -7,7 +7,7 @@ import (
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/stringid"
++      "github.com/docker/docker/pkg/stringutils"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // tagging a named image in a new unprefixed repo should work
++diff --git a/integration-cli/docker_cli_top_test.go b/integration-cli/docker_cli_top_test.go
++index e0865b9..3cf9ace 100644
++--- a/integration-cli/docker_cli_top_test.go
+++++ b/integration-cli/docker_cli_top_test.go
++@@ -4,7 +4,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestTopMultipleArgs(c *check.C) {
++diff --git a/integration-cli/docker_cli_update_test.go b/integration-cli/docker_cli_update_test.go
++index 188030f..5a0178b 100644
++--- a/integration-cli/docker_cli_update_test.go
+++++ b/integration-cli/docker_cli_update_test.go
++@@ -5,7 +5,7 @@ import (
++      "time"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestUpdateRestartPolicy(c *check.C) {
++diff --git a/integration-cli/docker_cli_update_unix_test.go b/integration-cli/docker_cli_update_unix_test.go
++index c40ad3e..e4267b1 100644
++--- a/integration-cli/docker_cli_update_unix_test.go
+++++ b/integration-cli/docker_cli_update_unix_test.go
++@@ -9,7 +9,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/engine-api/types"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestUpdateRunningContainer(c *check.C) {
++diff --git a/integration-cli/docker_cli_userns_test.go b/integration-cli/docker_cli_userns_test.go
++index f8b3f77..d14d5d3 100644
++--- a/integration-cli/docker_cli_userns_test.go
+++++ b/integration-cli/docker_cli_userns_test.go
++@@ -13,7 +13,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/system"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // user namespaces test: run daemon with remapped root setting
++diff --git a/integration-cli/docker_cli_v2_only_test.go b/integration-cli/docker_cli_v2_only_test.go
++index 889936a..72438e9 100644
++--- a/integration-cli/docker_cli_v2_only_test.go
+++++ b/integration-cli/docker_cli_v2_only_test.go
++@@ -6,7 +6,7 @@ import (
++      "net/http"
++      "os"
++ 
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func makefile(contents string) (string, func(), error) {
++diff --git a/integration-cli/docker_cli_version_test.go b/integration-cli/docker_cli_version_test.go
++index 7672beb..16d02c9 100644
++--- a/integration-cli/docker_cli_version_test.go
+++++ b/integration-cli/docker_cli_version_test.go
++@@ -4,7 +4,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // ensure docker version works
++diff --git a/integration-cli/docker_cli_volume_test.go b/integration-cli/docker_cli_volume_test.go
++index a10316f..4bb0c3b 100644
++--- a/integration-cli/docker_cli_volume_test.go
+++++ b/integration-cli/docker_cli_volume_test.go
++@@ -5,7 +5,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DockerSuite) TestVolumeCliCreate(c *check.C) {
++diff --git a/integration-cli/docker_cli_wait_test.go b/integration-cli/docker_cli_wait_test.go
++index 2993397..4eb7f3a 100644
++--- a/integration-cli/docker_cli_wait_test.go
+++++ b/integration-cli/docker_cli_wait_test.go
++@@ -7,7 +7,7 @@ import (
++      "time"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // non-blocking wait with 0 exit code
++diff --git a/integration-cli/docker_experimental_network_test.go b/integration-cli/docker_experimental_network_test.go
++index f33dbd1..3437702 100644
++--- a/integration-cli/docker_experimental_network_test.go
+++++ b/integration-cli/docker_experimental_network_test.go
++@@ -9,7 +9,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/parsers/kernel"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ var (
++diff --git a/integration-cli/docker_hub_pull_suite_test.go b/integration-cli/docker_hub_pull_suite_test.go
++index 6aa9346..9533cc3 100644
++--- a/integration-cli/docker_hub_pull_suite_test.go
+++++ b/integration-cli/docker_hub_pull_suite_test.go
++@@ -6,7 +6,7 @@ import (
++      "strings"
++ 
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func init() {
++diff --git a/integration-cli/docker_utils.go b/integration-cli/docker_utils.go
++index 3198287..e9e2452 100644
++--- a/integration-cli/docker_utils.go
+++++ b/integration-cli/docker_utils.go
++@@ -30,7 +30,7 @@ import (
++      "github.com/docker/engine-api/types"
++      "github.com/docker/go-connections/tlsconfig"
++      "github.com/docker/go-units"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func init() {
++diff --git a/integration-cli/events_utils.go b/integration-cli/events_utils.go
++index cdd3106..cc534db 100644
++--- a/integration-cli/events_utils.go
+++++ b/integration-cli/events_utils.go
++@@ -12,7 +12,7 @@ import (
++      "github.com/Sirupsen/logrus"
++      "github.com/docker/docker/daemon/events/testutils"
++      "github.com/docker/docker/pkg/integration/checker"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // eventMatcher is a function that tries to match an event input.
++diff --git a/integration-cli/registry.go b/integration-cli/registry.go
++index fa3fb87..e039771 100644
++--- a/integration-cli/registry.go
+++++ b/integration-cli/registry.go
++@@ -9,7 +9,7 @@ import (
++      "path/filepath"
++ 
++      "github.com/docker/distribution/digest"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ const (
++diff --git a/integration-cli/registry_mock.go b/integration-cli/registry_mock.go
++index 300bf46..cf0c77a 100644
++--- a/integration-cli/registry_mock.go
+++++ b/integration-cli/registry_mock.go
++@@ -7,7 +7,7 @@ import (
++      "strings"
++      "sync"
++ 
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ type handlerFunc func(w http.ResponseWriter, r *http.Request)
++diff --git a/integration-cli/requirements.go b/integration-cli/requirements.go
++index e948c0a..74d77c8 100644
++--- a/integration-cli/requirements.go
+++++ b/integration-cli/requirements.go
++@@ -9,7 +9,7 @@ import (
++      "strings"
++      "time"
++ 
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ type testCondition func() bool
++diff --git a/integration-cli/trust_server.go b/integration-cli/trust_server.go
++index 77314c3..dbdde32 100644
++--- a/integration-cli/trust_server.go
+++++ b/integration-cli/trust_server.go
++@@ -14,7 +14,7 @@ import (
++      "github.com/docker/docker/cliconfig"
++      "github.com/docker/docker/pkg/integration/checker"
++      "github.com/docker/docker/pkg/tlsconfig"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ var notaryBinary = "notary"
++diff --git a/pkg/discovery/discovery_test.go b/pkg/discovery/discovery_test.go
++index 6084f3e..b1a479c 100644
++--- a/pkg/discovery/discovery_test.go
+++++ b/pkg/discovery/discovery_test.go
++@@ -3,7 +3,7 @@ package discovery
++ import (
++      "testing"
++ 
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // Hook up gocheck into the "go test" runner.
++diff --git a/pkg/discovery/file/file_test.go b/pkg/discovery/file/file_test.go
++index 667f00b..03b6cb1 100644
++--- a/pkg/discovery/file/file_test.go
+++++ b/pkg/discovery/file/file_test.go
++@@ -7,7 +7,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/discovery"
++ 
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // Hook up gocheck into the "go test" runner.
++diff --git a/pkg/discovery/generator_test.go b/pkg/discovery/generator_test.go
++index 6281c46..ba73a19 100644
++--- a/pkg/discovery/generator_test.go
+++++ b/pkg/discovery/generator_test.go
++@@ -1,7 +1,7 @@
++ package discovery
++ 
++ import (
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ func (s *DiscoverySuite) TestGeneratorNotGenerate(c *check.C) {
++diff --git a/pkg/discovery/kv/kv_test.go b/pkg/discovery/kv/kv_test.go
++index 4fe5239..656e7c8 100644
++--- a/pkg/discovery/kv/kv_test.go
+++++ b/pkg/discovery/kv/kv_test.go
++@@ -12,7 +12,7 @@ import (
++      "github.com/docker/libkv"
++      "github.com/docker/libkv/store"
++ 
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // Hook up gocheck into the "go test" runner.
++diff --git a/pkg/discovery/memory/memory_test.go b/pkg/discovery/memory/memory_test.go
++index c2da0a0..70c6786 100644
++--- a/pkg/discovery/memory/memory_test.go
+++++ b/pkg/discovery/memory/memory_test.go
++@@ -4,7 +4,7 @@ import (
++      "testing"
++ 
++      "github.com/docker/docker/pkg/discovery"
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // Hook up gocheck into the "go test" runner.
++diff --git a/pkg/discovery/nodes/nodes_test.go b/pkg/discovery/nodes/nodes_test.go
++index e26568c..a6b8fea 100644
++--- a/pkg/discovery/nodes/nodes_test.go
+++++ b/pkg/discovery/nodes/nodes_test.go
++@@ -5,7 +5,7 @@ import (
++ 
++      "github.com/docker/docker/pkg/discovery"
++ 
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // Hook up gocheck into the "go test" runner.
++diff --git a/pkg/integration/checker/checker.go b/pkg/integration/checker/checker.go
++index a531499..a33808f 100644
++--- a/pkg/integration/checker/checker.go
+++++ b/pkg/integration/checker/checker.go
++@@ -2,7 +2,7 @@
++ package checker
++ 
++ import (
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++      "github.com/vdemeester/shakers"
++ )
++ 
++diff --git a/pkg/integration/dockerCmd_utils.go b/pkg/integration/dockerCmd_utils.go
++index fab3e06..54ea8cc 100644
++--- a/pkg/integration/dockerCmd_utils.go
+++++ b/pkg/integration/dockerCmd_utils.go
++@@ -6,7 +6,7 @@ import (
++      "strings"
++      "time"
++ 
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ // We use the elongated quote mechanism for quoting error returns as
++diff --git a/pkg/integration/dockerCmd_utils_test.go b/pkg/integration/dockerCmd_utils_test.go
++index 3dd5d11..a5900db 100644
++--- a/pkg/integration/dockerCmd_utils_test.go
+++++ b/pkg/integration/dockerCmd_utils_test.go
++@@ -10,7 +10,7 @@ import (
++      "strings"
++      "time"
++ 
++-     "github.com/go-check/check"
+++     "gopkg.in/check.v1"
++ )
++ 
++ const dockerBinary = "docker"
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9f2da2ebe2b9b0b64d2050aa143775c1d72482ae
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,18 @@@
++Description: Docker is unsupported on kernels < 3.10, so this turns the warning into a fatal error (hard failure)
++Forwarded: not-needed
++Author: Tianon Gravi <admwiggin@gmail.com>
++Reviewed-by: Paul Tagliamonte <paultag@debian.org>
++
++diff --git a/daemon/daemon_unix.go b/daemon/daemon_unix.go
++index 8ea6c5c..1629d38 100644
++--- a/daemon/daemon_unix.go
+++++ b/daemon/daemon_unix.go
++@@ -87,7 +87,7 @@ func checkKernel() error {
++      if !checkKernelVersion(3, 10, 0) {
++              v, _ := kernel.GetKernelVersion()
++              if os.Getenv("DOCKER_NOWARN_KERNEL_VERSION") == "" {
++-                     logrus.Warnf("Your Linux kernel version %s can be unstable running docker. Please upgrade your kernel to 3.10.0.", v.String())
+++                     logrus.Fatalf("Your Linux kernel version %s is unstable running Docker. Please upgrade your kernel to 3.10+.", v.String())
++              }
++      }
++      return nil
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..033b7a1937286c94ef7a688bd0335a99e647042b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,20 @@@
++Last-Update: 2016-06-13
++Forwarded: not-needed
++Author: Dmitry Smirnov <onlyjob@debian.org>
++Description: fix FTBFS by reverting "oci_linux.go" back to 1.11.0 state.
++ Revert breaking change introduced in Docker-1.11.1 that updated bundled
++ "golang-github-opencontainers-specs-dev" to untagged/unreleased snapshot.
++
++--- a/daemon/oci_linux.go
+++++ b/daemon/oci_linux.go
++@@ -670,9 +670,9 @@
++              s.Process.ApparmorProfile = appArmorProfile
++      }
++      s.Process.SelinuxLabel = c.GetProcessLabel()
++      s.Process.NoNewPrivileges = c.NoNewPrivileges
++-     s.Linux.MountLabel = c.MountLabel
+++     //s.Linux.MountLabel = c.MountLabel
++ 
++      return (*libcontainerd.Spec)(&s), nil
++ }
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f011fe8ae45ed60a5ecd5a00e3bae4d1b0519a32
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,149 @@@
++Last-Update: 2016-06-13
++Forwarded: no
++Author: Tim Potter <tpot@hpe.com>
++Reviewed-By: Dmitry Smirnov <onlyjob@debian.org>
++Description: update name space
++
++--- a/daemon/container_operations_unix.go
+++++ b/daemon/container_operations_unix.go
++@@ -24,9 +24,9 @@
++      "github.com/docker/libnetwork"
++      "github.com/opencontainers/runc/libcontainer/configs"
++      "github.com/opencontainers/runc/libcontainer/devices"
++      "github.com/opencontainers/runc/libcontainer/label"
++-     "github.com/opencontainers/specs/specs-go"
+++     "github.com/opencontainers/runtime-spec/specs-go"
++ )
++ 
++ func u32Ptr(i int64) *uint32     { u := uint32(i); return &u }
++ func fmPtr(i int64) *os.FileMode { fm := os.FileMode(i); return &fm }
++--- a/daemon/daemon_unix.go
+++++ b/daemon/daemon_unix.go
++@@ -37,9 +37,9 @@
++      "github.com/docker/libnetwork/options"
++      lntypes "github.com/docker/libnetwork/types"
++      "github.com/opencontainers/runc/libcontainer/label"
++      "github.com/opencontainers/runc/libcontainer/user"
++-     "github.com/opencontainers/specs/specs-go"
+++     "github.com/opencontainers/runtime-spec/specs-go"
++ )
++ 
++ const (
++      // See https://git.kernel.org/cgit/linux/kernel/git/tip/tip.git/tree/kernel/sched/sched.h?id=8cd9234c64c584432f6992fe944ca9e46ca8ea76#n269
++--- a/daemon/oci_linux.go
+++++ b/daemon/oci_linux.go
++@@ -21,9 +21,9 @@
++      containertypes "github.com/docker/engine-api/types/container"
++      "github.com/opencontainers/runc/libcontainer/apparmor"
++      "github.com/opencontainers/runc/libcontainer/devices"
++      "github.com/opencontainers/runc/libcontainer/user"
++-     "github.com/opencontainers/specs/specs-go"
+++     "github.com/opencontainers/runtime-spec/specs-go"
++ )
++ 
++ func setResources(s *specs.Spec, r containertypes.Resources) error {
++      weightDevices, err := getBlkioWeightDevices(r)
++--- a/daemon/seccomp_disabled.go
+++++ b/daemon/seccomp_disabled.go
++@@ -3,9 +3,9 @@
++ package daemon
++ 
++ import (
++      "github.com/docker/docker/container"
++-     "github.com/opencontainers/specs/specs-go"
+++     "github.com/opencontainers/runtime-spec/specs-go"
++ )
++ 
++ func setSeccomp(daemon *Daemon, rs *specs.Spec, c *container.Container) error {
++      return nil
++--- a/daemon/seccomp_linux.go
+++++ b/daemon/seccomp_linux.go
++@@ -7,9 +7,9 @@
++ 
++      "github.com/Sirupsen/logrus"
++      "github.com/docker/docker/container"
++      "github.com/docker/docker/profiles/seccomp"
++-     "github.com/opencontainers/specs/specs-go"
+++     "github.com/opencontainers/runtime-spec/specs-go"
++ )
++ 
++ func setSeccomp(daemon *Daemon, rs *specs.Spec, c *container.Container) error {
++      var profile *specs.Seccomp
++--- a/libcontainerd/client_linux.go
+++++ b/libcontainerd/client_linux.go
++@@ -12,9 +12,9 @@
++      "github.com/Sirupsen/logrus"
++      containerd "github.com/docker/containerd/api/grpc/types"
++      "github.com/docker/docker/pkg/idtools"
++      "github.com/docker/docker/pkg/mount"
++-     "github.com/opencontainers/specs/specs-go"
+++     "github.com/opencontainers/runtime-spec/specs-go"
++      "golang.org/x/net/context"
++ )
++ 
++ type client struct {
++--- a/libcontainerd/container_linux.go
+++++ b/libcontainerd/container_linux.go
++@@ -10,9 +10,9 @@
++ 
++      "github.com/Sirupsen/logrus"
++      containerd "github.com/docker/containerd/api/grpc/types"
++      "github.com/docker/docker/restartmanager"
++-     "github.com/opencontainers/specs/specs-go"
+++     "github.com/opencontainers/runtime-spec/specs-go"
++      "golang.org/x/net/context"
++ )
++ 
++ type container struct {
++--- a/libcontainerd/types_linux.go
+++++ b/libcontainerd/types_linux.go
++@@ -1,9 +1,9 @@
++ package libcontainerd
++ 
++ import (
++      containerd "github.com/docker/containerd/api/grpc/types"
++-     "github.com/opencontainers/specs/specs-go"
+++     "github.com/opencontainers/runtime-spec/specs-go"
++ )
++ 
++ // Spec is the base configuration for the container.  It specifies platform
++ // independent configuration. This information must be included when the
++--- a/libcontainerd/utils_linux.go
+++++ b/libcontainerd/utils_linux.go
++@@ -1,9 +1,9 @@
++ package libcontainerd
++ 
++ import (
++      containerd "github.com/docker/containerd/api/grpc/types"
++-     "github.com/opencontainers/specs/specs-go"
+++     "github.com/opencontainers/runtime-spec/specs-go"
++ )
++ 
++ func getRootIDs(s specs.Spec) (int, int, error) {
++      var hasUserns bool
++--- a/oci/defaults_linux.go
+++++ b/oci/defaults_linux.go
++@@ -3,9 +3,9 @@
++ import (
++      "os"
++      "runtime"
++ 
++-     "github.com/opencontainers/specs/specs-go"
+++     "github.com/opencontainers/runtime-spec/specs-go"
++ )
++ 
++ func sPtr(s string) *string      { return &s }
++ func rPtr(r rune) *rune          { return &r }
++--- a/profiles/seccomp/seccomp.go
+++++ b/profiles/seccomp/seccomp.go
++@@ -6,9 +6,9 @@
++      "encoding/json"
++      "fmt"
++ 
++      "github.com/docker/engine-api/types"
++-     "github.com/opencontainers/specs/specs-go"
+++     "github.com/opencontainers/runtime-spec/specs-go"
++ )
++ 
++ //go:generate go run -tags 'seccomp' generate.go
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..df6db677bba706f856620ce6bade1f39e55814a9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,18 @@@
++Description: move "overlay" to a higher priority (now that AUFS is not supported in Debian kernels)
++Author: Tianon Gravi <tianon@debian.org>
++Forwarded: no
++
++diff --git a/daemon/graphdriver/driver_linux.go b/daemon/graphdriver/driver_linux.go
++index 410a62f..eab78e7 100644
++--- a/daemon/graphdriver/driver_linux.go
+++++ b/daemon/graphdriver/driver_linux.go
++@@ -48,8 +48,8 @@ var (
++              "aufs",
++              "btrfs",
++              "zfs",
++-             "devicemapper",
++              "overlay",
+++             "devicemapper",
++              "vfs",
++      }
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1a84ab1f4e05c7fadaff56f7fef4f51e1b0e7195
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++Description: remove "docker-" prefix on expected "runc" and "containerd" binaries
++Forwarded: not-needed
++Author: Tianon Gravi <tianon@debian.org>
++
++diff --git a/libcontainerd/remote_linux.go b/libcontainerd/remote_linux.go
++index 12ce0e1..cf18865 100644
++--- a/libcontainerd/remote_linux.go
+++++ b/libcontainerd/remote_linux.go
++@@ -30,7 +30,7 @@ const (
++      maxConnectionRetryCount   = 3
++      connectionRetryDelay      = 3 * time.Second
++      containerdShutdownTimeout = 15 * time.Second
++-     containerdBinary          = "docker-containerd"
+++     containerdBinary          = "containerd"
++      containerdPidFilename     = "docker-containerd.pid"
++      containerdSockFilename    = "docker-containerd.sock"
++      eventTimestampFilename    = "event.ts"
++@@ -349,7 +349,7 @@ func (r *remote) runContainerdDaemon() error {
++      }
++ 
++      // Start a new instance
++-     args := []string{"-l", r.rpcAddr, "--runtime", "docker-runc", "--start-timeout", "2m"}
+++     args := []string{"-l", r.rpcAddr, "--runtime", "runc", "--start-timeout", "2m"}
++      if r.debugLog {
++              args = append(args, "--debug", "--metrics-interval=0")
++      }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0181cefe7efe75be924b635a597204d69d9869dc
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,23 @@@
++cgroupfs-mount-convenience-copy.patch
++
++# If upstream ever resolves https://github.com/docker/docker/issues/8969 in a
++# reasonable way, remove this patch.
++fatal-error-old-kernels.patch
++
++# If upstream ever adds EnvFile, remove this patch.
++change-system-unit-env-file.patch
++# See also https://github.com/docker/docker/pull/7220#issuecomment-50076589
++
++overlay.patch
++
++21491--systemd-tasksmax.patch
++22000--ignore-invalid-host-header.patch
++remove-docker-prefix.patch
++
++23063--update-aws-sdk-go.patch
++opencontainer-specs-0.5.0.patch
++opencontainer-specs--no-mountlabel.patch
++
++skip-privileged-unit-tests.patch
++skip-racy-unit-tests.patch
++check-v1.patch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..47547e4a4f31381c61e08cdc1c1e489dcbc6dd95
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,669 @@@
++Description: allow skipping "privileged" tests with "-test.short"
++Author: Tianon Gravi <tianon@debian.org>
++Forwarded: no
++
++--- a/daemon/daemon_test.go
+++++ b/daemon/daemon_test.go
++@@ -154,8 +154,12 @@
++      }
++ }
++ 
++ func TestContainerInitDNS(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      tmp, err := ioutil.TempDir("", "docker-container-test-")
++      if err != nil {
++              t.Fatal(err)
++      }
++--- a/daemon/graphdriver/aufs/aufs_test.go
+++++ b/daemon/graphdriver/aufs/aufs_test.go
++@@ -27,8 +27,12 @@
++      reexec.Init()
++ }
++ 
++ func testInit(dir string, t testing.TB) graphdriver.Driver {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      d, err := Init(dir, nil, nil, nil)
++      if err != nil {
++              if err == graphdriver.ErrNotSupported {
++                      t.Skip(err)
++--- a/daemon/graphdriver/devmapper/devmapper_test.go
+++++ b/daemon/graphdriver/devmapper/devmapper_test.go
++@@ -10,52 +10,72 @@
++      "github.com/docker/docker/daemon/graphdriver"
++      "github.com/docker/docker/daemon/graphdriver/graphtest"
++ )
++ 
++-func init() {
+++func shortSkip(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++}
+++
+++// This avoids creating a new driver for each test if all tests are run
+++// Make sure to put new tests between TestDevmapperSetup and TestDevmapperTeardown
+++func TestDevmapperSetup(t *testing.T) {
+++     shortSkip(t)
+++
++      // Reduce the size the the base fs and loopback for the tests
++      defaultDataLoopbackSize = 300 * 1024 * 1024
++      defaultMetaDataLoopbackSize = 200 * 1024 * 1024
++      defaultBaseFsSize = 300 * 1024 * 1024
++      defaultUdevSyncOverride = true
++      if err := graphtest.InitLoopbacks(); err != nil {
++-             panic(err)
+++             t.Fatal(err)
++      }
++-}
++ 
++-// This avoids creating a new driver for each test if all tests are run
++-// Make sure to put new tests between TestDevmapperSetup and TestDevmapperTeardown
++-func TestDevmapperSetup(t *testing.T) {
++      graphtest.GetDriver(t, "devicemapper")
++ }
++ 
++ func TestDevmapperCreateEmpty(t *testing.T) {
+++     shortSkip(t)
+++
++      graphtest.DriverTestCreateEmpty(t, "devicemapper")
++ }
++ 
++ func TestDevmapperCreateBase(t *testing.T) {
+++     shortSkip(t)
+++
++      graphtest.DriverTestCreateBase(t, "devicemapper")
++ }
++ 
++ func TestDevmapperCreateSnap(t *testing.T) {
+++     shortSkip(t)
+++
++      graphtest.DriverTestCreateSnap(t, "devicemapper")
++ }
++ 
++ func TestDevmapperTeardown(t *testing.T) {
+++     shortSkip(t)
+++
++      graphtest.PutDriver(t)
++ }
++ 
++ func TestDevmapperReduceLoopBackSize(t *testing.T) {
+++     shortSkip(t)
+++
++      tenMB := int64(10 * 1024 * 1024)
++      testChangeLoopBackSize(t, -tenMB, defaultDataLoopbackSize, defaultMetaDataLoopbackSize)
++ }
++ 
++ func TestDevmapperIncreaseLoopBackSize(t *testing.T) {
+++     shortSkip(t)
+++
++      tenMB := int64(10 * 1024 * 1024)
++      testChangeLoopBackSize(t, tenMB, defaultDataLoopbackSize+tenMB, defaultMetaDataLoopbackSize+tenMB)
++ }
++ 
++ func testChangeLoopBackSize(t *testing.T, delta, expectDataSize, expectMetaDataSize int64) {
+++     shortSkip(t)
+++
++      driver := graphtest.GetDriver(t, "devicemapper").(*graphtest.Driver).Driver.(*graphdriver.NaiveDiffDriver).ProtoDriver.(*Driver)
++      defer graphtest.PutDriver(t)
++      // make sure data or metadata loopback size are the default size
++      if s := driver.DeviceSet.Status(); s.Data.Total != uint64(defaultDataLoopbackSize) || s.Metadata.Total != uint64(defaultMetaDataLoopbackSize) {
++@@ -82,8 +102,10 @@
++ }
++ 
++ // Make sure devices.Lock() has been release upon return from cleanupDeletedDevices() function
++ func TestDevmapperLockReleasedDeviceDeletion(t *testing.T) {
+++     shortSkip(t)
+++
++      driver := graphtest.GetDriver(t, "devicemapper").(*graphtest.Driver).Driver.(*graphdriver.NaiveDiffDriver).ProtoDriver.(*Driver)
++      defer graphtest.PutDriver(t)
++ 
++      // Call cleanupDeletedDevices() and after the call take and release
++--- a/daemon/graphdriver/vfs/vfs_test.go
+++++ b/daemon/graphdriver/vfs/vfs_test.go
++@@ -9,29 +9,43 @@
++ 
++      "github.com/docker/docker/pkg/reexec"
++ )
++ 
++-func init() {
++-     reexec.Init()
+++func shortSkip(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
++ }
++ 
++ // This avoids creating a new driver for each test if all tests are run
++ // Make sure to put new tests between TestVfsSetup and TestVfsTeardown
++ func TestVfsSetup(t *testing.T) {
+++     shortSkip(t)
+++
+++     reexec.Init()
+++
++      graphtest.GetDriver(t, "vfs")
++ }
++ 
++ func TestVfsCreateEmpty(t *testing.T) {
+++     shortSkip(t)
+++
++      graphtest.DriverTestCreateEmpty(t, "vfs")
++ }
++ 
++ func TestVfsCreateBase(t *testing.T) {
+++     shortSkip(t)
+++
++      graphtest.DriverTestCreateBase(t, "vfs")
++ }
++ 
++ func TestVfsCreateSnap(t *testing.T) {
+++     shortSkip(t)
+++
++      graphtest.DriverTestCreateSnap(t, "vfs")
++ }
++ 
++ func TestVfsTeardown(t *testing.T) {
+++     shortSkip(t)
+++
++      graphtest.PutDriver(t)
++ }
++--- a/pkg/archive/archive_test.go
+++++ b/pkg/archive/archive_test.go
++@@ -304,8 +304,12 @@
++      }
++ }
++ 
++ func TestUntarPath(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      tmpFolder, err := ioutil.TempDir("", "docker-archive-test")
++      if err != nil {
++              t.Fatal(err)
++      }
++@@ -438,8 +442,12 @@
++      }
++ }
++ 
++ func TestCopyWithTarInexistentDestWillCreateIt(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      tempFolder, err := ioutil.TempDir("", "docker-archive-test")
++      if err != nil {
++              t.Fatal(nil)
++      }
++@@ -922,8 +930,13 @@
++      // TODO Windows. There may be a way of running this, but turning off for now
++      if runtime.GOOS == "windows" {
++              t.Skip("hardlinks on Windows")
++      }
+++
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      for i, headers := range [][]*tar.Header{
++              {
++                      {
++                              Name:     "symlink1",
++--- a/pkg/archive/archive_unix_test.go
+++++ b/pkg/archive/archive_unix_test.go
++@@ -149,8 +149,12 @@
++      return statT.Ino, nil
++ }
++ 
++ func TestTarWithBlockCharFifo(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      origin, err := ioutil.TempDir("", "docker-test-tar-hardlink")
++      if err != nil {
++              t.Fatal(err)
++      }
++@@ -202,8 +206,12 @@
++ }
++ 
++ // TestTarUntarWithXattr is Unix as Lsetxattr is not supported on Windows
++ func TestTarUntarWithXattr(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      origin, err := ioutil.TempDir("", "docker-test-untar-origin")
++      if err != nil {
++              t.Fatal(err)
++      }
++--- a/pkg/archive/changes_test.go
+++++ b/pkg/archive/changes_test.go
++@@ -141,8 +141,12 @@
++      }
++ }
++ 
++ func TestChangesWithChanges(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      // TODO Windows. There may be a way of running this, but turning off for now
++      // as createSampleDir uses symlinks.
++      if runtime.GOOS == "windows" {
++              t.Skip("symlinks on Windows")
++@@ -197,8 +201,13 @@
++      // as createSampleDir uses symlinks.
++      if runtime.GOOS == "windows" {
++              t.Skip("symlinks on Windows")
++      }
+++
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      baseLayer, err := ioutil.TempDir("", "docker-changes-test.")
++      defer os.RemoveAll(baseLayer)
++ 
++      dir3 := path.Join(baseLayer, "dir1/dir2/dir3")
++--- a/pkg/authorization/authz_unix_test.go
+++++ b/pkg/authorization/authz_unix_test.go
++@@ -27,8 +27,12 @@
++ 
++ const pluginAddress = "authzplugin.sock"
++ 
++ func TestAuthZRequestPluginError(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      server := authZPluginTestServer{t: t}
++      go server.start()
++      defer server.stop()
++ 
++@@ -58,8 +62,12 @@
++      }
++ }
++ 
++ func TestAuthZRequestPlugin(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      server := authZPluginTestServer{t: t}
++      go server.start()
++      defer server.stop()
++ 
++@@ -90,8 +98,12 @@
++      }
++ }
++ 
++ func TestAuthZResponsePlugin(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      server := authZPluginTestServer{t: t}
++      go server.start()
++      defer server.stop()
++ 
++--- a/pkg/chrootarchive/archive_test.go
+++++ b/pkg/chrootarchive/archive_test.go
++@@ -21,9 +21,17 @@
++ func init() {
++      reexec.Init()
++ }
++ 
+++func shortSkip(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++}
+++
++ func TestChrootTarUntar(t *testing.T) {
+++     shortSkip(t)
+++
++      tmpdir, err := ioutil.TempDir("", "docker-TestChrootTarUntar")
++      if err != nil {
++              t.Fatal(err)
++      }
++@@ -53,8 +61,10 @@
++ 
++ // gh#10426: Verify the fix for having a huge excludes list (like on `docker load` with large # of
++ // local images)
++ func TestChrootUntarWithHugeExcludesList(t *testing.T) {
+++     shortSkip(t)
+++
++      tmpdir, err := ioutil.TempDir("", "docker-TestChrootUntarHugeExcludes")
++      if err != nil {
++              t.Fatal(err)
++      }
++@@ -87,8 +97,10 @@
++      }
++ }
++ 
++ func TestChrootUntarEmptyArchive(t *testing.T) {
+++     shortSkip(t)
+++
++      tmpdir, err := ioutil.TempDir("", "docker-TestChrootUntarEmptyArchive")
++      if err != nil {
++              t.Fatal(err)
++      }
++@@ -151,8 +163,10 @@
++      return nil
++ }
++ 
++ func TestChrootTarUntarWithSymlink(t *testing.T) {
+++     shortSkip(t)
+++
++      // TODO Windows: Figure out why this is failing
++      if runtime.GOOS == "windows" {
++              t.Skip("Failing on Windows")
++      }
++@@ -177,8 +191,10 @@
++      }
++ }
++ 
++ func TestChrootCopyWithTar(t *testing.T) {
+++     shortSkip(t)
+++
++      // TODO Windows: Figure out why this is failing
++      if runtime.GOOS == "windows" {
++              t.Skip("Failing on Windows")
++      }
++@@ -227,8 +243,10 @@
++      }
++ }
++ 
++ func TestChrootCopyFileWithTar(t *testing.T) {
+++     shortSkip(t)
+++
++      tmpdir, err := ioutil.TempDir("", "docker-TestChrootCopyFileWithTar")
++      if err != nil {
++              t.Fatal(err)
++      }
++@@ -270,8 +288,10 @@
++      }
++ }
++ 
++ func TestChrootUntarPath(t *testing.T) {
+++     shortSkip(t)
+++
++      // TODO Windows: Figure out why this is failing
++      if runtime.GOOS == "windows" {
++              t.Skip("Failing on Windows")
++      }
++@@ -335,8 +355,10 @@
++      return count, nil
++ }
++ 
++ func TestChrootUntarEmptyArchiveFromSlowReader(t *testing.T) {
+++     shortSkip(t)
+++
++      tmpdir, err := ioutil.TempDir("", "docker-TestChrootUntarEmptyArchiveFromSlowReader")
++      if err != nil {
++              t.Fatal(err)
++      }
++@@ -351,8 +373,10 @@
++      }
++ }
++ 
++ func TestChrootApplyEmptyArchiveFromSlowReader(t *testing.T) {
+++     shortSkip(t)
+++
++      tmpdir, err := ioutil.TempDir("", "docker-TestChrootApplyEmptyArchiveFromSlowReader")
++      if err != nil {
++              t.Fatal(err)
++      }
++@@ -367,8 +391,10 @@
++      }
++ }
++ 
++ func TestChrootApplyDotDotFile(t *testing.T) {
+++     shortSkip(t)
+++
++      tmpdir, err := ioutil.TempDir("", "docker-TestChrootApplyDotDotFile")
++      if err != nil {
++              t.Fatal(err)
++      }
++--- a/pkg/idtools/idtools_unix_test.go
+++++ b/pkg/idtools/idtools_unix_test.go
++@@ -16,8 +16,12 @@
++      gid int
++ }
++ 
++ func TestMkdirAllAs(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      dirName, err := ioutil.TempDir("", "mkdirall")
++      if err != nil {
++              t.Fatalf("Couldn't create temp dir: %v", err)
++      }
++@@ -76,8 +80,11 @@
++      }
++ }
++ 
++ func TestMkdirAllNewAs(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
++ 
++      dirName, err := ioutil.TempDir("", "mkdirnew")
++      if err != nil {
++              t.Fatalf("Couldn't create temp dir: %v", err)
++@@ -136,8 +143,11 @@
++      }
++ }
++ 
++ func TestMkdirAs(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
++ 
++      dirName, err := ioutil.TempDir("", "mkdir")
++      if err != nil {
++              t.Fatalf("Couldn't create temp dir: %v", err)
++--- a/pkg/mount/mount_unix_test.go
+++++ b/pkg/mount/mount_unix_test.go
++@@ -24,8 +24,12 @@
++      }
++ }
++ 
++ func TestMounted(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      tmp := path.Join(os.TempDir(), "mount-tests")
++      if err := os.MkdirAll(tmp, 0777); err != nil {
++              t.Fatal(err)
++      }
++@@ -75,8 +79,12 @@
++      }
++ }
++ 
++ func TestMountReadonly(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      tmp := path.Join(os.TempDir(), "mount-tests")
++      if err := os.MkdirAll(tmp, 0777); err != nil {
++              t.Fatal(err)
++      }
++@@ -120,8 +128,11 @@
++      }
++ }
++ 
++ func TestGetMounts(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
++      mounts, err := GetMounts()
++      if err != nil {
++              t.Fatal(err)
++      }
++--- a/pkg/mount/sharedsubtree_linux_test.go
+++++ b/pkg/mount/sharedsubtree_linux_test.go
++@@ -10,8 +10,12 @@
++ )
++ 
++ // nothing is propagated in or out
++ func TestSubtreePrivate(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      tmp := path.Join(os.TempDir(), "mount-tests")
++      if err := os.MkdirAll(tmp, 0777); err != nil {
++              t.Fatal(err)
++      }
++@@ -108,8 +112,12 @@
++ 
++ // Testing that when a target is a shared mount,
++ // then child mounts propagate to the source
++ func TestSubtreeShared(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      tmp := path.Join(os.TempDir(), "mount-tests")
++      if err := os.MkdirAll(tmp, 0777); err != nil {
++              t.Fatal(err)
++      }
++@@ -176,8 +184,12 @@
++ 
++ // testing that mounts to a shared source show up in the slave target,
++ // and that mounts into a slave target do _not_ show up in the shared source
++ func TestSubtreeSharedSlave(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      tmp := path.Join(os.TempDir(), "mount-tests")
++      if err := os.MkdirAll(tmp, 0777); err != nil {
++              t.Fatal(err)
++      }
++@@ -280,8 +292,12 @@
++      }
++ }
++ 
++ func TestSubtreeUnbindable(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      tmp := path.Join(os.TempDir(), "mount-tests")
++      if err := os.MkdirAll(tmp, 0777); err != nil {
++              t.Fatal(err)
++      }
++--- a/pkg/sysinfo/sysinfo_linux_test.go
+++++ b/pkg/sysinfo/sysinfo_linux_test.go
++@@ -8,8 +8,12 @@
++      "testing"
++ )
++ 
++ func TestReadProcBool(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      tmpDir, err := ioutil.TempDir("", "test-sysinfo-proc")
++      if err != nil {
++              t.Fatal(err)
++      }
++--- a/volume/local/local_test.go
+++++ b/volume/local/local_test.go
++@@ -10,8 +10,11 @@
++      "github.com/docker/docker/pkg/mount"
++ )
++ 
++ func TestRemove(t *testing.T) {
+++     if testing.Short() { t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      // TODO Windows: Investigate why this test fails on Windows under CI
++      //               but passes locally.
++      if runtime.GOOS == "windows" {
++              t.Skip("Test failing on Windows CI")
++@@ -57,8 +60,12 @@
++      }
++ }
++ 
++ func TestInitializeWithVolumes(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      rootDir, err := ioutil.TempDir("", "local-volume-test")
++      if err != nil {
++              t.Fatal(err)
++      }
++@@ -89,8 +96,12 @@
++      }
++ }
++ 
++ func TestCreate(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      rootDir, err := ioutil.TempDir("", "local-volume-test")
++      if err != nil {
++              t.Fatal(err)
++      }
++@@ -155,8 +166,12 @@
++      }
++ }
++ 
++ func TestCreateWithOpts(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
+++
++      if runtime.GOOS == "windows" {
++              t.Skip()
++      }
++ 
++--- a/daemon/graphdriver/overlay/overlay_test.go
+++++ b/daemon/graphdriver/overlay/overlay_test.go
++@@ -10,20 +10,32 @@
++ 
++ // This avoids creating a new driver for each test if all tests are run
++ // Make sure to put new tests between TestOverlaySetup and TestOverlayTeardown
++ func TestOverlaySetup(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
++      graphtest.GetDriver(t, "overlay")
++ }
++ 
++ func TestOverlayCreateEmpty(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
++      graphtest.DriverTestCreateEmpty(t, "overlay")
++ }
++ 
++ func TestOverlayCreateBase(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
++      graphtest.DriverTestCreateBase(t, "overlay")
++ }
++ 
++ func TestOverlayCreateSnap(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping privileged test in short mode")
+++     }
++      graphtest.DriverTestCreateSnap(t, "overlay")
++ }
++ 
++ func TestOverlayTeardown(t *testing.T) {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1f3b9887d5188685e04d1daf4160e6a24c60ece8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,15 @@@
++diff --git a/pkg/integration/utils_test.go b/pkg/integration/utils_test.go
++index d166489..38323ef 100644
++--- a/pkg/integration/utils_test.go
+++++ b/pkg/integration/utils_test.go
++@@ -191,6 +191,10 @@ func TestRunCommandWithOutputAndTimeoutFinished(t *testing.T) {
++ }
++ 
++ func TestRunCommandWithOutputAndTimeoutKilled(t *testing.T) {
+++     if testing.Short() {
+++             t.Skip("Skipping racy test in short mode")
+++     }
+++
++      // TODO Windows: Port this test
++      if runtime.GOOS == "windows" {
++              t.Skip("Needs porting to Windows")
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..794317abe0d26bf0929427431f8caf5086249065
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,83 @@@
++#!/bin/bash
++set -e
++
++debDir="$PWD/debian"
++
++if [ ! -d "$debDir/repack/prune" ]; then
++      exit 0
++fi
++
++if [ '--upstream-version' != "$1" ]; then
++      echo >&2 "unexpected argument '$1' (expected '--upstream-version')"
++      exit 1
++fi
++
++version="$2"
++filename="$3"
++
++if [ -z "$version" ] || [ ! -f "$filename" ]; then
++      exit 1
++fi
++
++debVer="$(dpkg-parsechangelog -l"$debDir/changelog" -SVersion)"
++origVer="${debVer%-*}" # strip everything from the last dash
++origVer="$(echo "$origVer" | sed -r 's/^[0-9]+://')" # strip epoch
++upstreamVer="${origVer%%[+~]ds*}"
++dfsgBits="${origVer#$upstreamVer}"
++
++if [ -z "$dfsgBits" ]; then
++      echo >&2 "warning: no 'DFSG' bits in version '$debVer' (~ds1 or similar), not pruning"
++      exit 0
++fi
++
++dir="$(dirname "$filename")"
++filename="$(basename "$filename")"
++dir="$(cd "$dir" && pwd -P)"
++
++dfsgFilename="$filename"
++case "$dfsgFilename" in
++      *${dfsgBits}*) ;; # if our filename already has appropriate "dfsg bits", continue as-is
++      *) dfsgFilename="${dfsgFilename/.orig/$dfsgBits.orig}" ;;
++esac
++targetTar="$dir/$dfsgFilename"
++
++# quick, rough sanity check
++! grep -qE '^/|^\.\./' "$debDir"/repack/prune/* "$debDir"/repack/keep/* 2>/dev/null
++
++IFS=$'\n'
++prune=( $(grep -vE '^#|^$' "$debDir"/repack/prune/*) ) || true
++unset IFS
++
++IFS=$'\n'
++keep=( $(grep -vE '^#|^$' "$debDir"/repack/keep/* 2>/dev/null) ) || true
++unset IFS
++
++tempDir="$(mktemp -d -t docker-orig-repack-XXXXXXXXXX)"
++trap "rm -rf '$tempDir'" EXIT
++
++mkdir -p "$tempDir/orig"
++tar -xf "$dir/$filename" -C "$tempDir/orig" --strip-components=1
++
++mkdir -p "$tempDir/repack"
++( cd "$tempDir/orig" && cp -al . "$tempDir/repack" )
++
++( cd "$tempDir/repack" && rm -rf "${prune[@]}" )
++
++for k in "${keep[@]}"; do
++      [ -d "$tempDir/orig/$k" ] || continue
++      [ ! -d "$tempDir/repack/$k" ] || continue
++      mkdir -p "$tempDir/repack/$k"
++      ( cd "$tempDir/orig/$k" && cp -al . "$tempDir/repack/$k" )
++done
++
++rm -rf "$tempDir/orig"
++
++subfolderName="${dfsgFilename%.tar.*}"
++mv "$tempDir/repack" "$tempDir/$subfolderName"
++
++tar -czf "$targetTar" -C "$tempDir" "$subfolderName"
++
++# trap will clean up tempDir
++
++echo "Done pruning upstream tarball into $dfsgFilename"
++exit 0
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a1635fe2cbc10f69ac76f6bb06cd7e26d2c26a58
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,5 @@@
++# example "keep" line for future reference
++#vendor/src/github.com/docker/some-library
++
++# notary versioning is a bit complex, so we'll use it vendored for now
++vendor/src/github.com/docker/notary
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..22d0d82f8095e9c0ed572776afb47f9ca293ce00
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++vendor
diff --cc debian/rules
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c50724d2452a49a6c89635b1876f751809b5fa51
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,109 @@@
++#!/usr/bin/make -f
++# -*- makefile -*-
++
++export DH_GOPKG := github.com/docker/docker
++export DH_GOLANG_INSTALL_ALL := 1
++export DH_GOLANG_EXCLUDES := \
++      integration-cli \
++      vendor
++
++# temporary build path (see http://golang.org/doc/code.html#GOPATH)
++OUR_GOPATH := $(CURDIR)/.gopath
++export GOPATH := $(OUR_GOPATH)
++
++# helpful variables for deduplication
++export DOCKER_VERSION := $(shell cat VERSION)
++
++export DOCKER_GITCOMMIT := $(shell ./debian/helpers/gitcommit.sh $(DOCKER_VERSION))
++export BUILDTIME := $(shell dpkg-parsechangelog -SDate)
++
++# have "make.sh" keep "bundle/$(DOCKER_VERSION)" around between runs (we clean it up appropriately ourselves)
++export KEEPBUNDLE := 1
++
++# AppArmor can be optionally used in Debian and is there by default in Ubuntu, so we need support for it compiled into our binary
++# same story with SELinux
++export DOCKER_BUILDTAGS := apparmor selinux
++
++# since "gccgo" doesn't ship the "dist" go tool (and isn't likely to start), let's use that for now to detect gc vs gccgo
++export DOCKER_BUILD_TARGET := $(shell go tool dist env > /dev/null 2>&1 && echo dynbinary || echo dyngccgo)
++
++# prefer Go 1.6 explicitly if it's available (golang-1.6-go)
++export PATH := /usr/lib/go-1.6/bin:$(PATH)
++
++
++APPARMOR_RECOMMENDS := $(shell dpkg-vendor --is Ubuntu && echo apparmor)
++BUILT_LIBC := $(shell dpkg-query -f '$${source:Package} (= $${source:Version})' -W libc-dev-bin)
++
++override_dh_gencontrol:
++      echo 'apparmor:Recommends=$(APPARMOR_RECOMMENDS)' >> debian/docker.io.substvars
++      echo 'libc:Built-Using=$(BUILT_LIBC)' >> debian/docker.io.substvars
++      dh_gencontrol
++
++
++override_dh_auto_configure:
++      dh_auto_configure
++      
++ifneq (, $(wildcard $(CURDIR)/vendor/src))
++      # prefer vendored deps (when they exist)
++      rm -rf '$(OUR_GOPATH)/src/$(DH_GOPKG)/vendor' \
++              && mkdir '$(OUR_GOPATH)/src/$(DH_GOPKG)/vendor' \
++              && cd vendor/src \
++              && cp -r . '$(OUR_GOPATH)/src/$(DH_GOPKG)/vendor'
++endif
++      
++      # make sure the bits modified at build-time are properly in our GOPATH
++      rm -rf '$(OUR_GOPATH)/src/$(DH_GOPKG)/dockerversion'
++      mkdir -p '$(OUR_GOPATH)/src/$(DH_GOPKG)'
++      ln -sfT '$(CURDIR)/dockerversion' '$(OUR_GOPATH)/src/$(DH_GOPKG)/dockerversion'
++
++override_dh_auto_build:
++      @bash -c '{ [ "$$DOCKER_GITCOMMIT" ]; } || { echo; echo "error: missing DOCKER_GITCOMMIT - see debian/upstream-version-gitcommits"; echo; exit 2; } >&2'
++      
++      # build
++      ./hack/make.sh $(DOCKER_BUILD_TARGET)
++      
++      # compile man pages
++      ./man/md2man-all.sh -q
++
++
++override_dh_install:
++      ## Do not install extra license files:
++      dh_install -XLICENSE
++
++override_dh_auto_install:
++      # skip dh_auto_install to stop dh_golang trying to copy bits for /usr/share/gocode (we use dh_install/dh-exec for that)
++
++
++override_dh_auto_test:
++ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
++      # run unit tests
++      cd '$(OUR_GOPATH)/src/$(DH_GOPKG)' \
++              && export TESTFLAGS='-test.short' \
++              && bash ./hack/make.sh test-unit
++endif
++
++
++override_dh_installinit:
++      dh_installinit --name=docker --no-restart-on-upgrade
++
++
++override_dh_installudev:
++      # use priority z80 to match the upstream priority of 80
++      dh_installudev --priority=z80
++
++
++override_dh_auto_clean:
++      dh_auto_clean
++      
++      # OUR_GOPATH is created by us
++      rm -rf '$(OUR_GOPATH)'
++      
++      # autogen is created by hack/make.sh
++      # bundles is created by hack/make.sh
++      # dockerversion/version_autogen.go is created by hack/make.sh
++      # man/man*/ is created by man/md2man-all.sh
++      rm -rf autogen bundles dockerversion/version_autogen.go man/man*/
++
++
++%:
++      dh $@ --buildsystem=golang --with=systemd,bash-completion,golang --builddirectory='$(OUR_GOPATH)'
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..163aaf8d82b6c54f23c45f32895dbdfdcc27b047
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++3.0 (quilt)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..919c799a11987ebda4de628762af85de59d85d31
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,36 @@@
++#!/bin/bash
++set -eu
++set -o pipefail
++
++exitTraps=( 'true' )
++doExit() {
++      for exitTrap in "${exitTraps[@]}"; do
++              eval "$exitTrap" || true
++      done
++}
++trap 'doExit' EXIT
++defer() {
++      exitTraps=( "$@" "${exitTraps[@]}" )
++}
++
++/etc/init.d/docker start
++defer '/etc/init.d/docker stop'
++defer 'journalctl -u docker | tail'
++
++# make sure Docker itself is working before we go too deep down the rabbit hole
++docker version
++
++tempDir="$(mktemp -d)"
++defer "rm -rf '$tempDir'"
++
++debootstrap \
++      --variant=minbase \
++      stable \
++      "$tempDir" \
++      http://httpredir.debian.org/debian
++
++tar -cC "$tempDir" . | docker import - debian
++defer 'docker rmi debian'
++
++docker run --name test debian true
++defer 'docker rm -f test'
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f6f6c02ae4f9bc4c00f12257e171f8c7e6d1e1bd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,7 @@@
++Tests: basic-smoke
++Depends: debootstrap, debian-keyring, @
++Restrictions: isolation-machine needs-root
++
++#Tests: integration
++#Depends: ca-certificates, curl, git, golang-check.v1-dev, jq, @, @builddeps@
++#Restrictions: allow-stderr isolation-machine needs-root rw-build-tree
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6b40edcb8a1135854065f34fffb9eb247108644c
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,41 @@@
++#!/bin/bash
++set -e
++
++# apply patches
++dpkg-source --before-build .
++
++# prepare the environment
++./debian/rules dh_configure
++export GOPATH="$PWD/.gopath"
++export DOCKER_GITCOMMIT="$(./debian/helpers/gitcommit.sh)"
++
++# docker's tests need an unprivileged user available at this username
++useradd --system --gid docker --comment 'Docker Test Suite Unprivileged User' unprivilegeduser
++
++# https://github.com/docker/docker/blob/7307998a44237a8943792c279b81ff5a387a86fa/builder/dockerfile/builder.go#L34-L44
++proxyArgs=(
++      http_proxy
++      https_proxy
++      ftp_proxy
++      no_proxy
++)
++DOCKER_BUILD_ARGS=
++for proxyArgBase in "${proxyArgs[@]}"; do
++      for proxyArg in "${proxyArgBase^^}" "$proxyArgBase"; do
++              if [ -n "${!proxyArg}" ]; then
++                      [ -z "$DOCKER_BUILD_ARGS" ] || DOCKER_BUILD_ARGS+=' '
++                      DOCKER_BUILD_ARGS+="--build-arg ${proxyArg}=${!proxyArg}"
++              fi
++      done
++done
++export DOCKER_BUILD_ARGS
++
++# run the tests
++./hack/make.sh test-integration-cli
++
++# clean up cruft we've created
++./debian/rules clean
++userdel --force unprivilegeduser
++
++# unapply patches
++dpkg-source --after-build .
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9c7f11574d7a8ab32665e51047a930a0ccc39bb2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,100 @@@
++# To determine the proper value for this, download
++# https://get.docker.io/builds/Linux/x86_64/docker-VERSION, chmod +x, and then
++# run ./docker-VERSION -v, which will list the exact build hash needed.
++
++0.5.3: 17c92b8
++0.6.0: f4a4f1c
++0.6.1: 5105263
++0.6.2: 081543c
++0.6.3: b0a49a3
++0.6.4: 2f74b1c
++0.6.5: 3ff8459
++0.6.6: 6d42040
++0.6.7: cb48ecc
++0.7.0: 0d078b6
++0.7.1: 88df052
++0.7.2: 28b162e
++0.7.3: 8502ad4
++0.7.4: 010d74e
++0.7.5: c348c04
++0.7.6: bc3b2ec
++0.8.0: cc3a8c8
++0.8.1: a1598d1
++0.9.0: 2b3fdf2
++0.9.1: 3600720
++0.10.0: dc9c28f
++0.11.0: 15209c3
++0.11.1: fb99f99
++0.12.0: 14680bf
++1.0.0: 63fe64c
++1.0.1: 990021a
++1.1.0: 79812e3
++1.1.1: bd609d2
++1.1.2: d84a070
++1.2.0: fa7b24f
++1.3.0: c78088f
++1.3.1: 4e9bbfa
++1.3.2: 39fa2fa
++1.3.3: d344625
++1.4.0: 4595d4f
++1.4.1: 5bc2ff8
++1.5.0-rc2: a393450
++1.5.0-rc3: c02092d
++1.5.0-rc4: a1cae77
++1.5.0: a8a31ef
++1.6.0-rc1: 746e830
++1.6.0-rc2: c5ee149
++1.6.0-rc3: 20d4e6f
++1.6.0-rc4: e2e39fc
++1.6.0-rc6: f181f77
++1.6.0-rc7: 7e26e41
++1.6.0: 4749651
++1.6.1: 97cd073
++1.6.2: 7c8fca2
++1.7.0-rc1: 395cced
++1.7.0-rc2: 7ddecf7
++1.7.0-rc3: 94159c9
++1.7.0-rc4: cc5c791
++1.7.0-rc5: f417602
++1.7.0: 0baf609
++1.7.1-rc1: f8f912a
++1.7.1-rc2: 3ff5c86
++1.7.1-rc3: c2e658d
++1.7.1: 786b29d
++1.8.0-rc1: 4f1c66a
++1.8.0-rc2: 8a9d4ea
++1.8.0-rc3: 696147b
++1.8.0: 0d03096
++1.8.1: d12ea79
++1.8.2-rc1: 28220ac
++1.8.2: 0a8c2e3
++1.8.3: f4bf5c7
++1.9.0-rc1: 9291a0e
++1.9.0-rc2: 60d36f7
++1.9.0-rc3: 2100b94
++1.9.0-rc4: e6f5a3c
++1.9.0-rc5: 9318004
++1.9.0: 76d6bc9
++1.9.1-rc1: aba5981
++1.9.1: a34a1d5
++1.10.0-rc1: 677c593
++1.10.0-rc2: c1cdc6e
++1.10.0-rc3: 08c24cc
++1.10.0: 590d5108
++1.10.1-rc1: 840112f
++1.10.1: 9e83765
++1.10.2-rc1: 89dafc4
++1.10.2: c3959b1
++1.10.3-rc1: 389f874
++1.10.3-rc2: 9968dd6
++1.10.3: 20f81dd
++1.11.0-rc1: 7f4e4ac
++1.11.0-rc2: 388f544
++1.11.0-rc3: eabf97a
++1.11.0-rc4: f5e2b40
++1.11.0-rc5: 6178547
++1.11.0: 4dc5990
++1.11.1-rc1: c90c70c
++1.11.1: 5604cbe
++1.11.2-rc1: 1179573
++1.11.2: b9f10c9
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bcc58c5d2c62ba6d17e31f62fc97c5f786c54840
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++contrib/syntax/vim/doc/* /usr/share/vim/addons/doc/
++contrib/syntax/vim/ftdetect/* /usr/share/vim/addons/ftdetect/
++contrib/syntax/vim/syntax/* /usr/share/vim/addons/syntax/
++debian/vim-syntax-docker.yaml /usr/share/vim/registry/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..517b591451530c8619987c53ed0fd60c66f70f42
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,6 @@@
++addon: dockerfile
++description: "Addon to highlight Docker's Dockerfiles"
++files:
++  - doc/dockerfile.txt
++  - ftdetect/dockerfile.vim
++  - syntax/dockerfile.vim
diff --cc debian/watch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..05c1f00e8532e4d9882ceb9accb4b62d29757884
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,6 @@@
++version=3
++opts=\
++dversionmangle=s/[+~](debian|dfsg|ds|deb)\d*$//,\
++uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha)\d*)$/$1~$2/,\
++filenamemangle=s/.+\/v(\d\S*)\.tar\.gz/docker.io_$1.orig.tar.gz/ \
++  https://github.com/docker/docker/tags .*/v(\d\S*)\.tar\.gz debian ./debian/repack.sh