Browse code

Packaging changes required for new containerd binaries

These are the changes required due to the new binaries that containerd introduced.
The rpm, and deb packages now include 5 binaries.

docker, containerd, containerd-shim, ctr, and runc

The tar files also include all 5 binaries.

Signed-off-by: Ken Cochrane <KenCochrane@gmail.com>

Ken Cochrane authored on 2016/03/22 09:37:31
Showing 20 changed files
... ...
@@ -6,10 +6,11 @@ FROM debian:jessie
6 6
 
7 7
 RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev  libsqlite3-dev pkg-config libsystemd-journal-dev --no-install-recommends && rm -rf /var/lib/apt/lists/*
8 8
 
9
-ENV GO_VERSION 1.5.3
9
+ENV GO_VERSION 1.6
10 10
 RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local
11 11
 ENV PATH $PATH:/usr/local/go/bin
12 12
 
13 13
 ENV AUTO_GOPATH 1
14 14
 
15 15
 ENV DOCKER_BUILDTAGS apparmor selinux
16
+ENV RUNC_BUILDTAGS apparmor selinux
... ...
@@ -6,10 +6,11 @@ FROM debian:stretch
6 6
 
7 7
 RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev libsqlite3-dev pkg-config libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/*
8 8
 
9
-ENV GO_VERSION 1.5.3
9
+ENV GO_VERSION 1.6
10 10
 RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local
11 11
 ENV PATH $PATH:/usr/local/go/bin
12 12
 
13 13
 ENV AUTO_GOPATH 1
14 14
 
15 15
 ENV DOCKER_BUILDTAGS apparmor seccomp selinux
16
+ENV RUNC_BUILDTAGS apparmor seccomp selinux
... ...
@@ -7,10 +7,11 @@ FROM debian:wheezy-backports
7 7
 RUN apt-get update && apt-get install -y -t wheezy-backports btrfs-tools --no-install-recommends && rm -rf /var/lib/apt/lists/*
8 8
 RUN apt-get update && apt-get install -y apparmor bash-completion  build-essential curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev  libsqlite3-dev pkg-config --no-install-recommends && rm -rf /var/lib/apt/lists/*
9 9
 
10
-ENV GO_VERSION 1.5.3
10
+ENV GO_VERSION 1.6
11 11
 RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local
12 12
 ENV PATH $PATH:/usr/local/go/bin
13 13
 
14 14
 ENV AUTO_GOPATH 1
15 15
 
16 16
 ENV DOCKER_BUILDTAGS apparmor selinux
17
+ENV RUNC_BUILDTAGS apparmor selinux
... ...
@@ -42,6 +42,7 @@ for version in "${versions[@]}"; do
42 42
 	echo >> "$version/Dockerfile"
43 43
 
44 44
 	extraBuildTags=
45
+	runcBuildTags=
45 46
 
46 47
 	# this list is sorted alphabetically; please keep it that way
47 48
 	packages=(
... ...
@@ -64,7 +65,7 @@ for version in "${versions[@]}"; do
64 64
 	# packaging for "sd-journal.h" and libraries varies
65 65
 	case "$suite" in
66 66
 		precise|wheezy) ;;
67
-		sid|stretch|wily) packages+=( libsystemd-dev );;
67
+		sid|stretch|wily|xenial) packages+=( libsystemd-dev );;
68 68
 		*) packages+=( libsystemd-journal-dev );;
69 69
 	esac
70 70
 
... ...
@@ -73,9 +74,11 @@ for version in "${versions[@]}"; do
73 73
 	case "$suite" in
74 74
 		precise|wheezy|jessie|trusty)
75 75
 			packages=( "${packages[@]/libseccomp-dev}" )
76
+			runcBuildTags="apparmor selinux"
76 77
 			;;
77 78
 		*)
78 79
 			extraBuildTags+=' seccomp'
80
+			runcBuildTags="apparmor seccomp selinux"
79 81
 			;;
80 82
 	esac
81 83
 
... ...
@@ -124,4 +127,5 @@ for version in "${versions[@]}"; do
124 124
 	buildTags=$( echo "apparmor selinux $extraBuildTags" | xargs -n1 | sort -n | tr '\n' ' ' | sed -e 's/[[:space:]]*$//' )
125 125
 
126 126
 	echo "ENV DOCKER_BUILDTAGS $buildTags" >> "$version/Dockerfile"
127
+	echo "ENV RUNC_BUILDTAGS $runcBuildTags" >> "$version/Dockerfile"
127 128
 done
... ...
@@ -6,10 +6,11 @@ FROM ubuntu:precise
6 6
 
7 7
 RUN apt-get update && apt-get install -y apparmor bash-completion  build-essential curl ca-certificates debhelper dh-apparmor  git libapparmor-dev  libltdl-dev  libsqlite3-dev pkg-config --no-install-recommends && rm -rf /var/lib/apt/lists/*
8 8
 
9
-ENV GO_VERSION 1.5.3
9
+ENV GO_VERSION 1.6
10 10
 RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local
11 11
 ENV PATH $PATH:/usr/local/go/bin
12 12
 
13 13
 ENV AUTO_GOPATH 1
14 14
 
15 15
 ENV DOCKER_BUILDTAGS apparmor exclude_graphdriver_btrfs exclude_graphdriver_devicemapper selinux
16
+ENV RUNC_BUILDTAGS apparmor selinux
... ...
@@ -6,10 +6,11 @@ FROM ubuntu:trusty
6 6
 
7 7
 RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev  libsqlite3-dev pkg-config libsystemd-journal-dev --no-install-recommends && rm -rf /var/lib/apt/lists/*
8 8
 
9
-ENV GO_VERSION 1.5.3
9
+ENV GO_VERSION 1.6
10 10
 RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local
11 11
 ENV PATH $PATH:/usr/local/go/bin
12 12
 
13 13
 ENV AUTO_GOPATH 1
14 14
 
15 15
 ENV DOCKER_BUILDTAGS apparmor selinux
16
+ENV RUNC_BUILDTAGS apparmor selinux
... ...
@@ -6,10 +6,11 @@ FROM ubuntu:wily
6 6
 
7 7
 RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev libsqlite3-dev pkg-config libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/*
8 8
 
9
-ENV GO_VERSION 1.5.3
9
+ENV GO_VERSION 1.6
10 10
 RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local
11 11
 ENV PATH $PATH:/usr/local/go/bin
12 12
 
13 13
 ENV AUTO_GOPATH 1
14 14
 
15 15
 ENV DOCKER_BUILDTAGS apparmor seccomp selinux
16
+ENV RUNC_BUILDTAGS apparmor seccomp selinux
16 17
new file mode 100644
... ...
@@ -0,0 +1,16 @@
0
+#
1
+# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/amd64/generate.sh"!
2
+#
3
+
4
+FROM ubuntu:xenial
5
+
6
+RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev libsqlite3-dev pkg-config libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/*
7
+
8
+ENV GO_VERSION 1.6
9
+RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local
10
+ENV PATH $PATH:/usr/local/go/bin
11
+
12
+ENV AUTO_GOPATH 1
13
+
14
+ENV DOCKER_BUILDTAGS apparmor seccomp selinux
15
+ENV RUNC_BUILDTAGS apparmor seccomp selinux
... ...
@@ -6,13 +6,14 @@ FROM centos:7
6 6
 
7 7
 RUN yum groupinstall -y "Development Tools"
8 8
 RUN yum -y swap -- remove systemd-container systemd-container-libs -- install systemd systemd-libs
9
-RUN yum install -y btrfs-progs-devel device-mapper-devel glibc-static  libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel sqlite-devel systemd-devel tar
9
+RUN yum install -y btrfs-progs-devel device-mapper-devel glibc-static  libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel sqlite-devel systemd-devel tar git
10 10
 
11
-ENV GO_VERSION 1.5.3
11
+ENV GO_VERSION 1.6
12 12
 RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local
13 13
 ENV PATH $PATH:/usr/local/go/bin
14 14
 
15 15
 ENV AUTO_GOPATH 1
16 16
 
17 17
 ENV DOCKER_BUILDTAGS selinux
18
+ENV RUNC_BUILDTAGS selinux
18 19
 
... ...
@@ -5,13 +5,14 @@
5 5
 FROM fedora:22
6 6
 
7 7
 RUN dnf install -y @development-tools fedora-packager
8
-RUN dnf install -y btrfs-progs-devel device-mapper-devel glibc-static libseccomp-devel libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel sqlite-devel systemd-devel tar
8
+RUN dnf install -y btrfs-progs-devel device-mapper-devel glibc-static libseccomp-devel libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel sqlite-devel systemd-devel tar git
9 9
 
10
-ENV GO_VERSION 1.5.3
10
+ENV GO_VERSION 1.6
11 11
 RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local
12 12
 ENV PATH $PATH:/usr/local/go/bin
13 13
 
14 14
 ENV AUTO_GOPATH 1
15 15
 
16 16
 ENV DOCKER_BUILDTAGS seccomp selinux
17
+ENV RUNC_BUILDTAGS seccomp selinux
17 18
 
... ...
@@ -5,13 +5,14 @@
5 5
 FROM fedora:23
6 6
 
7 7
 RUN dnf install -y @development-tools fedora-packager
8
-RUN dnf install -y btrfs-progs-devel device-mapper-devel glibc-static libseccomp-devel libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel sqlite-devel systemd-devel tar
8
+RUN dnf install -y btrfs-progs-devel device-mapper-devel glibc-static libseccomp-devel libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel sqlite-devel systemd-devel tar git
9 9
 
10
-ENV GO_VERSION 1.5.3
10
+ENV GO_VERSION 1.6
11 11
 RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local
12 12
 ENV PATH $PATH:/usr/local/go/bin
13 13
 
14 14
 ENV AUTO_GOPATH 1
15 15
 
16 16
 ENV DOCKER_BUILDTAGS seccomp selinux
17
+ENV RUNC_BUILDTAGS seccomp selinux
17 18
 
... ...
@@ -39,6 +39,7 @@ for version in "${versions[@]}"; do
39 39
 	echo >> "$version/Dockerfile"
40 40
 
41 41
 	extraBuildTags=
42
+	runcBuildTags=
42 43
 
43 44
 	case "$from" in
44 45
 		centos:*)
... ...
@@ -77,6 +78,7 @@ for version in "${versions[@]}"; do
77 77
 		sqlite-devel # for "sqlite3.h"
78 78
 		systemd-devel # for "sd-journal.h" and libraries
79 79
 		tar # older versions of dev-tools do not have tar
80
+		git # required for containerd and runc clone
80 81
 	)
81 82
 
82 83
 	case "$from" in
... ...
@@ -98,9 +100,11 @@ for version in "${versions[@]}"; do
98 98
 	case "$from" in
99 99
 		opensuse:*|oraclelinux:*|centos:7)
100 100
 			packages=( "${packages[@]/libseccomp-devel}" )
101
+			runcBuildTags="selinux"
101 102
 			;;
102 103
 		*)
103 104
 			extraBuildTags+=' seccomp'
105
+			runcBuildTags="seccomp selinux"
104 106
 			;;
105 107
 	esac
106 108
 
... ...
@@ -148,6 +152,7 @@ for version in "${versions[@]}"; do
148 148
 	buildTags=$( echo "selinux $extraBuildTags" | xargs -n1 | sort -n | tr '\n' ' ' | sed -e 's/[[:space:]]*$//' )
149 149
 
150 150
 	echo "ENV DOCKER_BUILDTAGS $buildTags" >> "$version/Dockerfile"
151
+	echo "ENV RUNC_BUILDTAGS $runcBuildTags" >> "$version/Dockerfile"
151 152
 	echo >> "$version/Dockerfile"
152 153
 
153 154
 	case "$from" in
... ...
@@ -5,13 +5,14 @@
5 5
 FROM opensuse:13.2
6 6
 
7 7
 RUN zypper --non-interactive install ca-certificates* curl gzip rpm-build
8
-RUN zypper --non-interactive install libbtrfs-devel device-mapper-devel glibc-static  libselinux-devel libtool-ltdl-devel pkg-config selinux-policy selinux-policy-devel sqlite-devel systemd-devel tar systemd-rpm-macros
8
+RUN zypper --non-interactive install libbtrfs-devel device-mapper-devel glibc-static  libselinux-devel libtool-ltdl-devel pkg-config selinux-policy selinux-policy-devel sqlite-devel systemd-devel tar git systemd-rpm-macros
9 9
 
10
-ENV GO_VERSION 1.5.3
10
+ENV GO_VERSION 1.6
11 11
 RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local
12 12
 ENV PATH $PATH:/usr/local/go/bin
13 13
 
14 14
 ENV AUTO_GOPATH 1
15 15
 
16 16
 ENV DOCKER_BUILDTAGS selinux
17
+ENV RUNC_BUILDTAGS selinux
17 18
 
... ...
@@ -5,18 +5,19 @@
5 5
 FROM oraclelinux:6
6 6
 
7 7
 RUN yum groupinstall -y "Development Tools"
8
-RUN yum install -y btrfs-progs-devel device-mapper-devel glibc-static  libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel sqlite-devel  tar
8
+RUN yum install -y btrfs-progs-devel device-mapper-devel glibc-static  libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel sqlite-devel  tar git
9 9
 
10 10
 RUN yum install -y yum-utils && curl -o /etc/yum.repos.d/public-yum-ol6.repo http://yum.oracle.com/public-yum-ol6.repo && yum-config-manager -q --enable ol6_UEKR4
11 11
 RUN yum install -y kernel-uek-devel-4.1.12-32.el6uek
12 12
 
13
-ENV GO_VERSION 1.5.3
13
+ENV GO_VERSION 1.6
14 14
 RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local
15 15
 ENV PATH $PATH:/usr/local/go/bin
16 16
 
17 17
 ENV AUTO_GOPATH 1
18 18
 
19 19
 ENV DOCKER_BUILDTAGS selinux
20
+ENV RUNC_BUILDTAGS selinux
20 21
 
21 22
 ENV CGO_CPPFLAGS -D__EXPORTED_HEADERS__ \
22 23
                  -I/usr/src/kernels/4.1.12-32.el6uek.x86_64/arch/x86/include/generated/uapi \
... ...
@@ -5,13 +5,14 @@
5 5
 FROM oraclelinux:7
6 6
 
7 7
 RUN yum groupinstall -y "Development Tools"
8
-RUN yum install -y --enablerepo=ol7_optional_latest btrfs-progs-devel device-mapper-devel glibc-static  libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel sqlite-devel systemd-devel tar
8
+RUN yum install -y --enablerepo=ol7_optional_latest btrfs-progs-devel device-mapper-devel glibc-static  libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel sqlite-devel systemd-devel tar git
9 9
 
10
-ENV GO_VERSION 1.5.3
10
+ENV GO_VERSION 1.6
11 11
 RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local
12 12
 ENV PATH $PATH:/usr/local/go/bin
13 13
 
14 14
 ENV AUTO_GOPATH 1
15 15
 
16 16
 ENV DOCKER_BUILDTAGS selinux
17
+ENV RUNC_BUILDTAGS selinux
17 18
 
... ...
@@ -22,6 +22,10 @@ override_dh_strip:
22 22
 override_dh_auto_install:
23 23
 	mkdir -p debian/docker-engine/usr/bin
24 24
 	cp -aT "$$(readlink -f bundles/$(VERSION)/dynbinary/docker)" debian/docker-engine/usr/bin/docker
25
+	cp -aT /usr/local/bin/containerd debian/docker-engine/usr/bin/docker-containerd
26
+	cp -aT /usr/local/bin/containerd-shim debian/docker-engine/usr/bin/docker-containerd-shim
27
+	cp -aT /usr/local/bin/ctr debian/docker-engine/usr/bin/docker-containerd-ctr
28
+	cp -aT /usr/local/bin/runc debian/docker-engine/usr/bin/docker-runc
25 29
 	mkdir -p debian/docker-engine/usr/lib/docker
26 30
 
27 31
 override_dh_installinit:
... ...
@@ -36,5 +40,8 @@ override_dh_install:
36 36
 	dh_install
37 37
 	dh_apparmor --profile-name=docker-engine -pdocker-engine
38 38
 
39
+override_dh_shlibdeps:
40
+	dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
41
+
39 42
 %:
40 43
 	dh $@ --with=bash-completion $(shell command -v dh_systemd_enable > /dev/null 2>&1 && echo --with=systemd)
... ...
@@ -124,6 +124,14 @@ export DOCKER_GITCOMMIT=%{_gitcommit}
124 124
 install -d $RPM_BUILD_ROOT/%{_bindir}
125 125
 install -p -m 755 bundles/%{_origversion}/dynbinary/docker-%{_origversion} $RPM_BUILD_ROOT/%{_bindir}/docker
126 126
 
127
+# install containerd
128
+install -p -m 755 /usr/local/bin/containerd $RPM_BUILD_ROOT/%{_bindir}/docker-containerd
129
+install -p -m 755 /usr/local/bin/containerd-shim $RPM_BUILD_ROOT/%{_bindir}/docker-containerd-shim
130
+install -p -m 755 /usr/local/bin/ctr $RPM_BUILD_ROOT/%{_bindir}/docker-containerd-ctr
131
+
132
+# install runc
133
+install -p -m 755 /usr/local/bin/runc $RPM_BUILD_ROOT/%{_bindir}/docker-runc
134
+
127 135
 # install udev rules
128 136
 install -d $RPM_BUILD_ROOT/%{_sysconfdir}/udev/rules.d
129 137
 install -p -m 644 contrib/udev/80-docker.rules $RPM_BUILD_ROOT/%{_sysconfdir}/udev/rules.d/80-docker.rules
... ...
@@ -171,6 +179,10 @@ install -p -m 644 contrib/syntax/nano/Dockerfile.nanorc $RPM_BUILD_ROOT/usr/shar
171 171
 %files
172 172
 %doc AUTHORS CHANGELOG.md CONTRIBUTING.md LICENSE MAINTAINERS NOTICE README.md
173 173
 /%{_bindir}/docker
174
+/%{_bindir}/docker-containerd
175
+/%{_bindir}/docker-containerd-shim
176
+/%{_bindir}/docker-containerd-ctr
177
+/%{_bindir}/docker-runc
174 178
 /%{_sysconfdir}/udev/rules.d/80-docker.rules
175 179
 %if 0%{?is_systemd}
176 180
 /%{_unitdir}/docker.service
... ...
@@ -58,9 +58,28 @@ set -e
58 58
 			FROM $image
59 59
 			WORKDIR /usr/src/docker
60 60
 			COPY . /usr/src/docker
61
-			RUN mkdir -p /go/src/github.com/docker \
61
+			RUN mkdir -p /go/src/github.com/docker && mkdir -p /go/src/github.com/opencontainers \
62 62
 				&& ln -snf /usr/src/docker /go/src/github.com/docker/docker
63 63
 		EOF
64
+
65
+		# get the RUNC and CONTAINERD commit from the root Dockerfile, this keeps the commits in sync
66
+		awk '$1 == "ENV" && $2 == "RUNC_COMMIT" { print; exit }' Dockerfile >> "$DEST/$version/Dockerfile.build"
67
+		awk '$1 == "ENV" && $2 == "CONTAINERD_COMMIT" { print; exit }' Dockerfile >> "$DEST/$version/Dockerfile.build"
68
+
69
+		# add runc and containerd compile and install
70
+		cat >> "$DEST/$version/Dockerfile.build" <<-EOF
71
+			# Install runc
72
+			RUN git clone git://github.com/opencontainers/runc.git "/go/src/github.com/opencontainers/runc" \
73
+					&& cd "/go/src/github.com/opencontainers/runc" \
74
+					&& git checkout -q "\$RUNC_COMMIT"
75
+			RUN set -x && export GOPATH="/go" && cd "/go/src/github.com/opencontainers/runc" \
76
+					&& make BUILDTAGS="\$RUNC_BUILDTAGS" && make install
77
+			# Install containerd
78
+			RUN git clone git://github.com/docker/containerd.git "/go/src/github.com/docker/containerd" \
79
+					&& cd "/go/src/github.com/docker/containerd" \
80
+					&& git checkout -q "\$CONTAINERD_COMMIT"
81
+			RUN set -x && export GOPATH="/go" && cd "/go/src/github.com/docker/containerd" && make && make install
82
+		EOF
64 83
 		if [ "$DOCKER_EXPERIMENTAL" ]; then
65 84
 			echo 'ENV DOCKER_EXPERIMENTAL 1' >> "$DEST/$version/Dockerfile.build"
66 85
 		fi
... ...
@@ -87,6 +87,26 @@ set -e
87 87
 		cat > "$DEST/$version/Dockerfile.build" <<-EOF
88 88
 			FROM $image
89 89
 			COPY . /usr/src/${rpmName}
90
+			RUN mkdir -p /go/src/github.com/docker && mkdir -p /go/src/github.com/opencontainers
91
+		EOF
92
+
93
+		# get the RUNC and CONTAINERD commit from the root Dockerfile, this keeps the commits in sync
94
+		awk '$1 == "ENV" && $2 == "RUNC_COMMIT" { print; exit }' Dockerfile >> "$DEST/$version/Dockerfile.build"
95
+		awk '$1 == "ENV" && $2 == "CONTAINERD_COMMIT" { print; exit }' Dockerfile >> "$DEST/$version/Dockerfile.build"
96
+
97
+		# add runc and containerd compile and install
98
+		cat >> "$DEST/$version/Dockerfile.build" <<-EOF
99
+			# Install runc
100
+			RUN git clone git://github.com/opencontainers/runc.git "/go/src/github.com/opencontainers/runc" \
101
+					&& cd "/go/src/github.com/opencontainers/runc" \
102
+					&& git checkout -q "\$RUNC_COMMIT"
103
+			RUN set -x && export GOPATH="/go" && cd "/go/src/github.com/opencontainers/runc" \
104
+					&& make BUILDTAGS="\$RUNC_BUILDTAGS" && make install
105
+			# Install containerd
106
+			RUN git clone git://github.com/docker/containerd.git "/go/src/github.com/docker/containerd" \
107
+					&& cd "/go/src/github.com/docker/containerd" \
108
+					&& git checkout -q "\$CONTAINERD_COMMIT"
109
+			RUN set -x && export GOPATH="/go" && cd "/go/src/github.com/docker/containerd" && make && make install
90 110
 		EOF
91 111
 		if [ "$DOCKER_EXPERIMENTAL" ]; then
92 112
 			echo 'ENV DOCKER_EXPERIMENTAL 1' >> "$DEST/$version/Dockerfile.build"
... ...
@@ -97,7 +117,10 @@ set -e
97 97
 			WORKDIR /root/rpmbuild
98 98
 			RUN ln -sfv /usr/src/${rpmName}/hack/make/.build-rpm SPECS
99 99
 			WORKDIR /root/rpmbuild/SPECS
100
-			RUN tar -cz -C /usr/src -f /root/rpmbuild/SOURCES/${rpmName}.tar.gz ${rpmName}
100
+			RUN tar -r -C /usr/src -f /root/rpmbuild/SOURCES/${rpmName}.tar ${rpmName}
101
+			RUN tar -r -C /go/src/github.com/docker -f /root/rpmbuild/SOURCES/${rpmName}.tar containerd
102
+			RUN tar -r -C /go/src/github.com/opencontainers -f /root/rpmbuild/SOURCES/${rpmName}.tar runc
103
+			RUN gzip /root/rpmbuild/SOURCES/${rpmName}.tar
101 104
 			RUN { cat /usr/src/${rpmName}/contrib/builder/rpm/${PACKAGE_ARCH}/changelog; } >> ${rpmName}.spec && tail >&2 ${rpmName}.spec
102 105
 			RUN rpmbuild -ba \
103 106
 				--define '_gitcommit $DOCKER_GITCOMMIT' \
... ...
@@ -19,8 +19,6 @@ for d in "$CROSS/"*/*; do
19 19
 	mkdir -p "$DEST/$GOOS/$GOARCH"
20 20
 	TGZ="$DEST/$GOOS/$GOARCH/$BINARY_NAME.tgz"
21 21
 
22
-	mkdir -p "$DEST/build"
23
-
24 22
 	mkdir -p "$DEST/build/usr/local/bin"
25 23
 	cp -L "$d/$BINARY_FULLNAME" "$DEST/build/usr/local/bin/docker$BINARY_EXTENSION"
26 24
 	copy_containerd "$DEST/build/usr/local/bin/"