Clean up Linux build images and dependencies. (#51)
This commit is contained in:
parent
660e3995d4
commit
d13778f06c
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -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
|
||||
|
@ -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 \
|
||||
|
@ -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
|
@ -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
|
@ -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
|
||||
|
||||
|
@ -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
|
@ -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)
|
@ -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
|
@ -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
|
@ -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})"
|
@ -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-*
|
Loading…
x
Reference in New Issue
Block a user