Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions .github/actions/sync-shared-fsdk-files/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Sync shared Freedesktop SDK files
inputs:
fsdk-element:
description: Freedesktop SDK BuildStream element
default: freedesktop-sdk.bst
outputs:
fsdk-element:
description: Freedesktop SDK BuildStream element
value: ${{ inputs.fsdk-element }}
version:
description: Version of Freedesktop SDK
value: ${{ steps.sync.outputs.version }}
runs:
using: composite
steps:
- name: Parse ref
id: parse-ref
shell: bash
run: |
python .github/scripts/parse-bst-git-tag-ref.py elements/${{ inputs.fsdk-element }}

- name: Sync shared files
id: sync
shell: bash
run: |
git clone --branch=${{ steps.parse-ref.outputs.tag }} --depth=1 https://gitlab.com/freedesktop-sdk/freedesktop-sdk

for file in elements/plugins/*; do
if [ -f "freedesktop-sdk/$file" ]; then
cp freedesktop-sdk/$file $file
else
rm $file
fi
done

cp freedesktop-sdk/include/strip.yml include/strip.yml
sed -i "s/strip-binaries/strip-binaries-base/g" include/strip.yml

cp freedesktop-sdk/elements/include/ffmpeg.yml elements/include/ffmpeg.yml
sed -i '/public:/,/^$/d' elements/include/ffmpeg.yml
sed -i '/sources:/,/^$/d' elements/include/ffmpeg.yml
sed -i 's|public-stacks/|freedesktop-sdk.bst:public-stacks/|g' elements/include/ffmpeg.yml
sed -i 's|components/|freedesktop-sdk.bst:components/|g' elements/include/ffmpeg.yml

tag="${{ steps.parse-ref.outputs.tag }}"
prefix="freedesktop-sdk-"
version="${tag#$prefix}"

echo "version=$version" >> $GITHUB_OUTPUT

rm -rf freedesktop-sdk
30 changes: 3 additions & 27 deletions .github/workflows/bst-maintainance.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,36 +53,12 @@ jobs:
echo "changed=true" >> $GITHUB_OUTPUT
fi

- name: Parse the new ref
id: parse-ref
if: ${{ fromJSON(steps.check.outputs.changed) }}
shell: bash
run: |
python .github/scripts/parse-bst-git-tag-ref.py elements/${{ env.ELEMENT }}

- name: Sync shared files
id: sync
if: ${{ fromJSON(steps.check.outputs.changed) }}
shell: bash
run: |
git clone --branch=${{ steps.parse-ref.outputs.tag }} --depth=1 https://gitlab.com/freedesktop-sdk/freedesktop-sdk

for file in elements/plugins/*; do
if [ -f "freedesktop-sdk/$file" ]; then
cp freedesktop-sdk/$file $file
else
rm $file
fi
done

cp freedesktop-sdk/include/strip.yml include/strip.yml
sed -i "s/strip-binaries/strip-binaries-base/g" include/strip.yml

tag="${{ steps.parse-ref.outputs.tag }}"
prefix="freedesktop-sdk-"
version="${tag#$prefix}"

echo "version=$version" >> $GITHUB_OUTPUT
uses: ./.github/actions/sync-shared-fsdk-files
with:
fsdk-element: ${{ env.ELEMENT }}

- name: Create pull request
if: ${{ fromJSON(steps.check.outputs.changed) }}
Expand Down
34 changes: 34 additions & 0 deletions .github/workflows/check-code.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,37 @@ jobs:
uses: astral-sh/ruff-action@v3
with:
args: "format --check"

fsdk:
name: Re-sync Freedesktop SDK shared files
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Check for Changed Files
id: check
uses: obsproject/obs-studio/.github/actions/check-changes@19646f9434857120625524fbf15f254efa1afecc
with:
checkGlob: "'${{ env.WORKFLOW_FILEPATH }}' 'elements/plugins/*' 'elements/freedesktop-sdk.bst' 'include/strip.yml'"
diffFilter: 'ACM'

- name: Sync shared files
id: sync
if: ${{ fromJSON(steps.check.outputs.hasChangedFiles) }}
uses: ./.github/actions/sync-shared-fsdk-files

- name: Check if files have changed
if: ${{ !cancelled() && fromJSON(steps.check.outputs.hasChangedFiles) }}
shell: bash
run: |
: Check if the element has changed

if [[ -z "$(git status --porcelain)" ]]; then
echo "::notice::Files are in sync"
else
echo "::error::Files are not in sync"
exit 2
fi
35 changes: 11 additions & 24 deletions elements/components/ffmpeg.bst
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ kind: make
description: FFmpeg component based on Freedesktop SDK version

(@):
# Include file created by 'create_custom_fdo_sdk_include_ffmpeg' source in freedesktop-sdk junction.
- freedesktop-sdk.bst:elements/include/ffmpeg-custom.yml
- elements/include/ffmpeg.yml

build-depends:
(>):
Expand All @@ -13,11 +12,14 @@ depends:
(>):
- components/librist.bst
- components/srt.bst
- components/svt-av1.bst
- components/x264.bst

variables:
obs-conf-extra: >-
conf-extra: >-
--enable-encoders
--enable-decoders
--disable-programs
--disable-devices
--enable-gnutls
--enable-gpl
--enable-libx264
Expand All @@ -29,23 +31,6 @@ variables:
--enable-libaom
--enable-libsvtav1
--enable-nvenc
--disable-doc
--disable-programs
--disable-devices

# Only x264 is disabled in Freedesktop SDK
obs-missing-encoders: libx264,libx264rgb

conf-extra: >-
--enable-encoder=%{fdo-encoders},%{obs-missing-encoders}
--enable-decoder=%{fdo-decoders}
%{obs-conf-extra}
%{fdo-conf-extra}

config:
configure-commands:
- ./configure --prefix="%{prefix}" --libdir="%{libdir}" --arch="%{arch}" %{conf-local}
%{conf-extra}

public:
bst:
Expand All @@ -65,8 +50,10 @@ sources:
- kind: patch
path: patches/ffmpeg/0002-libaomenc-presets.patch
- kind: patch
path: patches/ffmpeg/0010-fdo-people-fdk-aac-gpl-compatible.patch
path: patches/ffmpeg/0010-lavc-vaapi_encode-Query-surface-alignment.patch
- kind: patch
path: patches/ffmpeg/0011-lavc-vaapi_encode_h265-Use-surface-alignment.patch
- kind: patch
path: patches/ffmpeg/0011-lavc-vaapi_encode-Query-surface-alignment.patch
path: patches/ffmpeg/0012-posix-ioctl-hack.patch
- kind: patch
path: patches/ffmpeg/0012-lavc-vaapi_encode_h265-Use-surface-alignment.patch
path: patches/ffmpeg/0013-svt-av1-v3.patch
2 changes: 1 addition & 1 deletion elements/components/jansson.bst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst

depends:
- freedesktop-sdk.bst:bootstrap-import.bst
- freedesktop-sdk.bst:public-stacks/runtime-minimal.bst

variables:
cmake-local: >-
Expand Down
2 changes: 1 addition & 1 deletion elements/components/libajantv2.bst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst

depends:
- freedesktop-sdk.bst:bootstrap-import.bst
- freedesktop-sdk.bst:public-stacks/runtime-minimal.bst

variables:
cmake-local: >-
Expand Down
12 changes: 12 additions & 0 deletions elements/components/libfdk-aac.bst
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
kind: autotools

build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst

depends:
- freedesktop-sdk.bst:public-stacks/runtime-minimal.bst

sources:
- kind: git_repo
url: freedesktop:wtaymans/fdk-aac-stripped
ref: 0fc0e0e0b89de3becd5f099eae725f13eeecc0d1
2 changes: 1 addition & 1 deletion elements/components/libqrcodegencpp.bst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst

depends:
- freedesktop-sdk.bst:bootstrap-import.bst
- freedesktop-sdk.bst:public-stacks/runtime-minimal.bst

variables:
qrcodegen-version: 1.8.0
Expand Down
2 changes: 1 addition & 1 deletion elements/components/libvpl.bst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst

depends:
- freedesktop-sdk.bst:bootstrap-import.bst
- freedesktop-sdk.bst:public-stacks/runtime-minimal.bst

variables:
cmake-local: >-
Expand Down
3 changes: 2 additions & 1 deletion elements/components/luajit.bst
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
kind: make

build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-make.bst
- freedesktop-sdk.bst:components/git-minimal.bst

depends:
- freedesktop-sdk.bst:bootstrap-import.bst
- freedesktop-sdk.bst:public-stacks/runtime-minimal.bst

variables:
# Build amalgamation as shared library without early stripping
Expand Down
4 changes: 2 additions & 2 deletions elements/components/mbedtls.bst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst

depends:
- freedesktop-sdk.bst:bootstrap-import.bst
- freedesktop-sdk.bst:public-stacks/runtime-minimal.bst

variables:
mbedtls-version: 3.6.4
Expand All @@ -18,7 +18,7 @@ variables:
sources:
# MbedTLS provide a release tarball that allows to avoid maintaining git submodules
- kind: tar
url:
url:
github:Mbed-TLS/mbedtls/releases/download/mbedtls-%{mbedtls-version}/mbedtls-%{mbedtls-version}.tar.bz2
ref: ec35b18a6c593cf98c3e30db8b98ff93e8940a8c4e690e66b41dfc011d678110
- kind: patch
Expand Down
2 changes: 1 addition & 1 deletion elements/components/nv-codec.bst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
kind: make

build-depends:
- freedesktop-sdk.bst:bootstrap-import.bst
- freedesktop-sdk.bst:public-stacks/buildsystem-make.bst

variables:
make-args: >-
Expand Down
2 changes: 1 addition & 1 deletion elements/components/rnnoise.bst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-autotools.bst

depends:
- freedesktop-sdk.bst:bootstrap-import.bst
- freedesktop-sdk.bst:public-stacks/runtime-minimal.bst

variables:
conf-local: >-
Expand Down
24 changes: 0 additions & 24 deletions elements/components/svt-av1.bst

This file was deleted.

2 changes: 1 addition & 1 deletion elements/components/swig.bst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ build-depends:
- components/luajit.bst

depends:
- freedesktop-sdk.bst:bootstrap-import.bst
- freedesktop-sdk.bst:public-stacks/runtime-minimal.bst

variables:
conf-local: >-
Expand Down
2 changes: 1 addition & 1 deletion elements/components/usrsctp.bst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-cmake.bst

depends:
- freedesktop-sdk.bst:bootstrap-import.bst
- freedesktop-sdk.bst:public-stacks/runtime-minimal.bst

variables:
# Disable SCTP IP code. Packets are handled by WebRTC so we don't need it
Expand Down
2 changes: 1 addition & 1 deletion elements/components/uthash.bst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
kind: manual

build-depends:
- freedesktop-sdk.bst:bootstrap-import.bst
- freedesktop-sdk.bst:public-stacks/buildsystem-make.bst

config:
install-commands:
Expand Down
3 changes: 2 additions & 1 deletion elements/components/x264.bst
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
kind: make

build-depends:
- freedesktop-sdk.bst:public-stacks/buildsystem-make.bst
- freedesktop-sdk.bst:components/nasm.bst

depends:
- freedesktop-sdk.bst:bootstrap-import.bst
- freedesktop-sdk.bst:public-stacks/runtime-minimal.bst

variables:
conf-local: >-
Expand Down
2 changes: 1 addition & 1 deletion elements/deps.bst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ depends:
- components/jansson.bst
- components/libajantv2.bst
- components/libdatachannel.bst
- components/libfdk-aac.bst
- components/libqrcodegencpp.bst
- components/librist.bst
- components/luajit.bst
Expand All @@ -17,7 +18,6 @@ depends:
- components/rnnoise.bst
- components/simde.bst
- components/srt.bst
- components/svt-av1.bst
- components/swig.bst
- components/uthash.bst
- components/websocketpp.bst
Expand Down
6 changes: 3 additions & 3 deletions elements/freedesktop-sdk.bst
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ kind: junction
sources:
- kind: git_tag
url: gitlab:freedesktop-sdk/freedesktop-sdk.git
track: release/24.08
# Update include/strip.yml, elements/include/ffmpeg.yml and elements/plugins if bumping Freedesktop SDK release branch
track: release/25.08
track-tags: True
ref: freedesktop-sdk-24.08.26-0-g9673d931e0bbd49d60f808ab1d4389ffa443b342
- kind: create_custom_fdo_sdk_include_ffmpeg
ref: freedesktop-sdk-25.08.1-0-g3405120e658f2e84c594aeedff456e16a1a2b185

config:
options:
Expand Down
Loading
Loading