forked from melonDS-emu/melonDS
-
Notifications
You must be signed in to change notification settings - Fork 12
130 lines (124 loc) · 5.15 KB
/
build-ubuntu.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Ubuntu
on:
push:
branches:
- master
pull_request:
branches:
- master
env:
MELONDS_GIT_BRANCH: ${{ github.ref }}
MELONDS_GIT_HASH: ${{ github.sha }}
MELONDS_BUILD_PROVIDER: GitHub Actions
MELONDS_VERSION_SUFFIX: ""
jobs:
build-x86_64:
name: x86_64
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
name: Check out sources
- name: Install dependencies
run: |
sudo rm -f /etc/apt/sources.list.d/dotnetdev.list /etc/apt/sources.list.d/microsoft-prod.list
sudo apt update
sudo apt install --allow-downgrades cmake ninja-build extra-cmake-modules libpcap0.8-dev libsdl2-dev libenet-dev \
qt6-{base,base-private,multimedia}-dev libqt6svg6-dev libarchive-dev libzstd-dev libfuse2
- name: Install GStreamer dependencies
run: |
sudo apt-get install --allow-downgrades libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl \
gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
- name: Configure
run: cmake -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/usr -DMELONDS_EMBED_BUILD_INFO=ON
- name: Build
run: |
cmake --build build
DESTDIR=AppDir cmake --install build
mv AppDir/usr/bin/melonDS AppDir/usr/bin/MelonMix
- name: Preparing artifacts (ubuntu-x86_64)
run: |
mkdir dist
mkdir -p ./dist/roms
touch ./dist/roms/DELETE_ME
cp -r ./assets ./dist/assets
rm -r ./dist/assets/days/2d_textures
cp AppDir/usr/bin/MelonMix ./dist/MelonMix
cp ./res/scripts/MelonMix_KHDays.sh ./dist/MelonMix_KHDays.sh
cp ./res/scripts/MelonMix_KHReCoded.sh ./dist/MelonMix_KHReCoded.sh
- uses: actions/upload-artifact@v4
with:
name: MelonMix-ubuntu-x86_64
path: dist
- name: Fetch AppImage tools
run: |
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
wget https://raw.githubusercontent.com/linuxdeploy/linuxdeploy-plugin-gstreamer/master/linuxdeploy-plugin-gstreamer.sh
chmod a+x linuxdeploy-*.AppImage
chmod a+x linuxdeploy-*.sh
- name: Build the AppImage
env:
QMAKE: /usr/lib/qt6/bin/qmake
run: |
./linuxdeploy-x86_64.AppImage --list-plugins
./linuxdeploy-x86_64.AppImage --appdir AppDir --plugin qt
./linuxdeploy-x86_64.AppImage --appdir AppDir --plugin gstreamer --output appimage
- name: Preparing artifacts (appimage-x86_64)
run: |
mkdir dist_appimage
mkdir -p ./dist_appimage/roms
touch ./dist_appimage/roms/DELETE_ME
cp -r ./assets ./dist_appimage/assets
rm -r ./dist_appimage/assets/days/2d_textures
mv MelonMix*.AppImage ./dist_appimage/MelonMix.AppImage
cp ./res/scripts/MelonMix_KHDays_AppImage.sh ./dist_appimage/MelonMix_KHDays.sh
cp ./res/scripts/MelonMix_KHReCoded_AppImage.sh ./dist_appimage/MelonMix_KHReCoded.sh
- uses: actions/upload-artifact@v4
with:
name: MelonMix-appimage-x86_64
path: dist_appimage
build-aarch64:
name: aarch64
runs-on: ubuntu-latest
container: ubuntu:22.04
steps:
- name: Prepare system
shell: bash
run: |
dpkg --add-architecture arm64
sh -c "sed \"s|^deb \([a-z\.:/]*\) \([a-z\-]*\) \(.*\)$|deb [arch=amd64] \1 \2 \3\ndeb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports \2 \3|\" /etc/apt/sources.list > /etc/apt/sources.list.new"
rm /etc/apt/sources.list
mv /etc/apt/sources.list{.new,}
apt update
apt -y full-upgrade
apt -y install git {gcc-12,g++-12}-aarch64-linux-gnu cmake ninja-build extra-cmake-modules \
{libsdl2,qt6-{base,base-private,multimedia},libqt6svg6,libarchive,libzstd,libenet}-dev:arm64 \
pkg-config dpkg-dev
- name: Check out source
uses: actions/checkout@v4
- name: Configure
shell: bash
run: |
cmake -B build -G Ninja \
-DPKG_CONFIG_EXECUTABLE=/usr/bin/aarch64-linux-gnu-pkg-config \
-DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc-12 \
-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++-12 \
-DMELONDS_EMBED_BUILD_INFO=ON
- name: Build
shell: bash
run: |
cmake --build build
mkdir dist
mkdir -p ./dist/roms
touch ./dist/roms/DELETE_ME
cp -r ./assets ./dist/assets
rm -r ./dist/assets/days/2d_textures
mv build/melonDS dist/MelonMix
cp ./res/scripts/MelonMix_KHDays.sh ./dist/MelonMix_KHDays.sh
cp ./res/scripts/MelonMix_KHReCoded.sh ./dist/MelonMix_KHReCoded.sh
- uses: actions/upload-artifact@v4
with:
name: MelonMix-ubuntu-aarch64
path: dist