Skip to content

Replace godot-videodecoder with EIRTeam.FFmpeg #817

Replace godot-videodecoder with EIRTeam.FFmpeg

Replace godot-videodecoder with EIRTeam.FFmpeg #817

Workflow file for this run

name: 🍎 macOS Builds
on:
push:
branches:
- 'main'
pull_request:
jobs:
extract-sdk:
runs-on: "macos-12"
name: Extract SDK
steps:
- name: "Load cache"
uses: actions/cache@v4
id: "cache"
with:
path: ~/cached_builds/sdk
key: MacOS-sdk
save-always: true
continue-on-error: true
- name: "Checkout osxcross"
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v3
with:
repository: tpoechtrager/osxcross
- name: "Extract SDK"
if: steps.cache.outputs.cache-hit != 'true'
run: |
XCODEDIR=/Applications/Xcode_14.0.1.app ./tools/gen_sdk_package.sh
mkdir -p -v ~/cached_builds/sdk
mv MacOSX12.3.sdk.tar.xz ~/cached_builds/sdk
compile-ffmpeg:
needs: extract-sdk
runs-on: "ubuntu-20.04"
name: Compile FFMPEG
steps:
- name: "Load cache (SDK)"
uses: actions/cache@v4
id: "cache-sdk"
with:
path: ~/cached_builds/sdk
key: MacOS-sdk
continue-on-error: false
- name: "Load cache (videodecoder)"
uses: actions/cache@v4
id: "cache-videodecoder"
with:
path: |
cached_builds/videodecoder/macos_x86
cached_builds/videodecoder/macos_arm64
key: MacOS-videodecoder-build
save-always: true
continue-on-error: true
- name: "Checkout godot-videodecoder"
if: steps.cache-videodecoder.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
repository: retrohub-org/godot-videodecoder
submodules: recursive
- name: "Compile"
if: steps.cache-videodecoder.outputs.cache-hit != 'true'
env:
PLATFORMS: macos_x86,macos_arm64
run: |
mv ~/cached_builds/sdk/MacOSX12.3.sdk.tar.xz darwin_sdk
./build_gdextension.sh
mkdir -p -v cached_builds/videodecoder
cp -r -v target/* cached_builds/videodecoder
build-macos:
needs: compile-ffmpeg
runs-on: "macos-12"
name: Build
steps:
- name: "Checkout RetroHub"
uses: actions/checkout@v4
with:
path: "retrohub"
- name: "Load cached objects (Godot editor)"
uses: actions/cache@v4
id: "cache_editor"
with:
path: cached_builds/editor/Godot.app
key: MacOS-editor-build
continue-on-error: true
- name: "Load cached objects (Godot templates)"
uses: actions/cache@v4
id: "cache_template"
with:
path: cached_builds/template/macos.zip
key: MacOS-template-build
continue-on-error: true
- name: "Load cached objects (Videodecoder)"
uses: actions/cache@v4
id: "cache_videodecoder"
with:
path: |
cached_builds/videodecoder/macos_x86
cached_builds/videodecoder/macos_arm64
key: MacOS-videodecoder-build
continue-on-error: false
- name: "Checkout Custom Godot"
if: steps.cache_template.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
repository: retrohub-org/godot
ref: retrohub_patches_4x
path: "godot"
- name: "[Godot] Dependencies"
if: steps.cache_template.outputs.cache-hit != 'true'
working-directory: ./godot
shell: bash
run: |
brew install scons yasm
- name: "[Godot] Setup Godot build cache"
if: steps.cache_template.outputs.cache-hit != 'true'
uses: ./godot/.github/actions/godot-cache
with:
cache-name: macos-template
continue-on-error: true
- name: "[Godot] Setup python and scons"
if: steps.cache_template.outputs.cache-hit != 'true'
uses: ./godot/.github/actions/godot-deps
- name: "[Godot] Setup Vulkan SDK"
if: steps.cache_template.outputs.cache-hit != 'true'
run: |
sh godot/misc/scripts/install_vulkan_sdk_macos.sh
- name: "[Godot] Compilation [template] (x86_64)"
if: steps.cache_template.outputs.cache-hit != 'true'
uses: ./godot/.github/actions/godot-build
with:
root: ./godot
sconsflags: verbose=yes warnings=all werror=no use_lto=yes optimize=size arch=x86_64
platform: macos
target: template_release
tools: false
- name: "[Godot] Compilation [template] (arm64)"
if: steps.cache_template.outputs.cache-hit != 'true'
uses: ./godot/.github/actions/godot-build
with:
root: ./godot
sconsflags: verbose=yes warnings=all werror=no use_lto=yes optimize=size arch=arm64
platform: macos
target: template_release
tools: false
- name: "[Godot] Clean and cache template build"
if: steps.cache_template.outputs.cache-hit != 'true'
working-directory: godot
run: |
lipo -create bin/godot.macos.template_release.x86_64 bin/godot.macos.template_release.arm64 -output bin/godot.macos.template_release.universal
cp -r misc/dist/macos_template.app .
mkdir -p -v macos_template.app/Contents/MacOS
cp bin/godot.macos.template_release.universal macos_template.app/Contents/MacOS/godot_macos_release.universal
chmod +x macos_template.app/Contents/MacOS/godot_macos_release.universal
zip -q -9 -r macos.zip macos_template.app
mkdir -p -v ../cached_builds/template
mv macos.zip ../cached_builds/template
- name: "[Godot] Download editor"
if: steps.cache_editor.outputs.cache-hit != 'true'
run: |
wget https://downloads.tuxfamily.org/godotengine/4.2.1/Godot_v4.2.1-stable_macos.universal.zip
unzip Godot_v4.2.1-stable_macos.universal.zip
mkdir -p -v cached_builds/editor
mv Godot.app cached_builds/editor/
- name: "[videodecoder] Bundle x86_64 and arm64 libraries"
run: |
mkdir -p -v cached_builds/videodecoder/macos
for f in cached_builds/videodecoder/macos_x86/*.dylib; do
lipo -create $f cached_builds/videodecoder/macos_arm64/$(basename $f) -output cached_builds/videodecoder/macos/$(basename $f)
done
file cached_builds/videodecoder/macos/*.dylib
- name: "Setup templates and libraries"
env:
TEMPLATE_PATH: /Users/runner/Library/Application Support/Godot/export_templates/4.2.1.stable
run: |
mkdir -p -v "$TEMPLATE_PATH"
cp cached_builds/template/macos.zip "$TEMPLATE_PATH"
ln -s ../../../cached_builds/videodecoder/macos retrohub/addons/godot-videodecoder/macos
mkdir -p -v export/macos
- name: "Package default themes"
uses: ./retrohub/.github/actions/get-default-themes
- name: "Exporting RetroHub"
working-directory: retrohub
run: |
../cached_builds/editor/Godot.app/Contents/MacOS/Godot --headless --verbose --export-release "macOS" ../export/macos/RetroHub.app
- name: "Sign executable"
working-directory: export/macos
run: |
xattr -dr com.apple.quarantine "RetroHub.app"
codesign -s - --force --deep "RetroHub.app"
- name: "Upload Artifacts"
uses: actions/upload-artifact@v4
with:
name: macos
path: export/macos