summary refs log tree commit diff
path: root/docker/build_debian_packages.sh
blob: 08c68dd46a83afcdda2388731c58c4682a918d6a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/bash

# Build the Debian packages using Docker images.
#
# This script builds the Docker images and then executes them sequentially, each
# one building a Debian package for the targeted operating system. It is
# designed to be a "single command" to produce all the images.
#
# By default, builds for all known distributions, but a list of distributions
# can be passed on the commandline for debugging.

set -ex

cd `dirname $0`

if [ $# -lt 1 ]; then
    DISTS=(
        debian:stretch
        debian:buster
        debian:sid
        ubuntu:xenial
        ubuntu:bionic
        ubuntu:cosmic
    )
else
    DISTS=("$@")
fi

# Make the dir where the debs will live.
#
# Note that we deliberately put this outside the source tree, otherwise we tend
# to get source packages which are full of debs. (We could hack around that
# with more magic in the build_debian.sh script, but that doesn't solve the
# problem for natively-run dpkg-buildpakage).

mkdir -p ../../debs

# Build each OS image;
for i in "${DISTS[@]}"; do
    TAG=$(echo ${i} | cut -d ":" -f 2)
    docker build --tag dh-venv-builder:${TAG} --build-arg distro=${i} -f Dockerfile-dhvirtualenv .
    docker run -it --rm --volume=$(pwd)/../\:/synapse/source:ro --volume=$(pwd)/../../debs:/debs \
           -e TARGET_USERID=$(id -u) \
           -e TARGET_GROUPID=$(id -g) \
           dh-venv-builder:${TAG}
done