subsurface/scripts/docker/mxe-build-container/Dockerfile
Michael Keller c1bfded4a7 CICD: Add GitHub Action to build the Windows (MXE) Builder Docker Image.
Add a GitHub action that builds the docker image to run builds for the
Windows (MXE) version of Subsurface.
Also update the MXE image Dockerfile to the latest version of MXE, and
add a patch to use a current version of mdbtools.
Configure GitHub actions that do not build docker images to not trigger
on changes to the contents of `scripts/docker/`.

Signed-off-by: Michael Keller <github@ike.ch>
2024-01-20 21:30:12 -08:00

94 lines
1.9 KiB
Docker

# Build the image using the --build-arg option, e.g.:
# docker build -t boret/myimage:0.1 --build-arg=mxe_sha=123ABC456 .
FROM ubuntu:22.04 as base
# update and set up the packages we need for the build
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y \
autoconf \
automake \
autopoint \
bash \
binutils \
bzip2 \
ca-certificates \
g++ \
g++-multilib \
gettext \
git \
intltool \
libltdl-dev \
libssl-dev \
libtool \
libtool-bin \
make \
openssl \
p7zip-full \
patch \
perl \
pkg-config \
sed \
unzip \
wget \
lzip && \
apt-get clean
FROM base as build
# set up the packages we need additionally for this cross build
RUN apt-get install -y \
bison \
flex \
gperf \
libc6-dev-i386 \
libgdk-pixbuf2.0-dev \
libxml-parser-perl \
python3 \
python3-mako \
python-is-python3 \
ruby \
xz-utils \
scons
# very often master is broken, so we pass in a known good SHA
ARG mxe_sha=master
ENV _ver=${mxe_sha}
WORKDIR /win
# checkout MXE at the right version
RUN git clone https://github.com/mxe/mxe && \
cd mxe && \
git checkout ${_ver}
WORKDIR /win/mxe
# Move the settings into place to build everything that we need
ADD settings.mk .
# Patch the qtconnectivity build to explicilty enable native-win32-bluetooth and ensure another
# backend is not picked
ADD qtconnectivity-1.patch src/
ADD mdbtools_version.patch .
RUN patch -p1 < mdbtools_version.patch 2>&1 | tee mxe-patch.log
# separate download from build so that we can redo the build
RUN make -j download 2>&1 | tee mxe-build.log
RUN make -j 2>&1 | tee -a mxe-build.log
# for some reason smtk2ssrf needs a static build of mdbtools
RUN make MXE_TARGETS=x86_64-w64-mingw32.static glib mdbtools -j 2>&1 | tee -a mxe-build.log
RUN rm -rf pkg log docs
FROM base as final
WORKDIR /win
COPY --from=build /win/mxe mxe