From a3e8e838a43dd92e74d2c9cdbb0a0106c305a2dc Mon Sep 17 00:00:00 2001 From: Guy Taylor Date: Mon, 9 Jul 2018 17:14:29 +0100 Subject: [PATCH 1/4] Add Docker build script This adds a "docker-build.sh" script that builds the full deb package using Docker. This allows any arch to build the native armhf package. --- Dockerfile-jessie | 19 +++++++++++++++++++ docker-build.sh | 29 +++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 Dockerfile-jessie create mode 100755 docker-build.sh diff --git a/Dockerfile-jessie b/Dockerfile-jessie new file mode 100644 index 0000000..986a3aa --- /dev/null +++ b/Dockerfile-jessie @@ -0,0 +1,19 @@ +FROM multiarch/debian-debootstrap:armhf-jessie + +ENV DEBIAN_FRONTEND noninteractive +RUN apt-get update + +# sensible-build.sh deps +RUN apt-get install -y --no-install-recommends \ + git ca-certificates wget patch \ + build-essential debhelper dpkg-dev + +# build dpes +RUN apt-get install -y --no-install-recommends \ + debhelper tcl8.6-dev autoconf python3-dev python3-venv libz-dev dh-systemd openssl + +# runtime deps +RUN apt-get install -y --no-install-recommends \ + net-tools iproute2 tclx8.4 tcl8.6 tcllib tcl-tls itcl3 + +RUN apt-get install -y --no-install-recommends devscripts equivs \ No newline at end of file diff --git a/docker-build.sh b/docker-build.sh new file mode 100755 index 0000000..1748b44 --- /dev/null +++ b/docker-build.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +set -o errexit # Exit on most errors (see the manual) +set -o errtrace # Make sure any error trap is inherited +set -o nounset # Disallow expansion of unset variables +set -o pipefail # Use last non-zero exit code in a pipeline +#set -o xtrace # Trace the execution of the script (debug) + +DISTRIBUTION=${1} + +DOCKER_IMAGE_NANE="piaware-builder:${DISTRIBUTION}" +DOCKER_CONTINAER_NANE='piaware-builder' + +# build builder image +docker build --tag "${DOCKER_IMAGE_NANE}" --file "Dockerfile-${DISTRIBUTION}" . + +mkdir -p "package-${DISTRIBUTION}" +docker run --rm -it --name "${DOCKER_CONTINAER_NANE}" \ + -v "${PWD}:/build:ro" \ + -v "${PWD}/package-${DISTRIBUTION}:/build/package-${DISTRIBUTION}:rw" \ + --workdir="/build" "${DOCKER_IMAGE_NANE}" \ + ./sensible-build.sh "${DISTRIBUTION}" + +mkdir -p "debs-${DISTRIBUTION}" +docker run --rm -it --name "${DOCKER_CONTINAER_NANE}" \ + -v "${PWD}/debs-${DISTRIBUTION}:/build:rw" \ + -v "${PWD}/package-${DISTRIBUTION}:/build/package-${DISTRIBUTION}:rw" \ + --workdir="/build/package-${DISTRIBUTION}" \ + "${DOCKER_IMAGE_NANE}" dpkg-buildpackage -b From 8f255a3832ca8f5586b594f35ac6e19a84100acb Mon Sep 17 00:00:00 2001 From: Guy Taylor Date: Mon, 9 Jul 2018 17:46:04 +0100 Subject: [PATCH 2/4] Output files from Docker using the current user --- docker-build.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docker-build.sh b/docker-build.sh index 1748b44..a8259d4 100755 --- a/docker-build.sh +++ b/docker-build.sh @@ -9,21 +9,28 @@ set -o pipefail # Use last non-zero exit code in a pipeline DISTRIBUTION=${1} DOCKER_IMAGE_NANE="piaware-builder:${DISTRIBUTION}" -DOCKER_CONTINAER_NANE='piaware-builder' +DOCKER_CONTINAER_NANE="piaware-builder-${DISTRIBUTION}" # build builder image docker build --tag "${DOCKER_IMAGE_NANE}" --file "Dockerfile-${DISTRIBUTION}" . +# Setup the build env mkdir -p "package-${DISTRIBUTION}" docker run --rm -it --name "${DOCKER_CONTINAER_NANE}" \ + -u="${UID}:$(id -g ${USER})" -v '/etc/group:/etc/group:ro' -v '/etc/passwd:/etc/passwd:ro' \ -v "${PWD}:/build:ro" \ -v "${PWD}/package-${DISTRIBUTION}:/build/package-${DISTRIBUTION}:rw" \ --workdir="/build" "${DOCKER_IMAGE_NANE}" \ ./sensible-build.sh "${DISTRIBUTION}" +# build the deb packages mkdir -p "debs-${DISTRIBUTION}" docker run --rm -it --name "${DOCKER_CONTINAER_NANE}" \ + -u="${UID}:$(id -g ${USER})" -v '/etc/group:/etc/group:ro' -v '/etc/passwd:/etc/passwd:ro' \ -v "${PWD}/debs-${DISTRIBUTION}:/build:rw" \ -v "${PWD}/package-${DISTRIBUTION}:/build/package-${DISTRIBUTION}:rw" \ --workdir="/build/package-${DISTRIBUTION}" \ "${DOCKER_IMAGE_NANE}" dpkg-buildpackage -b + +rm -rf "package-${DISTRIBUTION}" +rm -rf "debs-${DISTRIBUTION}/package-${DISTRIBUTION}" From 9724c3fae4f1ee83cce1d0e39036b17853fdab0c Mon Sep 17 00:00:00 2001 From: Guy Taylor Date: Mon, 9 Jul 2018 17:50:29 +0100 Subject: [PATCH 3/4] Add wheezy Docker file --- Dockerfile-jessie | 7 +++---- Dockerfile-wheezy | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 Dockerfile-wheezy diff --git a/Dockerfile-jessie b/Dockerfile-jessie index 986a3aa..1d3b396 100644 --- a/Dockerfile-jessie +++ b/Dockerfile-jessie @@ -3,10 +3,11 @@ FROM multiarch/debian-debootstrap:armhf-jessie ENV DEBIAN_FRONTEND noninteractive RUN apt-get update -# sensible-build.sh deps +# sensible-build.sh deps and deb packing debs RUN apt-get install -y --no-install-recommends \ git ca-certificates wget patch \ - build-essential debhelper dpkg-dev + build-essential debhelper dpkg-dev \ + devscripts equivs # build dpes RUN apt-get install -y --no-install-recommends \ @@ -15,5 +16,3 @@ RUN apt-get install -y --no-install-recommends \ # runtime deps RUN apt-get install -y --no-install-recommends \ net-tools iproute2 tclx8.4 tcl8.6 tcllib tcl-tls itcl3 - -RUN apt-get install -y --no-install-recommends devscripts equivs \ No newline at end of file diff --git a/Dockerfile-wheezy b/Dockerfile-wheezy new file mode 100644 index 0000000..098fbf3 --- /dev/null +++ b/Dockerfile-wheezy @@ -0,0 +1,18 @@ +FROM multiarch/debian-debootstrap:armhf-wheezy + +ENV DEBIAN_FRONTEND noninteractive +RUN apt-get update + +# sensible-build.sh deps and deb packing debs +RUN apt-get install -y --no-install-recommends \ + git ca-certificates wget patch \ + build-essential debhelper dpkg-dev \ + devscripts equivs + +# build dpes +RUN apt-get install -y --no-install-recommends \ + debhelper tcl8.5-dev autoconf python3-dev python-virtualenv libz-dev openssl + +# runtime deps +RUN apt-get install -y --no-install-recommends \ + net-tools iproute tclx8.4 tcl8.5 tcllib tcl-tls itcl3 From c972036971838ab4b3c8ec6ef4571771d7a6b578 Mon Sep 17 00:00:00 2001 From: Guy Taylor Date: Mon, 9 Jul 2018 19:00:04 +0100 Subject: [PATCH 4/4] Add Docker file for stretch --- Dockerfile-stretch | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Dockerfile-stretch diff --git a/Dockerfile-stretch b/Dockerfile-stretch new file mode 100644 index 0000000..bd49fce --- /dev/null +++ b/Dockerfile-stretch @@ -0,0 +1,18 @@ +FROM multiarch/debian-debootstrap:armhf-stretch + +ENV DEBIAN_FRONTEND noninteractive +RUN apt-get update + +# sensible-build.sh deps and deb packing debs +RUN apt-get install -y --no-install-recommends \ + git ca-certificates wget patch \ + build-essential debhelper dpkg-dev \ + devscripts equivs + +# build dpes +RUN apt-get install -y --no-install-recommends \ + debhelper tcl8.6-dev autoconf python3-dev python3-venv libz-dev dh-systemd openssl + +# runtime deps +RUN apt-get install -y --no-install-recommends \ + net-tools iproute2 tclx8.4 tcl8.6 tcllib tcl-tls itcl3