mirror of
https://github.com/yuzu-emu/build-environments
synced 2024-11-22 15:54:04 +00:00
c998768fc2
Appears to not have solvable dependencies at the moment, causing the container to not build. Additionally, we don't ship yuzu with the Web Engine support compiled anyway.
163 lines
5.6 KiB
Docker
163 lines
5.6 KiB
Docker
FROM ubuntu:20.04
|
|
LABEL maintainer="yuzu"
|
|
|
|
ENV BOOST_VER=1_81_0
|
|
ENV CLANG_VER=14
|
|
ENV CMAKE_VER=3.22.6
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV GCC_VER=12.2.0
|
|
ENV GNU_BIN_VER=2.40
|
|
ENV QT_PKG_VER=515
|
|
ENV QT_VER=5.15.2
|
|
ENV UBUNTU_VER=focal
|
|
|
|
# Create a user account yuzu (UID 1027) that the container will run as
|
|
RUN useradd -m -u 1027 -s /bin/bash yuzu && \
|
|
apt-get update && \
|
|
apt-get full-upgrade -y && \
|
|
apt-get install --no-install-recommends -y \
|
|
apt-utils \
|
|
ca-certificates \
|
|
gnupg \
|
|
software-properties-common \
|
|
unzip \
|
|
wget \
|
|
xz-utils \
|
|
# yuzu build requirements
|
|
build-essential \
|
|
ccache \
|
|
git \
|
|
libgl-dev \
|
|
liblz4-dev \
|
|
libpulse-dev \
|
|
libudev-dev \
|
|
libssl-dev \
|
|
libtool \
|
|
libwayland-dev \
|
|
ninja-build \
|
|
pkg-config \
|
|
zlib1g-dev \
|
|
# AppImage support
|
|
appstream \
|
|
desktop-file-utils \
|
|
file \
|
|
libfile-mimeinfo-perl \
|
|
patchelf \
|
|
zsync \
|
|
# FFmpeg build requirements
|
|
libdrm-dev \
|
|
libva-dev \
|
|
libx11-dev \
|
|
libxext-dev \
|
|
nasm \
|
|
# libusb build requirements
|
|
autoconf \
|
|
automake \
|
|
libtool \
|
|
libudev-dev \
|
|
# apt.llvm.org Clang requirements
|
|
gpg-agent \
|
|
# vcpkg requirements
|
|
curl \
|
|
zip \
|
|
&& \
|
|
# Install updated versions of glslang, git, and Qt from launchpad repositories
|
|
add-apt-repository -y ppa:beineri/opt-qt-${QT_VER}-${UBUNTU_VER} && \
|
|
add-apt-repository -y ppa:savoury1/graphics && \
|
|
add-apt-repository -y ppa:savoury1/multimedia && \
|
|
add-apt-repository -y ppa:savoury1/ffmpeg4 && \
|
|
add-apt-repository -y ppa:git-core/ppa && \
|
|
apt-get update -y && \
|
|
apt-get install --no-install-recommends -y \
|
|
git \
|
|
glslang-dev \
|
|
glslang-tools \
|
|
libhidapi-dev \
|
|
qt${QT_PKG_VER}base \
|
|
qt${QT_PKG_VER}tools \
|
|
qt${QT_PKG_VER}wayland \
|
|
qt${QT_PKG_VER}multimedia \
|
|
qt${QT_PKG_VER}x11extras && \
|
|
# Install Clang from apt.llvm.org
|
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \
|
|
echo "deb http://apt.llvm.org/${UBUNTU_VER}/ llvm-toolchain-${UBUNTU_VER}-${CLANG_VER} main" >> /etc/apt/sources.list && \
|
|
apt-get update -y && \
|
|
apt-get install --no-install-recommends -y \
|
|
clang-${CLANG_VER} \
|
|
lld-${CLANG_VER} \
|
|
llvm-${CLANG_VER} \
|
|
llvm-${CLANG_VER}-linker-tools && \
|
|
ln -s $(which clang-${CLANG_VER}) /usr/bin/clang && \
|
|
ln -s $(which clang++-${CLANG_VER}) /usr/bin/clang++ && \
|
|
dpkg-reconfigure ccache && \
|
|
apt-get clean autoclean && \
|
|
apt-get autoremove --yes && \
|
|
rm -rf /var/lib/apt /var/lib/dpkg /var/lib/cache /var/lib/log
|
|
|
|
# Install CMake from upstream
|
|
RUN cd /tmp && \
|
|
wget --no-verbose https://github.com/Kitware/CMake/releases/download/v${CMAKE_VER}/cmake-${CMAKE_VER}-linux-x86_64.tar.gz && \
|
|
tar xvf cmake-${CMAKE_VER}-linux-x86_64.tar.gz && \
|
|
cp -rv cmake-${CMAKE_VER}-linux-x86_64/* /usr && \
|
|
rm -rf cmake-*
|
|
|
|
# Install Boost from yuzu-emu/ext-linux-bin
|
|
RUN cd /tmp && \
|
|
wget --no-verbose https://github.com/yuzu-emu/ext-linux-bin/raw/main/boost/boost-${BOOST_VER}.tar.xz && \
|
|
tar xvf boost-${BOOST_VER}.tar.xz && \
|
|
chown -R root:root boost-${BOOST_VER}/ && \
|
|
cp -rv boost-${BOOST_VER}/usr / && \
|
|
rm -rf boost*
|
|
|
|
# Install GCC from yuzu-emu/ext-linux-bin
|
|
RUN cd /tmp && \
|
|
wget --no-verbose \
|
|
https://github.com/yuzu-emu/ext-linux-bin/raw/main/gcc/gcc-${GCC_VER}-ubuntu.tar.xz.aa \
|
|
https://github.com/yuzu-emu/ext-linux-bin/raw/main/gcc/gcc-${GCC_VER}-ubuntu.tar.xz.ab \
|
|
https://github.com/yuzu-emu/ext-linux-bin/raw/main/gcc/gcc-${GCC_VER}-ubuntu.tar.xz.ac \
|
|
https://github.com/yuzu-emu/ext-linux-bin/raw/main/gcc/gcc-${GCC_VER}-ubuntu.tar.xz.ad && \
|
|
cat gcc-${GCC_VER}-ubuntu.tar.xz.* | tar xJ && \
|
|
cp -rv gcc-${GCC_VER}/usr / && \
|
|
rm -rf /tmp/gcc* && \
|
|
# Use updated libstdc++ and libgcc_s on the container from GCC 11
|
|
rm -v /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /lib/x86_64-linux-gnu/libgcc_s.so.1 && \
|
|
ln -sv /usr/local/lib64/libstdc++.so.6.0.30 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 && \
|
|
ln -sv /usr/local/lib64/libgcc_s.so.1 /lib/x86_64-linux-gnu/libgcc_s.so.1 && \
|
|
# Help Clang find the updated GCC C++ version
|
|
ln -sv /usr/local/include/c++/${GCC_VER}/ /usr/include/c++/${GCC_VER} && \
|
|
ln -sv /usr/local/lib/gcc/x86_64-pc-linux-gnu/${GCC_VER} /usr/lib/gcc/x86_64-linux-gnu/${GCC_VER} && \
|
|
cp -rv /usr/local/include/c++/${GCC_VER}/x86_64-pc-linux-gnu/* /usr/local/include/c++/${GCC_VER}/
|
|
|
|
# Install GNU binutils from yuzu-emu/ext-linux-bin
|
|
RUN cd /tmp && \
|
|
wget --no-verbose \
|
|
https://github.com/yuzu-emu/ext-linux-bin/raw/main/binutils/binutils-${GNU_BIN_VER}-${UBUNTU_VER}.tar.xz && \
|
|
tar xf binutils-${GNU_BIN_VER}-${UBUNTU_VER}.tar.xz && \
|
|
cp -rv binutils-${GNU_BIN_VER}-${UBUNTU_VER}/usr / && \
|
|
rm -rf /tmp/binutils*
|
|
|
|
# Setup paths for Qt binaries
|
|
ENV LD_LIBRARY_PATH=/opt/qt${QT_PKG_VER}/lib:${LD_LIBRARY_PATH}
|
|
ENV PATH=/opt/qt${QT_PKG_VER}/bin:${PATH}
|
|
|
|
# Fix GCC 11 <-> Qt 5.15 issue
|
|
COPY qtconcurrentthreadengine.patch /opt/qt515/qtconcurrentthreadengine.patch
|
|
RUN patch /opt/qt515/include/QtConcurrent/qtconcurrentthreadengine.h /opt/qt515/qtconcurrentthreadengine.patch && \
|
|
rm /opt/qt515/qtconcurrentthreadengine.patch
|
|
|
|
# Tell CMake to use vcpkg when looking for packages
|
|
ENV VCPKG_TOOLCHAIN_FILE=/home/yuzu/vcpkg/scripts/buildsystems/vcpkg.cmake
|
|
|
|
USER 1027
|
|
# Install vcpkg and required dependencies for yuzu
|
|
RUN cd /home/yuzu &&\
|
|
git clone --depth 1 https://github.com/Microsoft/vcpkg.git &&\
|
|
cd vcpkg &&\
|
|
./bootstrap-vcpkg.sh &&\
|
|
./vcpkg install \
|
|
catch2 \
|
|
fmt \
|
|
lz4 \
|
|
nlohmann-json \
|
|
zlib \
|
|
zstd
|