From: Tianon Gravi Date: Tue, 12 Jul 2016 14:46:35 +0000 (+0100) Subject: docker.io (1.11.2~ds1-5) unstable; urgency=medium X-Git-Tag: archive/raspbian/18.09.1+dfsg1-7+rpi1~1^2^2~14 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=29db4e896e91fb1ac137aedcba7adaad2ec570e5;p=docker.io.git docker.io (1.11.2~ds1-5) unstable; urgency=medium * Skip racy "TestRunCommandWithOutputAndTimeoutKilled" during build (see also https://github.com/docker/docker/issues/22965) [dgit import unpatched docker.io 1.11.2~ds1-5] --- 29db4e896e91fb1ac137aedcba7adaad2ec570e5 diff --cc debian/Dockerfile index 00000000,00000000..80639c66 new file mode 100644 --- /dev/null +++ b/debian/Dockerfile @@@ -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 diff --cc debian/README.Debian index 00000000,00000000..d9343d85 new file mode 100644 --- /dev/null +++ b/debian/README.Debian @@@ -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/ diff --cc debian/changelog index 00000000,00000000..d8a9d2c1 new file mode 100644 --- /dev/null +++ b/debian/changelog @@@ -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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Tue, 07 Jan 2014 21:06:10 -0500 diff --cc debian/clean index 00000000,00000000..26382b29 new file mode 100644 --- /dev/null +++ b/debian/clean @@@ -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 00000000,00000000..ec635144 new file mode 100644 --- /dev/null +++ b/debian/compat @@@ -1,0 -1,0 +1,1 @@@ ++9 diff --cc debian/control index 00000000,00000000..cd0a71fc new file mode 100644 --- /dev/null +++ b/debian/control @@@ -1,0 -1,0 +1,184 @@@ ++Source: docker.io ++Section: admin ++Priority: optional ++Maintainer: Paul Tagliamonte ++Uploaders: Docker Packaging Team , ++ Tianon Gravi ++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. diff --cc debian/copyright index 00000000,00000000..071530c1 new file mode 100644 --- /dev/null +++ b/debian/copyright @@@ -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. ++Source: https://github.com/docker/docker ++ ++Files: * ++Copyright: 2012-2016 Docker, Inc. ++License: Apache-2.0 ++ ++Files: debian/* ++Copyright: 2013-2014 Daniel Mizyrycki ++ 2013-2014 Paul Tagliamonte ++ 2012-2014 Michael Stapelberg ++ 2013-2014 Tianon Gravi ++ 2013-2014 Johan Euphrosine ++ 2014 Prach Pongpanich ++ 2016 Tim Potter ++ 2016 Dmitry Smirnov ++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 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 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. diff --cc debian/docker-doc.docs index 00000000,00000000..a188e069 new file mode 100644 --- /dev/null +++ b/debian/docker-doc.docs @@@ -1,0 -1,0 +1,1 @@@ ++docs/* diff --cc debian/docker.io.NEWS index 00000000,00000000..82ae42e4 new file mode 100644 --- /dev/null +++ b/debian/docker.io.NEWS @@@ -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 Tue, 01 Dec 2015 01:02:44 -0800 diff --cc debian/docker.io.bash-completion index 00000000,00000000..6ea11193 new file mode 100644 --- /dev/null +++ b/debian/docker.io.bash-completion @@@ -1,0 -1,0 +1,1 @@@ ++contrib/completion/bash/docker diff --cc debian/docker.io.dirs index 00000000,00000000..4d7117b0 new file mode 100644 --- /dev/null +++ b/debian/docker.io.dirs @@@ -1,0 -1,0 +1,1 @@@ ++etc/docker diff --cc debian/docker.io.docker.default index 00000000,00000000..802416a2 new file mode 100644 --- /dev/null +++ b/debian/docker.io.docker.default @@@ -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 diff --cc debian/docker.io.docker.init index 00000000,00000000..e27f0495 new file mode 120000 --- /dev/null +++ b/debian/docker.io.docker.init @@@ -1,0 -1,0 +1,1 @@@ ++../contrib/init/sysvinit-debian/docker diff --cc debian/docker.io.docker.service index 00000000,00000000..747caae1 new file mode 120000 --- /dev/null +++ b/debian/docker.io.docker.service @@@ -1,0 -1,0 +1,1 @@@ ++../contrib/init/systemd/docker.service diff --cc debian/docker.io.docker.upstart index 00000000,00000000..4df3220e new file mode 120000 --- /dev/null +++ b/debian/docker.io.docker.upstart @@@ -1,0 -1,0 +1,1 @@@ ++../contrib/init/upstart/docker.conf diff --cc debian/docker.io.docs index 00000000,00000000..ac2a209b new file mode 100644 --- /dev/null +++ b/debian/docker.io.docs @@@ -1,0 -1,0 +1,2 @@@ ++README.md ++ROADMAP.md diff --cc debian/docker.io.install index 00000000,00000000..6a1f54b4 new file mode 100755 --- /dev/null +++ b/debian/docker.io.install @@@ -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/ diff --cc debian/docker.io.maintscript index 00000000,00000000..421ce02b new file mode 100644 --- /dev/null +++ b/debian/docker.io.maintscript @@@ -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~ diff --cc debian/docker.io.manpages index 00000000,00000000..1aa62186 new file mode 100644 --- /dev/null +++ b/debian/docker.io.manpages @@@ -1,0 -1,0 +1,1 @@@ ++man/man*/* diff --cc debian/docker.io.postinst index 00000000,00000000..5fd88472 new file mode 100644 --- /dev/null +++ b/debian/docker.io.postinst @@@ -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# diff --cc debian/docker.io.postrm index 00000000,00000000..f01f7c71 new file mode 100644 --- /dev/null +++ b/debian/docker.io.postrm @@@ -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 diff --cc debian/docker.io.prerm index 00000000,00000000..71f9e6e6 new file mode 100644 --- /dev/null +++ b/debian/docker.io.prerm @@@ -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# diff --cc debian/docker.io.udev index 00000000,00000000..d7fd2eb6 new file mode 120000 --- /dev/null +++ b/debian/docker.io.udev @@@ -1,0 -1,0 +1,1 @@@ ++../contrib/udev/80-docker.rules diff --cc debian/gbp.conf index 00000000,00000000..b465658e new file mode 100644 --- /dev/null +++ b/debian/gbp.conf @@@ -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 diff --cc debian/golang-github-docker-docker-dev.install index 00000000,00000000..60ef77de new file mode 100755 --- /dev/null +++ b/debian/golang-github-docker-docker-dev.install @@@ -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}/ diff --cc debian/helpers/gen-build-depends.sh index 00000000,00000000..763c27c2 new file mode 100755 --- /dev/null +++ b/debian/helpers/gen-build-depends.sh @@@ -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 diff --cc debian/helpers/gitcommit.sh index 00000000,00000000..3ca038d1 new file mode 100755 --- /dev/null +++ b/debian/helpers/gitcommit.sh @@@ -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' diff --cc debian/patches/21491--systemd-tasksmax.patch index 00000000,00000000..73eecd98 new file mode 100644 --- /dev/null +++ b/debian/patches/21491--systemd-tasksmax.patch @@@ -1,0 -1,0 +1,25 @@@ ++From 33a8ab29ed9e51697772a0642b8d651b9a845532 Mon Sep 17 00:00:00 2001 ++From: Pierre Carrier , Tianon Gravi ++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 ++--- ++ 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 diff --cc debian/patches/22000--ignore-invalid-host-header.patch index 00000000,00000000..2a64ebb2 new file mode 100644 --- /dev/null +++ b/debian/patches/22000--ignore-invalid-host-header.patch @@@ -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 , Darren Shepherd , Shijiang Wei , Tianon Gravi (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 +++} diff --cc debian/patches/23063--update-aws-sdk-go.patch index 00000000,00000000..ff88e99a new file mode 100644 --- /dev/null +++ b/debian/patches/23063--update-aws-sdk-go.patch @@@ -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 = ®ion +++ 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\"", diff --cc debian/patches/cgroupfs-mount-convenience-copy.patch index 00000000,00000000..938a55c3 new file mode 100644 --- /dev/null +++ b/debian/patches/cgroupfs-mount-convenience-copy.patch @@@ -1,0 -1,0 +1,81 @@@ ++Author: Tianon Gravi ++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 diff --cc debian/patches/change-system-unit-env-file.patch index 00000000,00000000..242aebf8 new file mode 100644 --- /dev/null +++ b/debian/patches/change-system-unit-env-file.patch @@@ -1,0 -1,0 +1,20 @@@ ++Author: Paul R. Tagliamonte ++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 diff --cc debian/patches/check-v1.patch index 00000000,00000000..f2b1ca59 new file mode 100644 --- /dev/null +++ b/debian/patches/check-v1.patch @@@ -1,0 -1,0 +1,1487 @@@ ++Description: account for the "github.com/go-check/check" -> "gopkg.in/check.v1" rename ++Author: Tianon Gravi ++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" diff --cc debian/patches/fatal-error-old-kernels.patch index 00000000,00000000..9f2da2eb new file mode 100644 --- /dev/null +++ b/debian/patches/fatal-error-old-kernels.patch @@@ -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 ++Reviewed-by: Paul Tagliamonte ++ ++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 diff --cc debian/patches/opencontainer-specs--no-mountlabel.patch index 00000000,00000000..033b7a19 new file mode 100644 --- /dev/null +++ b/debian/patches/opencontainer-specs--no-mountlabel.patch @@@ -1,0 -1,0 +1,20 @@@ ++Last-Update: 2016-06-13 ++Forwarded: not-needed ++Author: Dmitry Smirnov ++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 ++ } ++ diff --cc debian/patches/opencontainer-specs-0.5.0.patch index 00000000,00000000..f011fe8a new file mode 100644 --- /dev/null +++ b/debian/patches/opencontainer-specs-0.5.0.patch @@@ -1,0 -1,0 +1,149 @@@ ++Last-Update: 2016-06-13 ++Forwarded: no ++Author: Tim Potter ++Reviewed-By: Dmitry Smirnov ++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 ++ diff --cc debian/patches/overlay.patch index 00000000,00000000..df6db677 new file mode 100644 --- /dev/null +++ b/debian/patches/overlay.patch @@@ -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 ++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", ++ } ++ diff --cc debian/patches/remove-docker-prefix.patch index 00000000,00000000..1a84ab1f new file mode 100644 --- /dev/null +++ b/debian/patches/remove-docker-prefix.patch @@@ -1,0 -1,0 +1,26 @@@ ++Description: remove "docker-" prefix on expected "runc" and "containerd" binaries ++Forwarded: not-needed ++Author: Tianon Gravi ++ ++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") ++ } diff --cc debian/patches/series index 00000000,00000000..0181cefe new file mode 100644 --- /dev/null +++ b/debian/patches/series @@@ -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 diff --cc debian/patches/skip-privileged-unit-tests.patch index 00000000,00000000..47547e4a new file mode 100644 --- /dev/null +++ b/debian/patches/skip-privileged-unit-tests.patch @@@ -1,0 -1,0 +1,669 @@@ ++Description: allow skipping "privileged" tests with "-test.short" ++Author: Tianon Gravi ++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) { diff --cc debian/patches/skip-racy-unit-tests.patch index 00000000,00000000..1f3b9887 new file mode 100644 --- /dev/null +++ b/debian/patches/skip-racy-unit-tests.patch @@@ -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") diff --cc debian/repack.sh index 00000000,00000000..794317ab new file mode 100755 --- /dev/null +++ b/debian/repack.sh @@@ -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 diff --cc debian/repack/keep/vendor index 00000000,00000000..a1635fe2 new file mode 100644 --- /dev/null +++ b/debian/repack/keep/vendor @@@ -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 diff --cc debian/repack/prune/vendor index 00000000,00000000..22d0d82f new file mode 100644 --- /dev/null +++ b/debian/repack/prune/vendor @@@ -1,0 -1,0 +1,1 @@@ ++vendor diff --cc debian/rules index 00000000,00000000..c50724d2 new file mode 100755 --- /dev/null +++ b/debian/rules @@@ -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)' diff --cc debian/source/format index 00000000,00000000..163aaf8d new file mode 100644 --- /dev/null +++ b/debian/source/format @@@ -1,0 -1,0 +1,1 @@@ ++3.0 (quilt) diff --cc debian/tests/basic-smoke index 00000000,00000000..919c799a new file mode 100755 --- /dev/null +++ b/debian/tests/basic-smoke @@@ -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' diff --cc debian/tests/control index 00000000,00000000..f6f6c02a new file mode 100644 --- /dev/null +++ b/debian/tests/control @@@ -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 diff --cc debian/tests/integration index 00000000,00000000..6b40edcb new file mode 100755 --- /dev/null +++ b/debian/tests/integration @@@ -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 . diff --cc debian/upstream-version-gitcommits index 00000000,00000000..9c7f1157 new file mode 100644 --- /dev/null +++ b/debian/upstream-version-gitcommits @@@ -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 diff --cc debian/vim-syntax-docker.install index 00000000,00000000..bcc58c5d new file mode 100644 --- /dev/null +++ b/debian/vim-syntax-docker.install @@@ -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/ diff --cc debian/vim-syntax-docker.yaml index 00000000,00000000..517b5914 new file mode 100644 --- /dev/null +++ b/debian/vim-syntax-docker.yaml @@@ -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 00000000,00000000..05c1f00e new file mode 100644 --- /dev/null +++ b/debian/watch @@@ -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