Add Flatpak aarch64 builds (Part 1: build)#9979
Add Flatpak aarch64 builds (Part 1: build)#9979tytan652 wants to merge 7 commits intoobsproject:masterfrom
Conversation
b764a6b to
d8c7fb0
Compare
| pull_request) | ||
| config_data=('codesign:false' 'notarize:false' 'package:false' 'config:RelWithDebInfo') | ||
| if gh pr view ${{ github.event.number }} --json labels \ | ||
| config_data=('codesign:false' 'notarize:false' 'package:false' 'config:RelWithDebInfo' 'flatpakArch:["x86_64"]') |
There was a problem hiding this comment.
I'd rather have this step create a bespoke matrix variable instead of putting this in config_data, as described in the GitHub action documentation:
I'm fine with flatpakArch being set up as a bespoke output variable depending on GitHub event.
There was a problem hiding this comment.
Assigning a whole matrix looks unnecessary, making the JSON object (only an array) more complex (an array in an object) where there is only one variable does not look worth it.
I was aware of this feature to set up a matrix but for one variable, it looks too much.
| config_data[0]='codesign:true' | ||
| config_data[2]='package:true' | ||
| fi | ||
| if echo "${label_data}" \ |
There was a problem hiding this comment.
I'm not really happy about introducing a bespoke label just for this, but code-wise it's fine.
There was a problem hiding this comment.
I could work and make the aarch64 build happen on PR if a cache is there and a label to force the build without cache.
But I would prefer to know, how well/fast it is on master before enabling it on every PR (if cache available).
Note that the label name can be discussed.
|
Changes seem fine overall (apart from specific review comments), though I'm somewhat unsure about the added complexity. Also how does this impact our cache usage? The Flatpak cache is the largest line item in our cache usage and I wonder how aarch64 builds will impact this. |
2fcbb74 to
f8041da
Compare
https://github.com/tytan652/obs-studio/actions/runs/7170036033/job/19532684838#step:9:5 Looks like it will be the almost same size as x86_64, so 2 times ~2GB in total. |
b8377ed to
a9ef18c
Compare
|
Are there any updates to this? |
None of Intel runtime supports non-x86_64 arches
Reusable workflow can have a matrix applied to the whole workflow which cleanly workaround job with a matrix not having outputs per iteration
This allows to workaround the 6 hours time limit per job. This is needed to enable to build Flatpak with QEMU emulation.
Requires a label to be enabled on pull requests
a9ef18c to
0a74df6
Compare
|
Will be refactored after #10934 has been discussed |
|
Can the build-related changes go in first without waiting for CI / caching stuff? It would be very useful already to be able to build the flatpak locally. I can rebase/simplify the changes. |
No, there is no point to it if we can't use CI to test building the manifest on both architectures. Also I prioritize getting away from the KDE Sdk and do pre-build deps with the PR I mentioned in my previous message (because it also remove of the caching trouble on this side). |
|
If anyone's looking for a way to build it now, all the necessary changes are: diff --git a/build-aux/com.obsproject.Studio.json b/build-aux/com.obsproject.Studio.json
index ddfe0e7729..29670b606b 100644
--- a/build-aux/com.obsproject.Studio.json
+++ b/build-aux/com.obsproject.Studio.json
@@ -83,7 +83,6 @@
"-DENABLE_VLC=OFF",
"-DENABLE_AJA=ON",
"-DENABLE_LIBFDK=ON",
- "-DENABLE_QSV11=ON",
"-DENABLE_DECKLINK=OFF"
],
"secret-opts": [
diff --git a/build-aux/modules/10-mbedtls.json b/build-aux/modules/10-mbedtls.json
index 7f63a0bb3b..3f02e9bcf1 100644
--- a/build-aux/modules/10-mbedtls.json
+++ b/build-aux/modules/10-mbedtls.json
@@ -5,6 +5,7 @@
"config-opts": [
"-DCMAKE_BUILD_TYPE=Release",
"-DCMAKE_POSITION_INDEPENDENT_CODE=ON",
+ "-DMBEDTLS_FATAL_WARNINGS=OFF",
"-DUSE_SHARED_MBEDTLS_LIBRARY=ON",
"-DUSE_STATIC_MBEDTLS_LIBRARY=OFF",
"-DENABLE_TESTING=OFF",
diff --git a/build-aux/modules/50-intel-media-sdk.json b/build-aux/modules/50-intel-media-sdk.json
index 8859693765..7a8befcb06 100644
--- a/build-aux/modules/50-intel-media-sdk.json
+++ b/build-aux/modules/50-intel-media-sdk.json
@@ -1,5 +1,8 @@
{
"name": "intel-media-sdk",
+ "only-arches": [
+ "x86_64"
+ ],
"buildsystem": "cmake-ninja",
"builddir": true,
"config-opts": [
diff --git a/build-aux/modules/50-vpl-gpu-rt.json b/build-aux/modules/50-vpl-gpu-rt.json
index 8c9755a4c1..431dedaf5b 100644
--- a/build-aux/modules/50-vpl-gpu-rt.json
+++ b/build-aux/modules/50-vpl-gpu-rt.json
@@ -1,5 +1,8 @@
{
"name": "vpl-gpu-rt",
+ "only-arches": [
+ "x86_64"
+ ],
"buildsystem": "cmake-ninja",
"builddir": true,
"config-opts": [
diff --git a/build-aux/modules/99-cef.json b/build-aux/modules/99-cef.json
index 623f423fda..91bb2b02ec 100644
--- a/build-aux/modules/99-cef.json
+++ b/build-aux/modules/99-cef.json
@@ -17,8 +17,8 @@
"sources": [
{
"type": "archive",
- "url": "https://cdn-fastly.obsproject.com/downloads/cef_binary_6533_linux_x86_64_v6.tar.xz",
- "sha256": "7963335519a19ccdc5233f7334c5ab023026e2f3e9a0cc417007c09d86608146"
+ "url": "https://cdn-fastly.obsproject.com/downloads/cef_binary_6533_linux_aarch64_v6.tar.xz",
+ "sha256": "642514469eaa29a5c887891084d2e73f7dc2d7405f7dfa7726b2dbc24b309999"
}
]
} |
Description
Add aarch64 support to the manifest and to the CI with a different approach from #8105.
Important
Publish workflow will be worked on once the PR design for build is approved.
Caution
This PR does not mean that RPis (or alike) will be supported, like x86_64 machines not all of them can handle OBS Studio.
About aarch64 on CI:
Building through QEMU emulation is really slow. So to avoid timing out
the job (6h), the original job is split in two.
The first job build dependencies (4-5h) and creates an artifact, if the cache already exist the
build is skipped.
And the second job build CEF and OBS Studio by relying on the cache, if no cache on the artifact of the previous job (2-3h without cache).
aarch64 builds are not enabled by default on the main workflow on PRs.
Motivation and Context
Publish Flatpak aarch64 builds.
How Has This Been Tested?
CI with a PR on my fork: tytan652#16 (aarch64 artifacts availlable)
Types of changes
Checklist: