From c7ff61d425bce56e32ae5ebbc82035935d68ec7b Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Fri, 26 May 2017 15:10:27 -0500 Subject: [PATCH] Add armhf dockerfiles for deb building (#4) Add armhf dockerfiles for deb building Signed-off-by: Eli Uriegas Upstream-commit: f0c8cea1b79b049743cd1503f7ac4a34c265f476 Component: packaging --- components/packaging/deb/Makefile | 3 +- components/packaging/deb/build-deb | 11 ++++-- components/packaging/deb/common/rules | 2 +- .../deb/debian-jessie/Dockerfile.armhf | 34 ++++++++++++++++++ .../deb/debian-stretch/Dockerfile.armhf | 34 ++++++++++++++++++ .../deb/debian-wheezy/Dockerfile.armhf | 36 +++++++++++++++++++ .../deb/ubuntu-trusty/Dockerfile.armhf | 30 ++++++++++++++++ .../deb/ubuntu-xenial/Dockerfile.armhf | 30 ++++++++++++++++ .../deb/ubuntu-yakkety/Dockerfile.armhf | 30 ++++++++++++++++ .../deb/ubuntu-zesty/Dockerfile.armhf | 30 ++++++++++++++++ components/packaging/detect_alpine_image | 17 +++++++++ 11 files changed, 252 insertions(+), 5 deletions(-) create mode 100644 components/packaging/deb/debian-jessie/Dockerfile.armhf create mode 100644 components/packaging/deb/debian-stretch/Dockerfile.armhf create mode 100644 components/packaging/deb/debian-wheezy/Dockerfile.armhf create mode 100644 components/packaging/deb/ubuntu-trusty/Dockerfile.armhf create mode 100644 components/packaging/deb/ubuntu-xenial/Dockerfile.armhf create mode 100644 components/packaging/deb/ubuntu-yakkety/Dockerfile.armhf create mode 100644 components/packaging/deb/ubuntu-zesty/Dockerfile.armhf create mode 100755 components/packaging/detect_alpine_image diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index 82bbb248f8..4c62c275fc 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -1,11 +1,12 @@ SHELL:=/bin/bash +ALPINE:=$(shell $(CURDIR)/../detect_alpine_image) ARCH:=amd64 ENGINE_DIR:=$(CURDIR)/../../engine CLI_DIR:=$(CURDIR)/../../cli GITCOMMIT?=$(shell cd $(ENGINE_DIR) && git rev-parse --short HEAD) VERSION?=$(shell cat $(ENGINE_DIR)/VERSION) DOCKER_EXPERIMENTAL:=0 -CHOWN:=docker run --rm -v $(CURDIR):/v -w /v alpine chown +CHOWN:=docker run --rm -v $(CURDIR):/v -w /v $(ALPINE) chown .PHONY: help clean deb ubuntu debian ubuntu-xenial ubuntu-trusty ubuntu-yakkety ubuntu-zesty debian-jessie debian-stretch debian-wheezy diff --git a/components/packaging/deb/build-deb b/components/packaging/deb/build-deb index ffa8865ab5..2ca570f07f 100755 --- a/components/packaging/deb/build-deb +++ b/components/packaging/deb/build-deb @@ -1,9 +1,14 @@ #!/usr/bin/env bash set -x # I want to rip this install-binaries script out so badly -cd engine && \ - TMP_GOPATH="/go" hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy-dynamic tini && \ - cd - +cd engine +TMP_GOPATH="/go" bash hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy-dynamic tini +if [[ $? -ne 0 ]]; then + echo "Binaries required for package building not installed correctly." + echo "Exiting..." + exit 1 +fi +cd - echo VERSION AAA $VERSION VERSION=${VERSION:-$( cat engine/VERSION )} diff --git a/components/packaging/deb/common/rules b/components/packaging/deb/common/rules index 74f4b7c8d9..9a9ed979f0 100644 --- a/components/packaging/deb/common/rules +++ b/components/packaging/deb/common/rules @@ -12,7 +12,7 @@ override_dh_gencontrol: override_dh_auto_build: cd engine && ./hack/make.sh dynbinary - cd cli && LDFLAGS='' make VERSION=$(VERSION) GITCOMMIT=$(DOCKER_GITCOMMIT) dynbinary + LDFLAGS='' make -C cli VERSION=$(VERSION) GITCOMMIT=$(DOCKER_GITCOMMIT) dynbinary # ./man/md2man-all.sh runs outside the build container (if at all), since we don't have go-md2man here override_dh_auto_test: diff --git a/components/packaging/deb/debian-jessie/Dockerfile.armhf b/components/packaging/deb/debian-jessie/Dockerfile.armhf new file mode 100644 index 0000000000..bab5162b88 --- /dev/null +++ b/components/packaging/deb/debian-jessie/Dockerfile.armhf @@ -0,0 +1,34 @@ +FROM armhf/debian:jessie + +# allow replacing httpredir or deb mirror +ARG APT_MIRROR=deb.debian.org +RUN sed -ri "s/(httpredir|deb).debian.org/$APT_MIRROR/g" /etc/apt/sources.list + +RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev pkg-config vim-common libsystemd-journal-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* + +ENV GO_VERSION 1.8.1 +RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local +ENV PATH $PATH:/usr/local/go/bin + +ENV GOPATH /go + +ENV DOCKER_BUILDTAGS apparmor pkcs11 selinux +ENV RUNC_BUILDTAGS apparmor selinux + +COPY common/ /root/build-deb/debian +COPY build-deb /root/build-deb/build-deb + +RUN mkdir -p /go/src/github.com/docker && \ + mkdir -p /go/src/github.com/opencontainers && \ + ln -snf /engine /root/build-deb/engine && \ + ln -snf /cli /root/build-deb/cli && \ + ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ + ln -snf /root/build-deb/cli /go/src/github.com/docker/cli + + +ENV DISTRO debian +ENV SUITE jessie + +WORKDIR /root/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/debian-stretch/Dockerfile.armhf b/components/packaging/deb/debian-stretch/Dockerfile.armhf new file mode 100644 index 0000000000..a55b7c3f7e --- /dev/null +++ b/components/packaging/deb/debian-stretch/Dockerfile.armhf @@ -0,0 +1,34 @@ +FROM armhf/debian:stretch + +# allow replacing httpredir or deb mirror +ARG APT_MIRROR=deb.debian.org +RUN sed -ri "s/(httpredir|deb).debian.org/$APT_MIRROR/g" /etc/apt/sources.list + +RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* + +ENV GO_VERSION 1.8.1 +RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local +ENV PATH $PATH:/usr/local/go/bin + +ENV GOPATH /go + +ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux +ENV RUNC_BUILDTAGS apparmor seccomp selinux + +COPY common/ /root/build-deb/debian +COPY build-deb /root/build-deb/build-deb + +RUN mkdir -p /go/src/github.com/docker && \ + mkdir -p /go/src/github.com/opencontainers && \ + ln -snf /engine /root/build-deb/engine && \ + ln -snf /cli /root/build-deb/cli && \ + ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ + ln -snf /root/build-deb/cli /go/src/github.com/docker/cli + + +ENV DISTRO debian +ENV SUITE stretch + +WORKDIR /root/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/debian-wheezy/Dockerfile.armhf b/components/packaging/deb/debian-wheezy/Dockerfile.armhf new file mode 100644 index 0000000000..10ef3fbe7d --- /dev/null +++ b/components/packaging/deb/debian-wheezy/Dockerfile.armhf @@ -0,0 +1,36 @@ +FROM armhf/debian:wheezy-backports + +# allow replacing httpredir or deb mirror +ARG APT_MIRROR=deb.debian.org +RUN sed -ri "s/(httpredir|deb).debian.org/$APT_MIRROR/g" /etc/apt/sources.list +RUN sed -ri "s/(httpredir|deb).debian.org/$APT_MIRROR/g" /etc/apt/sources.list.d/backports.list + +RUN apt-get update && apt-get install -y -t wheezy-backports btrfs-tools --no-install-recommends && rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y apparmor bash-completion build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev pkg-config vim-common --no-install-recommends && rm -rf /var/lib/apt/lists/* + +ENV GO_VERSION 1.8.1 +RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local +ENV PATH $PATH:/usr/local/go/bin + +ENV GOPATH /go + +ENV DOCKER_BUILDTAGS apparmor pkcs11 selinux +ENV RUNC_BUILDTAGS apparmor selinux + +COPY common/ /root/build-deb/debian +COPY build-deb /root/build-deb/build-deb + +RUN mkdir -p /go/src/github.com/docker && \ + mkdir -p /go/src/github.com/opencontainers && \ + ln -snf /engine /root/build-deb/engine && \ + ln -snf /cli /root/build-deb/cli && \ + ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ + ln -snf /root/build-deb/cli /go/src/github.com/docker/cli + + +ENV DISTRO debian +ENV SUITE wheezy + +WORKDIR /root/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-trusty/Dockerfile.armhf b/components/packaging/deb/ubuntu-trusty/Dockerfile.armhf new file mode 100644 index 0000000000..1d4a5168d6 --- /dev/null +++ b/components/packaging/deb/ubuntu-trusty/Dockerfile.armhf @@ -0,0 +1,30 @@ +FROM armhf/ubuntu:trusty + +RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev pkg-config vim-common libsystemd-journal-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* + +ENV GO_VERSION 1.8.1 +RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local +ENV PATH $PATH:/usr/local/go/bin + +ENV GOPATH /go + +ENV DOCKER_BUILDTAGS apparmor pkcs11 selinux +ENV RUNC_BUILDTAGS apparmor selinux + +COPY common/ /root/build-deb/debian +COPY build-deb /root/build-deb/build-deb + +RUN mkdir -p /go/src/github.com/docker && \ + mkdir -p /go/src/github.com/opencontainers && \ + ln -snf /engine /root/build-deb/engine && \ + ln -snf /cli /root/build-deb/cli && \ + ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ + ln -snf /root/build-deb/cli /go/src/github.com/docker/cli + + +ENV DISTRO ubuntu +ENV SUITE trusty + +WORKDIR /root/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-xenial/Dockerfile.armhf b/components/packaging/deb/ubuntu-xenial/Dockerfile.armhf new file mode 100644 index 0000000000..92e62d53e2 --- /dev/null +++ b/components/packaging/deb/ubuntu-xenial/Dockerfile.armhf @@ -0,0 +1,30 @@ +FROM armhf/ubuntu:xenial + +RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* + +ENV GO_VERSION 1.8.1 +RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local +ENV PATH $PATH:/usr/local/go/bin + +ENV GOPATH /go + +ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux +ENV RUNC_BUILDTAGS apparmor seccomp selinux + +COPY common/ /root/build-deb/debian +COPY build-deb /root/build-deb/build-deb + +RUN mkdir -p /go/src/github.com/docker && \ + mkdir -p /go/src/github.com/opencontainers && \ + ln -snf /engine /root/build-deb/engine && \ + ln -snf /cli /root/build-deb/cli && \ + ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ + ln -snf /root/build-deb/cli /go/src/github.com/docker/cli + + +ENV DISTRO ubuntu +ENV SUITE xenial + +WORKDIR /root/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-yakkety/Dockerfile.armhf b/components/packaging/deb/ubuntu-yakkety/Dockerfile.armhf new file mode 100644 index 0000000000..65aa5d4c35 --- /dev/null +++ b/components/packaging/deb/ubuntu-yakkety/Dockerfile.armhf @@ -0,0 +1,30 @@ +FROM armhf/ubuntu:yakkety + +RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* + +ENV GO_VERSION 1.8.1 +RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local +ENV PATH $PATH:/usr/local/go/bin + +ENV GOPATH /go + +ENV DOCKER_BUILDTAGS apparmor pkcs11 selinux +ENV RUNC_BUILDTAGS apparmor selinux + +COPY common/ /root/build-deb/debian +COPY build-deb /root/build-deb/build-deb + +RUN mkdir -p /go/src/github.com/docker && \ + mkdir -p /go/src/github.com/opencontainers && \ + ln -snf /engine /root/build-deb/engine && \ + ln -snf /cli /root/build-deb/cli && \ + ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ + ln -snf /root/build-deb/cli /go/src/github.com/docker/cli + + +ENV DISTRO ubuntu +ENV SUITE yakkety + +WORKDIR /root/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-zesty/Dockerfile.armhf b/components/packaging/deb/ubuntu-zesty/Dockerfile.armhf new file mode 100644 index 0000000000..58e1d7470b --- /dev/null +++ b/components/packaging/deb/ubuntu-zesty/Dockerfile.armhf @@ -0,0 +1,30 @@ +FROM armhf/ubuntu:yakkety + +RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* + +ENV GO_VERSION 1.8.1 +RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local +ENV PATH $PATH:/usr/local/go/bin + +ENV GOPATH /go + +ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux +ENV RUNC_BUILDTAGS apparmor seccomp selinux + +COPY common/ /root/build-deb/debian +COPY build-deb /root/build-deb/build-deb + +RUN mkdir -p /go/src/github.com/docker && \ + mkdir -p /go/src/github.com/opencontainers && \ + ln -snf /engine /root/build-deb/engine && \ + ln -snf /cli /root/build-deb/cli && \ + ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ + ln -snf /root/build-deb/cli /go/src/github.com/docker/cli + + +ENV DISTRO ubuntu +ENV SUITE zesty + +WORKDIR /root/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/detect_alpine_image b/components/packaging/detect_alpine_image new file mode 100755 index 0000000000..282a49f9b8 --- /dev/null +++ b/components/packaging/detect_alpine_image @@ -0,0 +1,17 @@ +#!/usr/bin/env sh + +arch="$(uname -m)" +img="unknown" + +if [ "$arch" = "x86_64" ]; then + img="alpine" +elif [ "$arch" = "armv7l" ]; then + img="armhf/alpine" +elif [ "$arch" = "s390x" ]; then + img="s390x/alpine" +else + echo "Architecture $(arch) not supported" + exit 1; +fi + +echo "$img"