Skip to content

Commit 0748e1c

Browse files
authored
Merge pull request #21 from blinemedical/release-1.24.11
Update to 1.24.11
2 parents efc7718 + b69b039 commit 0748e1c

33 files changed

+324
-75
lines changed

.github/workflows/windows.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ jobs:
7070
cerbero-ref: ${{ inputs.cerbero-ref || github.ref }}
7171
cerbero-args: --clocktime --timestamps -v visualstudio,noasserts,nochecks
7272
gst-plugins-rs-repo: 'https://github.com/blinemedical/gst-plugins-rs'
73-
gst-plugins-rs-ref: '0.12.9-lldc.1'
73+
gst-plugins-rs-ref: '0.12.11-lldc.1'
7474
force: ${{ inputs.force-build == true }}
7575
no-cache: ${{ inputs.no-cache == true }}
7676
bootstrap-system: true

.gitlab-ci.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ cerbero cross-android universal examples:
463463
- .git/**/*
464464

465465
.cerbero macos arm64 image:
466-
image: "registry.freedesktop.org/gstreamer/cerbero/macos-arm64/14-sonoma:2023-10-25.2"
466+
image: "registry.freedesktop.org/gstreamer/cerbero/macos-arm64/15-sequoia:2024-10-28.2"
467467
tags:
468468
- gst-mac-arm
469469

cerbero/bootstrap/linux.py

+15-5
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,6 @@ class RedHatBootstrapper(UnixBootstrapper):
164164
'libXi-devel',
165165
'perl-XML-Simple',
166166
'gperf',
167-
'wget',
168167
'libXrandr-devel',
169168
'libXtst-devel',
170169
'git',
@@ -178,13 +177,22 @@ class RedHatBootstrapper(UnixBootstrapper):
178177

179178
def __init__(self, config, offline, assume_yes):
180179
UnixBootstrapper.__init__(self, config, offline, assume_yes)
180+
dv = self.config.distro_version
181181

182-
if self.config.distro_version < DistroVersion.FEDORA_23:
182+
if dv < 'fedora_23':
183183
self.tool = ['yum']
184-
elif self.config.distro_version in [DistroVersion.REDHAT_6, DistroVersion.REDHAT_7]:
184+
elif dv in [DistroVersion.REDHAT_6, DistroVersion.REDHAT_7]:
185185
self.tool = ['yum']
186-
elif self.config.distro_version == DistroVersion.REDHAT_8:
187-
self.tool = ['yum', '--enablerepo=PowerTools']
186+
elif dv.startswith('redhat_8'):
187+
if dv < 'redhat_8.3':
188+
self.tool = ['yum', '--enablerepo=PowerTools']
189+
else:
190+
self.tool = ['dnf', '--enablerepo=powertools']
191+
192+
if dv.startswith('fedora_') and dv > 'fedora_39':
193+
self.packages.append('curl')
194+
else:
195+
self.packages.append('wget')
188196

189197
if self.config.target_platform == Platform.WINDOWS:
190198
if self.config.arch == Architecture.X86_64:
@@ -267,6 +275,8 @@ class ArchBootstrapper(UnixBootstrapper):
267275
'ccache',
268276
'openssl',
269277
'alsa-lib',
278+
'which',
279+
'libpulse',
270280
]
271281

272282
def __init__(self, config, offline, assume_yes):

cerbero/build/recipe.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,9 @@ def __new__(cls):
165165

166166
@classmethod
167167
def all_names(cls):
168-
members = inspect.getmembers(cls, lambda x: isinstance(x, tuple))
168+
# In 3.13, __static_attributes__ is a new tuple attribute. Just ignore
169+
# all attributes starting with __.
170+
members = inspect.getmembers(cls, lambda x: isinstance(x, tuple) and x and not x[0].startswith('__'))
169171
return tuple(e[1][1] for e in members)
170172

171173

cerbero/enums.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121

2222
# Safest place to define this since this file imports very few modules
23-
CERBERO_VERSION = '1.24.8'
23+
CERBERO_VERSION = '1.24.11'
2424

2525

2626
class Platform:

cerbero/utils/shell.py

+11-11
Original file line numberDiff line numberDiff line change
@@ -427,16 +427,6 @@ async def download(url, dest, check_cert=True, overwrite=False, logfile=None, mi
427427
f'Invoke-WebRequest -UserAgent {user_agent} -OutFile {dest} '
428428
'-Method Get -Uri %s',
429429
]
430-
elif shutil.which('wget2'):
431-
cmd = ['wget2', '--user-agent', user_agent, '--tries=2', '--timeout=20', '-O', dest]
432-
if not check_cert:
433-
cmd += ['--no-check-certificate']
434-
cmd += ['%s']
435-
elif shutil.which('wget'):
436-
cmd = ['wget', '--user-agent', user_agent, '--tries=2', '--timeout=20', '--progress=dot:giga', '-O', dest]
437-
if not check_cert:
438-
cmd += ['--no-check-certificate']
439-
cmd += ['%s']
440430
elif shutil.which('curl'):
441431
cmd = [
442432
'curl',
@@ -455,6 +445,16 @@ async def download(url, dest, check_cert=True, overwrite=False, logfile=None, mi
455445
if not check_cert:
456446
cmd += ['-k']
457447
cmd += ['%s']
448+
elif shutil.which('wget2'):
449+
cmd = ['wget2', '--user-agent', user_agent, '--tries=2', '--timeout=20', '-O', dest]
450+
if not check_cert:
451+
cmd += ['--no-check-certificate']
452+
cmd += ['%s']
453+
elif shutil.which('wget'):
454+
cmd = ['wget', '--user-agent', user_agent, '--tries=2', '--timeout=20', '--progress=dot:giga', '-O', dest]
455+
if not check_cert:
456+
cmd += ['--no-check-certificate']
457+
cmd += ['%s']
458458
else:
459459
raise FatalError('Need either wget or curl to download things')
460460

@@ -669,7 +669,7 @@ def enter_build_environment(platform, arch, distro, sourcedir=None, bash_complet
669669
rc_tmp.write(shellrc)
670670
rc_tmp.flush()
671671
if 'zsh' in shell:
672-
env['ZDOTDIR'] = tmp.name
672+
env['ZDOTDIR'] = tmp
673673
os.execlpe(shell, shell, env)
674674
else:
675675
# Check if the shell supports passing the rcfile

ci/cerbero_setup.sh

+5-5
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ cerbero_package_and_check() {
4040
dlopen_plugins+=(msdk nvcodec qsv va vaapi)
4141
fi
4242

43-
$CERBERO $CERBERO_ARGS package --offline ${CERBERO_PACKAGE_ARGS} -o "$(pwd_native)" gstreamer-1.0
43+
./ci/run_retry.sh $CERBERO $CERBERO_ARGS package --offline ${CERBERO_PACKAGE_ARGS} -o "$(pwd_native)" gstreamer-1.0
4444

4545
# Run gst-inspect-1.0 for some basic checks. Can't do this for cross-(android|ios)-universal, of course.
4646
if [[ $CONFIG != *universal* ]] && [[ $CONFIG != *cross-win* ]]; then
@@ -102,7 +102,7 @@ cerbero_script() {
102102
time rsync -aH "${CERBERO_HOME}/dist/${ARCH}/" "${CERBERO_OVERRIDDEN_DIST_DIR}"
103103
fi
104104

105-
$CERBERO $CERBERO_ARGS bootstrap --offline --system=$CERBERO_BOOTSTRAP_SYSTEM
105+
./ci/run_retry.sh $CERBERO $CERBERO_ARGS bootstrap --offline --system=$CERBERO_BOOTSTRAP_SYSTEM
106106
fix_build_tools
107107

108108
cerbero_package_and_check
@@ -132,9 +132,9 @@ cerbero_deps_script() {
132132
$CERBERO $CERBERO_ARGS show-config
133133
$CERBERO $CERBERO_ARGS fetch-bootstrap --jobs=4
134134
$CERBERO $CERBERO_ARGS fetch-package --jobs=4 --deps gstreamer-1.0
135-
$CERBERO $CERBERO_ARGS bootstrap --offline --system=$CERBERO_BOOTSTRAP_SYSTEM
136-
$CERBERO $CERBERO_ARGS build-deps --offline $build_deps
137-
$CERBERO $CERBERO_ARGS build --offline $more_deps
135+
./ci/run_retry.sh $CERBERO $CERBERO_ARGS bootstrap --offline --system=$CERBERO_BOOTSTRAP_SYSTEM
136+
./ci/run_retry.sh $CERBERO $CERBERO_ARGS build-deps --offline $build_deps
137+
./ci/run_retry.sh $CERBERO $CERBERO_ARGS build --offline $more_deps
138138

139139
if [[ -n ${CERBERO_OVERRIDDEN_DIST_DIR} ]]; then
140140
mkdir -p "${CERBERO_HOME}/dist/${ARCH}"

ci/run_retry.sh

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ set -o pipefail
66
ERRORS=(
77
"Warning: An error occurred while preparing SDK package Android SDK Tools: Connection reset."
88
"The Xcode build system has crashed. Build again to continue."
9+
"libc++abi: terminating with uncaught exception"
10+
# https://github.com/rust-lang/rust/issues/127883#issuecomment-2290594194
11+
"Access is denied (os error 5)"
12+
"LINK : fatal error LNK1104: cannot open file"
913
)
1014
RETRIES=3
1115
LOGFILE="/tmp/logfile.txt"

packages/custom.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
class GStreamer:
77
url = 'http://gstreamer.freedesktop.org'
8-
version = '1.24.8'
8+
version = '1.24.11'
99
vendor = 'GStreamer Project'
1010
licenses = [License.LGPLv2Plus]
1111
org = 'org.freedesktop.gstreamer'

packages/gstreamer-1.0-effects.package

+2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ class Package(custom.GStreamer, package.Package):
1313
files = ['ladspa:libs',
1414
'libltc:libs',
1515
'soundtouch:libs',
16+
'qrencode:libs',
17+
'json-glib:libs',
1618
'webrtc-audio-processing:libs',
1719
'gst-plugins-base-1.0:plugins_effects',
1820
'gst-plugins-good-1.0:plugins_effects',

recipes/build-tools/ninja.recipe

+4-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ class Recipe(recipe.Recipe):
88
stype = SourceType.TARBALL
99
url = 'https://github.com/ninja-build/ninja/archive/v%(version)s.tar.gz'
1010
tarball_checksum = '31747ae633213f1eda3842686f83c2aa1412e0f5691d1c14dbbcc67fe7400cea'
11-
patches = ['ninja/0001-configure.py-Look-for-cl.exe-before-assuming-MSVC.patch']
11+
patches = [
12+
'ninja/0001-configure.py-Look-for-cl.exe-before-assuming-MSVC.patch',
13+
'ninja/0001-configure.py-Move-from-pipes-to-shlex.patch',
14+
]
1215

1316
files_bin = ['bin/ninja']
1417

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
From 4b32663bf04a54818664081bb448b4c9d10c3371 Mon Sep 17 00:00:00 2001
2+
From: Nirbheek Chauhan <nirbheek@centricular.com>
3+
Date: Thu, 31 Oct 2024 14:32:18 +0530
4+
Subject: [PATCH] configure.py: Move from pipes to shlex
5+
6+
pipes.quote uses shlex.quote internally anyway, and pipes has been
7+
removed with Python 3.13
8+
---
9+
configure.py | 4 ++--
10+
1 file changed, 2 insertions(+), 2 deletions(-)
11+
12+
diff --git a/configure.py b/configure.py
13+
index f5e5e3b..56f31fb 100755
14+
--- a/configure.py
15+
+++ b/configure.py
16+
@@ -23,7 +23,7 @@ from __future__ import print_function
17+
18+
from optparse import OptionParser
19+
import os
20+
-import pipes
21+
+import shlex
22+
import string
23+
import subprocess
24+
import sys
25+
@@ -268,7 +268,7 @@ n.variable('configure_args', ' '.join(configure_args))
26+
env_keys = set(['CXX', 'AR', 'CFLAGS', 'CXXFLAGS', 'LDFLAGS'])
27+
configure_env = dict((k, os.environ[k]) for k in os.environ if k in env_keys)
28+
if configure_env:
29+
- config_str = ' '.join([k + '=' + pipes.quote(configure_env[k])
30+
+ config_str = ' '.join([k + '=' + shlex.quote(configure_env[k])
31+
for k in configure_env])
32+
n.variable('configure_env', config_str + '$ ')
33+
n.newline()
34+
--
35+
2.46.1
36+

recipes/custom.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def running_on_cerbero_ci():
2121

2222
class GStreamer(recipe.Recipe):
2323
licenses = [License.LGPLv2Plus]
24-
version = '1.24.8'
24+
version = '1.24.11'
2525
tagged_for_release = True
2626

2727
# Decide what stype to use

recipes/gobject-introspection.recipe

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class Recipe(recipe.Recipe):
8282
def prepare(self):
8383
if self.config.platform == Platform.WINDOWS:
8484
# gobject-introspection forces a Python 3 interpreter named "python3",
85-
# which on Windows matches the one provided by UCRT64. However,
85+
# which on Windows matches the one provided by UCRT64. However,
8686
# Meson's Python 3 interpreter is `python.exe`. Meson
8787
# can handle this for us, provided we either don't force the
8888
# naming, or supply the correct name to `find_installation` here.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
From a2139dba59eac283a7f543ed737f038deebddc19 Mon Sep 17 00:00:00 2001
2+
From: Christoph Reiter <reiter.christoph@gmail.com>
3+
Date: Wed, 28 Aug 2024 21:26:02 +0200
4+
Subject: [PATCH] giscanner: remove dependency on distutils.msvccompiler
5+
6+
It was removed with setuptools 74.0.0. Since we still depend on the
7+
MSVCCompiler class use new_compiler() to get it some other way.
8+
9+
Remove any reference to MSVC9Compiler, which was for Visual Studio 2008
10+
which we no longer support anyway.
11+
12+
Fixes #515
13+
---
14+
giscanner/ccompiler.py | 7 +++----
15+
giscanner/msvccompiler.py | 14 +++++++-------
16+
2 files changed, 10 insertions(+), 11 deletions(-)
17+
18+
diff --git a/giscanner/ccompiler.py b/giscanner/ccompiler.py
19+
index d0ed70a3..9a732cd5 100644
20+
--- a/giscanner/ccompiler.py
21+
+++ b/giscanner/ccompiler.py
22+
@@ -26,7 +26,6 @@ import tempfile
23+
import sys
24+
import distutils
25+
26+
-from distutils.msvccompiler import MSVCCompiler
27+
from distutils.unixccompiler import UnixCCompiler
28+
from distutils.cygwinccompiler import Mingw32CCompiler
29+
from distutils.sysconfig import get_config_vars
30+
@@ -167,7 +166,7 @@ class CCompiler(object):
31+
# Now, create the distutils ccompiler instance based on the info we have.
32+
if compiler_name == 'msvc':
33+
# For MSVC, we need to create a instance of a subclass of distutil's
34+
- # MSVC9Compiler class, as it does not provide a preprocess()
35+
+ # MSVCCompiler class, as it does not provide a preprocess()
36+
# implementation
37+
from . import msvccompiler
38+
self.compiler = msvccompiler.get_msvc_compiler()
39+
@@ -460,7 +459,7 @@ class CCompiler(object):
40+
return self.compiler.linker_exe
41+
42+
def check_is_msvc(self):
43+
- return isinstance(self.compiler, MSVCCompiler)
44+
+ return self.compiler.compiler_type == "msvc"
45+
46+
# Private APIs
47+
def _set_cpp_options(self, options):
48+
@@ -486,7 +485,7 @@ class CCompiler(object):
49+
# macros for compiling using distutils
50+
# get dropped for MSVC builds, so
51+
# escape the escape character.
52+
- if isinstance(self.compiler, MSVCCompiler):
53+
+ if self.check_is_msvc():
54+
macro_value = macro_value.replace('\"', '\\\"')
55+
macros.append((macro_name, macro_value))
56+
elif option.startswith('-U'):
57+
diff --git a/giscanner/msvccompiler.py b/giscanner/msvccompiler.py
58+
index 0a543982..e333a80f 100644
59+
--- a/giscanner/msvccompiler.py
60+
+++ b/giscanner/msvccompiler.py
61+
@@ -19,30 +19,30 @@
62+
#
63+
64+
import os
65+
-import distutils
66+
+from typing import Type
67+
68+
from distutils.errors import DistutilsExecError, CompileError
69+
-from distutils.ccompiler import CCompiler, gen_preprocess_options
70+
+from distutils.ccompiler import CCompiler, gen_preprocess_options, new_compiler
71+
from distutils.dep_util import newer
72+
73+
# Distutil's MSVCCompiler does not provide a preprocess()
74+
# Implementation, so do our own here.
75+
76+
77+
+DistutilsMSVCCompiler: Type = type(new_compiler(compiler="msvc"))
78+
+
79+
+
80+
def get_msvc_compiler():
81+
return MSVCCompiler()
82+
83+
84+
-class MSVCCompiler(distutils.msvccompiler.MSVCCompiler):
85+
+class MSVCCompiler(DistutilsMSVCCompiler):
86+
87+
def __init__(self, verbose=0, dry_run=0, force=0):
88+
- super(distutils.msvccompiler.MSVCCompiler, self).__init__()
89+
+ super(DistutilsMSVCCompiler, self).__init__()
90+
CCompiler.__init__(self, verbose, dry_run, force)
91+
self.__paths = []
92+
self.__arch = None # deprecated name
93+
- if os.name == 'nt':
94+
- if isinstance(self, distutils.msvc9compiler.MSVCCompiler):
95+
- self.__version = distutils.msvc9compiler.VERSION
96+
self.initialized = False
97+
self.preprocess_options = None
98+
if self.check_is_clang_cl():
99+
--
100+
2.46.2
101+

recipes/gst-devtools-1.0.recipe

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ class Recipe(custom.GStreamer):
66
name = 'gst-devtools-1.0'
77
btype = BuildType.MESON
88
meson_options = {'debug_viewer': 'disabled'}
9-
tarball_checksum = 'b7eabc58a17771a162a74aba721f2469a2b044d1674d3e416e3c62f2a2b0d26a'
9+
tarball_checksum = '73990a939c1ea9d9ca199b8cd135dd3a7120b495004aaa79299257d9cd897834'
1010
deps = ['gstreamer-1.0', 'gst-plugins-base-1.0', 'json-glib', 'gst-rtsp-server-1.0']
1111

1212
files_bins = ['gst-validate-1.0', 'gst-validate-transcoding-1.0', 'gst-validate-media-check-1.0',

recipes/gst-editing-services-1.0.recipe

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ from cerbero.utils import shell
44
class Recipe(custom.GStreamer):
55
name = 'gst-editing-services-1.0'
66
btype = BuildType.MESON
7-
tarball_checksum = 'b30a82e496975a9d821ce1c5b0cb846fd53e038bb390f9e1e0aa5e01efc217e2'
7+
tarball_checksum = '85fd74dab259e137a95ab4427e009dd853f4ca82874500cb5493c33bcef1ef08'
88
deps = ['gstreamer-1.0', 'gst-plugins-base-1.0', 'gst-plugins-good-1.0', 'gst-devtools-1.0']
99

1010
files_bins = ['ges-launch-1.0']

recipes/gst-libav-1.0.recipe

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ class Recipe(custom.GStreamer):
44
name = 'gst-libav-1.0'
55
licenses = [License.LGPLv2Plus]
66
btype = BuildType.MESON
7-
tarball_checksum = '1e4a8fd537621d236442cf90a6e9ad5e00f87bffffdaeb1fd8bfd23719de8c75'
7+
tarball_checksum = '13776fc16f7ce587d437d56d83e08c9224768dddc897dd3c88208d970a6aa422'
88
deps = ['gstreamer-1.0', 'gst-plugins-base-1.0', 'ffmpeg']
99

1010
files_plugins_codecs_restricted = ['%(libdir)s/gstreamer-1.0/libgstlibav%(mext)s']

0 commit comments

Comments
 (0)