12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- # A dockerfile which builds a docker image for building a debian package for
- # synapse. The distro to build for is passed as a docker build var.
- #
- # The default entrypoint expects the synapse source to be mounted as a
- # (read-only) volume at /synapse/source, and an output directory at /debs.
- #
- # A pair of environment variables (TARGET_USERID and TARGET_GROUPID) can be
- # passed to the docker container; if these are set, the build script will chown
- # the build products accordingly, to avoid ending up with things owned by root
- # in the host filesystem.
- # Get the distro we want to pull from as a dynamic build variable
- ARG distro=""
- ###
- ### Stage 0: build a dh-virtualenv
- ###
- FROM ${distro} as builder
- RUN apt-get update -qq -o Acquire::Languages=none
- RUN env DEBIAN_FRONTEND=noninteractive apt-get install \
- -yqq --no-install-recommends \
- build-essential \
- ca-certificates \
- devscripts \
- equivs \
- wget
- # fetch and unpack the package
- RUN mkdir /dh-virtualenv
- RUN wget -q -O /dh-virtualenv.tar.gz https://github.com/spotify/dh-virtualenv/archive/ac6e1b1.tar.gz
- RUN tar -xv --strip-components=1 -C /dh-virtualenv -f /dh-virtualenv.tar.gz
- # install its build deps. We do another apt-cache-update here, because we might
- # be using a stale cache from docker build.
- RUN apt-get update -qq -o Acquire::Languages=none \
- && cd /dh-virtualenv \
- && env DEBIAN_FRONTEND=noninteractive mk-build-deps -ri -t "apt-get -y --no-install-recommends"
- # build it
- RUN cd /dh-virtualenv && dpkg-buildpackage -us -uc -b
- ###
- ### Stage 1
- ###
- FROM ${distro}
- # Get the distro we want to pull from as a dynamic build variable
- # (We need to define it in each build stage)
- ARG distro=""
- ENV distro ${distro}
- # Python < 3.7 assumes LANG="C" means ASCII-only and throws on printing unicode
- # http://bugs.python.org/issue19846
- ENV LANG C.UTF-8
- # Install the build dependencies
- #
- # NB: keep this list in sync with the list of build-deps in debian/control
- # TODO: it would be nice to do that automatically.
- # TODO: Remove the dh-systemd stanza after dropping support for Ubuntu xenial
- # it's a transitional package on all other, more recent releases
- RUN apt-get update -qq -o Acquire::Languages=none \
- && env DEBIAN_FRONTEND=noninteractive apt-get install \
- -yqq --no-install-recommends -o Dpkg::Options::=--force-unsafe-io \
- build-essential \
- debhelper \
- devscripts \
- libsystemd-dev \
- lsb-release \
- pkg-config \
- python3-dev \
- python3-pip \
- python3-setuptools \
- python3-venv \
- sqlite3 \
- libpq-dev \
- xmlsec1 \
- && ( env DEBIAN_FRONTEND=noninteractive apt-get install \
- -yqq --no-install-recommends -o Dpkg::Options::=--force-unsafe-io \
- dh-systemd || true )
- COPY --from=builder /dh-virtualenv_1.2~dev-1_all.deb /
- # install dhvirtualenv. Update the apt cache again first, in case we got a
- # cached cache from docker the first time.
- RUN apt-get update -qq -o Acquire::Languages=none \
- && apt-get install -yq /dh-virtualenv_1.2~dev-1_all.deb
- WORKDIR /synapse/source
- ENTRYPOINT ["bash","/synapse/source/docker/build_debian.sh"]
|