diff --git a/.github/scripts/utils.zsh/setup_linux b/.github/scripts/utils.zsh/setup_linux index 7651f041f..9b6231dbd 100644 --- a/.github/scripts/utils.zsh/setup_linux +++ b/.github/scripts/utils.zsh/setup_linux @@ -35,14 +35,27 @@ if (( ! (${skips[(Ie)all]} + ${skips[(Ie)deps]}) )) { sudo apt-get install ${apt_args} gcc-${${target##*-}//_/-}-linux-gnu g++-${${target##*-}//_/-}-linux-gnu } - sudo add-apt-repository --yes ppa:obsproject/obs-studio - sudo apt update + local dist_version + read -r dist_version <<< "$(source /etc/os-release; print "${VERSION_ID}")" - sudo apt-get install ${apt_args} \ - build-essential \ - libgles2-mesa-dev \ - libsimde-dev \ + autoload -Uz is-at-least + if ! is-at-least 26 ${dist_version}; then + sudo add-apt-repository --yes ppa:obsproject/obs-studio + sudo apt update + fi + + local -a _obs_packages=( + build-essential + libgles2-mesa-dev + libsimde-dev obs-studio + ) + + if is-at-least 26 ${dist_version}; then + _obs_packages+=(libobs-dev) + fi + + sudo apt-get install ${apt_args} ${_obs_packages} local -a _qt_packages=() diff --git a/.github/workflows/build-debian.yml b/.github/workflows/build-debian.yml index 50b2b9ad9..095e43cf1 100644 --- a/.github/workflows/build-debian.yml +++ b/.github/workflows/build-debian.yml @@ -18,7 +18,11 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-latest, ubuntu-26.04] steps: - uses: actions/checkout@v6 @@ -52,5 +56,5 @@ jobs: if: success() uses: actions/upload-artifact@v7 with: - name: "obs-scene-switcher.deb" + name: "obs-scene-switcher-${{ matrix.os }}.deb" path: ${{ github.workspace }}/*.deb diff --git a/.github/workflows/build-project.yaml b/.github/workflows/build-project.yaml index 9c4ae1c88..752c5cf3e 100644 --- a/.github/workflows/build-project.yaml +++ b/.github/workflows/build-project.yaml @@ -252,6 +252,77 @@ jobs: path: ${{ github.workspace }}/release/${{ steps.setup.outputs.pluginName }}-*-x86_64*-dbgsym.ddeb if-no-files-found: ignore + ubuntu-26-build: + name: Build for Ubuntu 26 🐧 + runs-on: ubuntu-26.04 + needs: check-event + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v6 + with: + submodules: recursive + fetch-depth: 0 + + - name: Set Up Environment 🔧 + id: setup + run: | + : Set Up Environment 🔧 + if [[ "${RUNNER_DEBUG}" ]]; then set -x; fi + + git_tag="$(git describe --tags)" + + read -r product_name product_version <<< \ + "$(jq -r '. | {name, version} | join(" ")' buildspec.json)" + + echo "pluginName=${product_name}" >> $GITHUB_OUTPUT + echo "pluginVersion=${git_tag}" >> $GITHUB_OUTPUT + + - uses: actions/cache@v5 + id: ccache-cache + with: + path: ${{ github.workspace }}/.ccache + key: ${{ runner.os }}-ccache-x86_64-${{ needs.check-event.outputs.config }} + restore-keys: | + ${{ runner.os }}-ccache-x86_64- + + - name: Set up Homebrew 🍺 + uses: Homebrew/actions/setup-homebrew@main + + - name: Build Plugin 🧱 + uses: ./.github/actions/build-plugin + with: + target: x86_64 + config: ${{ needs.check-event.outputs.config }} + + - name: Run tests + uses: ./.github/actions/run-tests + with: + target: x86_64 + config: ${{ needs.check-event.outputs.config }} + + - name: Package Plugin 📀 + uses: ./.github/actions/package-plugin + with: + package: ${{ fromJSON(needs.check-event.outputs.package) }} + target: x86_64 + config: ${{ needs.check-event.outputs.config }} + + - name: Upload Artifacts 📡 + uses: actions/upload-artifact@v7 + with: + name: ${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-ubuntu-26.04-x86_64-${{ needs.check-event.outputs.commitHash }} + path: ${{ github.workspace }}/release/${{ steps.setup.outputs.pluginName }}-*-x86_64*.* + + - name: Upload debug symbol artifacts 🪲 + uses: actions/upload-artifact@v7 + if: ${{ fromJSON(needs.check-event.outputs.package) }} + with: + name: ${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-ubuntu-26.04-x86_64-${{ needs.check-event.outputs.commitHash }}-dbgsym + path: ${{ github.workspace }}/release/${{ steps.setup.outputs.pluginName }}-*-x86_64*-dbgsym.ddeb + if-no-files-found: ignore + windows-build: name: Build for Windows 🪟 runs-on: windows-2022