Clean up Linux build images and dependencies. (#51)

This commit is contained in:
Steveice10 2023-06-27 23:19:42 -07:00 committed by GitHub
parent 660e3995d4
commit d13778f06c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 26 additions and 472 deletions

View File

@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
image: ["linux-appimage", "linux-clang-format", "linux-flatpak", "linux-fresh", "linux-frozen", "linux-mingw", "linux-transifex"]
image: ["linux-appimage", "linux-fresh"]
steps:
- uses: actions/checkout@v3

View File

@ -24,18 +24,6 @@ RUN apt-get install -y \
gcc-11 \
g++-11 \
cpp-11 \
# Qt 5
qtbase5-dev \
qtbase5-private-dev \
libqt5opengl5-dev \
qtmultimedia5-dev \
qttools5-dev \
qttools5-dev-tools \
qt5-gtk-platformtheme \
qt5ct \
qt5-style-plugins \
libqt5opengl5-dev \
libqt5multimedia5-plugins \
# Qt 6
qt6-base-dev \
qt6-base-private-dev \

View File

@ -1,5 +0,0 @@
FROM ubuntu:22.04
LABEL maintainer="citraemu"
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get -y full-upgrade
RUN apt-get install -y git clang-format-12 p7zip-full

View File

@ -1,7 +0,0 @@
FROM ubuntu:22.04
LABEL maintainer="citraemu"
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get -y full-upgrade
RUN apt-get install -y p7zip-full wget git flatpak flatpak-builder glslang-dev glslang-tools ca-certificates sshfs curl dnsutils gnupg2 sudo
RUN flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
RUN flatpak install -y flathub org.kde.Platform//5.15-22.08 org.kde.Sdk//5.15-22.08 org.kde.Platform//6.4 org.kde.Sdk//6.4

View File

@ -4,38 +4,41 @@ ENV DEBIAN_FRONTEND=noninteractive
# Create a user account citra (UID 1027) that the container will run as
RUN useradd -m -u 1027 -s /bin/bash citra
RUN apt-get update && apt-get -y full-upgrade
RUN apt-get install -y \
p7zip-full \
# Tools
build-essential \
ccache \
clang-format-12 \
cmake \
curl \
git \
ninja-build \
p7zip-full \
python3-pip \
software-properties-common \
libsdl2-dev \
qtbase5-dev \
qtbase5-private-dev \
libqt5opengl5-dev \
qtmultimedia5-dev \
qttools5-dev \
qttools5-dev-tools \
unzip \
wget \
zip \
# Qt 6
qt6-base-dev \
qt6-base-private-dev \
libqt6opengl6-dev \
qt6-multimedia-dev \
qt6-l10n-tools \
qt6-tools-dev \
qt6-tools-dev-tools \
libavcodec-dev \
libavfilter-dev \
libavformat-dev \
libswscale-dev \
wget \
git \
ccache \
cmake \
ninja-build \
&& \
qt6-tools-dev-tools
# Install updated version of glslang
add-apt-repository -y ppa:theofficialgman/gpu-tools && \
apt-get update -y && \
RUN add-apt-repository -y ppa:theofficialgman/gpu-tools
RUN apt-get update -y && \
apt-get install --no-install-recommends -y \
glslang-dev \
glslang-tools
# Install Transifex client
RUN curl -O -L https://github.com/transifex/cli/releases/latest/download/tx-linux-amd64.tar.gz && \
tar xf tx-linux-amd64.tar.gz tx && \
mv tx /usr/bin/tx && \
rm tx-linux-amd64.tar.gz

View File

@ -1,42 +0,0 @@
FROM ubuntu:22.04
LABEL maintainer="citraemu"
ENV DEBIAN_FRONTEND=noninteractive
RUN mkdir -p /tmp/pkgs
COPY install_package.py /tmp/pkgs
RUN apt-get update && apt-get install -y \
p7zip-full \
build-essential \
software-properties-common \
wget \
git \
python3-launchpadlib \
ccache \
ninja-build \
&& \
# Install updated version of glslang
add-apt-repository -y ppa:theofficialgman/gpu-tools && \
apt-get update -y && \
apt-get install --no-install-recommends -y \
glslang-dev \
glslang-tools
RUN cd /tmp/pkgs && python3 install_package.py \
libsdl2-dev 2.0.20+dfsg-2build1 jammy \
qtbase5-dev 5.15.3+dfsg-2 jammy \
qtbase5-private-dev 5.15.3+dfsg-2 jammy \
libqt5opengl5-dev 5.15.3+dfsg-2 jammy \
qt5-qmltooling-plugins 5.15.3+dfsg-1 jammy \
qtdeclarative5-dev 5.15.3+dfsg-1 jammy \
qtmultimedia5-dev 5.15.3-1 jammy \
qt6-base-dev 6.2.4+dfsg-2ubuntu1 jammy \
qt6-base-private-dev 6.2.4+dfsg-2ubuntu1 jammy \
libqt6opengl6-dev 6.2.4+dfsg-2ubuntu1 jammy \
qt6-qmltooling-plugins 6.2.4+dfsg-3ubuntu1 jammy \
qt6-declarative-dev 6.2.4+dfsg-3ubuntu1 jammy \
qt6-multimedia-dev 6.2.4-1 jammy \
libicu70 70.1-2 jammy \
cmake 3.22.1-1ubuntu1 jammy \
libavcodec-dev 7:4.4.2-0ubuntu0.22.04.1 jammy \
libavformat-dev 7:4.4.2-0ubuntu0.22.04.1 jammy \
libswscale-dev 7:4.4.2-0ubuntu0.22.04.1 jammy
RUN rm -rf /tmp/pkgs

View File

@ -1,54 +0,0 @@
#!/usr/bin/python3
import sys
import re
import subprocess
from launchpadlib.launchpad import Launchpad
if sys.version_info[0] > 2:
xrange = range
cachedir = '/.launchpadlib/cache/'
launchpad = Launchpad.login_anonymously(
'grab build info', 'production', cachedir, version='devel')
processed_packages = []
deb_file_list = []
def get_url(pkg, distro):
build_ref = launchpad.archives.getByReference(reference='ubuntu').getPublishedBinaries(
binary_name=pkg[0], distro_arch_series='https://api.launchpad.net/devel/ubuntu/' + distro + '/amd64', version=pkg[1], exact_match=True, order_by_date=True).entries[0]
build_link = build_ref['build_link']
deb_name = '{}_{}_{}.deb'.format(pkg[0], pkg[1].split(':', 1)[-1], 'amd64' if build_ref['architecture_specific'] else 'all')
deb_link = build_link + '/+files/' + deb_name
return [deb_link, deb_name]
def list_dependencies(deb_file):
t = subprocess.check_output(
['bash', '-c', '(dpkg -I {} | grep -oP "^ Depends\\: \\K.*$") || true'.format(deb_file)])
deps = [i.split(b'|')[0].decode('utf-8').strip() for i in t.split(b',')]
equals_re = re.compile(r'^(.*) \(= (.*)\)$')
return [equals_re.sub(r'\1=\2', i).split('=') for i in filter(equals_re.match, deps)]
def get_package(pkg, distro):
if pkg in processed_packages:
return
print('Getting {}...'.format(pkg[0]))
url = get_url(pkg, distro)
subprocess.check_call(['wget', '--quiet', url[0], '-O', url[1]])
for dep in list_dependencies(url[1]):
# qt6-base-abi is a virtual package, which breaks the script.
if dep[0] != 'qt6-base-abi':
get_package(dep, distro)
processed_packages.append(pkg)
deb_file_list.append('./' + url[1])
for i in xrange(1, len(sys.argv), 3):
get_package([sys.argv[i], sys.argv[i + 1]], sys.argv[i + 2])
subprocess.check_call(
['apt-get', 'install', '-y', '--force-yes'] + deb_file_list)

View File

@ -1,52 +0,0 @@
FROM archlinux:latest
LABEL maintainer="citraemu"
# Add mingw-repo "ownstuff" is a AUR with an up to date mingw64
# Runs pacman -Syu twice in order to work around pacman issues where the first run only updates the
# current distro packages, and the second run actually pulls the updates from the repos.
RUN useradd -m -u 1027 -s /bin/bash citra && mkdir -p /tmp/pkgs && \
echo "[ownstuff]" >> /etc/pacman.conf && \
echo "SigLevel = Optional TrustAll" >> /etc/pacman.conf && \
echo "Server = https://martchus.no-ip.biz/repo/arch/ownstuff/os/\$arch" >> /etc/pacman.conf && \
pacman -Syu --noconfirm && \
pacman -Syu --noconfirm && \
pacman -S --needed --noconfirm --noprogressbar \
base-devel \
sudo \
gnupg \
wget \
git \
glslang \
python-pip \
python \
ccache \
p7zip \
cmake \
ninja \
qt6-base \
qt6-tools \
mingw-w64-boost \
mingw-w64-gcc \
mingw-w64-libusb \
mingw-w64-lz4 \
mingw-w64-nlohmann-json \
mingw-w64-qt5-base \
mingw-w64-qt5-multimedia \
mingw-w64-qt5-tools \
mingw-w64-qt5-winextras \
mingw-w64-qt6-base \
mingw-w64-qt6-multimedia \
mingw-w64-qt6-tools \
mingw-w64-tools \
mingw-w64-sdl2 \
mingw-w64-vulkan-headers \
mingw-w64-winpthreads \
mingw-w64-zlib \
mingw-w64-zstd \
mingw-w64-glslang \
&& \
pacman -Scc --noconfirm && \
rm -rf /usr/share/man/ /tmp/* /var/tmp/ /usr/{i686-w64-mingw32,lib32} /usr/lib/gcc/i686-w64-mingw32 && \
mkdir -p /tmp/pkgs
COPY mingw-setup.sh /tmp/pkgs
RUN cd /tmp/pkgs && bash -e mingw-setup.sh

View File

@ -1,241 +0,0 @@
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the mingw-w64 runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#ifndef _INC_ERRNO
#define _INC_ERRNO
#include <crtdefs.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _CRT_ERRNO_DEFINED
#define _CRT_ERRNO_DEFINED
_CRTIMP extern int *__cdecl _errno(void);
#define errno (*_errno())
errno_t __cdecl _set_errno(int _Value);
errno_t __cdecl _get_errno(int *_Value);
#endif /* _CRT_ERRNO_DEFINED */
#define EPERM 1
#define ENOENT 2
#define ENOFILE ENOENT
#define ESRCH 3
#define EINTR 4
#define EIO 5
#define ENXIO 6
#define E2BIG 7
#define ENOEXEC 8
#define EBADF 9
#define ECHILD 10
#define EAGAIN 11
#define ENOMEM 12
#define EACCES 13
#define EFAULT 14
#define EBUSY 16
#define EEXIST 17
#define EXDEV 18
#define ENODEV 19
#define ENOTDIR 20
#define EISDIR 21
#define ENFILE 23
#define EMFILE 24
#define ENOTTY 25
#define EFBIG 27
#define ENOSPC 28
#define ESPIPE 29
#define EROFS 30
#define EMLINK 31
#define EPIPE 32
#define EDOM 33
#define EDEADLK 36
#define ENAMETOOLONG 38
#define ENOLCK 39
#define ENOSYS 40
#define ENOTEMPTY 41
#ifndef RC_INVOKED
#if !defined(_SECURECRT_ERRCODE_VALUES_DEFINED)
#define _SECURECRT_ERRCODE_VALUES_DEFINED
#define EINVAL 22
#define ERANGE 34
#define EILSEQ 42
#define STRUNCATE 80
#endif
#endif
#define EDEADLOCK EDEADLK
/* Posix thread extensions. */
#ifndef ENOTSUP
#define ENOTSUP 129
#endif
/* Extension defined as by report VC 10+ defines error-numbers. */
#ifndef EAFNOSUPPORT
#define EAFNOSUPPORT 102
#endif
#ifndef EADDRINUSE
#define EADDRINUSE 100
#endif
#ifndef EADDRNOTAVAIL
#define EADDRNOTAVAIL 101
#endif
#ifndef EISCONN
#define EISCONN 113
#endif
#ifndef ENOBUFS
#define ENOBUFS 119
#endif
#ifndef ECONNABORTED
#define ECONNABORTED 106
#endif
#ifndef EALREADY
#define EALREADY 103
#endif
#ifndef ECONNREFUSED
#define ECONNREFUSED 107
#endif
#ifndef ECONNRESET
#define ECONNRESET 108
#endif
#ifndef EDESTADDRREQ
#define EDESTADDRREQ 109
#endif
#ifndef EHOSTUNREACH
#define EHOSTUNREACH 110
#endif
#ifndef EMSGSIZE
#define EMSGSIZE 115
#endif
#ifndef ENETDOWN
#define ENETDOWN 116
#endif
#ifndef ENETRESET
#define ENETRESET 117
#endif
#ifndef ENETUNREACH
#define ENETUNREACH 118
#endif
#ifndef ENOPROTOOPT
#define ENOPROTOOPT 123
#endif
#ifndef ENOTSOCK
#define ENOTSOCK 128
#endif
#ifndef ENOTCONN
#define ENOTCONN 126
#endif
#ifndef ECANCELED
#define ECANCELED 105
#endif
#ifndef EINPROGRESS
#define EINPROGRESS 112
#endif
#ifndef EOPNOTSUPP
#define EOPNOTSUPP 130
#endif
#ifndef EWOULDBLOCK
#define EWOULDBLOCK 140
#endif
#ifndef EOWNERDEAD
#define EOWNERDEAD 133
#endif
#ifndef EPROTO
#define EPROTO 134
#endif
#ifndef EPROTONOSUPPORT
#define EPROTONOSUPPORT 135
#endif
#ifndef EBADMSG
#define EBADMSG 104
#endif
#ifndef EIDRM
#define EIDRM 111
#endif
#ifndef ENODATA
#define ENODATA 120
#endif
#ifndef ENOLINK
#define ENOLINK 121
#endif
#ifndef ENOMSG
#define ENOMSG 122
#endif
#ifndef ENOSR
#define ENOSR 124
#endif
#ifndef ENOSTR
#define ENOSTR 125
#endif
#ifndef ENOTRECOVERABLE
#define ENOTRECOVERABLE 127
#endif
#ifndef ETIME
#define ETIME 137
#endif
#ifndef ETXTBSY
#define ETXTBSY 139
#endif
/* Defined as WSAETIMEDOUT. */
#ifndef ETIMEDOUT
#define ETIMEDOUT 138
#endif
#ifndef ELOOP
#define ELOOP 114
#endif
#ifndef EPROTOTYPE
#define EPROTOTYPE 136
#endif
#ifndef EOVERFLOW
#define EOVERFLOW 132
#endif
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,20 +0,0 @@
#!/usr/bin/bash -e
# install pefile
pip3 install pefile
# ffmpeg
FFMPEG_VER='6.0'
LINK_PATH="autobuild-2023-03-31-12-50/ffmpeg-n6.0-11-g3980415627-win64-gpl-shared-6.0"
FILENAME="${LINK_PATH##*/}"
echo "Downloading ffmpeg (${FFMPEG_VER})..."
wget -c "https://github.com/BtbN/FFmpeg-Builds/releases/download/${LINK_PATH}.zip"
7z x "${FILENAME}.zip"
echo "Copying ffmpeg ${FFMPEG_VER} files to sysroot..."
cp -v "${FILENAME}"/bin/*.dll /usr/x86_64-w64-mingw32/lib/
cp -vr "${FILENAME}"/include /usr/x86_64-w64-mingw32/
cp -v "${FILENAME}"/lib/*.{a,def} /usr/x86_64-w64-mingw32/lib/
# remove the directory
ABS_PATH="$(readlink -f $0)"
rm -rf "$(dirname ${ABS_PATH})"

View File

@ -1,16 +0,0 @@
FROM debian:bullseye-backports
LABEL maintainer="citraemu"
ENV DEBIAN_FRONTEND=noninteractive
ENV CMAKE_VER=3.22.6
RUN apt-get update && apt-get -y full-upgrade
RUN apt-get install -y git p7zip-full libqt5opengl5-dev qtmultimedia5-dev qttools5-dev qttools5-dev-tools libqt6opengl6-dev qt6-multimedia-dev qt6-l10n-tools qt6-tools-dev qt6-tools-dev-tools python3-pip cmake curl unzip zip
RUN curl -O -L https://github.com/transifex/cli/releases/latest/download/tx-linux-amd64.tar.gz && tar xf tx-linux-amd64.tar.gz tx && mv tx /usr/bin/tx && rm tx-linux-amd64.tar.gz
# Install CMake from upstream
RUN cd /tmp
RUN curl -OL 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-*