From 7b31ed432ee2fa95938d64dc76c982e52cd00330 Mon Sep 17 00:00:00 2001
From: Govinda Fichtner <govinda.fichtner@googlemail.com>
Date: Mon, 23 Nov 2015 20:00:43 +0100
Subject: [PATCH] add support for building first ARM debian package

Signed-off-by: Govinda Fichtner <govinda.fichtner@googlemail.com>
---
 contrib/builder/deb/README.md                    |  5 -----
 contrib/builder/deb/amd64/README.md              |  5 +++++
 contrib/builder/deb/{ => amd64}/build.sh         |  0
 .../deb/{ => amd64}/debian-jessie/Dockerfile     |  2 +-
 .../deb/{ => amd64}/debian-stretch/Dockerfile    |  2 +-
 .../deb/{ => amd64}/debian-wheezy/Dockerfile     |  2 +-
 contrib/builder/deb/{ => amd64}/generate.sh      |  4 ++--
 .../deb/{ => amd64}/ubuntu-precise/Dockerfile    |  2 +-
 .../deb/{ => amd64}/ubuntu-trusty/Dockerfile     |  2 +-
 .../deb/{ => amd64}/ubuntu-wily/Dockerfile       |  2 +-
 .../builder/deb/armhf/debian-jessie/Dockerfile   | 10 ++++++++++
 contrib/builder/rpm/README.md                    |  5 -----
 contrib/builder/rpm/amd64/README.md              |  5 +++++
 contrib/builder/rpm/{ => amd64}/build.sh         |  0
 .../builder/rpm/{ => amd64}/centos-7/Dockerfile  |  2 +-
 .../builder/rpm/{ => amd64}/fedora-22/Dockerfile |  2 +-
 .../builder/rpm/{ => amd64}/fedora-23/Dockerfile |  2 +-
 contrib/builder/rpm/{ => amd64}/generate.sh      |  4 ++--
 .../rpm/{ => amd64}/opensuse-13.2/Dockerfile     |  2 +-
 .../rpm/{ => amd64}/oraclelinux-6/Dockerfile     |  0
 .../rpm/{ => amd64}/oraclelinux-7/Dockerfile     |  2 +-
 contrib/reprepro/suites.sh                       |  2 +-
 hack/make/.build-rpm/docker-engine.spec          |  2 +-
 hack/make/.detect-daemon-osarch                  | 16 ++++++++++++++++
 hack/make/build-deb                              |  3 ++-
 hack/make/build-rpm                              | 11 ++++++-----
 hack/make/release-deb                            |  4 ++--
 hack/make/release-rpm                            |  2 +-
 hack/make/test-deb-install                       |  2 +-
 project/ARM.md                                   |  5 ++++-
 30 files changed, 69 insertions(+), 38 deletions(-)
 delete mode 100644 contrib/builder/deb/README.md
 create mode 100644 contrib/builder/deb/amd64/README.md
 rename contrib/builder/deb/{ => amd64}/build.sh (100%)
 rename contrib/builder/deb/{ => amd64}/debian-jessie/Dockerfile (88%)
 rename contrib/builder/deb/{ => amd64}/debian-stretch/Dockerfile (88%)
 rename contrib/builder/deb/{ => amd64}/debian-wheezy/Dockerfile (90%)
 rename contrib/builder/deb/{ => amd64}/generate.sh (97%)
 rename contrib/builder/deb/{ => amd64}/ubuntu-precise/Dockerfile (88%)
 rename contrib/builder/deb/{ => amd64}/ubuntu-trusty/Dockerfile (88%)
 rename contrib/builder/deb/{ => amd64}/ubuntu-wily/Dockerfile (88%)
 create mode 100644 contrib/builder/deb/armhf/debian-jessie/Dockerfile
 delete mode 100644 contrib/builder/rpm/README.md
 create mode 100644 contrib/builder/rpm/amd64/README.md
 rename contrib/builder/rpm/{ => amd64}/build.sh (100%)
 rename contrib/builder/rpm/{ => amd64}/centos-7/Dockerfile (88%)
 rename contrib/builder/rpm/{ => amd64}/fedora-22/Dockerfile (93%)
 rename contrib/builder/rpm/{ => amd64}/fedora-23/Dockerfile (93%)
 rename contrib/builder/rpm/{ => amd64}/generate.sh (98%)
 rename contrib/builder/rpm/{ => amd64}/opensuse-13.2/Dockerfile (87%)
 rename contrib/builder/rpm/{ => amd64}/oraclelinux-6/Dockerfile (100%)
 rename contrib/builder/rpm/{ => amd64}/oraclelinux-7/Dockerfile (86%)

diff --git a/contrib/builder/deb/README.md b/contrib/builder/deb/README.md
deleted file mode 100644
index a6fd70dca7..0000000000
--- a/contrib/builder/deb/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# `dockercore/builder-deb`
-
-This image's tags contain the dependencies for building Docker `.deb`s for each of the Debian-based platforms Docker targets.
-
-To add new tags, see [`contrib/builder/deb` in https://github.com/docker/docker](https://github.com/docker/docker/tree/master/contrib/builder/deb), specifically the `generate.sh` script, whose usage is described in a comment at the top of the file.
diff --git a/contrib/builder/deb/amd64/README.md b/contrib/builder/deb/amd64/README.md
new file mode 100644
index 0000000000..20a0ff1006
--- /dev/null
+++ b/contrib/builder/deb/amd64/README.md
@@ -0,0 +1,5 @@
+# `dockercore/builder-deb`
+
+This image's tags contain the dependencies for building Docker `.deb`s for each of the Debian-based platforms Docker targets.
+
+To add new tags, see [`contrib/builder/deb/amd64` in https://github.com/docker/docker](https://github.com/docker/docker/tree/master/contrib/builder/deb/amd64), specifically the `generate.sh` script, whose usage is described in a comment at the top of the file.
diff --git a/contrib/builder/deb/build.sh b/contrib/builder/deb/amd64/build.sh
similarity index 100%
rename from contrib/builder/deb/build.sh
rename to contrib/builder/deb/amd64/build.sh
diff --git a/contrib/builder/deb/debian-jessie/Dockerfile b/contrib/builder/deb/amd64/debian-jessie/Dockerfile
similarity index 88%
rename from contrib/builder/deb/debian-jessie/Dockerfile
rename to contrib/builder/deb/amd64/debian-jessie/Dockerfile
index 759ad18c53..6cb64b3fec 100644
--- a/contrib/builder/deb/debian-jessie/Dockerfile
+++ b/contrib/builder/deb/amd64/debian-jessie/Dockerfile
@@ -1,5 +1,5 @@
 #
-# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/generate.sh"!
+# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/amd64/generate.sh"!
 #
 
 FROM debian:jessie
diff --git a/contrib/builder/deb/debian-stretch/Dockerfile b/contrib/builder/deb/amd64/debian-stretch/Dockerfile
similarity index 88%
rename from contrib/builder/deb/debian-stretch/Dockerfile
rename to contrib/builder/deb/amd64/debian-stretch/Dockerfile
index 083af65aa9..543cebb006 100644
--- a/contrib/builder/deb/debian-stretch/Dockerfile
+++ b/contrib/builder/deb/amd64/debian-stretch/Dockerfile
@@ -1,5 +1,5 @@
 #
-# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/generate.sh"!
+# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/amd64/generate.sh"!
 #
 
 FROM debian:stretch
diff --git a/contrib/builder/deb/debian-wheezy/Dockerfile b/contrib/builder/deb/amd64/debian-wheezy/Dockerfile
similarity index 90%
rename from contrib/builder/deb/debian-wheezy/Dockerfile
rename to contrib/builder/deb/amd64/debian-wheezy/Dockerfile
index ce4a4a6da0..77d4cb6ad4 100644
--- a/contrib/builder/deb/debian-wheezy/Dockerfile
+++ b/contrib/builder/deb/amd64/debian-wheezy/Dockerfile
@@ -1,5 +1,5 @@
 #
-# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/generate.sh"!
+# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/amd64/generate.sh"!
 #
 
 FROM debian:wheezy-backports
diff --git a/contrib/builder/deb/generate.sh b/contrib/builder/deb/amd64/generate.sh
similarity index 97%
rename from contrib/builder/deb/generate.sh
rename to contrib/builder/deb/amd64/generate.sh
index db51bd8be4..0a0561a643 100755
--- a/contrib/builder/deb/generate.sh
+++ b/contrib/builder/deb/amd64/generate.sh
@@ -33,7 +33,7 @@ for version in "${versions[@]}"; do
 	echo "$version -> FROM $from"
 	cat > "$version/Dockerfile" <<-EOF
 		#
-		# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/generate.sh"!
+		# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/amd64/generate.sh"!
 		#
 
 		FROM $from
@@ -110,7 +110,7 @@ for version in "${versions[@]}"; do
 
 	echo >> "$version/Dockerfile"
 
-	awk '$1 == "ENV" && $2 == "GO_VERSION" { print; exit }' ../../../Dockerfile >> "$version/Dockerfile"
+	awk '$1 == "ENV" && $2 == "GO_VERSION" { print; exit }' ../../../../Dockerfile >> "$version/Dockerfile"
 	echo 'RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local' >> "$version/Dockerfile"
 	echo 'ENV PATH $PATH:/usr/local/go/bin' >> "$version/Dockerfile"
 
diff --git a/contrib/builder/deb/ubuntu-precise/Dockerfile b/contrib/builder/deb/amd64/ubuntu-precise/Dockerfile
similarity index 88%
rename from contrib/builder/deb/ubuntu-precise/Dockerfile
rename to contrib/builder/deb/amd64/ubuntu-precise/Dockerfile
index d255535544..f6c4f27b58 100644
--- a/contrib/builder/deb/ubuntu-precise/Dockerfile
+++ b/contrib/builder/deb/amd64/ubuntu-precise/Dockerfile
@@ -1,5 +1,5 @@
 #
-# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/generate.sh"!
+# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/amd64/generate.sh"!
 #
 
 FROM ubuntu:precise
diff --git a/contrib/builder/deb/ubuntu-trusty/Dockerfile b/contrib/builder/deb/amd64/ubuntu-trusty/Dockerfile
similarity index 88%
rename from contrib/builder/deb/ubuntu-trusty/Dockerfile
rename to contrib/builder/deb/amd64/ubuntu-trusty/Dockerfile
index d422f5d3e6..0d8472d112 100644
--- a/contrib/builder/deb/ubuntu-trusty/Dockerfile
+++ b/contrib/builder/deb/amd64/ubuntu-trusty/Dockerfile
@@ -1,5 +1,5 @@
 #
-# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/generate.sh"!
+# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/amd64/generate.sh"!
 #
 
 FROM ubuntu:trusty
diff --git a/contrib/builder/deb/ubuntu-wily/Dockerfile b/contrib/builder/deb/amd64/ubuntu-wily/Dockerfile
similarity index 88%
rename from contrib/builder/deb/ubuntu-wily/Dockerfile
rename to contrib/builder/deb/amd64/ubuntu-wily/Dockerfile
index 7c5f124ad4..4e0beedd8b 100644
--- a/contrib/builder/deb/ubuntu-wily/Dockerfile
+++ b/contrib/builder/deb/amd64/ubuntu-wily/Dockerfile
@@ -1,5 +1,5 @@
 #
-# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/generate.sh"!
+# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/deb/amd64/generate.sh"!
 #
 
 FROM ubuntu:wily
diff --git a/contrib/builder/deb/armhf/debian-jessie/Dockerfile b/contrib/builder/deb/armhf/debian-jessie/Dockerfile
new file mode 100644
index 0000000000..fff136d7c8
--- /dev/null
+++ b/contrib/builder/deb/armhf/debian-jessie/Dockerfile
@@ -0,0 +1,10 @@
+FROM armhf/debian:jessie
+
+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 libsystemd-journal-dev --no-install-recommends && rm -rf /var/lib/apt/lists/*
+
+ENV GO_VERSION 1.4.3
+RUN curl -fSL "https://github.com/hypriot/golang-armbuilds/releases/download/v${GO_VERSION}/go${GO_VERSION}.linux-armv7.tar.gz" | tar xzC /usr/local
+ENV PATH $PATH:/usr/local/go/bin
+
+ENV AUTO_GOPATH 1
+ENV DOCKER_BUILDTAGS apparmor selinux
diff --git a/contrib/builder/rpm/README.md b/contrib/builder/rpm/README.md
deleted file mode 100644
index 153fbceb6a..0000000000
--- a/contrib/builder/rpm/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# `dockercore/builder-rpm`
-
-This image's tags contain the dependencies for building Docker `.rpm`s for each of the RPM-based platforms Docker targets.
-
-To add new tags, see [`contrib/builder/rpm` in https://github.com/docker/docker](https://github.com/docker/docker/tree/master/contrib/builder/rpm), specifically the `generate.sh` script, whose usage is described in a comment at the top of the file.
diff --git a/contrib/builder/rpm/amd64/README.md b/contrib/builder/rpm/amd64/README.md
new file mode 100644
index 0000000000..5f2e888c7a
--- /dev/null
+++ b/contrib/builder/rpm/amd64/README.md
@@ -0,0 +1,5 @@
+# `dockercore/builder-rpm`
+
+This image's tags contain the dependencies for building Docker `.rpm`s for each of the RPM-based platforms Docker targets.
+
+To add new tags, see [`contrib/builder/rpm/amd64` in https://github.com/docker/docker](https://github.com/docker/docker/tree/master/contrib/builder/rpm/amd64), specifically the `generate.sh` script, whose usage is described in a comment at the top of the file.
diff --git a/contrib/builder/rpm/build.sh b/contrib/builder/rpm/amd64/build.sh
similarity index 100%
rename from contrib/builder/rpm/build.sh
rename to contrib/builder/rpm/amd64/build.sh
diff --git a/contrib/builder/rpm/centos-7/Dockerfile b/contrib/builder/rpm/amd64/centos-7/Dockerfile
similarity index 88%
rename from contrib/builder/rpm/centos-7/Dockerfile
rename to contrib/builder/rpm/amd64/centos-7/Dockerfile
index 215f2836d6..06750eeb85 100644
--- a/contrib/builder/rpm/centos-7/Dockerfile
+++ b/contrib/builder/rpm/amd64/centos-7/Dockerfile
@@ -1,5 +1,5 @@
 #
-# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/rpm/generate.sh"!
+# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/rpm/amd64/generate.sh"!
 #
 
 FROM centos:7
diff --git a/contrib/builder/rpm/fedora-22/Dockerfile b/contrib/builder/rpm/amd64/fedora-22/Dockerfile
similarity index 93%
rename from contrib/builder/rpm/fedora-22/Dockerfile
rename to contrib/builder/rpm/amd64/fedora-22/Dockerfile
index 484c43c55f..90f5123442 100644
--- a/contrib/builder/rpm/fedora-22/Dockerfile
+++ b/contrib/builder/rpm/amd64/fedora-22/Dockerfile
@@ -1,5 +1,5 @@
 #
-# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/rpm/generate.sh"!
+# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/rpm/amd64/generate.sh"!
 #
 
 FROM fedora:22
diff --git a/contrib/builder/rpm/fedora-23/Dockerfile b/contrib/builder/rpm/amd64/fedora-23/Dockerfile
similarity index 93%
rename from contrib/builder/rpm/fedora-23/Dockerfile
rename to contrib/builder/rpm/amd64/fedora-23/Dockerfile
index 0047b080b9..bc5ad4884a 100644
--- a/contrib/builder/rpm/fedora-23/Dockerfile
+++ b/contrib/builder/rpm/amd64/fedora-23/Dockerfile
@@ -1,5 +1,5 @@
 #
-# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/rpm/generate.sh"!
+# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/rpm/amd64/generate.sh"!
 #
 
 FROM fedora:23
diff --git a/contrib/builder/rpm/generate.sh b/contrib/builder/rpm/amd64/generate.sh
similarity index 98%
rename from contrib/builder/rpm/generate.sh
rename to contrib/builder/rpm/amd64/generate.sh
index 00749b092d..2ab1cabbb5 100755
--- a/contrib/builder/rpm/generate.sh
+++ b/contrib/builder/rpm/amd64/generate.sh
@@ -30,7 +30,7 @@ for version in "${versions[@]}"; do
 	echo "$version -> FROM $from"
 	cat > "$version/Dockerfile" <<-EOF
 		#
-		# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/rpm/generate.sh"!
+		# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/rpm/amd64/generate.sh"!
 		#
 
 		FROM $from
@@ -161,7 +161,7 @@ for version in "${versions[@]}"; do
 	esac
 
 
-	awk '$1 == "ENV" && $2 == "GO_VERSION" { print; exit }' ../../../Dockerfile >> "$version/Dockerfile"
+	awk '$1 == "ENV" && $2 == "GO_VERSION" { print; exit }' ../../../../Dockerfile >> "$version/Dockerfile"
 	echo 'RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local' >> "$version/Dockerfile"
 	echo 'ENV PATH $PATH:/usr/local/go/bin' >> "$version/Dockerfile"
 
diff --git a/contrib/builder/rpm/opensuse-13.2/Dockerfile b/contrib/builder/rpm/amd64/opensuse-13.2/Dockerfile
similarity index 87%
rename from contrib/builder/rpm/opensuse-13.2/Dockerfile
rename to contrib/builder/rpm/amd64/opensuse-13.2/Dockerfile
index 95fe3a3c09..c135ec2be2 100644
--- a/contrib/builder/rpm/opensuse-13.2/Dockerfile
+++ b/contrib/builder/rpm/amd64/opensuse-13.2/Dockerfile
@@ -1,5 +1,5 @@
 #
-# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/rpm/generate.sh"!
+# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/rpm/amd64/generate.sh"!
 #
 
 FROM opensuse:13.2
diff --git a/contrib/builder/rpm/oraclelinux-6/Dockerfile b/contrib/builder/rpm/amd64/oraclelinux-6/Dockerfile
similarity index 100%
rename from contrib/builder/rpm/oraclelinux-6/Dockerfile
rename to contrib/builder/rpm/amd64/oraclelinux-6/Dockerfile
diff --git a/contrib/builder/rpm/oraclelinux-7/Dockerfile b/contrib/builder/rpm/amd64/oraclelinux-7/Dockerfile
similarity index 86%
rename from contrib/builder/rpm/oraclelinux-7/Dockerfile
rename to contrib/builder/rpm/amd64/oraclelinux-7/Dockerfile
index e27f589679..dc8570a97c 100644
--- a/contrib/builder/rpm/oraclelinux-7/Dockerfile
+++ b/contrib/builder/rpm/amd64/oraclelinux-7/Dockerfile
@@ -1,5 +1,5 @@
 #
-# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/rpm/generate.sh"!
+# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/rpm/amd64/generate.sh"!
 #
 
 FROM oraclelinux:7
diff --git a/contrib/reprepro/suites.sh b/contrib/reprepro/suites.sh
index 25a02da947..9ecf99d465 100755
--- a/contrib/reprepro/suites.sh
+++ b/contrib/reprepro/suites.sh
@@ -5,7 +5,7 @@ cd "$(dirname "$BASH_SOURCE")/../.."
 
 targets_from() {
        git fetch -q https://github.com/docker/docker.git "$1"
-       git ls-tree -r --name-only "$(git rev-parse FETCH_HEAD)" contrib/builder/deb | grep '/Dockerfile$' | sed -r 's!^contrib/builder/deb/|-debootstrap|/Dockerfile$!!g'
+       git ls-tree -r --name-only "$(git rev-parse FETCH_HEAD)" contrib/builder/deb/ | grep '/Dockerfile$' | sed -r 's!^contrib/builder/deb/|^contrib/builder/deb/amd64/|-debootstrap|/Dockerfile$!!g' | grep -v /
 }
 
 release_branch=$(git ls-remote --heads https://github.com/docker/docker.git | awk -F 'refs/heads/' '$2 ~ /^release/ { print $2 }' | sort -V | tail -1)
diff --git a/hack/make/.build-rpm/docker-engine.spec b/hack/make/.build-rpm/docker-engine.spec
index 53b7cd7a7b..e79cd057f8 100644
--- a/hack/make/.build-rpm/docker-engine.spec
+++ b/hack/make/.build-rpm/docker-engine.spec
@@ -17,7 +17,7 @@ Packager: Docker <support@docker.com>
 %endif
 
 # required packages for build
-# most are already in the container (see contrib/builder/rpm/generate.sh)
+# most are already in the container (see contrib/builder/rpm/ARCH/generate.sh)
 # only require systemd on those systems
 %if 0%{?is_systemd}
 BuildRequires: pkgconfig(systemd)
diff --git a/hack/make/.detect-daemon-osarch b/hack/make/.detect-daemon-osarch
index f95afc4759..5c6d3f5783 100644
--- a/hack/make/.detect-daemon-osarch
+++ b/hack/make/.detect-daemon-osarch
@@ -9,6 +9,7 @@ export DOCKER_ENGINE_OSARCH="$(docker version | awk '
 ')"
 export DOCKER_ENGINE_GOOS="${DOCKER_ENGINE_OSARCH%/*}"
 export DOCKER_ENGINE_GOARCH="${DOCKER_ENGINE_OSARCH##*/}"
+DOCKER_ENGINE_GOARCH=${DOCKER_ENGINE_GOARCH:=amd64}
 
 # and the client, just in case
 export DOCKER_CLIENT_OSARCH="$(docker version | awk '
@@ -16,3 +17,18 @@ export DOCKER_CLIENT_OSARCH="$(docker version | awk '
 	$1 == "Server:" { client = 0; next }
 	client && $1 == "OS/Arch:" { print $2 }
 ')"
+
+# Retrieve the architecture used in contrib/builder/(deb|rpm)/$PACKAGE_ARCH/
+PACKAGE_ARCH="amd64"
+case "$DOCKER_ENGINE_OSARCH" in
+	linux/arm)
+		PACKAGE_ARCH='armhf'
+		;;
+	linux/ppc64le)
+		PACKAGE_ARCH='ppc64le'
+		;;
+	linux/s390x)
+		PACKAGE_ARCH='s390x'
+		;;
+esac
+export PACKAGE_ARCH
diff --git a/hack/make/build-deb b/hack/make/build-deb
index da1b921e9d..81fc222982 100644
--- a/hack/make/build-deb
+++ b/hack/make/build-deb
@@ -5,6 +5,7 @@ set -e
 (
 	export TZ=UTC # make sure our "date" variables are UTC-based
 	bundle .integration-daemon-start
+	bundle .detect-daemon-osarch
 
 	# TODO consider using frozen images for the dockercore/builder-deb tags
 
@@ -37,7 +38,7 @@ set -e
 	./man/md2man-all.sh -q || true
 	# TODO decide if it's worth getting go-md2man in _each_ builder environment to avoid this
 
-	builderDir="contrib/builder/deb"
+	builderDir="contrib/builder/deb/${PACKAGE_ARCH}"
 	pkgs=( $(find "${builderDir}/"*/ -type d) )
 	if [ ! -z "$DOCKER_BUILD_PKGS" ]; then
 		pkgs=( $(echo ${DOCKER_BUILD_PKGS[@]/#/$builderDir\/}) )
diff --git a/hack/make/build-rpm b/hack/make/build-rpm
index d87191bd1e..69be492006 100644
--- a/hack/make/build-rpm
+++ b/hack/make/build-rpm
@@ -6,6 +6,7 @@ set -e
 	export TZ=UTC # make sure our "date" variables are UTC-based
 
 	source "$(dirname "$BASH_SOURCE")/.integration-daemon-start"
+	source "$(dirname "$BASH_SOURCE")/.detect-daemon-osarch"
 
 	# TODO consider using frozen images for the dockercore/builder-rpm tags
 
@@ -59,15 +60,15 @@ set -e
 	while read -r line || [[ -n "$line" ]]; do
 		if [ -z "$line" ]; then continue; fi
 		if [[ "$line" =~ $VERSION_REGEX ]]; then
-			echo >> contrib/builder/rpm/changelog
-			echo "* `date -d ${BASH_REMATCH[2]} '+%a %b %d %Y'` ${rpmPackager} - ${BASH_REMATCH[1]}" >> contrib/builder/rpm/changelog
+			echo >> contrib/builder/rpm/${PACKAGE_ARCH}/changelog
+			echo "* `date -d ${BASH_REMATCH[2]} '+%a %b %d %Y'` ${rpmPackager} - ${BASH_REMATCH[1]}" >> contrib/builder/rpm/${PACKAGE_ARCH}/changelog
 		fi
 		if [[ "$line" =~ $ENTRY_REGEX ]]; then
-			echo "- ${BASH_REMATCH[1]//\`}" >> contrib/builder/rpm/changelog
+			echo "- ${BASH_REMATCH[1]//\`}" >> contrib/builder/rpm/${PACKAGE_ARCH}/changelog
 		fi
 	done < CHANGELOG.md
 
-	builderDir="contrib/builder/rpm"
+	builderDir="contrib/builder/rpm/${PACKAGE_ARCH}"
 	pkgs=( $(find "${builderDir}/"*/ -type d) )
 	if [ ! -z "$DOCKER_BUILD_PKGS" ]; then
 		pkgs=( $(echo ${DOCKER_BUILD_PKGS[@]/#/$builderDir\/}) )
@@ -97,7 +98,7 @@ set -e
 			RUN ln -sfv /usr/src/${rpmName}/hack/make/.build-rpm SPECS
 			WORKDIR /root/rpmbuild/SPECS
 			RUN tar -cz -C /usr/src -f /root/rpmbuild/SOURCES/${rpmName}.tar.gz ${rpmName}
-			RUN { cat /usr/src/${rpmName}/contrib/builder/rpm/changelog; } >> ${rpmName}.spec && tail >&2 ${rpmName}.spec
+			RUN { cat /usr/src/${rpmName}/contrib/builder/rpm/${PACKAGE_ARCH}/changelog; } >> ${rpmName}.spec && tail >&2 ${rpmName}.spec
 			RUN rpmbuild -ba \
 				--define '_release $rpmRelease' \
 				--define '_version $rpmVersion' \
diff --git a/hack/make/release-deb b/hack/make/release-deb
index 7022c1e123..a771990c4f 100755
--- a/hack/make/release-deb
+++ b/hack/make/release-deb
@@ -93,7 +93,7 @@ if [ ! -f "$APTDIR/conf/docker-engine-release.conf" ]; then
 fi
 
 # release the debs
-for dir in contrib/builder/deb/*/; do
+for dir in contrib/builder/deb/${PACKAGE_ARCH}/*/; do
 	version="$(basename "$dir")"
 	codename="${version//debootstrap-}"
 
@@ -122,7 +122,7 @@ apt-ftparchive clean "$APTDIR/conf/apt-ftparchive.conf"
 # run the apt-ftparchive commands so we can have pinning
 apt-ftparchive generate "$APTDIR/conf/apt-ftparchive.conf"
 
-for dir in contrib/builder/deb/*/; do
+for dir in contrib/builder/deb/${PACKAGE_ARCH}/*/; do
 	version="$(basename "$dir")"
 	codename="${version//debootstrap-}"
 
diff --git a/hack/make/release-rpm b/hack/make/release-rpm
index 7657e2fcc9..19bdb39f34 100755
--- a/hack/make/release-rpm
+++ b/hack/make/release-rpm
@@ -36,7 +36,7 @@ for distro in "${distros[@]}"; do
 	# Setup the yum repo
 	REPO=$YUMDIR/$release/$distro
 
-	for dir in contrib/builder/rpm/$distro-*/; do
+	for dir in contrib/builder/rpm/${PACKAGE_ARCH}/$distro-*/; do
 		version="$(basename "$dir")"
 		suite="${version##*-}"
 
diff --git a/hack/make/test-deb-install b/hack/make/test-deb-install
index f0e84d7f20..ce1d9d4734 100755
--- a/hack/make/test-deb-install
+++ b/hack/make/test-deb-install
@@ -12,7 +12,7 @@ fi
 
 test_deb_install(){
 	# test for each Dockerfile in contrib/builder
-	for dir in contrib/builder/deb/*/; do
+	for dir in contrib/builder/deb/${PACKAGE_ARCH}/*/; do
 		local from="$(awk 'toupper($1) == "FROM" { print $2; exit }' "$dir/Dockerfile")"
 		local dir=$(basename "$dir")
 
diff --git a/project/ARM.md b/project/ARM.md
index 329589d63a..dc44e95aa8 100644
--- a/project/ARM.md
+++ b/project/ARM.md
@@ -12,14 +12,17 @@ From the root of the Docker/Docker repo one can use make to execute the followin
 - make validate
 - make binary
 - make build
+- make deb
 - make bundles
 - make default
 - make shell
+- make test-unit
+- make test-integration-cli
 - make
 
 The Makefile does include logic to determine on which OS and architecture the Docker Development Image is built.
 Based on OS and architecture it chooses the correct Dockerfile.
-For the ARM 32bit architecture it uses `Dockerfile.arm`.
+For the ARM 32bit architecture it uses `Dockerfile.armhf`.
 
 So for example in order to build a Docker binary one has to  
 1. clone the Docker/Docker repository on an ARM device `git clone git@github.com:docker/docker.git`