adapted from this
general changes
- versions pinned
- Debian base image uses more specific version
- ℹ️ libTAS local build (checks out repository at specific commit)
- ℹ️ ScummVM local build (checks out repository at specific commit)
ℹ️ this uses the most recent commits (at a specific point in time) from libTAS and ScummVM
- be aware that if your end goal is recording run(s) for submission, you should probably Use Stable Versioned Releases for that instead
dependency version changes
debian:10
→debian:12.11
qt5-default
→qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
libavutil56:i386
→libavutil57:i386
libswresample3:i386
→libswresample4:i386
dependency additions
libxcb-xinput-dev
libcap-dev
additional dev/build niceties
wget
gdb
FROM debian:12.11
#============================#
# set up non-root user
ARG U_NAME="user"
ARG U_ID="1000"
RUN adduser --disabled-password --gecos '' --uid ${U_ID} ${U_NAME}
WORKDIR /home/${U_NAME}
#============================#
#============================#
# build + install libtas
USER root
RUN \
dpkg --add-architecture i386 && \
apt-get update && apt-get install -y \
build-essential automake pkg-config libx11-dev libx11-xcb-dev qtbase5-dev libsdl2-dev libxcb1-dev libxcb-keysyms1-dev libxcb-xkb-dev libxcb-cursor-dev libxcb-randr0-dev libudev-dev libasound2-dev libavutil-dev libswresample-dev ffmpeg liblua5.4-dev \
qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools \
libfreetype6-dev libfontconfig1-dev \
fonts-liberation \
g++-multilib \
libx11-6:i386 libx11-dev:i386 libx11-xcb1:i386 libx11-xcb-dev:i386 libasound2:i386 libasound2-dev:i386 libavutil57:i386 libswresample4:i386 libfreetype6:i386 libfreetype6-dev:i386 libfontconfig1:i386 libfontconfig1-dev:i386 \
git \
libxcb-xinput-dev libcap-dev \
gdb \
wget \
&& rm -rf /var/lib/apt/lists/*
USER $U_NAME
RUN git clone https://github.com/clementgallet/libTAS.git
RUN cd libTAS && \
git checkout c012a8dab0c164625ce2e65a9ee19854c92da285 && \
./build.sh --with-i386
USER root
RUN cd libTAS/build && make install
#============================#
#============================#
# build + install scummvm
USER root
RUN \
apt-get update && apt-get install -y \
g++ make git nasm libsdl2-dev libsdl2-net-dev liba52-dev libjpeg62-turbo-dev libmpeg2-4-dev libogg-dev libvorbis-dev libflac-dev libmad0-dev libpng-dev libtheora-dev libfaad-dev libfluidsynth-dev libfreetype6-dev zlib1g-dev libfribidi-dev libgif-dev libcurl4-openssl-dev libgtk-3-dev libspeechd-dev libsndio-dev libvpx-dev libmikmod-dev libmpcdec-dev \
&& rm -rf /var/lib/apt/lists/*
USER ${U_NAME}
RUN git clone https://github.com/scummvm/scummvm.git
RUN cd scummvm && \
git checkout d44f751763cff966ff81eab12867962e6678de47 && \
./configure && \
make clean && \
make -j4
#============================#
#============================#
USER root
# for GUI stuff (via host)
RUN usermod -a -G audio ${U_NAME}
RUN usermod -a -G video ${U_NAME}
RUN groupadd -g 106 render && usermod -a -G render ${U_NAME}
#============================#
USER ${U_NAME}
for passing audio/video from host: