From 32c23f3e35391156fe6e2474f00b946685ead8d3 Mon Sep 17 00:00:00 2001 From: Tudor Brindus Date: Wed, 29 Apr 2020 21:15:54 -0400 Subject: [PATCH] Add Docker-based build for building SDL on Linux Example usage, to build i386 libs: docker build -t sdl2-i386 -f Dockerfile.i386 . mkdir i386 docker run -v `pwd`/compile:/entry -v `pwd`/i386:/io sdl2-i386 s/i386/amd64 to build for amd64. --- linux-build/Dockerfile.amd64 | 19 +++++++++++++++++++ linux-build/Dockerfile.i386 | 19 +++++++++++++++++++ linux-build/compile | 11 +++++++++++ linux-build/stretch-package-pins | 27 +++++++++++++++++++++++++++ 4 files changed, 76 insertions(+) create mode 100644 linux-build/Dockerfile.amd64 create mode 100644 linux-build/Dockerfile.i386 create mode 100755 linux-build/compile create mode 100644 linux-build/stretch-package-pins diff --git a/linux-build/Dockerfile.amd64 b/linux-build/Dockerfile.amd64 new file mode 100644 index 0000000..514b06f --- /dev/null +++ b/linux-build/Dockerfile.amd64 @@ -0,0 +1,19 @@ +FROM debian:jessie + +# We build on Jessie, but libwayland-dev and wayland-protocols are only in +# Stretch and later. +COPY stretch-package-pins /etc/apt/preferences.d/stretch + +# Packages are from https://hg.libsdl.org/SDL/file/default/docs/README-linux.md +RUN echo deb http://deb.debian.org/debian/ stretch main > /etc/apt/sources.list.d/stretch.list && \ + echo deb http://security.debian.org/debian-security stretch/updates main >> /etc/apt/sources.list.d/stretch.list && \ + apt-get update && \ + apt-get install -y build-essential mercurial make cmake autoconf automake \ + libtool libasound2-dev libpulse-dev libaudio-dev libx11-dev libxext-dev \ + libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev \ + libxss-dev libgl1-mesa-dev libesd0-dev libdbus-1-dev libudev-dev \ + libgles1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libibus-1.0-dev \ + fcitx-libs-dev libsamplerate0-dev libsndio-dev libwayland-dev \ + libxkbcommon-dev wayland-protocols + +ENTRYPOINT ["/entry"] diff --git a/linux-build/Dockerfile.i386 b/linux-build/Dockerfile.i386 new file mode 100644 index 0000000..625c3b4 --- /dev/null +++ b/linux-build/Dockerfile.i386 @@ -0,0 +1,19 @@ +FROM i386/debian:jessie + +# We build on Jessie, but libwayland-dev and wayland-protocols are only in +# Stretch and later. +COPY stretch-package-pins /etc/apt/preferences.d/stretch + +# Packages are from https://hg.libsdl.org/SDL/file/default/docs/README-linux.md +RUN echo deb http://deb.debian.org/debian/ stretch main > /etc/apt/sources.list.d/stretch.list && \ + echo deb http://security.debian.org/debian-security stretch/updates main >> /etc/apt/sources.list.d/stretch.list && \ + apt-get update && \ + apt-get install -y build-essential mercurial make cmake autoconf automake \ + libtool libasound2-dev libpulse-dev libaudio-dev libx11-dev libxext-dev \ + libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev \ + libxss-dev libgl1-mesa-dev libesd0-dev libdbus-1-dev libudev-dev \ + libgles1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libibus-1.0-dev \ + fcitx-libs-dev libsamplerate0-dev libsndio-dev libwayland-dev \ + libxkbcommon-dev wayland-protocols + +ENTRYPOINT ["/entry"] diff --git a/linux-build/compile b/linux-build/compile new file mode 100755 index 0000000..5aeb4b8 --- /dev/null +++ b/linux-build/compile @@ -0,0 +1,11 @@ +#!/bin/bash + +set -euf -o pipefail + +hg clone https://hg.libsdl.org/SDL SDL +cd SDL +mkdir build +cd build +../configure --prefix=/io +make -j$(nproc) +make install diff --git a/linux-build/stretch-package-pins b/linux-build/stretch-package-pins new file mode 100644 index 0000000..1700f2a --- /dev/null +++ b/linux-build/stretch-package-pins @@ -0,0 +1,27 @@ +Package: * +Pin: release n=stretch +Pin-Priority: 50 + +Package: libwayland-dev +Pin: release n=stretch +Pin-Priority: 800 + +Package: libwayland-bin +Pin: release n=stretch +Pin-Priority: 800 + +Package: libwayland-client0 +Pin: release n=stretch +Pin-Priority: 800 + +Package: libwayland-cursor0 +Pin: release n=stretch +Pin-Priority: 800 + +Package: libwayland-server0 +Pin: release n=stretch +Pin-Priority: 800 + +Package: wayland-protocols +Pin: release n=stretch +Pin-Priority: 800