aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/docker/mxe-build-container/Dockerfile
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2020-10-28 14:19:45 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-10-30 12:24:36 -0700
commite71e715cd347d3dc1e503695d7a747f175123e9e (patch)
treea32eb900ce59dd97efc4a2c9095ba7fc5c06489d /scripts/docker/mxe-build-container/Dockerfile
parenta0cdd38ff65eb01b9528ef68cc740acc95be7d88 (diff)
downloadsubsurface-e71e715cd347d3dc1e503695d7a747f175123e9e.tar.gz
build-system: Docker build for 64bit MXE
We previously tried to build the MXE Docker container on GitHub using an Action, but that really didn't work well and was a lot more trouble than it was worth. So this goes back to an offline build mechanism where I simply create an updated Docker image when needed and push that to Docker Hub. But this nearly hides the most interesting change here - we are finally switching to using 64bit binaries on Windows. It's 2020 and fewer than 1% of our users use 32bit Windows machines. We'll need to expand this to be able to have both a 32bit and a 64bit version of Subsurface for Windows. But for now, this solves the problem for 99% of our users. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'scripts/docker/mxe-build-container/Dockerfile')
-rw-r--r--scripts/docker/mxe-build-container/Dockerfile74
1 files changed, 74 insertions, 0 deletions
diff --git a/scripts/docker/mxe-build-container/Dockerfile b/scripts/docker/mxe-build-container/Dockerfile
new file mode 100644
index 000000000..08bdd619c
--- /dev/null
+++ b/scripts/docker/mxe-build-container/Dockerfile
@@ -0,0 +1,74 @@
+# Build the image using the --build-arg option, e.g.:
+# docker build -t boret/myimage:0.1 --build-arg=mxe_sha=123ABC456 .
+#
+
+# Start from Ubuntu
+From ubuntu:20.04
+
+# very often master is broken, so we pass in a known good SHA
+ARG mxe_sha=master
+ENV _ver=${mxe_sha}
+
+# update and set up the packages we need for this cross build
+RUN apt-get update && apt-get upgrade -y && \
+DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
+ autoconf \
+ automake \
+ autopoint \
+ bash \
+ binutils \
+ bison \
+ bzip2 \
+ ca-certificates \
+ flex \
+ g++ \
+ g++-multilib \
+ gettext \
+ git \
+ gperf \
+ intltool \
+ libc6-dev-i386 \
+ libgdk-pixbuf2.0-dev \
+ libltdl-dev \
+ libssl-dev \
+ libtool \
+ libtool-bin \
+ libxml-parser-perl \
+ make \
+ openssl \
+ p7zip-full \
+ patch \
+ perl \
+ pkg-config \
+ python \
+ ruby \
+ sed \
+ unzip \
+ wget \
+ xz-utils \
+ lzip \
+ scons
+
+# checkout MXE at the right version
+RUN mkdir -p /win
+RUN cd /win ; git clone git://github.com/mxe/mxe ; \
+ cd mxe ; \
+ git checkout ${_ver} ;
+
+# Patch the qtconnectivity build to explicilty enable native-win32-bluetooth and ensure another
+# backend is not picked
+ADD qtconnectivity-1.patch /win/mxe/src/qtconnectivity-1.patch
+
+# Move the settings into place to build everything that we need
+# separate download from build so that we can redo the build
+ADD settings.mk /win/mxe/settings.mk
+RUN cd /win/mxe ; \
+ make -j 6 download 2>&1 | tee mxe-build.log
+RUN cd /win/mxe ; \
+ make -j 6 2>&1 | tee -a mxe-build.log ;
+
+# for some reason smtk2ssrf needs a static build of mdbtools
+RUN cd /win/mxe ; \
+ make MXE_TARGETS=x86_64-w64-mingw32.static glib mdbtools -j 6 2>&1 | tee -a mxe-build.log ;
+
+RUN apt-get remove -y bison flex gperf libc6-dev-i386 libgdk-pixbuf2.0-dev libxml-parser-perl python ruby xz-utils scons && rm -rf /var/lib/apt/lists/*