diff --git a/.gitignore b/.gitignore
index 6bacef0764e6ccae98272f959eaec0c2a6a8c37b..e9badd54e3ea8721257d6a1d61083a28125ed75f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
 /_build/
 /relocatable-install/
+/libcapsule_*.dsc
+/libcapsule_*.tar.[gx]z
diff --git a/Makefile b/Makefile
index 4b327cd24e96ce54f2ff18bbf8178efd601b5d8e..9a4c951a1d24b10cfc08c9002c4141bba4c19417 100644
--- a/Makefile
+++ b/Makefile
@@ -1,23 +1,55 @@
 all: install
 
-install: install-amd64 install-i386
+chroot = /srv/jessie
+
+in_chroot = \
+	bwrap \
+	--ro-bind $(chroot) / \
+	--dev-bind /dev /dev \
+	--tmpfs /tmp \
+	--tmpfs /home \
+	--bind $(CURDIR) $(CURDIR) \
+	--chdir $(CURDIR) \
+	--setenv LC_ALL C.UTF-8 \
+	$(NULL)
+
+install: install-amd64 install-i386 libcapsule/configure
 	install pressure-vessel-wrap relocatable-install/bin/
 	mkdir -p relocatable-install/sources
 	install -m644 THIRD-PARTY.md relocatable-install/sources/README.txt
 	install -m644 libcapsule/debian/copyright relocatable-install/sources/capsule-capture-libs.txt
 	install -m644 /usr/share/doc/zlib1g/copyright relocatable-install/sources/libz.txt
 	install -m644 /usr/share/doc/libelf1/copyright relocatable-install/sources/libelf.txt
-	install -m644 libcapsule-*.tar.* relocatable-install/sources/
-	cd relocatable-install/sources; apt-get --download-only source elfutils zlib
+	dcmd install -m644 libcapsule*.dsc relocatable-install/sources/
+	$(in_chroot) $(MAKE) in-chroot/install
+
+in-chroot/install:
+	cd relocatable-install/sources; \
+	apt-get --download-only source elfutils zlib
 
 libcapsule/configure:
 	rm -fr libcapsule
-	tar -zxvf libcapsule-*.tar.*
+	first=; \
+	for t in libcapsule*.dsc; do \
+		if [ -z "$$first" ]; then \
+			first="$$t"; \
+		else \
+			echo "Exactly one libcapsule*.dsc is required" >&2; \
+			exit 1; \
+		fi; \
+	done
+	$(in_chroot) $(MAKE) in-chroot/libcapsule/configure
+
+in-chroot/libcapsule/configure:
+	dpkg-source -x libcapsule*.dsc
 	mv libcapsule-*/ libcapsule
 	set -e; cd libcapsule; NOCONFIGURE=1 ./autogen.sh
 
 _build/%/config.status: libcapsule/configure Makefile
 	mkdir -p _build/$*/libcapsule
+	$(in_chroot) $(MAKE) in-chroot/configure-$*
+
+in-chroot/configure-%:
 	set -eu; \
 	eval "$$(dpkg-architecture -a"$*" --print-set)"; \
 	case "$${DEB_BUILD_ARCH}/$${DEB_HOST_ARCH}" in \
@@ -36,11 +68,14 @@ _build/%/config.status: libcapsule/configure Makefile
 	    $(NULL)
 
 build-%: _build/%/config.status Makefile
-	make -C _build/$*/libcapsule
+	$(in_chroot) $(MAKE) -C _build/$*/libcapsule
 
 install-%: build-% Makefile
+	mkdir -p relocatable-install/bin
+	$(in_chroot) $(MAKE) in-chroot/install-$*
+
+in-chroot/install-%:
 	set -eu; \
-	mkdir -p relocatable-install/bin; \
 	eval "$$(dpkg-architecture -a"$*" --print-set)"; \
 	mkdir -p "relocatable-install/lib/$${DEB_HOST_MULTIARCH}"; \
 	install "_build/$*/libcapsule/capsule-capture-libs" "_build/$${DEB_HOST_MULTIARCH}-capsule-capture-libs"; \
diff --git a/README.md b/README.md
index be135785fff96a4730174bce60813a5e1d675926..ba583d4972b39251139d3d7e549dae404c379241 100644
--- a/README.md
+++ b/README.md
@@ -21,25 +21,32 @@ that won't be synchronised, other than /tmp or similar.)
 We can get a more predictable library stack than the
 `LD_LIBRARY_PATH`-based Steam Runtime by making an alternative runtime
 available over `/usr`, `/lib*`, `/bin`, `/sbin`, analogous to Flatpak
-runtimes, possibly using [libcapsule][] to share the host's graphics
-driver stack. (This mode is not yet implemented.)
+runtimes, using some or all of the host system's graphics stack.
+
+A future goal is to use [libcapsule][] to avoid the library dependencies
+of the host system's graphics stack influencing the libraries loaded by
+games, particularly libstdc++. This is not yet implemented.
 
 [libcapsule]: https://gitlab.collabora.com/vivek/libcapsule/
 
 Building a relocatable install
 ------------------------------
 
-On a system with autoconf-archive 20160916-1~bpo8+1 or later, check out
-libcapsule from git and use `aclocal -I m4 --install` to copy required
-macros to the `m4` directory. Put it in the `libcapsule/` subdirectory
-of `pressure-vessel`.
+Build a Debian source package (`.dsc`, `.debian.tar.*`, `.orig.tar.*`
+for libcapsule 0.20180430.0 or later, on a system with autoconf-archive
+20160916-1~bpo8+1 or later. Put it in the top-level directory of
+`pressure-vessel`, for example:
+
+    dcmd cp ../build-area/libcapsule_0.20180430.0-0co1.dsc .
 
 The build system also needs `bubblewrap` and `debootstrap`.
 
 To make the built version compatible with older systems, you will need a
-Debian 8 'jessie' chroot with some extra packages (SteamOS 2 'brewmaster'
+Debian 8 'jessie' chroot with some extra packages. SteamOS 2 'brewmaster'
 is not suitable, because its amd64 and i386 linux-libc-dev packages are
-not co-installable).
+not co-installable.
+
+To prepare the chroot:
 
     sudo debootstrap jessie /srv/jessie http://deb.debian.org/debian
     echo 'deb-src http://deb.debian.org/debian jessie main' | \
@@ -52,14 +59,10 @@ not co-installable).
         gtk-doc-tools libelf-dev libelf-dev:i386 libipc-run-perl \
         libjpeg62-turbo libjpeg62-turbo:i386 perl xsltproc zlib1g zlib1g:i386
     sudo chroot /srv/jessie apt install -t jessie-backports autoconf-archive
-    bwrap \
-        --ro-bind /srv/jessie / \
-        --dev-bind /dev /dev \
-        --tmpfs /tmp \
-        --bind /home /home \
-        --chdir $(pwd) \
-        --setenv LC_ALL C.UTF-8 \
-        make
+
+To build the relocatable install:
+
+    make chroot=/srv/jessie
 
 Binaries and source code end up in `relocatable-install/` which can be
 copied to wherever you want.