-
-
Notifications
You must be signed in to change notification settings - Fork 938
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CI: Build with ubuntu-24.04 #5919
Conversation
770a737
to
8111e59
Compare
This comment was marked as outdated.
This comment was marked as outdated.
Lines 41 to 42 in f5c5f32
This part of the build script (added by #5135) is problematic because due to the inexistence of |
@buzzhuzz may be able to shed some light here. |
That's been resolved with d8c88b4 😄
|
So here is a better analysis on https://github.com/SoftFever/OrcaSlicer/actions/runs/9721907623/job/26835686880: AppImage requires FUSE 2, which is not available by default on Ubuntu 22.04 and 24.04 (they both ship with FUSE 3 instead), as a runtime dependency. c2eb21c tries to mitigate this by manually installing FUSE 2 during the workflow, but this means that users may need to install FUSE 2 to launch the built OrcaSlicer binary (or possibly, any AppImage in general). Gotta see how the build goes first though. |
c2eb21c
to
f16ffef
Compare
This comment was marked as outdated.
This comment was marked as outdated.
Can confirm the build successfully running on Ubuntu 24.04. Hurray! |
f16ffef
to
cb92c3e
Compare
This comment was marked as outdated.
This comment was marked as outdated.
Once |
cb92c3e
to
1dd57a0
Compare
This comment was marked as outdated.
This comment was marked as outdated.
We cannot really tell a priori what changes will be required to the workflow when |
From some of my previous testing, you wouldn't be able to any binaries built on a new version of Ubuntu on an older version. If i remember, it was glib causing issues because it couldn't find the correct version. |
Do you mean that binaries built on a newer version of Ubuntu cannot be run on an older version of Ubuntu? You are probably right, but I don't think it is relevant with this PR's goal. This PR's goal is not to replace the existing workflow that runs on and generates binaries from To reiterate my point, this PR's goal is to publish two Linux binaries; one built on |
Ah! Makes much more sense! I didn't RTFM :) |
Patch File
diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml
--- .github/workflows/build_deps.yml
+++ .github/workflows/build_deps.yml
@@ -81,30 +81,22 @@
./build_release_macos.sh -dpx -a ${{ inputs.arch }} -t 10.15 -1
brew install zstd
- - name: Install Dependencies (Ubuntu 20.04)
- if: inputs.os == 'ubuntu-20.04'
+ - name: Install Ubuntu Build Dependencies
+ if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
working-directory: ${{ github.workspace }}
+ env:
+ apt-cmd: ${{ (inputs.os == 'ubuntu-20.04' && 'apt-fast') || (inputs.os == 'ubuntu-24.04' && 'sudo apt-get') || '' }}
+ webkit-ver: ${{ (inputs.os == 'ubuntu-20.04' && '4.0') || (inputs.os == 'ubuntu-24.04' && '4.1') || '' }}
run: |
- apt-fast update
- apt-fast install -y cmake git g++ build-essential libgl1-mesa-dev m4 \
+ ${{ env.apt-cmd }} update
+ ${{ env.apt-cmd }} install -y cmake git g++ build-essential libgl1-mesa-dev m4 \
libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules pkgconf \
- libglu1-mesa-dev libcairo2-dev libgtk-3-dev libsoup2.4-dev libwebkit2gtk-4.0-dev \
+ libglu1-mesa-dev libcairo2-dev libgtk-3-dev libsoup2.4-dev libwebkit2gtk-${{ env.webkit-ver }}-dev \
libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-bad libosmesa6-dev wget sudo autoconf curl libunwind-dev texinfo
- - name: Install Dependencies (Ubuntu 24.04)
- if: inputs.os == 'ubuntu-24.04'
- working-directory: ${{ github.workspace }}
- run: |
- sudo apt-get update
- sudo apt-get install -y cmake git g++ build-essential libgl1-mesa-dev m4 \
- libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules pkgconf \
- libglu1-mesa-dev libcairo2-dev libgtk-3-dev libsoup2.4-dev libwebkit2gtk-4.1-dev \
- libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-base1.0-dev \
- gstreamer1.0-plugins-bad libosmesa6-dev wget sudo autoconf curl libunwind-dev texinfo
-
- name: Build on Ubuntu
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
working-directory: ${{ github.workspace }}
run: |
@@ -131,22 +123,17 @@
with:
name: OrcaSlicer_dep_win64_${{ env.date }}
path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep*.zip
- - name: Upload Ubuntu 20.04 artifacts
- if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' }}
+ - name: Upload Ubuntu artifacts
+ if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
+ env:
+ ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
uses: actions/upload-artifact@v4
with:
- name: OrcaSlicer_dep_ubuntu_${{ env.date }}
+ name: OrcaSlicer_dep_ubuntu_${{ env.ubuntu-ver }}_${{ env.date }}
path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep_ubuntu_*.tar.gz
- - name: Upload Ubuntu 24.04 artifacts
- if: ${{ ! env.ACT && inputs.os == 'ubuntu-24.04' }}
- uses: actions/upload-artifact@v4
- with:
- name: OrcaSlicer_dep_ubuntu_2404_${{ env.date }}
- path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep_ubuntu_*.tar.gz
-
build_orca:
name: Build OrcaSlicer
needs: [build_deps]
if: ${{ !cancelled() && !inputs.build-deps-only && (inputs.valid-cache == true && needs.build_deps.result == 'skipped') || (inputs.valid-cache != true && success()) }}
diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml
--- .github/workflows/build_orca.yml
+++ .github/workflows/build_orca.yml
@@ -220,27 +220,20 @@
max_releases: 1
# Ubuntu
- name: Install dependencies
- if: inputs.os == 'ubuntu-20.04'
+ if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
+ env:
+ apt-cmd: ${{ (inputs.os == 'ubuntu-20.04' && 'apt-fast') || (inputs.os == 'ubuntu-24.04' && 'sudo apt-get') || '' }}
+ webkit-ver: ${{ (inputs.os == 'ubuntu-20.04' && '4.0') || (inputs.os == 'ubuntu-24.04' && '4.1') || '' }}
run: |
- apt-fast update
- apt-fast install -y autoconf build-essential cmake curl eglexternalplatform-dev \
+ ${{ env.apt-cmd }} update
+ ${{ env.apt-cmd }} install -y autoconf build-essential cmake curl eglexternalplatform-dev \
extra-cmake-modules file git libcairo2-dev libcurl4-openssl-dev libdbus-1-dev libglew-dev libglu1-mesa-dev \
libglu1-mesa-dev libgstreamer1.0-dev libgstreamerd-3-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \
libgtk-3-dev libgtk-3-dev libmspack-dev libosmesa6-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \
- libwebkit2gtk-4.0-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget
+ libwebkit2gtk-${{ env.webkit-ver }}-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget
- - name: Install dependencies
- if: inputs.os == 'ubuntu-24.04'
- run: |
- sudo apt-get update
- sudo apt-get install -y autoconf build-essential cmake curl eglexternalplatform-dev \
- extra-cmake-modules file git libcairo2-dev libcurl4-openssl-dev libdbus-1-dev libglew-dev libglu1-mesa-dev \
- libglu1-mesa-dev libgstreamer1.0-dev libgstreamerd-3-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \
- libgtk-3-dev libgtk-3-dev libmspack-dev libosmesa6-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \
- libwebkit2gtk-4.1-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget libfuse2t64
-
- name: Install dependencies from BuildLinux.sh
if: inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04'
shell: bash
run: sudo ./BuildLinux.sh -ur
@@ -267,40 +260,28 @@
cd ${{ github.workspace }}/resources/profiles
zip -r orca_custom_preset_tests.zip user/
- name: Upload artifacts Ubuntu
- if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' }}
+ if: ${{ ! env.ACT && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
+ env:
+ ubuntu-ver: ${{ (inputs.os == 'ubuntu-20.04' && '2004') || (inputs.os == 'ubuntu-24.04' && '2404') || '' }}
uses: actions/upload-artifact@v4
with:
- name: OrcaSlicer_Linux_${{ env.ver }}
+ name: OrcaSlicer_Linux_ubuntu_${{ env.ubuntu-ver }}_${{ env.ver }}
path: './build/OrcaSlicer_Linux_${{ env.ver }}.AppImage'
- - name: Upload artifacts Ubuntu
- if: ${{ ! env.ACT && inputs.os == 'ubuntu-24.04' }}
- uses: actions/upload-artifact@v4
- with:
- name: OrcaSlicer_Linux_ubuntu2404_${{ env.ver }}
- path: './build/OrcaSlicer_Linux_${{ env.ver }}.AppImage'
- name: Deploy Ubuntu release
- if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04' }}
+ if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04' || inputs.os == 'ubuntu-24.04' }}
+ env:
+ ubuntu-ver-str: ${{ (inputs.os == 'ubuntu-24.04' && '_Ubuntu2404') || '' }}
uses: WebFreak001/[email protected]
with:
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723
- asset_path: ./build/OrcaSlicer_Linux_${{ env.ver }}.AppImage
+ asset_path: ./build/OrcaSlicer_Linux${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
asset_name: OrcaSlicer_Linux_${{ env.ver }}.AppImage
asset_content_type: application/octet-stream
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
- - name: Deploy Ubuntu release
- if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04' }}
- uses: WebFreak001/[email protected]
- with:
- upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
- release_id: 137995723
- asset_path: ./build/OrcaSlicer_Linux_${{ env.ver }}.AppImage
- asset_name: OrcaSlicer_Linux_ubuntu2404_${{ env.ver }}.AppImage
- asset_content_type: application/octet-stream
- max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
- name: Deploy orca_custom_preset_tests
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04' }}
uses: WebFreak001/[email protected]
|
Applied as 1e774b6. Thanks! |
Co-authored-by: Ocraftyone <[email protected]>
Runtime dependency for AppImage
013f0ad
to
5b2609a
Compare
|
Looks great! |
@SoftFever do we need a new release to have the 24.04 AppImage build available? Or can the new AppImage be built for the existing release? |
You can download the 24.04 AppImage from the latest GHA run for the time being: https://github.com/SoftFever/OrcaSlicer/actions/runs/9762226827/artifacts/1660012415 Edit: now the build is available in Nightly too |
This PR adds a GHA workflow that runs on
ubuntu-24.04
.Context
Latest Linux distros (e.g., Ubuntu 24.04, Fedora 40) ship with newer versions of WebKit than what is used in the current GHA workflow (
libwebkit2gtk-4.0
). Making the matter even worse, the newer version (i.e.,libwebkit2gtk-4.1
) is not available on theubuntu-20.04
runner image and the olderlibwebkit2gtk-4.0
is not available on the latest distros.To mitigate this issue, this PR creates another build using the
ubuntu-24.04
image, forcing the newer version of WebKit to be used in the build.Verification
ubuntu-24.04
runnerubuntu-24.04
running on Ubuntu 24.04Attribution / Credit
This PR is inspired from the approach taken by PrusaSlicer v2.8.0. All commits in this PR are my own though.