pbuilder support
Change-Id: I7d10a3b0867aab1af5462aea03dbd92e32f9fc68
diff --git a/D05deps b/D05deps
new file mode 100755
index 0000000..f8feb1b
--- /dev/null
+++ b/D05deps
@@ -0,0 +1,8 @@
+#!/bin/bash -xe
+apt-get install -y apt-utils
+(
+ flock -e 200
+ ( cd "$DEPSBASE"; apt-ftparchive packages . > Packages )
+ echo "deb [trusted=yes] file://$DEPSBASE ./" >> /etc/apt/sources.list
+ apt-get update
+) 200>/tmp/pbuilder-apt-lock
diff --git a/Dockerfile b/Dockerfile
index f3a069c..8f51e18 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -13,6 +13,13 @@
# Install the prerequisite packages into the image.
ADD . /build
-RUN /bin/bash -c 'apt-get update && apt-get install sudo make && ln -sfr /build/Makefile /Makefile && source /build/setup.sh && make -C /build prereqs'
+RUN /bin/bash -c '\
+apt-get update && \
+apt-get install sudo make && \
+ln -sfr /build/Makefile /Makefile && \
+source /build/setup.sh && \
+make -C /build prereqs'
+ADD pbuilderrc /etc/pbuilderrc
+ADD D05deps /var/cache/pbuilder/hooks/D05deps
VOLUME /var/lib/docker
diff --git a/docker.mk b/docker.mk
index e4a9671..8470a9d 100644
--- a/docker.mk
+++ b/docker.mk
@@ -46,15 +46,18 @@
-v $(TARBALL_FETCH_ROOT_DIRECTORY)\:/tarballs \
-v $(PREBUILT_DOCKER_ROOT)\:/docker \
-v $(PREBUILT_MODULES_ROOT)\:/modules \
+ -v $(FETCH_PBUILDER_DIRECTORY)\:/pbuilder \
-w /build \
-e "DEBOOTSTRAP_FETCH_TARBALL=$(DEBOOTSTRAP_FETCH_TARBALL)" \
-e "ROOTFS_FETCH_TARBALL=$(ROOTFS_FETCH_TARBALL)" \
-e "ARM64_BUILDER_FETCH_TARBALL=$(ARM64_BUILDER_FETCH_TARBALL)" \
+ -e "FETCH_PBUILDER_BASE=$(FETCH_PBUILDER_BASE)" \
-e "TARBALL_FETCH_ROOT_DIRECTORY=/tarballs" \
-e "PREBUILT_DOCKER_ROOT=/docker" \
-e "ROOTFS_REVISION=$(ROOTFS_REVISION)" \
-e "DEBOOTSTRAP_TARBALL_REVISION=$(DEBOOTSTRAP_TARBALL_REVISION)" \
-e "PREBUILT_MODULES_ROOT=/modules" \
+ -e "FETCH_PBUILDER_DIRECTORY=/pbuilder" \
aiy-board-builder \
/bin/bash -c \
'groupadd --gid $$(shell id -g) $$(shell id -g -n); \
diff --git a/packages.mk b/packages.mk
index a80fdc9..370280a 100644
--- a/packages.mk
+++ b/packages.mk
@@ -48,6 +48,35 @@
touch $$@
endef
+ifeq ($(FETCH_PBUILDER_BASE),true)
+$(ROOTDIR)/cache/base.tgz: $(FETCH_PBUILDER_DIRECTORY)/base.tgz
+ mkdir -p $(ROOTDIR)/cache
+ cp $< $(ROOTDIR)/cache
+else
+$(ROOTDIR)/cache/base.tgz:
+ mkdir -p $(ROOTDIR)/cache
+ sudo pbuilder create \
+ --basetgz $@ \
+ --mirror http://http.us.debian.org/debian \
+ --distribution stretch \
+ --architecture arm64 \
+ --extrapackages debhelper
+endif
+
+define make-pbuilder-package-target
+$1: $(PRODUCT_OUT)/.$1-pbuilder
+$(PRODUCT_OUT)/.$1-pbuilder: \
+ $(foreach package,$2,$(PRODUCT_OUT)/.$(package)-pbuilder) \
+ $(shell find $(ROOTDIR)/packages/$1 -type f) \
+ | $(ROOTDIR)/cache/base.tgz
+ mkdir -p $(PRODUCT_OUT)
+ cd $(ROOTDIR)/packages/$1; pdebuild \
+ --buildresult $(PRODUCT_OUT) -- \
+ --basetgz $(ROOTDIR)/cache/base.tgz
+ sudo touch $(PRODUCT_OUT)/.$1-pbuilder
+.PHONY:: $1
+endef
+
# Generate ARM64 targets
$(foreach package,$(ARM64_PACKAGE_NAMES),$(eval $(call make-arm64-package-target,$(package))))
diff --git a/pbuilderrc b/pbuilderrc
new file mode 100644
index 0000000..9ca29a6
--- /dev/null
+++ b/pbuilderrc
@@ -0,0 +1,11 @@
+# this is your configuration file for pbuilder.
+# the file in /usr/share/pbuilder/pbuilderrc is the default template.
+# /etc/pbuilderrc is the one meant for overwriting defaults in
+# the default template
+#
+# read pbuilderrc.5 document for notes on specific options.
+MIRRORSITE=http://http.us.debian.org/debian
+PBUILDERSATISFYDEPENDSCMD=/usr/lib/pbuilder/pbuilder-satisfydepends-apt
+HOOKDIR="/var/cache/pbuilder/hooks"
+export DEPSBASE=$PRODUCT_OUT
+BINDMOUNTS=$DEPSBASE
diff --git a/preamble.mk b/preamble.mk
index bcc13fb..4f4f12f 100644
--- a/preamble.mk
+++ b/preamble.mk
@@ -13,6 +13,9 @@
DEBOOTSTRAP_TARBALL := $(ROOTDIR)/cache/debootstrap.tgz
DEBOOTSTRAP_TARBALL_SHA256 := $(ROOTDIR)/cache/debootstrap.tgz.sha256sum
+FETCH_PBUILDER_DIRECTORY ?= /google/data/ro/teams/spacepark/enterprise/kokoro/prod/spacepark/enterprise/pbuilder
+FETCH_PBUILDER_BASE ?= true
+
DEBOOTSTRAP_EXTRA := \
alsa-utils \
apt-listchanges \
diff --git a/prereqs.mk b/prereqs.mk
index 156b758..2cd6cdb 100644
--- a/prereqs.mk
+++ b/prereqs.mk
@@ -22,6 +22,7 @@
libwayland-dev \
mtools \
parted \
+ pbuilder \
pkg-config \
python-minimal \
python2.7 \