Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
530 commits
Select commit Hold shift + click to select a range
e9b7952
cache: Don't use _ for translating log messages
nirbheek Oct 30, 2024
1203e98
cerbero: Add a --dry-run argument for cache commands
nirbheek Nov 5, 2024
4c117c0
cerbero: Install setuptools when bootstrapping on Windows
nirbheek Nov 5, 2024
26555b1
ci: Store a separate deps cache for gst-plugins-rs
nirbheek Nov 5, 2024
0916d06
cmake: Disable CA certificates logic when not enabled in the Find Module
amyspark Nov 5, 2024
369a126
ci: Fix gst-plugins-rs being built before gen-cache
nirbheek Nov 6, 2024
e92580b
Revert "cache: Always use a tar command on Windows"
nirbheek Nov 6, 2024
22aedd2
cache: Don't verbosely list files while creating a cache
nirbheek Nov 6, 2024
0bfbe49
ci: Don't package norust variant for gst-plugins-rs trigger CI
nirbheek Nov 6, 2024
b14a2f0
ci: use latest windows image from monorepo
tp-m Nov 11, 2024
b2d9499
cerbero: Add support for namespaced source mirrors
nirbheek Nov 9, 2024
cb98c36
cmake: Fix typos detected when porting the examples
amyspark Nov 10, 2024
dce9eb9
ci: Don't assume that all runners have the same homedir
nirbheek Nov 13, 2024
85cd24b
ci: use the correct recipe name for gst-plugins-rs
ystreet Nov 14, 2024
2c1e4f4
shell: fix TemporaryDirectory error with the with statement when ZSH
rgonzalezfluendo Nov 13, 2024
921bfb3
ci: Fix gstreamer repo setup for examples job
nirbheek Nov 14, 2024
3a5b39d
openh264: update to v2.5.0
tp-m Nov 8, 2024
a510c24
ruff: Adding B006 - mutable objects as function argument defaults
dememax Sep 13, 2024
46ccde7
Fixing B006 - mutable objects as function argument defaults using Non…
dememax Sep 13, 2024
b03e020
cerbero: implement override_bootstrap_packages
pgsancho Nov 11, 2024
eab8226
ci: Explicitly define the needs for windows and macos/ios jobs
alatiera Nov 9, 2024
73c6fe3
ci: Add a trigger job
alatiera Nov 19, 2024
617acb4
gettext-m4.recipe: Update files_devel list
nirbheek Nov 19, 2024
e43396d
build: Generate plugins' Libtool files only for Android
amyspark Nov 6, 2024
1afc0c6
cerbero: Add support for Alma Linux
eerii Nov 21, 2024
d93366e
windows.config: Bump minimum OS version to Windows 10
amyspark Nov 21, 2024
10e2bbf
wavpack: Update to 5.7.0
amyspark Nov 26, 2024
783e451
cmake: properly use the distro-dependent libdir instead of hardcoding…
amyspark Nov 26, 2024
d98a671
winetricks: update to 20240105
amyspark Nov 13, 2024
88757d5
cerbero: Convert Mono IL paths for Wine
amyspark Nov 13, 2024
1426ac2
bootstrap, ci: Add xvfb to the list of prerequisites for the Windows …
amyspark Nov 13, 2024
b1b31dc
ci, WiX: update packaging and recipe to v5
amyspark Aug 23, 2024
f70c23f
hacks: clean up the XML prettyprinting functionality
amyspark Aug 23, 2024
c5a9f51
WiX: port Visual Studio templates to v5 and fix their deployment
amyspark Aug 30, 2024
b01ba6f
WiX: deduplicate packages by ABI
amyspark Nov 15, 2024
0fc65d7
WiX: implement installation directory selection for "Typical" and "Co…
amyspark Nov 15, 2024
dedad0a
ci: Add manual jobs for MSVC and MinGW 32-bit
nirbheek Nov 19, 2024
05dec6a
cerbero/wix: Fix capitalisation in the ABI string
nirbheek Nov 19, 2024
e0be44a
WiX: fix interpolation of the Project URL
amyspark Nov 23, 2024
6958f3c
WiX: conditionally disable sharding when cross-building
amyspark Nov 24, 2024
9737f08
WiX: always set the install directory in the Registry when missing
amyspark Nov 25, 2024
7fe1c2b
rust: Update to 1.83
sdroege Nov 29, 2024
0ef93e4
cargo-c: Update to 0.10.7
sdroege Nov 29, 2024
fe77798
pango: update to 1.54.0
amyspark May 25, 2023
d5fe7e1
pixman: update to 0.44.2
tp-m Dec 5, 2024
3fccffc
frei0r-plugins: Update to 2.3.3 and enable MSVC compatibility
amyspark Nov 26, 2024
5765988
gst-plugins-bad: Properly depend on frei0r-plugins on non-mobile OSes
amyspark Nov 26, 2024
7f754c8
bootstrap-windows.ps1: Install WMIC when missing
amyspark Nov 28, 2024
dc0e1d4
README: Update the WiX requirement to v5.0.1
ylatuya Dec 2, 2024
6095bac
cerbero: Improve support for RHEL based distros
eerii Dec 1, 2024
0d30d14
bootstrap-windows.ps1: Add WiX v5 and its dependency
amyspark Dec 6, 2024
4c39c04
bootstrap-windows.ps1: Try finding WiX when not in PATH but in WIX5
amyspark Dec 10, 2024
872b153
WiX: allow detecting the wix executable from the PATH and validate it…
amyspark Dec 6, 2024
9406e73
WiX: fix double nesting of bin folder when accessing the WIX5 envvar
amyspark Dec 6, 2024
2315ec1
WiX: Rework WiX searching, and give a friendly message for upgrades
nirbheek Dec 9, 2024
4a5b0b0
libshout: remove as it was never actually shipped
amyspark Dec 11, 2024
37bf4bf
librsvg: Update to 2.59.2
amyspark Dec 7, 2024
5604d35
zbar: update to 0.23.93
amyspark Dec 11, 2024
dbd5922
libdca: update to 0.0.7 and port to Meson
amyspark Dec 11, 2024
1ef5718
librsvg: Work around Apple ld64 bug with DWARF compact unwind info
amyspark Dec 17, 2024
f79cc7f
meson: bump to 1.6.1
tp-m Dec 18, 2024
20502e8
expat: update to 2.6.4
tp-m Dec 26, 2024
0826476
libjpeg-turbo: update to 3.1.0
tp-m Dec 26, 2024
3f9a065
tests: remove PMDoc test
turran Jun 2, 2024
04dcb19
config: Be able to reset variants properly
turran Jun 2, 2024
fabb231
config: don't treat variants as configuration properties
turran Jun 2, 2024
1d694c5
config: cached_sources depends on data_dir, move it
turran Jun 2, 2024
e3d11ff
package: Small cosmetic fixes
turran Jun 2, 2024
46b9a87
osxuniversalgenerator: Remove print()
turran Jun 2, 2024
7e45da1
tests: Pass more tests
turran Jun 2, 2024
610d16d
ci: Use user_branch_exists_in as a function
turran Nov 10, 2024
c92991d
ci: Add the tests stage
turran Nov 11, 2024
93d8692
ci: Use xmlrunner to upload junit tests results
turran Dec 20, 2024
3b40ba7
gobject-introspection: Fix g-ir-scanner failing to run with rpath-rel…
amyspark May 17, 2024
eb77dd1
cerbero: Fix macOS relocation missing /var/tmp entries
amyspark Jan 8, 2025
b2b141a
moltenvk: Codesign libMoltenVK if introspection is enabled
amyspark Jan 7, 2025
a2a92ef
orc: add compiler warning fix from main
tp-m Jan 8, 2025
3f7e2b7
libpng: update to 1.6.45
tp-m Jan 9, 2025
f03ed31
rust: Update to 1.84
sdroege Jan 11, 2025
270b674
cargo-c: Update to 0.10.8
sdroege Jan 11, 2025
98b8b18
glib-networking: update to 2.80.1
tp-m Jan 12, 2025
d2e7e5e
Build 1.25.1 release
tp-m Jan 14, 2025
4d57d93
gst-plugins-rs: don't check version for ci sub-pipelines
tp-m Jan 15, 2025
343188d
packages: Add x265-src to the codecs-restricted packages
nirbheek Jan 15, 2025
16e83eb
frei0r-plugins.recipe: Add missing cairo dep
nirbheek Jan 18, 2025
431345a
Build main branch again
tp-m Jan 14, 2025
0d9e87f
cargo-c: Update to 0.10.9
sdroege Jan 20, 2025
e89684b
gst-plugins-bad: Drop iSAC from the build
ford-prefect Jan 9, 2025
cc86292
webrtc-audio-processing: Bump to version 2.0
ford-prefect Jan 9, 2025
be68277
cmake: Support using ccache if enabled
aperezdc Jan 24, 2025
8924ae9
filesprovider: Fix lookup of Python bindings files
amyspark Dec 21, 2024
28c16ef
filesprovider: Support globs for Python files
amyspark Dec 21, 2024
ef8945f
recipes: Add gst-python and pygobject
nachogarglez Oct 11, 2024
f059f9a
gobject-introspection: Fix Python bindings generation under MSVC and …
amyspark Dec 21, 2024
c039c1e
gobject-introspection: fix missing GLib introspection data
ylatuya Mar 22, 2023
733dac1
pango: pangoft2 is not required on Windows and macOS
amyspark Dec 21, 2024
b41c612
gst-editing-services: Fix introspection payload naming convention
amyspark Dec 22, 2024
e6dff9f
openssl: Fix g-ir-scanner expecting MSVC naming convention for glib-n…
amyspark Dec 22, 2024
58267de
WiX: drop capitalization for Python prefixes
amyspark Dec 22, 2024
d1f648b
config: Add helpers for Python recipes
Jan 9, 2025
059e274
filesprovider: Set pext from the system
amyspark Jan 20, 2025
df9883b
gobject-introspection: Hardcode our Python executable in the configur…
Jan 9, 2025
478cfdf
gst-editing-services: Hardcode our Python executable
Jan 13, 2025
c91b0e9
recipes: Add pycairo
Jan 13, 2025
06e3699
pygobject: Update to 3.50.0
amyspark Jan 9, 2025
ebb5cc7
python: create a new package with the python bindings
ylatuya Apr 25, 2020
3bbe073
packages/osx: Surgically include python3.xx-embed into the pkg-config…
amyspark Dec 22, 2024
ba1edbc
python: Add support for Cerbero's packages in the SDK shell
Jan 9, 2025
680bf2e
config: Simplify overriding python lookup
amyspark Jan 20, 2025
6f914c5
config: Enable the Python and GI variants everywhere non mobile
amyspark Dec 21, 2024
45bfdf7
python: Clean up and standardize directory layout across distros
amyspark Jan 14, 2025
4893530
cdparanoia: cdparanoia.recipe uses config.guess and config.sub from a…
tomaszmi Jan 17, 2025
b2130d6
ci: Fix branch detection when the cerbero fork branch is "main"
nirbheek Jan 30, 2025
b28500e
gst-plugins-bad: Ship MediaFoundation for MinGW build
seungha-yang Feb 6, 2025
de5ec9d
ci: Cerbero should pick up the user's branches even in trigger CI
nirbheek Feb 7, 2025
56a0d54
ci: Fix triggered cerbero CI branch search take #2
nirbheek Feb 7, 2025
dafa1cf
Build 1.25.50 release
tp-m Feb 9, 2025
201f1c9
windows.config: Enable gi and python together
nirbheek Feb 10, 2025
7ba7949
cerbero: make sure to install up-to-date setuptools and packaging mod…
amyspark Feb 10, 2025
1e6efdd
windows.config: Disable Python/GI support on MinGW 64-bit
nirbheek Feb 10, 2025
22a3d06
Build main branch again
tp-m Feb 9, 2025
6cb056c
meson: Backport workaround for Xcode Python lacking RPATH
amyspark Feb 4, 2025
6a0f825
filesprovider: Don't look la files up if not under Android
amyspark Jan 31, 2025
66a400c
python: Forcibly enable relocation for Xcode Python
amyspark Jan 31, 2025
02dd9e0
librsvg: Properly package the gdk-pixbuf loader
amyspark Jan 31, 2025
67c7933
osxrelocator: Whitelist /Applications/Xcode.app as it's used to load …
amyspark Jan 31, 2025
f0ab4de
gobject-introspection: Fix building extensions with MinGW
amyspark Feb 10, 2025
f226e3e
packages: Move gst-editing-services Python payload to gst-python
amyspark Feb 10, 2025
31c1dce
gst-editing-services: Allow injecting RPATH flags directly from withi…
amyspark Feb 10, 2025
ded78d4
ffmpeg: Update to 7.1
amyspark Feb 12, 2025
3210a8a
libdca: generate .la file for android ndk-build
ystreet Feb 12, 2025
6425c94
cerbero: Don't reset recipe status when viewing cache
nirbheek Nov 9, 2024
1bd1a54
cerbero: Refactor the edit-cache command slightly
nirbheek Nov 9, 2024
01a3b8c
openh264: update to v2.6.0
tp-m Feb 16, 2025
637ff1c
json-glib: update to 1.10.6
tp-m Feb 16, 2025
7739f69
freetype: update to 2.13.3
tp-m Feb 16, 2025
c51bd7c
openjpeg: update to v2.5.3
tp-m Feb 16, 2025
37053db
libpng: update to v1.6.46
tp-m Feb 16, 2025
b3b6a76
libxml2: update to 2.13.5
tp-m Feb 16, 2025
63975ab
zlib: update to 1.3.1
tp-m Feb 16, 2025
b3af4bd
libsrtp: update to v2.6.0
tp-m Feb 16, 2025
cf51825
sqlite3: update to v3.49.0
tp-m Feb 16, 2025
580356f
gst-plugins-rs: Enable aws and livekit support in the webrtc plugin
thiblahute Feb 13, 2025
63a5093
ci: reduce job timeout from 3h to 1.5h
tp-m Feb 18, 2025
bf81831
sqlite3: update to v3.49.1
tp-m Feb 19, 2025
4d87b74
libpng: update to v1.6.47
tp-m Feb 19, 2025
860b3f3
libxml2: update to v2.13.6
tp-m Feb 20, 2025
5c11d2a
cerbero: Update to Rust 1.85
sdroege Feb 21, 2025
7be052b
build: Make pkg-config modules forcibly relocatable
amyspark Nov 27, 2024
89885c8
gst-plugins-rs: Remove leftover copy of plugins pc files
amyspark Nov 27, 2024
8d50a43
cargo-c: Update to 0.10.11
sdroege Feb 23, 2025
b12ebe5
fontconfig: update to 2.16.0
tp-m Feb 23, 2025
7352a62
libpsl: update to 0.21.5
tp-m Feb 23, 2025
48b1636
gst-plugins-rs: track main branch for 1.26
tp-m Feb 23, 2025
6b5f1e0
gst-plugins-rs: Add originalbuffer
rgonzalezfluendo Feb 23, 2025
dd8f952
gst-plugins-rs: reflow plugin to package mapping
tp-m Feb 23, 2025
9159754
gst-plugins-rs: ship gopbuffer, streamgrouper, mpegtslive, relationme…
tp-m Feb 23, 2025
98a61fb
Build 1.25.90 release
tp-m Feb 24, 2025
ea44d77
ci: Retry on flaky wine mono errors
nirbheek Feb 11, 2025
ab6cebf
Build main branch again
tp-m Feb 24, 2025
70f5143
WiX: fix override of INSTALLDIR not taking effect when upgrading
amyspark Feb 21, 2025
ab9477c
ci: Run Ninja for the Android jobs
amyspark Feb 13, 2025
cc3094b
wavpack: update to 5.8.1
tp-m Feb 26, 2025
5b52587
ffmpeg: Remove postproc which requires GPL2+
amyspark Feb 24, 2025
068f27f
librsvg: Do not forcibly version the shared library name
amyspark Feb 24, 2025
505c1ab
gettext-m4: Remove pkg.m4, that's pkg-config
amyspark Feb 25, 2025
c577263
libtool: Remove non-existent argz.m4 file
amyspark Feb 25, 2025
4c89365
m4: Fix installing license from source
amyspark Feb 25, 2025
c034b85
pango: Fix typo in PangoFT2-1.0 typelibs entry
amyspark Feb 25, 2025
d3dcc2e
librsvg: Don't validate devel files on post_install
amyspark Feb 25, 2025
1e1d598
gobject-introspection.recipe: Load typelibs relocatably on macOS
nirbheek Feb 12, 2025
4292096
pygobject: Automatically add DLL directories on Windows
nirbheek Mar 2, 2025
3b660dc
cerbero-uninstalled: MSYS2 is now a Cygwin shell
amyspark Feb 25, 2025
19cb680
build: Reject empty steps and recipe arguments
amyspark Feb 25, 2025
66c6e67
gst-plugins-rs: Quiet down llvm-nm here as well
amyspark Feb 28, 2025
880bcf4
x264: Update patchset and instructions for generating it
amyspark Feb 25, 2025
8e42a2e
recipe: add helper method to allow inherit from a recipe
rgonzalezfluendo Nov 26, 2024
0367386
cairo: update to 1.18.4
tp-m Mar 8, 2025
b23aa50
zbar: fix makedef patch for nm < 2.37
rgonzalezfluendo Mar 4, 2025
ed71dd7
shell: Use direct execution if a MSYS2 shell has been detected
amyspark Feb 28, 2025
7204866
Windows 11: use Powershell Get-CimInstance if deprecated wmic is not …
Mar 6, 2025
44a2297
use platlib vice purelib in get_python_prefix()
Mar 6, 2025
cd3dcce
config: Update the target distro version for cross-mingw
nirbheek Mar 11, 2025
2a0f582
orc: Update to 0.4.41
sdroege Mar 11, 2025
abc33d1
Build 1.26.0 release
tp-m Mar 11, 2025
8c225d6
gobject-introspection: Ship binaries correctly
nirbheek Mar 12, 2025
2dabeac
windows: Require admin privs to run bootstrap script
nirbheek Mar 12, 2025
d8178f8
gst-devtools: Ship dots_viewer when rust variant is enabled
nirbheek Mar 12, 2025
edeebac
bootstrap: linux: Install libatomic on RedHat-based distros
sdroege Mar 13, 2025
dd44ee0
Build 1.26 branch again
tp-m Mar 11, 2025
7b44099
ci: update for 1.26 branch
tp-m Mar 13, 2025
0ea981b
ci: add branch suffix to image names and regenerate images for 1.26
tp-m Mar 13, 2025
0c753b9
harfbuzz: update to 10.4.0
amyspark Mar 14, 2025
4651251
ci: drop placeholder-job tag for image jobs
tp-m Mar 25, 2025
b2f08f6
fontconfig: update to 2.16.1
tp-m Mar 15, 2025
2788e50
pango: update to 1.56.2
tp-m Mar 15, 2025
f328609
Fix BuildTools not using recipes_remotes and recipes_commits
marecki315 Mar 24, 2025
0ed8d7f
bootstrap, meson: Use pathlib.Path.glob to allow Python < 3.10
amyspark Mar 13, 2025
081a503
cmake: Logic fixes for Android
amyspark Apr 4, 2025
ddce02c
cmake: Override pkg-config on Windows -> Android cross builds
amyspark Apr 4, 2025
102a500
ci: Set CARGO_NET_GIT_FETCH_WITH_CLI
alatiera Apr 11, 2025
d511cad
Build 1.26.1 release
tp-m Apr 24, 2025
42b0480
m4.recipe: Fix build on Fedora 42
nirbheek Apr 25, 2025
bbd9c02
x265: fix compatibility with CMake 4
amyspark Apr 23, 2025
2b5b499
taglib: Fix compatibility with CMake 4
amyspark Apr 23, 2025
032c2ba
svt-jpeg-xs: Fix compatibility with CMake 4
amyspark Apr 23, 2025
427abcb
srt: Fix compatibility with CMake 4
amyspark Apr 23, 2025
4098e31
qrencode: Fix compatibility with CMake 4
amyspark Apr 23, 2025
b5bd9b3
frei0r-plugins: Fix compatibility with CMake 4
amyspark Apr 23, 2025
4e2df49
webview2: Fix fetch-package by adding to a package
nirbheek Apr 25, 2025
5012136
bootstrap-windows.ps1: Pin cmake to 3.31.7
nirbheek Apr 25, 2025
d59a7f7
packages: Fix typo in tinyalsa package component
nirbheek Apr 25, 2025
71a8bf7
Build 1.26 branch again
tp-m Apr 24, 2025
24018fa
cerbero: Add missing convention for Meson options file
amyspark Apr 30, 2025
ca9f726
ci: skip uploading of macOS / Windows artifacts until fdo infra gets …
tp-m May 9, 2025
a263470
gst-plugins-rs: fix build now that the rswebrtc plugin requires 1.22
tp-m May 14, 2025
6cd95df
m4: update recipe to fix hang in the config
ylatuya May 16, 2025
bb61f7d
m4: fix build when makeinfo is not available
ylatuya May 17, 2025
784abe4
directx-headers: Fix g-ir-scanner expecting MSVC naming convention fo…
amyspark May 23, 2025
8184074
Build 1.26.2 release
tp-m May 30, 2025
10914bf
Build 1.26 branch again
tp-m May 30, 2025
18b983f
genvsprops: add logfile parameter
amyspark Jun 5, 2025
6ff1ad1
WiX: fix wrong deploy locations for prop sheets
amyspark Jun 5, 2025
675e0ea
vsintegration: Update naming convention in preparation for fixing VS …
amyspark Jun 6, 2025
c64d299
WiX: fix VC templates not being recognized by Visual Studio
amyspark Jun 6, 2025
5dcd8b7
nasm: Update to 2.16.03
amyspark Apr 28, 2025
c9721f3
build: source: handle existing .cargo/config.toml as in plugins-rs
tp-m Jun 15, 2025
67e70d5
openssl: Update to 3.5.0 LTS
amyspark Apr 28, 2025
4140dd8
android: Don't ignore text relocation errors on 32-bit
nirbheek Jun 17, 2025
fa4f599
android: Error out if textrels are encountered while building
nirbheek Jun 17, 2025
ef72b32
ffmpeg.recipe: Add patch to fix textrels on Android x86
nirbheek Jun 18, 2025
be025a4
x264.recipe: Fix textrels on Android armv7 and x86
nirbheek Jun 18, 2025
fffdf29
ci: Disable MSI generation on the CI for now
nirbheek Jun 18, 2025
35fff2a
gst-plugins-bad: Ship pbtypes
amyspark Jun 19, 2025
f0607c9
gst-plugins-base: Fix category of pbtypes
nirbheek Jun 20, 2025
b77229b
webrtc-audio-processing: Fix build on Fedora 42
nirbheek Jun 19, 2025
bf39555
ci: Add pax-utils to Android Fedora image
nirbheek Jun 21, 2025
7d06938
ci: Detect text relocations when building android examples
nirbheek Jun 18, 2025
fc9cd60
libsoup.recipe: XML-RPC support was removed before the 3.0 release
nirbheek Jun 20, 2025
aaef339
gst-plugins-rs: Update for relationmeta -> analytics plugin rename
sdroege Jun 23, 2025
d36707b
gst-plugins-rs: ship new elevenlabs plugin
tp-m Jun 26, 2025
2b3a27e
Build 1.26.3 release
tp-m Jun 26, 2025
7515779
gst-plugins-rs: Work around MSVC static library sizes crashing MSI ge…
amyspark Jun 19, 2025
48c9690
gst-plugins-rs: Add missing pkg-config files
amyspark Jun 25, 2025
8d514dc
gst-plugins-rs: Fix prelink on msvc 32-bit
nirbheek Jun 27, 2025
ccbd321
Merge branch 'tag-1.26.3' into main-merge
aperezdc Jul 6, 2025
e8e9b41
openssl: Re-add compatibility with Android CA certificates
aperezdc Jul 8, 2025
dffaef3
libiconv: Use system library when available
spenap Jul 14, 2025
47e042f
wpewebkit: Expose library path using CMAKE_SHARED_LINKER_FLAGS
spenap Jul 14, 2025
5302e8e
wpebackend-android: pass CMAKE_SHARED_LINKER_FLAGS
spenap Jul 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
417 changes: 226 additions & 191 deletions .gitlab-ci.yml

Large diffs are not rendered by default.

18 changes: 18 additions & 0 deletions .gitlab-image-tags.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
variables:
###
# IMPORTANT
# These are the version tags for the docker images the CI runs against.
# If you are hacking on them or need a them to rebuild, its enough
# to change any part of the string of the image you want.
###
FEDORA_TAG: '2025-03-13.0'

CHECKS_FEDORA_TAG: '2025-03-13.0'

ANDROID_FEDORA_TAG: '2025-06-21.0-1.26'

UBUNTU_TAG: '2025-03-13.0'

TESTS_UBUNTU_TAG: '2025-03-13.0'

WINDOWS_IMAGE: 'registry.freedesktop.org/gstreamer/gstreamer/amd64/windows:2025-03-12.0-1.26'
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.1.8
rev: v0.5.6
hooks:
# Run the linter.
- id: ruff
Expand Down
10 changes: 1 addition & 9 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,5 @@ check-format:
ruff check .

check:
PYTHONPATH=$(PYTHONPATH):./test:./cerbero; trial test
CERBERO_UNINSTALLED=1 PYTHONPATH=$(PYTHONPATH):./test:./cerbero python -m unittest discover -s test -f
make check-format

coverage:
rm -rf _trial_temp
PYTHONPATH=$(PYTHONPATH):./test:./cerbero; trial --coverage test
make show-coverage

show-coverage:
python tools/show-coverage.py _trial_temp/coverage/cerbero.*
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ On macOS you will need to have install the following software:

Cerbero will build all other required packages during [bootstrap](#Bootstrap).

Note that introspection and python support will only be enabled when building
on ARM64 (Apple Silicon).

### Windows Setup

The initial setup on Windows is automated with the PowerShell script
Expand All @@ -45,7 +48,7 @@ installs the necessary tools with [Chocolatey](https://chocolatey.org/):
* MSYS2
* Git
* Python 3
* WiX
* WiX 5.0.1 or higher

Start an admin PowerShell and run:

Expand Down
3 changes: 2 additions & 1 deletion cerbero-uninstalled
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@
ARGS=$@
SCRIPTDIR="`dirname $0`"

if [ "$OSTYPE" = "msys" ]; then
# https://www.msys2.org/news/#2025-02-14-moving-msys2-closer-to-cygwin
if [ "$OSTYPE" = "msys" ] || [ "$OSTYPE" = "cygwin" ]; then
if [ -f "/mingw/bin/mingw-get.exe" ]; then
MSYS_VERSION=1
elif [ -f "/usr/bin/pacman" ]; then
Expand Down
16 changes: 12 additions & 4 deletions cerbero/bootstrap/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@


class BootstrapTarball(BaseTarball, Source):
def __init__(self, config, offline, url, checksum, download_dir, tarball_name=None):
def __init__(self, config, offline, name, url, checksum, download_dir, tarball_name=None):
self.config = config
self.offline = offline
self.name = name
self.url = url
self.download_dir = download_dir
self.tarball_name = tarball_name
Expand All @@ -47,9 +48,10 @@ class BootstrapperBase(object):
# List of extract steps to be performed
extract_steps = None

def __init__(self, config, offline):
def __init__(self, config, offline, name):
self.config = config
self.offline = offline
self.name = name
self.fetch_urls = []
self.extract_steps = []
self.sources = {}
Expand All @@ -58,9 +60,15 @@ async def start(self):
raise NotImplementedError("'start' must be implemented by subclasses")

async def fetch_urls_impl(self, urls):
for url, name, checksum in urls:
for url, tarball_name, checksum in urls:
source = BootstrapTarball(
self.config, self.offline, url, checksum, self.config.local_sources, tarball_name=name
self.config,
self.offline,
self.name,
url,
checksum,
self.config.local_sources,
tarball_name=tarball_name,
)
self.sources[url] = source
await source.fetch()
Expand Down
2 changes: 1 addition & 1 deletion cerbero/bootstrap/android.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

class AndroidBootstrapper(BootstrapperBase):
def __init__(self, config, offline, assume_yes):
super().__init__(config, offline)
super().__init__(config, offline, 'android')
self.prefix = self.config.toolchain_prefix
url = NDK_BASE_URL % (NDK_VERSION, self.config.platform)
self.fetch_urls.append((url, None, NDK_CHECKSUMS[os.path.basename(url)]))
Expand Down
20 changes: 14 additions & 6 deletions cerbero/bootstrap/build_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
# Boston, MA 02111-1307, USA.

import os
from pathlib import Path
import venv
import glob
import shutil
Expand All @@ -26,7 +27,7 @@
from cerbero.build.cookbook import CookBook
from cerbero.commands.fetch import Fetch
from cerbero.utils import shell
from cerbero.enums import Platform, Distro
from cerbero.enums import Platform, Distro, Architecture


class BuildTools (BootstrapperBase, Fetch):
Expand All @@ -39,7 +40,7 @@ class BuildTools (BootstrapperBase, Fetch):
}

def __init__(self, config, offline):
BootstrapperBase.__init__(self, config, offline)
BootstrapperBase.__init__(self, config, offline, None)

if self.config.variants.rust:
self.BUILD_TOOLS.append('cargo-c')
Expand Down Expand Up @@ -116,14 +117,21 @@ def setup_venv(self):
scriptsdir = os.path.join(self.config.build_tools_prefix, 'Scripts')
bindir = os.path.join(self.config.build_tools_prefix, 'bin')
os.makedirs(bindir, exist_ok=True)
for f in glob.glob('*', root_dir=scriptsdir):
tof = os.path.join(bindir, f)
for f in Path(scriptsdir).glob('*'):
tof = os.path.join(bindir, f.name)
if os.path.isfile(tof):
os.remove(tof)
shutil.move(os.path.join(scriptsdir, f), tof)
shutil.move(f, tof)
os.rmdir(scriptsdir)
python = os.path.join(self.config.build_tools_prefix, 'bin', 'python')
shell.new_call([python, '-m', 'pip', 'install', 'setuptools'])
shell.new_call([python, '-m', 'pip', 'install', '-U', 'setuptools', 'packaging'])
if self.config.platform == Platform.DARWIN and self.config.arch == Architecture.ARM64:
# Create an x86_64 python for introspection in universal builds
python_wrapper = os.path.join(self.config.build_tools_prefix, 'bin', 'python3-x86_64')
with open(python_wrapper, 'w') as f:
f.write('#!/bin/sh\n')
f.write('arch -x86_64 python3 "$@"\n')
os.chmod(python_wrapper, 0o755)

async def start(self, jobs=0):
self.setup_venv()
Expand Down
12 changes: 8 additions & 4 deletions cerbero/bootstrap/ios.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,22 @@
# the Free Software Foundation; either version 3, or (at your option)
# any later version.

import os
from cerbero.utils import shell
from cerbero.utils import messages as m
from cerbero.bootstrap import BootstrapperBase
from cerbero.bootstrap.bootstrapper import register_toolchain_bootstrapper
from cerbero.config import Distro
from cerbero.enums import Distro, Architecture


class IOSBootstrapper(BootstrapperBase):
def __init__(self, config, offline, assume_yes):
super().__init__(config, offline)
super().__init__(config, offline, 'ios')

async def start(self, jobs=0):
# FIXME: enable it when buildbots are properly configured
return
if self.config.arch == Architecture.ARM64 and not os.path.exists('/Library/Apple/usr/lib/libRosettaAot.dylib'):
m.message('Installing rosetta needed for some package installation scripts')
shell.new_call(['/usr/sbin/softwareupdate', '--install-rosetta', '--agree-to-license'])


def register_all():
Expand Down
98 changes: 78 additions & 20 deletions cerbero/bootstrap/linux.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.

import sys

from cerbero.bootstrap import BootstrapperBase
from cerbero.bootstrap.bootstrapper import register_system_bootstrapper
from cerbero.enums import Platform, Architecture, Distro, DistroVersion
from cerbero.errors import ConfigurationError, CommandError
from cerbero.utils import user_is_root, shell
from cerbero.errors import ConfigurationError, CommandError, FatalError
from cerbero.utils import user_is_root, shell, split_version
from cerbero.utils import messages as m


Expand All @@ -32,7 +34,7 @@ class UnixBootstrapper(BootstrapperBase):
packages = []

def __init__(self, config, offline, assume_yes):
BootstrapperBase.__init__(self, config, offline)
BootstrapperBase.__init__(self, config, offline, 'linux')
self.assume_yes = assume_yes
if user_is_root() and 'sudo' in self.tool: # no need for sudo as root user
self.tool.remove('sudo')
Expand All @@ -43,9 +45,20 @@ async def start(self, jobs=0):

if self.config.distro_packages_install:
extra_packages = self.config.extra_bootstrap_packages.get(self.config.platform, None)
override_packages = self.config.override_bootstrap_packages.get(self.config.platform, None)
if extra_packages and override_packages:
raise ConfigurationError(
'You are setting "extra_bootstrap_packages" and "override_bootstrap_packages" '
'on the same CBC. This might cause conflicts.'
)
if extra_packages:
self.packages += extra_packages.get(self.config.distro, [])
self.packages += extra_packages.get(self.config.distro_version, [])
if override_packages:
self.packages = []
self.packages += override_packages.get(self.config.distro, [])
self.packages += override_packages.get(self.config.distro_version, [])

tool = self.tool
if self.assume_yes:
tool += self.yes_arg
Expand Down Expand Up @@ -111,7 +124,7 @@ def __init__(self, config, offline, assume_yes):
self.packages.append('libc6:i386')
self.checks.append(self.create_debian_arch_check('i386'))
if self.config.arch in [Architecture.X86_64, Architecture.X86]:
self.packages.append('wine')
self.packages += ['wine', 'xvfb']

def create_debian_arch_check(self, arch):
def check_arch():
Expand Down Expand Up @@ -154,7 +167,6 @@ class RedHatBootstrapper(UnixBootstrapper):
'curl',
'rpm-build',
'redhat-rpm-config',
'python3-devel',
'libXrender-devel',
'pulseaudio-libs-devel',
'libXv-devel',
Expand All @@ -164,38 +176,82 @@ class RedHatBootstrapper(UnixBootstrapper):
'libXi-devel',
'perl-XML-Simple',
'gperf',
'wget',
'libXrandr-devel',
'libXtst-devel',
'git',
'xorg-x11-util-macros',
'mesa-libEGL-devel',
'ccache',
'openssl-devel',
'alsa-lib-devel',
'perl-FindBin',
'perl-IPC-Cmd',
'libatomic',
]

def __init__(self, config, offline, assume_yes):
UnixBootstrapper.__init__(self, config, offline, assume_yes)

if self.config.distro_version < DistroVersion.FEDORA_23:
self.tool = ['yum']
elif self.config.distro_version in [DistroVersion.REDHAT_6, DistroVersion.REDHAT_7]:
dn, dv = self.config.distro_version.split('_', 1)
dv = split_version(dv)

if (dn == 'fedora' and dv < (23,)) or (dn == 'redhat' and dv < (8, 3)):
self.tool = ['yum']
elif self.config.distro_version == DistroVersion.REDHAT_8:
self.tool = ['yum', '--enablerepo=PowerTools']

if dn == 'redhat' and dv >= (8,):
if dv < (8, 3):
self.tool += ['--enablerepo=PowerTools']
elif dv < (9,):
self.tool += ['--enablerepo=powertools']
else:
self.tool += ['--enablerepo=crb']

def pkg_available(pkg):
return shell.new_call(self.tool + ['list', pkg, '-q'], fail=False) == 0

def add_pkg(names, required=True):
for pkg in names:
if pkg_available(pkg):
self.packages.append(pkg)
return True
if required:
raise FatalError('Required package not found, tried: ' + ', '.join(names))
return False

if not user_is_root():
self.tool = ['sudo'] + self.tool

# In RHEL based distros ccache is only available in the EPEL repo
if not add_pkg(['ccache'], required=False):
if pkg_available('epel-release'):
cmd = self.tool + ['install', 'epel-release'] + (['-y'] if assume_yes else [])
self.checks.append(
lambda: shell.new_call(cmd, interactive=True, fail=False) == 0 and self.packages.append('ccache')
)
else:
m.warning('Compilation will not use ccache since it is not available')
self.config.use_ccache = False

# Before RHEL 9 perl-FindBin wasn't a standalone package
if dn != 'redhat' or dv >= (9,):
add_pkg(['perl-FindBin'])
elif dv >= (8,):
add_pkg(['perl-interpreter'])
else:
add_pkg(['perl'])

# Use curl if wget isn't found, because wget2 is not production-ready yet
add_pkg(['wget', 'curl'])

# Try to get a better matching python3 library version
ver = sys.version_info[1]
add_pkg([f'python3{v}-devel' for v in [ver, f'.{ver}', '']])

if self.config.target_platform == Platform.WINDOWS:
if self.config.arch == Architecture.X86_64:
self.packages.append('glibc.i686')
if self.config.distro_version in [DistroVersion.FEDORA_24, DistroVersion.FEDORA_25]:
if self.config.distro_version in ['fedora_24', 'fedora_25']:
self.packages.append('libncurses-compat-libs.i686')
if self.config.arch in [Architecture.X86_64, Architecture.X86]:
self.packages.append('wine')
if user_is_root():
return
self.tool = ['sudo'] + self.tool
self.packages += ['wine', 'which', 'xorg-x11-server-Xvfb']


class OpenSuseBootstrapper(UnixBootstrapper):
Expand Down Expand Up @@ -238,7 +294,7 @@ def __init__(self, config, offline, assume_yes):
UnixBootstrapper.__init__(self, config, offline, assume_yes)
if self.config.target_platform == Platform.WINDOWS:
if self.config.arch in [Architecture.X86_64, Architecture.X86]:
self.packages.append('wine')
self.packages += ['wine', 'xvfb-run']


class ArchBootstrapper(UnixBootstrapper):
Expand Down Expand Up @@ -267,6 +323,8 @@ class ArchBootstrapper(UnixBootstrapper):
'ccache',
'openssl',
'alsa-lib',
'which',
'libpulse',
]

def __init__(self, config, offline, assume_yes):
Expand All @@ -284,7 +342,7 @@ def __init__(self, config, offline, assume_yes):
self.packages.append('gcc')
if self.config.target_platform == Platform.WINDOWS:
if self.config.arch in [Architecture.X86_64, Architecture.X86]:
self.packages.append('wine')
self.packages += ['wine', 'xorg-server-xvfb']


class GentooBootstrapper(UnixBootstrapper):
Expand Down
Loading
Loading