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

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: