diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2020-10-28 14:19:45 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-10-30 12:24:36 -0700 |
commit | e71e715cd347d3dc1e503695d7a747f175123e9e (patch) | |
tree | a32eb900ce59dd97efc4a2c9095ba7fc5c06489d /scripts/docker/mxe-build-container/Dockerfile | |
parent | a0cdd38ff65eb01b9528ef68cc740acc95be7d88 (diff) | |
download | subsurface-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/Dockerfile | 74 |
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/* |