Skip to content

Replace godot-videodecoder with EIRTeam.FFmpeg #852

Replace godot-videodecoder with EIRTeam.FFmpeg

Replace godot-videodecoder with EIRTeam.FFmpeg #852

Workflow file for this run

name: 🏁 Windows Builds
on:
push:
branches:
- 'main'
pull_request:
env:
GODOT_VERSION: "4.2.1"
jobs:
build-ffmpeg:
runs-on: "ubuntu-20.04"
name: Build FFmpeg (${{ matrix.name }})
strategy:
matrix:
include:
- name: 32 Bits
cache_key: x86_32
arch: win32
- name: 64 Bits
cache_key: x86_64
arch: win64
steps:
- name: "Load cached build"
id: "cache_ffmpeg"
uses: actions/cache@v4
with:
path: cached_builds/ffmpeg
key: Windows-${{ matrix.cache_key }}-ffmpeg-build
restore-keys: Windows-${{ matrix.cache_key }}-ffmpeg-build
lookup-only: true
save-always: true
continue-on-error: true
- name: "Checkout FFmpeg"
if: steps.cache_ffmpeg.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
repository: retrohub-org/FFmpeg-Builds
path: "ffmpeg"
- name: "Free space"
if: steps.cache_ffmpeg.outputs.cache-hit != 'true'
run: |
df -h
sudo apt-get clean
docker system prune -a -f
sudo rm -rf /usr/local/lib/android /usr/share/dotnet /opt/ghc
df -h
- name: "Compilation"
if: steps.cache_ffmpeg.outputs.cache-hit != 'true'
working-directory: ./ffmpeg
run: |
./makeimage.sh ${{ matrix.arch }} lgpl-godot 6.0
./build.sh ${{ matrix.arch }} lgpl-godot 6.0
mkdir -p -v ../cached_builds/ffmpeg
tar -xvf artifacts/ffmpeg*${{ matrix.arch }}-lgpl-godot-6.0.tar.xz --directory=../cached_builds/ffmpeg --strip-components=1
ls -la ../cached_builds/ffmpeg
build-eirteam_ffmpeg:
runs-on: "windows-latest"
name: Build EIRTeam.FFmpeg (${{ matrix.name }})
needs: [build-ffmpeg]
strategy:
matrix:
include:
- name: 32 Bits
cache_key: x86_32
arch: x86_32
eirteam_arch: win32
- name: 64 Bits
cache_key: x86_64
arch: x86_64
eirteam_arch: win64
steps:
- name: "Load cached build"
uses: actions/cache@v4
id: "cache_eirteam_ffmpeg"
with:
path: cached_builds/eirteam_ffmpeg/${{ matrix.eirteam_arch }}
key: Windows-${{ matrix.cache_key }}-eirteam_ffmpeg-build
restore-keys: Windows-${{ matrix.cache_key }}-eirteam_ffmpeg-build
lookup-only: true
save-always: true
enableCrossOsArchive: true
continue-on-error: true
- name: "Load FFmpeg build"
id: "cache_ffmpeg"
if: steps.cache_eirteam_ffmpeg.outputs.cache-hit != 'true'
uses: actions/cache@v4
with:
path: cached_builds/ffmpeg
key: Windows-${{ matrix.cache_key }}-ffmpeg-build
restore-keys: Windows-${{ matrix.cache_key }}-ffmpeg-build
fail-on-cache-miss: true
enableCrossOsArchive: true
continue-on-error: false
- name: "Checkout EIRTeam.FFmpeg"
if: steps.cache_eirteam_ffmpeg.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
repository: retrohub-org/EIRTeam.FFmpeg
submodules: recursive
path: "eirteam_ffmpeg"
- name: "Install dependencies"
if: steps.cache_eirteam_ffmpeg.outputs.cache-hit != 'true'
run: |
python -m pip install scons==4.4.0
- name: "Compilation"
if: steps.cache_eirteam_ffmpeg.outputs.cache-hit != 'true'
working-directory: ./eirteam_ffmpeg
run: |
New-Item thirdparty -ItemType Directory -Force -ea 0
Move-Item -Path ../cached_builds/ffmpeg -Destination thirdparty
cd gdextension_build
scons arch=${{ matrix.arch }} verbose=yes target=template_release
scons arch=${{ matrix.arch }} verbose=yes target=template_debug
New-Item ../../cached_builds/eirteam_ffmpeg -ItemType Directory -Force -ea 0
Copy-Item -Path build/addons/ffmpeg/${{ matrix.eirteam_arch }} -Destination ../../cached_builds/eirteam_ffmpeg -Recurse
build-godot:
runs-on: "ubuntu-20.04"
name: Build Godot (${{ matrix.name }})
strategy:
matrix:
include:
- name: 32 Bits
cache_key: x86_32
arch: x86_32
bin_template: godot.windows.template_release.x86_32.exe
bin_editor: godot.linuxbsd.editor.x86_32
template: godot_32.exe
- name: 64 Bits
cache_key: x86_64
arch: x86_64
bin_template: godot.windows.template_release.x86_64.exe
bin_editor: godot.linuxbsd.editor.x86_64
template: godot_64.exe
steps:
- name: "Load cached build"
uses: actions/cache@v4
id: "cache_godot"
with:
path: |
cached_builds/editor/godot
cached_builds/template/${{ matrix.template }}
key: Windows-${{ matrix.cache_key }}-godot-build
restore-keys: Windows-${{ matrix.cache_key }}-godot-build
lookup-only: true
save-always: true
enableCrossOsArchive: true
continue-on-error: true
- name: "Checkout Custom Godot"
if: steps.cache_godot.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
repository: retrohub-org/godot
ref: retrohub_patches_4x
path: "godot"
- name: "Install dependencies"
if: steps.cache_godot.outputs.cache-hit != 'true'
working-directory: ./godot
shell: bash
run: |
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt-get install -qq mesa-vulkan-drivers
sudo dpkg --add-architecture i386
sudo apt-get update
# The actual dependencies
sudo apt-get install build-essential gcc-multilib g++-multilib pkg-config libc6-dev-i386 libx11-dev libx11-dev:i386 \
libxcursor-dev libxcursor-dev:i386 libxinerama-dev libxinerama-dev:i386 libx11-dev:i386 libgl1-mesa-dev \
libgl1-mesa-dev:i386 libglu-dev libasound2-dev libpulse-dev libdbus-1-dev libudev-dev libxi-dev \
libxi-dev:i386 libxrandr-dev libxrandr-dev:i386 yasm xvfb wget unzip mingw-w64
sudo update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix
sudo update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix
sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
- name: "Setup Godot build cache"
if: steps.cache_godot.outputs.cache-hit != 'true'
uses: ./godot/.github/actions/godot-cache
with:
cache-name: windows-template
continue-on-error: true
- name: "Setup python and scons"
if: steps.cache_godot.outputs.cache-hit != 'true'
uses: ./godot/.github/actions/godot-deps
- name: "Compilation [editor]"
if: steps.cache_godot.outputs.cache-hit != 'true'
uses: ./godot/.github/actions/godot-build
with:
root: ./godot
sconsflags: verbose=yes werror=no production=yes arch=${{ matrix.arch }}
platform: linuxbsd
target: editor
- name: "Compilation [template]"
if: steps.cache_godot.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=${{ matrix.arch }}
platform: windows
target: template_release
- name: "Clean and cache template build"
if: steps.cache_godot.outputs.cache-hit != 'true'
run: |
mkdir -p -v cached_builds/editor
mkdir -p -v cached_builds/template
mv godot/bin/${{ matrix.bin_editor }} cached_builds/editor/godot
mv godot/bin/${{ matrix.bin_template }} cached_builds/template/${{ matrix.template }}
build-retrohub:
runs-on: "ubuntu-20.04"
name: Build RetroHub (${{ matrix.name }})
needs: [build-godot, build-eirteam_ffmpeg]
strategy:
matrix:
include:
- name: 32 Bits
cache_key: x86_32
arch: x86_32
template: godot_32.exe
eirteam_ffmpeg: win32
- name: 64 Bits
cache_key: x86_64
arch: x86_64
template: godot_64.exe
eirteam_ffmpeg: win64
steps:
- name: "Load EIRTeam.FFmpeg build"
uses: actions/cache@v4
id: "cache_eirteam_ffmpeg"
with:
path: cached_builds/eirteam_ffmpeg/${{ matrix.eirteam_ffmpeg }}
key: Windows-${{ matrix.cache_key }}-eirteam_ffmpeg-build
restore-keys: Windows-${{ matrix.cache_key }}-eirteam_ffmpeg-build
fail-on-cache-miss: true
enableCrossOsArchive: true
continue-on-error: false
- name: "Load Godot builds"
uses: actions/cache@v4
id: "cache_godot"
with:
path: |
cached_builds/editor/godot
cached_builds/template/${{ matrix.template }}
key: Windows-${{ matrix.cache_key }}-godot-build
restore-keys: Windows-${{ matrix.cache_key }}-godot-build
fail-on-cache-miss: true
continue-on-error: false
- name: "Checkout RetroHub"
uses: actions/checkout@v4
with:
path: "retrohub"
- name: "Setup templates and libraries"
env:
TEMPLATE_PATH: /home/runner/.local/share/godot/export_templates/${{ env.GODOT_VERSION }}.retrohub
run: |
mkdir -p -v $TEMPLATE_PATH
cp cached_builds/template/${{ matrix.template }} $TEMPLATE_PATH/windows_release_${{ matrix.arch }}.exe
ln -s ${{ github.workspace }}/cached_builds/eirteam_ffmpeg/${{ matrix.eirteam_ffmpeg }} retrohub/addons/ffmpeg/${{ matrix.eirteam_ffmpeg }}
mkdir -p -v export/windows_${{ matrix.arch }}
- name: "Package default themes"
uses: ./retrohub/.github/actions/get-default-themes
- name: "Import project"
working-directory: retrohub
env:
GODOT_PATH: ${{ github.workspace }}/cached_builds/editor/godot
run: |
# The first import loads EIRTeam.FFmpeg, an addon which blocks the editor as it requires a restart
timeout 30s $GODOT_PATH --headless --editor || true
$GODOT_PATH --headless --editor --quit-after 100
- name: "Exporting RetroHub"
working-directory: retrohub
env:
GODOT_PATH: ${{ github.workspace }}/cached_builds/editor/godot
run: |
$GODOT_PATH --headless --export-release "Windows (${{ matrix.arch }})" ../export/windows_${{ matrix.arch }}/RetroHub.exe
- name: "Upload Artifacts"
uses: actions/upload-artifact@v4
with:
name: windows-${{ matrix.arch }}
path: export/windows_${{ matrix.arch }}