Skip to content

Commit 8329b1a

Browse files
committed
Packaging improvements
1 parent 6751129 commit 8329b1a

17 files changed

+790
-34
lines changed
Lines changed: 60 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
# The resulting binaries are not considered for public use though.
44
name: Build Check
55

6-
on: [ push, pull_request ]
6+
#on: [ push, pull_request ]
7+
on: workflow_dispatch
78

89
jobs:
910
build-linux:
@@ -15,21 +16,35 @@ jobs:
1516
- name: Install Build Dependencies
1617
run: |
1718
sudo apt update
18-
sudo apt install build-essential libgl1-mesa-dev mesa-common-dev libsdl2-dev libpoco-dev ninja-build libssl-dev
19+
sudo apt install build-essential libgl1-mesa-dev mesa-common-dev libsdl2-dev libpoco-dev ninja-build libssl-dev libfreetype6-dev
1920
2021
# We need to build/link Poco ourselves as static libraries, because Ubuntu Jammy ships with a broken Poco 1.11.0
2122
- name: Checkout Poco Sources
2223
uses: actions/checkout@v4
2324
with:
2425
repository: pocoproject/poco
2526
path: poco
26-
ref: 'poco-1.12.2'
27+
ref: 'poco-1.14.1'
2728
submodules: recursive
2829

2930
- name: Build Poco
3031
run: |
3132
mkdir cmake-build-poco
32-
cmake -G Ninja -S poco -B cmake-build-poco -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-poco -DENABLE_MONGODB=OFF -DENABLE_REDIS=OFF -DENABLE_PAGECOMPILER=OFF -DENABLE_PAGECOMPILER_FILE2PAGE=OFF -DENABLE_ACTIVERECORD=OFF -DENABLE_ACTIVERECORD_COMPILER=OFF -DENABLE_DATA_ODBC=OFF -DENABLE_DATA_POSTGRESQL=OFF -DENABLE_DATA_MYSQL=OFF -DENABLE_JWT=OFF -DENABLE_PROMETHEUS=OFF
33+
cmake -G Ninja -S poco -B cmake-build-poco \
34+
-DBUILD_SHARED_LIBS=OFF \
35+
-DCMAKE_BUILD_TYPE=Release \
36+
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-poco \
37+
-DENABLE_MONGODB=OFF \
38+
-DENABLE_REDIS=OFF \
39+
-DENABLE_PAGECOMPILER=OFF \
40+
-DENABLE_PAGECOMPILER_FILE2PAGE=OFF \
41+
-DENABLE_ACTIVERECORD=OFF \
42+
-DENABLE_ACTIVERECORD_COMPILER=OFF \
43+
-DENABLE_DATA_ODBC=OFF \
44+
-DENABLE_DATA_POSTGRESQL=OFF \
45+
-DENABLE_DATA_MYSQL=OFF \
46+
-DENABLE_JWT=OFF \
47+
-DENABLE_PROMETHEUS=OFF
3348
cmake --build cmake-build-poco --parallel
3449
cmake --install "${{ github.workspace }}/cmake-build-poco"
3550
@@ -43,7 +58,10 @@ jobs:
4358
- name: Build/Install libprojectM
4459
run: |
4560
mkdir cmake-build-libprojectm
46-
cmake -G Ninja -S projectm -B cmake-build-libprojectm -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-libprojectm
61+
cmake -G Ninja -S projectm -B cmake-build-libprojectm \
62+
-DBUILD_SHARED_LIBS=OFF \
63+
-DCMAKE_BUILD_TYPE=Release \
64+
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-libprojectm
4765
cmake --build cmake-build-libprojectm --parallel
4866
cmake --install "${{ github.workspace }}/cmake-build-libprojectm"
4967
@@ -56,9 +74,22 @@ jobs:
5674
- name: Build frontend-sdl2
5775
run: |
5876
mkdir cmake-build-frontend-sdl2
59-
cmake -G Ninja -S frontend-sdl2 -B cmake-build-frontend-sdl2 -DCMAKE_BUILD_TYPE=Release "-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco" "-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-frontend-sdl2"
77+
cmake -G Ninja -S frontend-sdl2 -B cmake-build-frontend-sdl2 \
78+
-DCMAKE_BUILD_TYPE=Release \
79+
"-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco" \
80+
"-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-frontend-sdl2"
6081
cmake --build cmake-build-frontend-sdl2 --parallel
61-
# cmake --install "${{ github.workspace }}/cmake-build-frontend-sdl2"
82+
83+
- name: Package projectMSDL
84+
run: |
85+
cd cmake-build-frontend-sdl2
86+
cpack -G DEB
87+
88+
- name: Upload Artifact
89+
uses: actions/upload-artifact@v4
90+
with:
91+
name: projectMSDL-buildcheck-linux
92+
path: cmake-build-frontend-sdl2/*.deb
6293

6394
build-windows:
6495
name: Windows, x64
@@ -121,7 +152,17 @@ jobs:
121152
mkdir cmake-build-frontend-sdl2
122153
cmake -G "Visual Studio 17 2022" -A "X64" -S "${{ github.workspace }}/frontend-sdl2" -B "${{ github.workspace }}/cmake-build-frontend-sdl2" -DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_PREFIX_PATH="${{ github.workspace }}/install-libprojectm" -DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/install-frontend-sdl2" -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreaded$<$<CONFIG:Debug>:Debug>" -DCMAKE_VERBOSE_MAKEFILE=YES -DSDL2_LINKAGE=static -DBUILD_TESTING=YES
123154
cmake --build "${{ github.workspace }}/cmake-build-frontend-sdl2" --parallel --config Release
124-
# cmake --install "${{ github.workspace }}/cmake-build-frontend-sdl2" --config Release
155+
156+
- name: Package projectMSDL
157+
run: |
158+
cd cmake-build-frontend-sdl2
159+
cpack -G ZIP
160+
161+
- name: Upload Artifact
162+
uses: actions/upload-artifact@v4
163+
with:
164+
name: projectMSDL-buildcheck-windows
165+
path: cmake-build-frontend-sdl2/*.zip
125166

126167
build-darwin:
127168
name: macOS, x86_64
@@ -156,4 +197,14 @@ jobs:
156197
mkdir cmake-build-frontend-sdl2
157198
cmake -G Ninja -S "${{ github.workspace }}/frontend-sdl2" -B "${{ github.workspace }}/cmake-build-frontend-sdl2" -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="${{ github.workspace }}/install-libprojectm" -DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/install-frontend-sdl2"
158199
cmake --build "${{ github.workspace }}/cmake-build-frontend-sdl2" --parallel
159-
# cmake --install "${{ github.workspace }}/cmake-build-frontend-sdl2"
200+
201+
- name: Package projectMSDL
202+
run: |
203+
cd cmake-build-frontend-sdl2
204+
cpack -G TGZ
205+
206+
- name: Upload Artifact
207+
uses: actions/upload-artifact@v4
208+
with:
209+
name: projectMSDL-buildcheck-macos
210+
path: cmake-build-frontend-sdl2/*.tar.gz
Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
# Release workflow for Linux
2+
# Builds a 64-bit binary on Ubuntu 22.04, which should ideally run on most other Linux distros as well.
3+
# To reduce issues with audio drivers and font rendering, the SDL2 and freetype libraries will be linked as a shared library
4+
# while POCO will be linked statically.
5+
name: Build Release Package for Linux
6+
7+
on: push
8+
9+
jobs:
10+
build-deb:
11+
name: DEB Package, Ubuntu Linux 22.04 x86_64
12+
runs-on: ubuntu-22.04
13+
14+
steps:
15+
16+
- name: Install Build Dependencies
17+
run: |
18+
sudo apt update
19+
sudo apt install build-essential libgl1-mesa-dev mesa-common-dev libsdl2-dev ninja-build libssl-dev libfreetype6-dev
20+
21+
# We need to build/link Poco ourselves as static libraries, because Ubuntu Jammy ships with a broken Poco 1.11.0
22+
# and other distros may ship different versions as well. POCO as a C++ library has no stable ABI, so each minor
23+
# release increments the SO version by one.
24+
- name: Checkout Poco Sources
25+
uses: actions/checkout@v4
26+
with:
27+
repository: pocoproject/poco
28+
path: poco
29+
ref: 'poco-1.14.1'
30+
submodules: recursive
31+
32+
- name: Build Poco
33+
run: |
34+
mkdir cmake-build-poco
35+
cmake -G Ninja -S poco -B cmake-build-poco \
36+
-DBUILD_SHARED_LIBS=OFF \
37+
-DCMAKE_BUILD_TYPE=Release \
38+
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-poco \
39+
-DENABLE_MONGODB=OFF \
40+
-DENABLE_REDIS=OFF \
41+
-DENABLE_PAGECOMPILER=OFF \
42+
-DENABLE_PAGECOMPILER_FILE2PAGE=OFF \
43+
-DENABLE_ACTIVERECORD=OFF \
44+
-DENABLE_ACTIVERECORD_COMPILER=OFF \
45+
-DENABLE_DATA_ODBC=OFF \
46+
-DENABLE_DATA_POSTGRESQL=OFF \
47+
-DENABLE_DATA_MYSQL=OFF \
48+
-DENABLE_JWT=OFF \
49+
-DENABLE_PROMETHEUS=OFF
50+
cmake --build cmake-build-poco --parallel
51+
cmake --install "${{ github.workspace }}/cmake-build-poco"
52+
53+
- name: Checkout libprojectM Sources
54+
uses: actions/checkout@v4
55+
with:
56+
repository: projectM-visualizer/projectm
57+
path: projectm
58+
submodules: recursive
59+
60+
- name: Build/Install libprojectM
61+
run: |
62+
mkdir cmake-build-libprojectm
63+
cmake -G Ninja -S projectm -B cmake-build-libprojectm \
64+
-DBUILD_SHARED_LIBS=OFF \
65+
-DCMAKE_BUILD_TYPE=Release \
66+
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-libprojectm
67+
cmake --build cmake-build-libprojectm --parallel
68+
cmake --install "${{ github.workspace }}/cmake-build-libprojectm"
69+
70+
- name: Checkout frontend-sdl2 Sources
71+
uses: actions/checkout@v4
72+
with:
73+
path: frontend-sdl2
74+
submodules: recursive
75+
76+
- name: Checkout Cream of the Crop preset pack
77+
uses: actions/checkout@v4
78+
with:
79+
repository: projectM-visualizer/presets-cream-of-the-crop
80+
path: presets-cream-of-the-crop
81+
82+
- name: Checkout Milkdrop Texture Pack
83+
uses: actions/checkout@v4
84+
with:
85+
repository: projectM-visualizer/presets-milkdrop-texture-pack
86+
path: presets-milkdrop-texture-pack
87+
88+
- name: Build frontend-sdl2
89+
run: |
90+
mkdir cmake-build-frontend-sdl2
91+
cmake -G Ninja -S frontend-sdl2 -B cmake-build-frontend-sdl2 \
92+
-DCMAKE_BUILD_TYPE=Release \
93+
"-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco" \
94+
"-DPRESET_DIRS=${{ github.workspace }}/presets-cream-of-the-crop" \
95+
"-DTEXTURE_DIRS=${{ github.workspace }}/presets-milkdrop-texture-pack/textures" \
96+
'-DDEFAULT_CONFIG_PATH=${application.dir}/../share/projectMSDL/' \
97+
'-DDEFAULT_PRESETS_PATH=${application.dir}/../share/projectMSDL/presets/' \
98+
'-DDEFAULT_TEXTURES_PATH=${application.dir}/../share/projectMSDL/textures/'
99+
cmake --build cmake-build-frontend-sdl2 --parallel
100+
101+
- name: Package projectMSDL
102+
run: |
103+
cd cmake-build-frontend-sdl2
104+
cpack -G DEB
105+
106+
- name: Upload Artifact
107+
uses: actions/upload-artifact@v4
108+
with:
109+
name: projectMSDL-Linux-DEB-x86_64
110+
path: cmake-build-frontend-sdl2/*.deb
111+
112+
build-tgz:
113+
name: Portable, Ubuntu Linux 22.04 x86_64
114+
runs-on: ubuntu-22.04
115+
116+
steps:
117+
118+
- name: Install Build Dependencies
119+
run: |
120+
sudo apt update
121+
sudo apt install build-essential libgl1-mesa-dev mesa-common-dev libsdl2-dev ninja-build libssl-dev libfreetype6-dev
122+
123+
# We need to build/link Poco ourselves as static libraries, because Ubuntu Jammy ships with a broken Poco 1.11.0
124+
# and other distros may ship different versions as well. POCO as a C++ library has no stable ABI, so each minor
125+
# release increments the SO version by one.
126+
- name: Checkout Poco Sources
127+
uses: actions/checkout@v4
128+
with:
129+
repository: pocoproject/poco
130+
path: poco
131+
ref: 'poco-1.14.1'
132+
submodules: recursive
133+
134+
- name: Build Poco
135+
run: |
136+
mkdir cmake-build-poco
137+
cmake -G Ninja -S poco -B cmake-build-poco \
138+
-DBUILD_SHARED_LIBS=OFF \
139+
-DCMAKE_BUILD_TYPE=Release \
140+
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-poco \
141+
-DENABLE_MONGODB=OFF \
142+
-DENABLE_REDIS=OFF \
143+
-DENABLE_PAGECOMPILER=OFF \
144+
-DENABLE_PAGECOMPILER_FILE2PAGE=OFF \
145+
-DENABLE_ACTIVERECORD=OFF \
146+
-DENABLE_ACTIVERECORD_COMPILER=OFF \
147+
-DENABLE_DATA_ODBC=OFF \
148+
-DENABLE_DATA_POSTGRESQL=OFF \
149+
-DENABLE_DATA_MYSQL=OFF \
150+
-DENABLE_JWT=OFF \
151+
-DENABLE_PROMETHEUS=OFF
152+
cmake --build cmake-build-poco --parallel
153+
cmake --install "${{ github.workspace }}/cmake-build-poco"
154+
155+
- name: Checkout libprojectM Sources
156+
uses: actions/checkout@v4
157+
with:
158+
repository: projectM-visualizer/projectm
159+
path: projectm
160+
submodules: recursive
161+
162+
- name: Build/Install libprojectM
163+
run: |
164+
mkdir cmake-build-libprojectm
165+
cmake -G Ninja -S projectm -B cmake-build-libprojectm \
166+
-DBUILD_SHARED_LIBS=OFF \
167+
-DCMAKE_BUILD_TYPE=Release \
168+
-DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install-libprojectm
169+
cmake --build cmake-build-libprojectm --parallel
170+
cmake --install "${{ github.workspace }}/cmake-build-libprojectm"
171+
172+
- name: Checkout frontend-sdl2 Sources
173+
uses: actions/checkout@v4
174+
with:
175+
path: frontend-sdl2
176+
submodules: recursive
177+
178+
- name: Checkout Cream of the Crop preset pack
179+
uses: actions/checkout@v4
180+
with:
181+
repository: projectM-visualizer/presets-cream-of-the-crop
182+
path: presets-cream-of-the-crop
183+
184+
- name: Checkout Milkdrop Texture Pack
185+
uses: actions/checkout@v4
186+
with:
187+
repository: projectM-visualizer/presets-milkdrop-texture-pack
188+
path: presets-milkdrop-texture-pack
189+
190+
- name: Build frontend-sdl2
191+
run: |
192+
mkdir cmake-build-frontend-sdl2
193+
cmake -G Ninja -S frontend-sdl2 -B cmake-build-frontend-sdl2 \
194+
-DCMAKE_BUILD_TYPE=Release \
195+
"-DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/install-libprojectm;${GITHUB_WORKSPACE}/install-poco" \
196+
"-DPRESET_DIRS=${{ github.workspace }}/presets-cream-of-the-crop" \
197+
"-DTEXTURE_DIRS=${{ github.workspace }}/presets-milkdrop-texture-pack/textures" \
198+
'-DDEFAULT_CONFIG_PATH=${application.dir}/' \
199+
'-DDEFAULT_PRESETS_PATH=${application.dir}/presets/' \
200+
'-DDEFAULT_TEXTURES_PATH=${application.dir}/textures/' \
201+
-DENABLE_FLAT_PACKAGE=ON
202+
cmake --build cmake-build-frontend-sdl2 --parallel
203+
204+
- name: Package projectMSDL
205+
run: |
206+
cd cmake-build-frontend-sdl2
207+
cpack -G TGZ
208+
209+
- name: Upload Artifact
210+
uses: actions/upload-artifact@v4
211+
with:
212+
name: projectMSDL-Linux-Portable-x86_64
213+
path: cmake-build-frontend-sdl2/*.tar.gz

0 commit comments

Comments
 (0)