2023-03-23 22:53:58 +01:00
|
|
|
FROM ubuntu:20.04
|
2021-07-14 07:23:48 +02:00
|
|
|
LABEL maintainer="yuzu"
|
linux-fresh: Downgrade to Bionic Beaver
This is in preparation to have a legal AppImage when Ubuntu 16.04 is
deprecated in April 2021. As stated in [AppImage's
documentation](https://docs.appimage.org/packaging-guide/distribution.html#appimagehub),
to distribute yuzu on AppImageHub, an AppImage needs to compatible with
the oldest still supported release of Ubuntu, which will be 18.04 in
April.
Beyond making AppImages, this brings a number of other changes:
- The needed CMake, GCC, and Qt versions are now variables at the top of
the Dockerfile.
- The dependencies list is sorted lexicographically.
- Added package `file`, required for the Qt linuxdeploy plugin, thus
superseding #23.
- Added package `software-properties-common`, required to use
`add-apt-repository`.
- Added package `python3-setuptools`, a dependency of `python3-pip` that
somehow isn't installed with it by default.
- Removed package `python` as yuzu no longer uses Unicorn, thus Python 2
was no longer required.
- Moved installing GCC, Qt, FFmpeg, and SDL2 from the main Ubuntu
repositories to updated launchpad repositories.
- Removed packages `cmake` and `glslang-tools`, instead opting to
download and install them from their upstream repositories.
- In the case of `glslang-tools`, Ubuntu does not have any equivalent
package for Bionic.
This does not upgrade any package versions. This only brings Ubuntu
18.04 roughly to parity with the current 20.04 container. Once an
AppImage is in action, we can upgrade the GCC and Qt versions to our
heart's content (up to GCC 11 and Qt 5.15.2). Until then, it should be
said **Mainline builds are not compatible with Ubuntu versions below
20.04 despite using 18.04 to build yuzu**. We need an AppImage to make
yuzu compatible with older distro releases, and we need an AppImage to
make yuzu compatible with current releases if we upgrade Qt and/or GCC.
Another note is that the Qt version here is being downgraded from 5.12.8
to 5.12.6. The Qt launchpad PPA used here did not release usable
`qt512webengine` packages for 5.12.8 nor 5.12.7, and since upgrading to
5.12.10 would break compatibility with wild Ubuntu 20.04 installs, a
downgrade is necessary. Hopefully this is a temporary change during our
transition to 5.15.2.
Massive thank you to @AniLeo from RPCS3 for telling me about updated GCC
and Qt launchpad PPAs.
2020-12-27 09:29:09 +01:00
|
|
|
|
2023-03-25 18:30:21 +01:00
|
|
|
ENV BOOST_VER=1_79_0
|
2022-05-19 01:21:51 +02:00
|
|
|
ENV CLANG_VER=14
|
2022-11-29 04:19:09 +01:00
|
|
|
ENV CMAKE_VER=3.22.6
|
2021-02-18 07:22:58 +01:00
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
2023-03-23 22:53:58 +01:00
|
|
|
ENV GCC_VER=12.2.0
|
|
|
|
ENV GNU_BIN_VER=2.40
|
2021-10-01 01:40:04 +02:00
|
|
|
ENV QT_PKG_VER=515
|
|
|
|
ENV QT_VER=5.15.2
|
2023-03-23 22:53:58 +01:00
|
|
|
ENV UBUNTU_VER=focal
|
linux-fresh: Downgrade to Bionic Beaver
This is in preparation to have a legal AppImage when Ubuntu 16.04 is
deprecated in April 2021. As stated in [AppImage's
documentation](https://docs.appimage.org/packaging-guide/distribution.html#appimagehub),
to distribute yuzu on AppImageHub, an AppImage needs to compatible with
the oldest still supported release of Ubuntu, which will be 18.04 in
April.
Beyond making AppImages, this brings a number of other changes:
- The needed CMake, GCC, and Qt versions are now variables at the top of
the Dockerfile.
- The dependencies list is sorted lexicographically.
- Added package `file`, required for the Qt linuxdeploy plugin, thus
superseding #23.
- Added package `software-properties-common`, required to use
`add-apt-repository`.
- Added package `python3-setuptools`, a dependency of `python3-pip` that
somehow isn't installed with it by default.
- Removed package `python` as yuzu no longer uses Unicorn, thus Python 2
was no longer required.
- Moved installing GCC, Qt, FFmpeg, and SDL2 from the main Ubuntu
repositories to updated launchpad repositories.
- Removed packages `cmake` and `glslang-tools`, instead opting to
download and install them from their upstream repositories.
- In the case of `glslang-tools`, Ubuntu does not have any equivalent
package for Bionic.
This does not upgrade any package versions. This only brings Ubuntu
18.04 roughly to parity with the current 20.04 container. Once an
AppImage is in action, we can upgrade the GCC and Qt versions to our
heart's content (up to GCC 11 and Qt 5.15.2). Until then, it should be
said **Mainline builds are not compatible with Ubuntu versions below
20.04 despite using 18.04 to build yuzu**. We need an AppImage to make
yuzu compatible with older distro releases, and we need an AppImage to
make yuzu compatible with current releases if we upgrade Qt and/or GCC.
Another note is that the Qt version here is being downgraded from 5.12.8
to 5.12.6. The Qt launchpad PPA used here did not release usable
`qt512webengine` packages for 5.12.8 nor 5.12.7, and since upgrading to
5.12.10 would break compatibility with wild Ubuntu 20.04 installs, a
downgrade is necessary. Hopefully this is a temporary change during our
transition to 5.15.2.
Massive thank you to @AniLeo from RPCS3 for telling me about updated GCC
and Qt launchpad PPAs.
2020-12-27 09:29:09 +01:00
|
|
|
|
2020-05-08 04:22:08 +02:00
|
|
|
# Create a user account yuzu (UID 1027) that the container will run as
|
|
|
|
RUN useradd -m -u 1027 -s /bin/bash yuzu && \
|
2023-03-23 22:53:58 +01:00
|
|
|
apt-get update && \
|
|
|
|
apt-get full-upgrade -y && \
|
2021-02-18 07:22:58 +01:00
|
|
|
apt-get install --no-install-recommends -y \
|
2023-03-23 22:53:58 +01:00
|
|
|
apt-utils \
|
|
|
|
ca-certificates \
|
|
|
|
gnupg \
|
|
|
|
software-properties-common \
|
|
|
|
unzip \
|
|
|
|
wget \
|
|
|
|
xz-utils \
|
|
|
|
# yuzu build requirements
|
2020-04-25 02:12:02 +02:00
|
|
|
build-essential \
|
linux-fresh: Downgrade to Bionic Beaver
This is in preparation to have a legal AppImage when Ubuntu 16.04 is
deprecated in April 2021. As stated in [AppImage's
documentation](https://docs.appimage.org/packaging-guide/distribution.html#appimagehub),
to distribute yuzu on AppImageHub, an AppImage needs to compatible with
the oldest still supported release of Ubuntu, which will be 18.04 in
April.
Beyond making AppImages, this brings a number of other changes:
- The needed CMake, GCC, and Qt versions are now variables at the top of
the Dockerfile.
- The dependencies list is sorted lexicographically.
- Added package `file`, required for the Qt linuxdeploy plugin, thus
superseding #23.
- Added package `software-properties-common`, required to use
`add-apt-repository`.
- Added package `python3-setuptools`, a dependency of `python3-pip` that
somehow isn't installed with it by default.
- Removed package `python` as yuzu no longer uses Unicorn, thus Python 2
was no longer required.
- Moved installing GCC, Qt, FFmpeg, and SDL2 from the main Ubuntu
repositories to updated launchpad repositories.
- Removed packages `cmake` and `glslang-tools`, instead opting to
download and install them from their upstream repositories.
- In the case of `glslang-tools`, Ubuntu does not have any equivalent
package for Bionic.
This does not upgrade any package versions. This only brings Ubuntu
18.04 roughly to parity with the current 20.04 container. Once an
AppImage is in action, we can upgrade the GCC and Qt versions to our
heart's content (up to GCC 11 and Qt 5.15.2). Until then, it should be
said **Mainline builds are not compatible with Ubuntu versions below
20.04 despite using 18.04 to build yuzu**. We need an AppImage to make
yuzu compatible with older distro releases, and we need an AppImage to
make yuzu compatible with current releases if we upgrade Qt and/or GCC.
Another note is that the Qt version here is being downgraded from 5.12.8
to 5.12.6. The Qt launchpad PPA used here did not release usable
`qt512webengine` packages for 5.12.8 nor 5.12.7, and since upgrading to
5.12.10 would break compatibility with wild Ubuntu 20.04 installs, a
downgrade is necessary. Hopefully this is a temporary change during our
transition to 5.15.2.
Massive thank you to @AniLeo from RPCS3 for telling me about updated GCC
and Qt launchpad PPAs.
2020-12-27 09:29:09 +01:00
|
|
|
ccache \
|
2023-03-23 22:53:58 +01:00
|
|
|
git \
|
|
|
|
libgl-dev \
|
|
|
|
liblz4-dev \
|
2022-05-20 05:37:16 +02:00
|
|
|
libpulse-dev \
|
2023-03-23 22:53:58 +01:00
|
|
|
libudev-dev \
|
2020-04-25 02:12:02 +02:00
|
|
|
libssl-dev \
|
2021-05-10 05:43:06 +02:00
|
|
|
libtool \
|
2022-05-19 02:09:27 +02:00
|
|
|
libwayland-dev \
|
linux-fresh: Downgrade to Bionic Beaver
This is in preparation to have a legal AppImage when Ubuntu 16.04 is
deprecated in April 2021. As stated in [AppImage's
documentation](https://docs.appimage.org/packaging-guide/distribution.html#appimagehub),
to distribute yuzu on AppImageHub, an AppImage needs to compatible with
the oldest still supported release of Ubuntu, which will be 18.04 in
April.
Beyond making AppImages, this brings a number of other changes:
- The needed CMake, GCC, and Qt versions are now variables at the top of
the Dockerfile.
- The dependencies list is sorted lexicographically.
- Added package `file`, required for the Qt linuxdeploy plugin, thus
superseding #23.
- Added package `software-properties-common`, required to use
`add-apt-repository`.
- Added package `python3-setuptools`, a dependency of `python3-pip` that
somehow isn't installed with it by default.
- Removed package `python` as yuzu no longer uses Unicorn, thus Python 2
was no longer required.
- Moved installing GCC, Qt, FFmpeg, and SDL2 from the main Ubuntu
repositories to updated launchpad repositories.
- Removed packages `cmake` and `glslang-tools`, instead opting to
download and install them from their upstream repositories.
- In the case of `glslang-tools`, Ubuntu does not have any equivalent
package for Bionic.
This does not upgrade any package versions. This only brings Ubuntu
18.04 roughly to parity with the current 20.04 container. Once an
AppImage is in action, we can upgrade the GCC and Qt versions to our
heart's content (up to GCC 11 and Qt 5.15.2). Until then, it should be
said **Mainline builds are not compatible with Ubuntu versions below
20.04 despite using 18.04 to build yuzu**. We need an AppImage to make
yuzu compatible with older distro releases, and we need an AppImage to
make yuzu compatible with current releases if we upgrade Qt and/or GCC.
Another note is that the Qt version here is being downgraded from 5.12.8
to 5.12.6. The Qt launchpad PPA used here did not release usable
`qt512webengine` packages for 5.12.8 nor 5.12.7, and since upgrading to
5.12.10 would break compatibility with wild Ubuntu 20.04 installs, a
downgrade is necessary. Hopefully this is a temporary change during our
transition to 5.15.2.
Massive thank you to @AniLeo from RPCS3 for telling me about updated GCC
and Qt launchpad PPAs.
2020-12-27 09:29:09 +01:00
|
|
|
ninja-build \
|
2022-05-20 05:37:16 +02:00
|
|
|
pkg-config \
|
2021-01-06 18:40:09 +01:00
|
|
|
zlib1g-dev \
|
2023-03-23 22:53:58 +01:00
|
|
|
# AppImage support
|
|
|
|
appstream \
|
|
|
|
desktop-file-utils \
|
|
|
|
file \
|
|
|
|
libfile-mimeinfo-perl \
|
|
|
|
patchelf \
|
2022-07-22 06:27:30 +02:00
|
|
|
zsync \
|
2023-03-23 22:53:58 +01:00
|
|
|
# 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 \
|
2022-07-22 06:27:30 +02:00
|
|
|
# vcpkg requirements
|
|
|
|
curl \
|
|
|
|
zip \
|
|
|
|
&& \
|
2022-05-26 05:04:42 +02:00
|
|
|
# Install updated versions of glslang, git, and Qt from launchpad repositories
|
2021-10-01 01:40:04 +02:00
|
|
|
add-apt-repository -y ppa:beineri/opt-qt-${QT_VER}-${UBUNTU_VER} && \
|
2022-05-19 02:40:11 +02:00
|
|
|
add-apt-repository -y ppa:savoury1/graphics && \
|
2021-12-23 12:00:26 +01:00
|
|
|
add-apt-repository -y ppa:savoury1/multimedia && \
|
2022-05-19 02:40:11 +02:00
|
|
|
add-apt-repository -y ppa:savoury1/ffmpeg4 && \
|
2021-12-23 08:54:09 +01:00
|
|
|
add-apt-repository -y ppa:git-core/ppa && \
|
linux-fresh: Downgrade to Bionic Beaver
This is in preparation to have a legal AppImage when Ubuntu 16.04 is
deprecated in April 2021. As stated in [AppImage's
documentation](https://docs.appimage.org/packaging-guide/distribution.html#appimagehub),
to distribute yuzu on AppImageHub, an AppImage needs to compatible with
the oldest still supported release of Ubuntu, which will be 18.04 in
April.
Beyond making AppImages, this brings a number of other changes:
- The needed CMake, GCC, and Qt versions are now variables at the top of
the Dockerfile.
- The dependencies list is sorted lexicographically.
- Added package `file`, required for the Qt linuxdeploy plugin, thus
superseding #23.
- Added package `software-properties-common`, required to use
`add-apt-repository`.
- Added package `python3-setuptools`, a dependency of `python3-pip` that
somehow isn't installed with it by default.
- Removed package `python` as yuzu no longer uses Unicorn, thus Python 2
was no longer required.
- Moved installing GCC, Qt, FFmpeg, and SDL2 from the main Ubuntu
repositories to updated launchpad repositories.
- Removed packages `cmake` and `glslang-tools`, instead opting to
download and install them from their upstream repositories.
- In the case of `glslang-tools`, Ubuntu does not have any equivalent
package for Bionic.
This does not upgrade any package versions. This only brings Ubuntu
18.04 roughly to parity with the current 20.04 container. Once an
AppImage is in action, we can upgrade the GCC and Qt versions to our
heart's content (up to GCC 11 and Qt 5.15.2). Until then, it should be
said **Mainline builds are not compatible with Ubuntu versions below
20.04 despite using 18.04 to build yuzu**. We need an AppImage to make
yuzu compatible with older distro releases, and we need an AppImage to
make yuzu compatible with current releases if we upgrade Qt and/or GCC.
Another note is that the Qt version here is being downgraded from 5.12.8
to 5.12.6. The Qt launchpad PPA used here did not release usable
`qt512webengine` packages for 5.12.8 nor 5.12.7, and since upgrading to
5.12.10 would break compatibility with wild Ubuntu 20.04 installs, a
downgrade is necessary. Hopefully this is a temporary change during our
transition to 5.15.2.
Massive thank you to @AniLeo from RPCS3 for telling me about updated GCC
and Qt launchpad PPAs.
2020-12-27 09:29:09 +01:00
|
|
|
apt-get update -y && \
|
2021-02-18 07:22:58 +01:00
|
|
|
apt-get install --no-install-recommends -y \
|
2021-12-23 08:54:09 +01:00
|
|
|
git \
|
2021-12-23 12:00:26 +01:00
|
|
|
glslang-dev \
|
2022-05-19 02:40:11 +02:00
|
|
|
glslang-tools \
|
2021-12-23 12:00:26 +01:00
|
|
|
libhidapi-dev \
|
linux-fresh: Downgrade to Bionic Beaver
This is in preparation to have a legal AppImage when Ubuntu 16.04 is
deprecated in April 2021. As stated in [AppImage's
documentation](https://docs.appimage.org/packaging-guide/distribution.html#appimagehub),
to distribute yuzu on AppImageHub, an AppImage needs to compatible with
the oldest still supported release of Ubuntu, which will be 18.04 in
April.
Beyond making AppImages, this brings a number of other changes:
- The needed CMake, GCC, and Qt versions are now variables at the top of
the Dockerfile.
- The dependencies list is sorted lexicographically.
- Added package `file`, required for the Qt linuxdeploy plugin, thus
superseding #23.
- Added package `software-properties-common`, required to use
`add-apt-repository`.
- Added package `python3-setuptools`, a dependency of `python3-pip` that
somehow isn't installed with it by default.
- Removed package `python` as yuzu no longer uses Unicorn, thus Python 2
was no longer required.
- Moved installing GCC, Qt, FFmpeg, and SDL2 from the main Ubuntu
repositories to updated launchpad repositories.
- Removed packages `cmake` and `glslang-tools`, instead opting to
download and install them from their upstream repositories.
- In the case of `glslang-tools`, Ubuntu does not have any equivalent
package for Bionic.
This does not upgrade any package versions. This only brings Ubuntu
18.04 roughly to parity with the current 20.04 container. Once an
AppImage is in action, we can upgrade the GCC and Qt versions to our
heart's content (up to GCC 11 and Qt 5.15.2). Until then, it should be
said **Mainline builds are not compatible with Ubuntu versions below
20.04 despite using 18.04 to build yuzu**. We need an AppImage to make
yuzu compatible with older distro releases, and we need an AppImage to
make yuzu compatible with current releases if we upgrade Qt and/or GCC.
Another note is that the Qt version here is being downgraded from 5.12.8
to 5.12.6. The Qt launchpad PPA used here did not release usable
`qt512webengine` packages for 5.12.8 nor 5.12.7, and since upgrading to
5.12.10 would break compatibility with wild Ubuntu 20.04 installs, a
downgrade is necessary. Hopefully this is a temporary change during our
transition to 5.15.2.
Massive thank you to @AniLeo from RPCS3 for telling me about updated GCC
and Qt launchpad PPAs.
2020-12-27 09:29:09 +01:00
|
|
|
qt${QT_PKG_VER}base \
|
|
|
|
qt${QT_PKG_VER}tools \
|
2021-02-23 07:18:45 +01:00
|
|
|
qt${QT_PKG_VER}wayland \
|
2022-07-15 17:34:49 +02:00
|
|
|
qt${QT_PKG_VER}multimedia \
|
2022-12-14 01:40:37 +01:00
|
|
|
qt${QT_PKG_VER}x11extras && \
|
2023-03-23 22:53:58 +01:00
|
|
|
# Install Clang from apt.llvm.org
|
2021-10-01 01:40:04 +02:00
|
|
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \
|
2021-02-16 22:37:59 +01:00
|
|
|
echo "deb http://apt.llvm.org/${UBUNTU_VER}/ llvm-toolchain-${UBUNTU_VER}-${CLANG_VER} main" >> /etc/apt/sources.list && \
|
|
|
|
apt-get update -y && \
|
2021-02-18 07:22:58 +01:00
|
|
|
apt-get install --no-install-recommends -y \
|
2022-05-20 05:37:16 +02:00
|
|
|
clang-${CLANG_VER} \
|
|
|
|
lld-${CLANG_VER} \
|
|
|
|
llvm-${CLANG_VER} \
|
2022-05-19 01:21:51 +02:00
|
|
|
llvm-${CLANG_VER}-linker-tools && \
|
2021-02-16 22:37:59 +01:00
|
|
|
ln -s $(which clang-${CLANG_VER}) /usr/bin/clang && \
|
|
|
|
ln -s $(which clang++-${CLANG_VER}) /usr/bin/clang++ && \
|
2021-10-01 01:40:04 +02:00
|
|
|
dpkg-reconfigure ccache && \
|
|
|
|
apt-get clean autoclean && \
|
2020-11-18 07:18:38 +01:00
|
|
|
apt-get autoremove --yes && \
|
|
|
|
rm -rf /var/lib/apt /var/lib/dpkg /var/lib/cache /var/lib/log
|
2022-05-20 05:37:16 +02:00
|
|
|
|
linux-fresh: Downgrade to Bionic Beaver
This is in preparation to have a legal AppImage when Ubuntu 16.04 is
deprecated in April 2021. As stated in [AppImage's
documentation](https://docs.appimage.org/packaging-guide/distribution.html#appimagehub),
to distribute yuzu on AppImageHub, an AppImage needs to compatible with
the oldest still supported release of Ubuntu, which will be 18.04 in
April.
Beyond making AppImages, this brings a number of other changes:
- The needed CMake, GCC, and Qt versions are now variables at the top of
the Dockerfile.
- The dependencies list is sorted lexicographically.
- Added package `file`, required for the Qt linuxdeploy plugin, thus
superseding #23.
- Added package `software-properties-common`, required to use
`add-apt-repository`.
- Added package `python3-setuptools`, a dependency of `python3-pip` that
somehow isn't installed with it by default.
- Removed package `python` as yuzu no longer uses Unicorn, thus Python 2
was no longer required.
- Moved installing GCC, Qt, FFmpeg, and SDL2 from the main Ubuntu
repositories to updated launchpad repositories.
- Removed packages `cmake` and `glslang-tools`, instead opting to
download and install them from their upstream repositories.
- In the case of `glslang-tools`, Ubuntu does not have any equivalent
package for Bionic.
This does not upgrade any package versions. This only brings Ubuntu
18.04 roughly to parity with the current 20.04 container. Once an
AppImage is in action, we can upgrade the GCC and Qt versions to our
heart's content (up to GCC 11 and Qt 5.15.2). Until then, it should be
said **Mainline builds are not compatible with Ubuntu versions below
20.04 despite using 18.04 to build yuzu**. We need an AppImage to make
yuzu compatible with older distro releases, and we need an AppImage to
make yuzu compatible with current releases if we upgrade Qt and/or GCC.
Another note is that the Qt version here is being downgraded from 5.12.8
to 5.12.6. The Qt launchpad PPA used here did not release usable
`qt512webengine` packages for 5.12.8 nor 5.12.7, and since upgrading to
5.12.10 would break compatibility with wild Ubuntu 20.04 installs, a
downgrade is necessary. Hopefully this is a temporary change during our
transition to 5.15.2.
Massive thank you to @AniLeo from RPCS3 for telling me about updated GCC
and Qt launchpad PPAs.
2020-12-27 09:29:09 +01:00
|
|
|
# Install CMake from upstream
|
|
|
|
RUN cd /tmp && \
|
2022-11-29 04:19:09 +01:00
|
|
|
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 && \
|
linux-fresh: Downgrade to Bionic Beaver
This is in preparation to have a legal AppImage when Ubuntu 16.04 is
deprecated in April 2021. As stated in [AppImage's
documentation](https://docs.appimage.org/packaging-guide/distribution.html#appimagehub),
to distribute yuzu on AppImageHub, an AppImage needs to compatible with
the oldest still supported release of Ubuntu, which will be 18.04 in
April.
Beyond making AppImages, this brings a number of other changes:
- The needed CMake, GCC, and Qt versions are now variables at the top of
the Dockerfile.
- The dependencies list is sorted lexicographically.
- Added package `file`, required for the Qt linuxdeploy plugin, thus
superseding #23.
- Added package `software-properties-common`, required to use
`add-apt-repository`.
- Added package `python3-setuptools`, a dependency of `python3-pip` that
somehow isn't installed with it by default.
- Removed package `python` as yuzu no longer uses Unicorn, thus Python 2
was no longer required.
- Moved installing GCC, Qt, FFmpeg, and SDL2 from the main Ubuntu
repositories to updated launchpad repositories.
- Removed packages `cmake` and `glslang-tools`, instead opting to
download and install them from their upstream repositories.
- In the case of `glslang-tools`, Ubuntu does not have any equivalent
package for Bionic.
This does not upgrade any package versions. This only brings Ubuntu
18.04 roughly to parity with the current 20.04 container. Once an
AppImage is in action, we can upgrade the GCC and Qt versions to our
heart's content (up to GCC 11 and Qt 5.15.2). Until then, it should be
said **Mainline builds are not compatible with Ubuntu versions below
20.04 despite using 18.04 to build yuzu**. We need an AppImage to make
yuzu compatible with older distro releases, and we need an AppImage to
make yuzu compatible with current releases if we upgrade Qt and/or GCC.
Another note is that the Qt version here is being downgraded from 5.12.8
to 5.12.6. The Qt launchpad PPA used here did not release usable
`qt512webengine` packages for 5.12.8 nor 5.12.7, and since upgrading to
5.12.10 would break compatibility with wild Ubuntu 20.04 installs, a
downgrade is necessary. Hopefully this is a temporary change during our
transition to 5.15.2.
Massive thank you to @AniLeo from RPCS3 for telling me about updated GCC
and Qt launchpad PPAs.
2020-12-27 09:29:09 +01:00
|
|
|
rm -rf cmake-*
|
2022-05-20 05:37:16 +02:00
|
|
|
|
2023-03-23 22:53:58 +01:00
|
|
|
# Install Boost from yuzu-emu/ext-linux-bin
|
2021-03-26 01:32:39 +01:00
|
|
|
RUN cd /tmp && \
|
2023-03-23 22:53:58 +01:00
|
|
|
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 / && \
|
2021-03-26 01:32:39 +01:00
|
|
|
rm -rf boost*
|
2022-05-20 19:15:43 +02:00
|
|
|
|
2022-05-26 05:04:42 +02:00
|
|
|
# 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 \
|
2023-03-23 22:53:58 +01:00
|
|
|
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 && \
|
2022-05-26 05:04:42 +02:00
|
|
|
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 && \
|
2023-03-23 22:53:58 +01:00
|
|
|
ln -sv /usr/local/lib64/libstdc++.so.6.0.30 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 && \
|
2022-05-26 05:04:42 +02:00
|
|
|
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}/
|
|
|
|
|
2023-03-23 22:53:58 +01:00
|
|
|
# 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*
|
|
|
|
|
linux-fresh: Downgrade to Bionic Beaver
This is in preparation to have a legal AppImage when Ubuntu 16.04 is
deprecated in April 2021. As stated in [AppImage's
documentation](https://docs.appimage.org/packaging-guide/distribution.html#appimagehub),
to distribute yuzu on AppImageHub, an AppImage needs to compatible with
the oldest still supported release of Ubuntu, which will be 18.04 in
April.
Beyond making AppImages, this brings a number of other changes:
- The needed CMake, GCC, and Qt versions are now variables at the top of
the Dockerfile.
- The dependencies list is sorted lexicographically.
- Added package `file`, required for the Qt linuxdeploy plugin, thus
superseding #23.
- Added package `software-properties-common`, required to use
`add-apt-repository`.
- Added package `python3-setuptools`, a dependency of `python3-pip` that
somehow isn't installed with it by default.
- Removed package `python` as yuzu no longer uses Unicorn, thus Python 2
was no longer required.
- Moved installing GCC, Qt, FFmpeg, and SDL2 from the main Ubuntu
repositories to updated launchpad repositories.
- Removed packages `cmake` and `glslang-tools`, instead opting to
download and install them from their upstream repositories.
- In the case of `glslang-tools`, Ubuntu does not have any equivalent
package for Bionic.
This does not upgrade any package versions. This only brings Ubuntu
18.04 roughly to parity with the current 20.04 container. Once an
AppImage is in action, we can upgrade the GCC and Qt versions to our
heart's content (up to GCC 11 and Qt 5.15.2). Until then, it should be
said **Mainline builds are not compatible with Ubuntu versions below
20.04 despite using 18.04 to build yuzu**. We need an AppImage to make
yuzu compatible with older distro releases, and we need an AppImage to
make yuzu compatible with current releases if we upgrade Qt and/or GCC.
Another note is that the Qt version here is being downgraded from 5.12.8
to 5.12.6. The Qt launchpad PPA used here did not release usable
`qt512webengine` packages for 5.12.8 nor 5.12.7, and since upgrading to
5.12.10 would break compatibility with wild Ubuntu 20.04 installs, a
downgrade is necessary. Hopefully this is a temporary change during our
transition to 5.15.2.
Massive thank you to @AniLeo from RPCS3 for telling me about updated GCC
and Qt launchpad PPAs.
2020-12-27 09:29:09 +01:00
|
|
|
# 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}
|
2022-05-20 05:37:16 +02:00
|
|
|
|
|
|
|
# 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
|
|
|
|
|
2022-07-22 06:27:30 +02:00
|
|
|
# Tell CMake to use vcpkg when looking for packages
|
|
|
|
ENV VCPKG_TOOLCHAIN_FILE=/home/yuzu/vcpkg/scripts/buildsystems/vcpkg.cmake
|
|
|
|
|
2020-05-08 04:22:08 +02:00
|
|
|
USER 1027
|
2022-07-22 06:27:30 +02:00
|
|
|
# Install vcpkg and required dependencies for yuzu
|
|
|
|
RUN cd /home/yuzu &&\
|
2022-10-18 22:29:16 +02:00
|
|
|
git clone --depth 1 https://github.com/Microsoft/vcpkg.git &&\
|
2022-07-22 06:27:30 +02:00
|
|
|
cd vcpkg &&\
|
|
|
|
./bootstrap-vcpkg.sh &&\
|
|
|
|
./vcpkg install \
|
2023-01-05 05:32:29 +01:00
|
|
|
catch2 \
|
2022-07-22 06:27:30 +02:00
|
|
|
fmt \
|
|
|
|
lz4 \
|
|
|
|
nlohmann-json \
|
|
|
|
zlib \
|
|
|
|
zstd
|