Compare commits

...

13 Commits

Author SHA1 Message Date
Romain Naour
f5a8cb5564 package/python-zipstream-ng: select python zstd module
Since zipstream-ng v1.9.0 the python zstd module introduced in python
3.14 is required at runtime [1].

Fixes:
https://gitlab.com/buildroot.org/buildroot/-/jobs/12857413941

[1] 1e3754cb26

Signed-off-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2026-02-03 10:09:15 +01:00
Romain Naour
5bfea99b11 package/python3: add optional zstd support
Python 3.14 introduced a new zstd module [1][2] that requires zstd
package as dependency.

Packages that requires this new module should select
BR2_PACKAGE_PYTHON3_ZSTD.

[1] https://docs.python.org/3.14/library/compression.zstd.html
[2] https://peps.python.org/pep-0784/

Signed-off-by: Romain Naour <romain.naour@smile.fr>
[Julien: change link [1] to use 3.14 specific version]
Signed-off-by: Julien Olivain <ju.o@free.fr>
2026-02-03 10:09:15 +01:00
Giulio Benetti
e258607bc9 package/dash: bump to version 0.5.13.1
For change log, see:
https://git.kernel.org/pub/scm/utils/dash/dash.git/log/?h=a768fcc0aafbe50a37d2d06bba23eb6671d3a9b3

NOTE: Tag v0.5.13.1 has not been emitted.

Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
[Peter: fix sha512 hash]
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2026-02-03 09:56:46 +01:00
Julien Olivain
abad652fee support/testing: add aichat runtime test
Cc: Alexander Shirokov <shirokovalexs@gmail.com>
Tested-by: Alexander Shirokov <shirokovalexs@gmail.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2026-02-03 09:27:29 +01:00
Thomas Petazzoni
85d47bbc40 support/config-fragments/autobuild: add a really old toolchain
Testing with a really old toolchain is helpful to catch issues related
to kernel headers version issues, gcc version issues, etc. We chose a
glibc toolchain though as old musl or uClibc-ng versions tend to lack
a number of features that are needed by modern software.

This toolchain is placed near the top of toolchain-configs.csv, so
that it is used as part of the "base" set of toolchain that test-pkg
uses, even without the -a option.

test-pkg takes the 6 first toolchains of this CSV file for its base
test, and actually the comment in toolchain-configs.csv was wrong
since commit 53a8c5150e, which removed a
toolchain from the base set, but not realizing that test-pkg would
anyway continue to test the first 6 toolchains.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2026-02-03 09:15:17 +01:00
Thomas Petazzoni
573a113edd support/config-fragments/autobuild: replace MIPS64 toolchains
The prebuilt MIPS64 toolchains are very old, causing build issues (for
example recently with the systemd v258 update). Replace them both a
single toolchain configuration that uses one of the mips64el Bootlin
toolchains.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2026-02-03 09:15:17 +01:00
Thomas Petazzoni
8bab0acff6 support/config-fragments/autobuild: drop somewhat duplicate toolchain configs
- br-i386-pentium4-full.config as an x86 32-bit toolchain test is
  already reasonably covered by bootlin-x86-i686-musl.config

- br-microblazeel-full-internal.config as a Microblaze toolchain test is
  already reasonably covered by bootlin-microblazeel-uclibc.config

- br-powerpc-internal-full.config and br-powerpc-603e-basic-cpp.config
  as PowerPC 32-bit toolchain tests are already reasonably covered by
  bootlin-powerpc-e500mc-uclibc.config

- br-powerpc64-power7-glibc.config as a PowerPC 64-bit toolchain test
  is already reasonably covered by
  bootlin-powerpc64le-power8-glibc.config

- br-riscv64-full-internal.config as a RISC-V 64-bit toolchain test is
  already reasonably covered by bootlin-riscv64-glibc.config and
  bootlin-riscv64-musl.config

- br-s390x-z13-internal-glibc.config as a s390 toolchain test is
  already reasonably covered by bootlin-s390x-z13-glibc.config

- br-xtensa-full-internal.config as an Xtensa toolchain test is
  already reasonably covered by bootlin-xtensa-uclibc.config

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2026-02-03 09:15:16 +01:00
Thomas Petazzoni
61fe61af31 support/config-fragments/autobuild: reduce ARM internal toolchain
Building internal toolchains takes a long time, and since the
differences between the 3 internal ARM toolchains is just the libc,
and we're already testing uclibc/musl with external toolchains, it
doesn't make much sense to build 3 different ARM internal toolchains.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2026-02-03 09:15:15 +01:00
Thomas Petazzoni
ceaf0a2283 support/config-fragments/autobuild: drop Buildroot ARC toolchains
We're already testing the ARC architecture with one Bootlin toolchain,
it doesn't make sense to also test with two Buildroot internal
toolchains the ARC architecture, which is not a primary architecture
for Buildroot.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2026-02-03 09:15:15 +01:00
Bernd Kuhls
3aaf596b60 package/igt-gpu-tools: depends on little endian
Buildroot commit f9a91bf60e bumped
igt-gpu-tools to 2.3 which includes upstream commit
ff3b7435bc
which limits the package to little endian archs causing build errors
on big endian archs:

In file included from ../lib/igt_panthor.c:5:
../lib/igt_panthor.h:61:2: error: #error "big endian not supported"
   61 | #error "big endian not supported"

Fixes:

  https://autobuild.buildroot.org/results/e3faeba1bff3d0e781032ddc9a760f34a9bf5714/

Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2026-02-03 09:03:04 +01:00
Bernd Kuhls
d35664ad35 package/qt6/qt6multimedia: fix build with ffmpeg 8.0
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2026-02-03 08:46:46 +01:00
Bernd Kuhls
53b95def9e package/freeswitch: fix build with ffmpeg 8.0
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2026-02-03 08:46:45 +01:00
Bernd Kuhls
5cb9002e81 package/freerdp: fix build with ffmpeg 8.0
Added four upstream patches backported from FreeRDP 3.x.

The remaining build error:

/home/bernd/buildroot/output/build/freerdp-2.11.7-18-g0ee17e2f8e49d56ab5b90d5160fa8f87ffc445e0/
 channels/client/tables.c:129:22:
 error: initialization of ‘UINT (*)(void)’ {aka ‘unsigned int (*)(void)’}
 from incompatible pointer type ‘UINT (*)(void *)’ {aka ‘unsigned int (*)(void *)’}
 [-Wincompatible-pointer-types]
  129 |         { "oss", "", oss_freerdp_rdpsnd_client_subsystem_entry },

is fixed by adding -Wno-incompatible-pointer-types to CFLAGS due to
tables.c being dynamically created during the build and backporting the
supposed upstream fix
fe6d861a5c
is too invasive.

Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2026-02-03 08:46:44 +01:00
33 changed files with 510 additions and 102 deletions

View File

@@ -1856,6 +1856,8 @@ F: support/testing/tests/package/test_4th.py
F: support/testing/tests/package/test_acl.py
F: support/testing/tests/package/test_acpica.py
F: support/testing/tests/package/test_acpica/
F: support/testing/tests/package/test_aichat.py
F: support/testing/tests/package/test_aichat/
F: support/testing/tests/package/test_apache.py
F: support/testing/tests/package/test_attr.py
F: support/testing/tests/package/test_audio_codec_base.py

View File

@@ -1,7 +1,7 @@
# From http://gondor.apana.org.au/~herbert/dash/files/dash-0.5.13.tar.gz.sha512sum
# From http://gondor.apana.org.au/~herbert/dash/files/dash-0.5.13.1.tar.gz.sha512sum
# After checking pgp signature
# using key 9F9D45FE50AE361530983792C7271D0A49B18BA7
sha512 428de1f65ab77d5fee88bbf4ba8642d77abfda223a4ede423d09db9faa4f0347199b3be841d63b93a7ed68f714ef54ff41b2dc936e4b7ebb19b74499ed4e6a01 dash-0.5.13.tar.gz
sha512 6b3d67f76e74853349fe99121b2ee96d32da9863042744e03984eb6a01bf437eee2f2e81fbdd0436090abfecacc2f5589960820c3d0d5f3dd580948d38d5dc1d dash-0.5.13.1.tar.gz
# Locally calculated
sha256 fd8da121e306b27f59330613417b182b8844f11e269531cc4720bf523e3e06d7 dash-0.5.13.tar.gz
sha256 d9271bce09c127d9866e25c011582ddc75ab988958a04bc4d8553a3b8f30e370 dash-0.5.13.1.tar.gz
sha256 254a7894923ff62e69184a991dcbccae97edee58a1105e8efbe78caf10595d72 COPYING

View File

@@ -4,7 +4,7 @@
#
################################################################################
DASH_VERSION = 0.5.13
DASH_VERSION = 0.5.13.1
DASH_SITE = http://gondor.apana.org.au/~herbert/dash/files
DASH_LICENSE = BSD-3-Clause, GPL-2.0+ (mksignames.c)
DASH_LICENSE_FILES = COPYING

View File

@@ -0,0 +1,146 @@
From 83bda60872d2f8f4230de53a645112d8239b67ba Mon Sep 17 00:00:00 2001
From: Armin Novak <armin.novak@thincast.com>
Date: Wed, 7 Jun 2023 11:46:07 +0200
Subject: [PATCH] fix ffmpeg deprecations
Upstream: https://github.com/FreeRDP/FreeRDP/commit/d0c5b1ae4289c7f3cde3fbc031cb4a3160df05ff
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
libfreerdp/codec/dsp_ffmpeg.c | 54 +++++++++++++++++++++++++++--------
1 file changed, 42 insertions(+), 12 deletions(-)
diff --git a/libfreerdp/codec/dsp_ffmpeg.c b/libfreerdp/codec/dsp_ffmpeg.c
index 80df18833..22d6ce215 100644
--- a/libfreerdp/codec/dsp_ffmpeg.c
+++ b/libfreerdp/codec/dsp_ffmpeg.c
@@ -225,18 +225,17 @@ static void ffmpeg_close_context(FREERDP_DSP_CONTEXT* context)
static BOOL ffmpeg_open_context(FREERDP_DSP_CONTEXT* context)
{
int ret;
- int layout;
- const AUDIO_FORMAT* format;
if (!context || context->isOpen)
return FALSE;
- format = &context->format;
+ const AUDIO_FORMAT* format = &context->format;
if (!format)
return FALSE;
-
- layout = av_get_default_channel_layout(format->nChannels);
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
+ const int layout = av_get_default_channel_layout(format->nChannels);
+#endif
context->id = ffmpeg_get_avcodec(format);
if (ffmpeg_codec_is_filtered(context->id, context->encoder))
@@ -270,8 +269,12 @@ static BOOL ffmpeg_open_context(FREERDP_DSP_CONTEXT* context)
break;
}
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
context->context->channels = format->nChannels;
context->context->channel_layout = layout;
+#else
+ av_channel_layout_default(&context->context->ch_layout, format->nChannels);
+#endif
context->context->sample_rate = format->nSamplesPerSec;
context->context->block_align = format->nBlockAlign;
context->context->bit_rate = format->nAvgBytesPerSec * 8;
@@ -314,8 +317,12 @@ static BOOL ffmpeg_open_context(FREERDP_DSP_CONTEXT* context)
if (!context->rcontext)
goto fail;
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
context->frame->channel_layout = layout;
context->frame->channels = format->nChannels;
+#else
+ av_channel_layout_default(&context->frame->ch_layout, format->nChannels);
+#endif
context->frame->sample_rate = format->nSamplesPerSec;
context->frame->format = AV_SAMPLE_FMT_S16;
@@ -330,13 +337,21 @@ static BOOL ffmpeg_open_context(FREERDP_DSP_CONTEXT* context)
context->resampled->sample_rate = format->nSamplesPerSec;
}
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
context->resampled->channel_layout = layout;
context->resampled->channels = format->nChannels;
+#else
+ av_channel_layout_default(&context->resampled->ch_layout, format->nChannels);
+#endif
if (context->context->frame_size > 0)
{
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
context->buffered->channel_layout = context->resampled->channel_layout;
context->buffered->channels = context->resampled->channels;
+#else
+ av_channel_layout_copy(&context->buffered->ch_layout, &context->resampled->ch_layout);
+#endif
context->buffered->format = context->resampled->format;
context->buffered->nb_samples = context->context->frame_size;
@@ -477,14 +492,20 @@ static BOOL ffmpeg_fill_frame(AVFrame* frame, const AUDIO_FORMAT* inputFormat, c
size_t size)
{
int ret, bpp;
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
frame->channels = inputFormat->nChannels;
+ frame->channel_layout = av_get_default_channel_layout(frame->channels);
+#else
+ av_channel_layout_default(&frame->ch_layout, inputFormat->nChannels);
+#endif
frame->sample_rate = inputFormat->nSamplesPerSec;
frame->format = ffmpeg_sample_format(inputFormat);
- frame->channel_layout = av_get_default_channel_layout(frame->channels);
+
bpp = av_get_bytes_per_sample(frame->format);
frame->nb_samples = size / inputFormat->nChannels / bpp;
- if ((ret = avcodec_fill_audio_frame(frame, frame->channels, frame->format, data, size, 1)) < 0)
+ if ((ret = avcodec_fill_audio_frame(frame, inputFormat->nChannels, frame->format, data, size,
+ 1)) < 0)
{
const char* err = av_err2str(ret);
WLog_ERR(TAG, "Error during audio frame fill %s [%d]", err, ret);
@@ -566,7 +587,12 @@ static BOOL ffmpeg_decode(AVCodecContext* dec_ctx, AVPacket* pkt, AVFrame* frame
}
{
- const size_t data_size = resampled->channels * resampled->nb_samples * 2;
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
+ const size_t channels = resampled->channels;
+#else
+ const size_t channels = resampled->ch_layout.nb_channels;
+#endif
+ const size_t data_size = channels * resampled->nb_samples * 2;
Stream_EnsureRemainingCapacity(out, data_size);
Stream_Write(out, resampled->data[0], data_size);
}
@@ -661,10 +687,14 @@ BOOL freerdp_dsp_ffmpeg_encode(FREERDP_DSP_CONTEXT* context, const AUDIO_FORMAT*
if (inSamples + (int)context->bufferedSamples > context->context->frame_size)
inSamples = context->context->frame_size - (int)context->bufferedSamples;
- rc =
- av_samples_copy(context->buffered->extended_data, context->resampled->extended_data,
- (int)context->bufferedSamples, copied, inSamples,
- context->context->channels, context->context->sample_fmt);
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
+ const int channels = context->context->channels;
+#else
+ const int channels = context->context->ch_layout.nb_channels;
+#endif
+ rc = av_samples_copy(context->buffered->extended_data,
+ context->resampled->extended_data, (int)context->bufferedSamples,
+ copied, inSamples, channels, context->context->sample_fmt);
rest -= inSamples;
copied += inSamples;
context->bufferedSamples += (UINT32)inSamples;
--
2.47.3

View File

@@ -0,0 +1,34 @@
From 83ba6817093ad1546053878c2e720d13f29f9126 Mon Sep 17 00:00:00 2001
From: Armin Novak <anovak@thincast.com>
Date: Fri, 24 Nov 2023 19:40:52 +0100
Subject: [PATCH] fix ffmpeg deprecation warning
Upstream: https://github.com/FreeRDP/FreeRDP/commit/1ef7b9e3e06ef69e5145c6f11cc330078abaa9ea
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
libfreerdp/codec/dsp_ffmpeg.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/libfreerdp/codec/dsp_ffmpeg.c b/libfreerdp/codec/dsp_ffmpeg.c
index 22d6ce215..5c89af6b1 100644
--- a/libfreerdp/codec/dsp_ffmpeg.c
+++ b/libfreerdp/codec/dsp_ffmpeg.c
@@ -436,7 +436,13 @@ static BOOL ffmpeg_encode_frame(AVCodecContext* context, AVFrame* in, AVPacket*
if (in->format == AV_SAMPLE_FMT_FLTP)
{
uint8_t** pp = in->extended_data;
- for (int y = 0; y < in->channels; y++)
+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 28, 100)
+ const int nr_channels = in->channels;
+#else
+ const int nr_channels = in->ch_layout.nb_channels;
+#endif
+
+ for (int y = 0; y < nr_channels; y++)
{
float* data = (float*)pp[y];
for (int x = 0; x < in->nb_samples; x++)
--
2.47.3

View File

@@ -0,0 +1,31 @@
From 9360089dfbcb6ee97a6b8f40c85f61e4108c80e4 Mon Sep 17 00:00:00 2001
From: endlesseden <endlesseden@users.noreply.github.com>
Date: Tue, 29 Apr 2025 16:11:03 +1000
Subject: [PATCH] FF_PROFILE Depreciation Fix
Upstream: https://github.com/FreeRDP/FreeRDP/commit/af45cb37e3b2d81a11637c4b2dfe82e8947c41ea
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
libfreerdp/codec/dsp_ffmpeg.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/libfreerdp/codec/dsp_ffmpeg.c b/libfreerdp/codec/dsp_ffmpeg.c
index 5c89af6b1..8955e894d 100644
--- a/libfreerdp/codec/dsp_ffmpeg.c
+++ b/libfreerdp/codec/dsp_ffmpeg.c
@@ -262,7 +262,11 @@ static BOOL ffmpeg_open_context(FREERDP_DSP_CONTEXT* context)
break;
case AV_CODEC_ID_AAC:
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(60, 31, 102)
context->context->profile = FF_PROFILE_AAC_MAIN;
+#else
+ context->context->profile = AV_PROFILE_AAC_MAIN;
+#endif
break;
default:
--
2.47.3

View File

@@ -0,0 +1,44 @@
From dcc8f415866e348ae86cfe85fde3c2d9285a7208 Mon Sep 17 00:00:00 2001
From: akallabeth <akallabeth@posteo.net>
Date: Tue, 28 Jan 2025 20:25:17 +0100
Subject: [PATCH] ignore EAGAIN for FFMPEG
Upstream: https://github.com/FreeRDP/FreeRDP/commit/726add2a982bfdf4cffef3cc95395c9a4b49385b
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
[partially backported to stable-2.0 branch]
---
libfreerdp/codec/h264_ffmpeg.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libfreerdp/codec/h264_ffmpeg.c b/libfreerdp/codec/h264_ffmpeg.c
index 9c445b825..da6bed08e 100644
--- a/libfreerdp/codec/h264_ffmpeg.c
+++ b/libfreerdp/codec/h264_ffmpeg.c
@@ -100,10 +100,10 @@ static void libavcodec_destroy_encoder(H264_CONTEXT* h264)
if (sys->codecEncoderContext)
{
- avcodec_close(sys->codecEncoderContext);
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 69, 100)
avcodec_free_context(&sys->codecEncoderContext);
#else
+ avcodec_close(sys->codecEncoderContext);
av_free(sys->codecEncoderContext);
#endif
}
@@ -430,10 +430,10 @@ static void libavcodec_uninit(H264_CONTEXT* h264)
if (sys->codecDecoderContext)
{
- avcodec_close(sys->codecDecoderContext);
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 69, 100)
avcodec_free_context(&sys->codecDecoderContext);
#else
+ avcodec_close(sys->codecDecoderContext);
av_free(sys->codecDecoderContext);
#endif
}
--
2.47.3

View File

@@ -15,7 +15,9 @@ FREERDP_CPE_ID_VENDOR = freerdp
FREERDP_INSTALL_STAGING = YES
FREERDP_CONF_OPTS = -DWITH_MANPAGES=OFF -Wno-dev -DWITH_GSTREAMER_0_10=OFF
FREERDP_CONF_OPTS = \
-DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -Wno-incompatible-pointer-types" \
-DWITH_MANPAGES=OFF -Wno-dev -DWITH_GSTREAMER_0_10=OFF
ifeq ($(BR2_PACKAGE_FREERDP_GSTREAMER1),y)
FREERDP_CONF_OPTS += -DWITH_GSTREAMER_1_0=ON

View File

@@ -0,0 +1,52 @@
From 0ce211af3a3ad0b1060b542d0a92a07dab5d2d59 Mon Sep 17 00:00:00 2001
From: Bernd Kuhls <bernd@kuhls.net>
Date: Sat, 23 Aug 2025 18:15:39 +0200
Subject: [PATCH] [mod_av] Add support for FFmpeg 8.0
remove deprecated FF_API_FF_PROFILE_LEVEL:
https://github.com/FFmpeg/FFmpeg/commit/822432769868da325ba03774df1084aa78b9a5a0
Upstream: https://github.com/signalwire/freeswitch/pull/2896
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
src/mod/applications/mod_av/avcodec.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/mod/applications/mod_av/avcodec.c b/src/mod/applications/mod_av/avcodec.c
index a9d449b562c..9962b821d53 100644
--- a/src/mod/applications/mod_av/avcodec.c
+++ b/src/mod/applications/mod_av/avcodec.c
@@ -530,7 +530,7 @@ static void init_profile(avcodec_profile_t *aprofile, const char *name)
aprofile->decoder_thread_count = avcodec_globals.dec_threads;
if (!strcasecmp(name, "H264")) {
- aprofile->ctx.profile = FF_PROFILE_H264_BASELINE;
+ aprofile->ctx.profile = AV_PROFILE_H264_BASELINE;
aprofile->ctx.level = 31;
#ifdef AV_CODEC_FLAG_PSNR
aprofile->ctx.flags |= AV_CODEC_FLAG_PSNR;
@@ -2071,7 +2071,7 @@ static void parse_profile(avcodec_profile_t *aprofile, switch_xml_t profile)
ctx = &aprofile->ctx;
- ctx->profile = FF_PROFILE_H264_BASELINE;
+ ctx->profile = AV_PROFILE_H264_BASELINE;
ctx->level = 31;
for (param = switch_xml_child(profile, "param"); param; param = param->next) {
@@ -2094,11 +2094,11 @@ static void parse_profile(avcodec_profile_t *aprofile, switch_xml_t profile)
if (ctx->profile == 0 && !strcasecmp(aprofile->name, "H264")) {
if (!strcasecmp(value, "baseline")) {
- ctx->profile = FF_PROFILE_H264_BASELINE;
+ ctx->profile = AV_PROFILE_H264_BASELINE;
} else if (!strcasecmp(value, "main")) {
- ctx->profile = FF_PROFILE_H264_MAIN;
+ ctx->profile = AV_PROFILE_H264_MAIN;
} else if (!strcasecmp(value, "high")) {
- ctx->profile = FF_PROFILE_H264_HIGH;
+ ctx->profile = AV_PROFILE_H264_HIGH;
}
}
} else if (!strcmp(name, "level")) {

View File

@@ -1,5 +1,10 @@
config BR2_PACKAGE_IGT_GPU_TOOLS_ARCH_SUPPORTS
bool
default y if BR2_ENDIAN = "LITTLE"
config BR2_PACKAGE_IGT_GPU_TOOLS
bool "igt-gpu-tools"
depends on BR2_PACKAGE_IGT_GPU_TOOLS_ARCH_SUPPORTS
depends on BR2_USE_MMU # fork()
depends on BR2_ENABLE_LOCALE
depends on !BR2_STATIC_LIBS
@@ -35,6 +40,7 @@ config BR2_PACKAGE_IGT_GPU_TOOLS_TESTS
endif
comment "igt-gpu-tools needs udev /dev management and toolchain w/ NPTL, wchar, dynamic library, locale, headers >= 4.11"
depends on BR2_PACKAGE_IGT_GPU_TOOLS_ARCH_SUPPORTS
depends on BR2_USE_MMU
depends on !BR2_PACKAGE_HAS_UDEV || BR2_STATIC_LIBS || \
!BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_USE_WCHAR || \

View File

@@ -1,5 +1,6 @@
config BR2_PACKAGE_PYTHON_ZIPSTREAM_NG
bool "python-zipstream-ng"
select BR2_PACKAGE_PYTHON3_ZSTD # runtime
help
A modern and easy to use streamable zip file generator.

View File

@@ -127,6 +127,12 @@ config BR2_PACKAGE_PYTHON3_ZLIB
help
zlib support in Python3
config BR2_PACKAGE_PYTHON3_ZSTD
bool "zstd module"
select BR2_PACKAGE_ZSTD
help
zstd support in Python3
endmenu
endif

View File

@@ -170,6 +170,12 @@ else
PYTHON3_CONF_ENV += py_cv_module_zlib=n/a
endif
ifeq ($(BR2_PACKAGE_PYTHON3_ZSTD),y)
PYTHON3_DEPENDENCIES += zstd
else
PYTHON3_CONF_ENV += py_cv_module__zstd=n/a
endif
ifneq ($(BR2_PACKAGE_PYTHON3_OSSAUDIODEV),y)
PYTHON3_CONF_ENV += py_cv_module_ossaudiodev=n/a
endif

View File

@@ -0,0 +1,39 @@
From 9670d9e5eb7acb9efb0f2f1a798a09baace53d82 Mon Sep 17 00:00:00 2001
From: Tim Blechmann <tim.blechmann@qt.io>
Date: Mon, 2 Jun 2025 09:56:57 +0800
Subject: FFmpeg: 7.2 compile fix
AV_CODEC_CAP_SUBFRAMES was deprecated without replacement and removed.
Pick-to: 6.8 6.5
Change-Id: I45ac1d0d603f88701bdb727a7a472cfea8f32d5d
Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io>
Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
(cherry picked from commit 65b11b9f97632101041134e04713697b17819884)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit ef866d101e58832f0bf86150ed8328e2d3ec9c49)
Upstream: https://code.qt.io/cgit/qt/qtmultimedia.git/commit/?h=6.9.2&id=9670d9e5eb7acb9efb0f2f1a798a09baace53d82
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
src/plugins/multimedia/ffmpeg/qffmpegcodecstorage.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/plugins/multimedia/ffmpeg/qffmpegcodecstorage.cpp b/src/plugins/multimedia/ffmpeg/qffmpegcodecstorage.cpp
index c154fd835..360a33909 100644
--- a/src/plugins/multimedia/ffmpeg/qffmpegcodecstorage.cpp
+++ b/src/plugins/multimedia/ffmpeg/qffmpegcodecstorage.cpp
@@ -99,7 +99,9 @@ void dumpCodecInfo(const Codec &codec)
{ AV_CODEC_CAP_DR1, "DRAW_HORIZ_DR1" },
{ AV_CODEC_CAP_DELAY, "DELAY" },
{ AV_CODEC_CAP_SMALL_LAST_FRAME, "SMALL_LAST_FRAME" },
+#ifdef AV_CODEC_CAP_SUBFRAMES
{ AV_CODEC_CAP_SUBFRAMES, "SUBFRAMES" },
+#endif
{ AV_CODEC_CAP_EXPERIMENTAL, "EXPERIMENTAL" },
{ AV_CODEC_CAP_CHANNEL_CONF, "CHANNEL_CONF" },
{ AV_CODEC_CAP_FRAME_THREADS, "FRAME_THREADS" },
--
cgit v1.2.3

View File

@@ -0,0 +1,9 @@
BR2_aarch64=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_URL="http://toolchains.bootlin.com/downloads/releases/toolchains/aarch64--glibc--bleeding-edge-2017.05-toolchains-1-2.tar.bz2"
BR2_TOOLCHAIN_EXTERNAL_GCC_6=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
BR2_TOOLCHAIN_EXTERNAL_CXX=y

View File

@@ -0,0 +1,4 @@
BR2_mips64el=y
# BR2_MIPS_SOFT_FLOAT is not set
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_MIPS64EL_N32_GLIBC_STABLE=y

View File

@@ -1,3 +0,0 @@
BR2_arcle=y
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y

View File

@@ -1,4 +0,0 @@
BR2_arcle=y
BR2_archs38=y
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y

View File

@@ -1,5 +0,0 @@
BR2_arm=y
BR2_ARM_EABI=y
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y

View File

@@ -1,4 +0,0 @@
BR2_arm=y
BR2_cortex_a8=y
BR2_TOOLCHAIN_BUILDROOT_MUSL=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y

View File

@@ -1,10 +0,0 @@
BR2_x86_pentium4=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-i386-pentium4-full-2020.11.2.tar.bz2"
BR2_TOOLCHAIN_EXTERNAL_GCC_9=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4=y
BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
BR2_TOOLCHAIN_EXTERNAL_CXX=y

View File

@@ -1 +0,0 @@
BR2_microblazeel=y

View File

@@ -1,10 +0,0 @@
BR2_mips64el=y
BR2_MIPS_NABI64=y
# BR2_MIPS_SOFT_FLOAT is not set
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mips64-n64-full-2020.11.2.tar.bz2"
BR2_TOOLCHAIN_EXTERNAL_GCC_8=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y
BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
BR2_TOOLCHAIN_EXTERNAL_CXX=y

View File

@@ -1,12 +0,0 @@
BR2_mips64el=y
BR2_mips_64r6=y
BR2_MIPS_NABI64=y
# BR2_MIPS_SOFT_FLOAT is not set
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mips64r6-n64-el-hf-2020.11.2.tar.bz2"
BR2_TOOLCHAIN_EXTERNAL_GCC_9=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
BR2_TOOLCHAIN_EXTERNAL_CXX=y

View File

@@ -1,10 +0,0 @@
BR2_powerpc=y
BR2_powerpc_603e=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-powerpc-603e-basic-cpp-2020.11.2.tar.bz2"
BR2_TOOLCHAIN_EXTERNAL_GCC_9=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y
# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
BR2_TOOLCHAIN_EXTERNAL_CXX=y

View File

@@ -1,4 +0,0 @@
BR2_powerpc=y
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y

View File

@@ -1,9 +0,0 @@
BR2_powerpc64=y
BR2_powerpc_power7=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-powerpc64-power7-glibc-2020.11.2.tar.bz2"
BR2_TOOLCHAIN_EXTERNAL_GCC_9=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
BR2_TOOLCHAIN_EXTERNAL_CXX=y

View File

@@ -1,4 +0,0 @@
BR2_riscv=y
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y

View File

@@ -1,4 +0,0 @@
BR2_s390x=y
BR2_s390x_z13=y
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y

View File

@@ -1,3 +0,0 @@
BR2_xtensa=y
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y

View File

@@ -18,6 +18,9 @@ support/config-fragments/autobuild/bootlin-x86-64-musl.config,x86_64
# Test a MMU toolchain without dynamic library support
support/config-fragments/autobuild/br-arm-full-static.config,x86_64
# Test a really old toolchain (gcc 6.x, headers 4.9)
support/config-fragments/autobuild/bootlin-aarch64-glibc-old.config,x86_64
# Toolchains used by test-pkg only when the '-a' option is passed:
support/config-fragments/autobuild/arm-aarch64.config,x86_64
support/config-fragments/autobuild/bootlin-aarch64-glibc.config,x86_64
@@ -28,6 +31,7 @@ support/config-fragments/autobuild/bootlin-m68k-5208-uclibc.config,x86_64
support/config-fragments/autobuild/bootlin-microblazeel-uclibc.config,x86_64
support/config-fragments/autobuild/bootlin-mipsel-uclibc.config,x86_64
support/config-fragments/autobuild/bootlin-mipsel32r6-glibc.config,x86_64
support/config-fragments/autobuild/bootlin-mips64el-glibc.config,x86_64
support/config-fragments/autobuild/bootlin-openrisc-uclibc.config,x86_64
support/config-fragments/autobuild/bootlin-powerpc64le-power8-glibc.config,x86_64
support/config-fragments/autobuild/bootlin-powerpc-e500mc-uclibc.config,x86_64
@@ -42,22 +46,8 @@ support/config-fragments/autobuild/bootlin-x86-i686-musl.config,x86_64
support/config-fragments/autobuild/bootlin-x86-64-glibc.config,x86_64
support/config-fragments/autobuild/bootlin-x86-64-uclibc.config,x86_64
support/config-fragments/autobuild/bootlin-xtensa-uclibc.config,x86_64
support/config-fragments/autobuild/br-arc-full-internal.config,any
support/config-fragments/autobuild/br-arc-internal-glibc.config,any
support/config-fragments/autobuild/br-arm-basic.config,x86_64
support/config-fragments/autobuild/br-arm-full-nothread.config,x86_64
support/config-fragments/autobuild/br-arm-internal-full.config,any
support/config-fragments/autobuild/br-arm-internal-glibc.config,any
support/config-fragments/autobuild/br-arm-internal-musl.config,any
support/config-fragments/autobuild/br-i386-pentium4-full.config,x86_64
support/config-fragments/autobuild/br-loongarch64-full-internal.config,any
support/config-fragments/autobuild/br-loongarch64-internal-glibc.config,any
support/config-fragments/autobuild/br-microblazeel-full-internal.config,any
support/config-fragments/autobuild/br-mips64-n64-full.config,x86_64
support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config,x86_64
support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config,x86_64
support/config-fragments/autobuild/br-powerpc64-power7-glibc.config,x86_64
support/config-fragments/autobuild/br-powerpc-internal-full.config,any
support/config-fragments/autobuild/br-riscv64-full-internal.config,any
support/config-fragments/autobuild/br-s390x-z13-internal-glibc.config,any
support/config-fragments/autobuild/br-xtensa-full-internal.config,any
Can't render this file because it contains an unexpected character in line 1 and column 26.

View File

@@ -0,0 +1,108 @@
import json
import os
import time
import infra.basetest
class TestAiChat(infra.basetest.BRTest):
rootfs_overlay = \
infra.filepath("tests/package/test_aichat/rootfs-overlay")
config = f"""
BR2_aarch64=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
BR2_SYSTEM_DHCP="eth0"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.3"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"
BR2_PACKAGE_AICHAT=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_LIBCURL=y
BR2_PACKAGE_LIBCURL_CURL=y
BR2_PACKAGE_LLAMA_CPP=y
BR2_PACKAGE_LLAMA_CPP_SERVER=y
BR2_PACKAGE_LLAMA_CPP_TOOLS=y
BR2_PACKAGE_OPENSSL=y
BR2_ROOTFS_OVERLAY="{rootfs_overlay}"
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_SIZE="1024M"
# BR2_TARGET_ROOTFS_TAR is not set
"""
def login(self):
img = os.path.join(self.builddir, "images", "rootfs.ext2")
kern = os.path.join(self.builddir, "images", "Image")
self.emulator.boot(
arch="aarch64",
kernel=kern,
kernel_cmdline=["root=/dev/vda"],
options=[
"-M", "virt",
"-cpu", "cortex-a57",
"-smp", "4",
"-m", "2G",
"-drive", f"file={img},if=virtio,format=raw",
"-net", "nic,model=virtio",
"-net", "user"
]
)
self.emulator.login()
def test_run(self):
self.login()
# Check the program can execute.
self.assertRunOk("aichat --version")
# We define a Hugging Face model to be downloaded.
# We choose a relatively small model, for testing.
hf_model = "ggml-org/gemma-3-270m-it-GGUF"
# We define a common knowledge question to ask to the model.
prompt = "What is the capital of the United Kingdom?"
# We define an expected keyword, to be present in the answer.
expected_answer = "london"
# We set few llama-server options:
llama_opts = "--log-file /tmp/llama-server.log"
# We set a fixed seed, to reduce variability of the test
llama_opts += " --seed 123456789"
llama_opts += f" --hf-repo {hf_model}"
# We start a llama-server in background, which will expose an
# openai-compatible API to be used by aichat.
cmd = f"( llama-server {llama_opts} &>/dev/null & )"
self.assertRunOk(cmd)
# We wait for the llama-server to be ready. We query the
# available models API to check the server is ready. We expect
# to see the our model. We also add an extra "echo" to add an
# extra newline.
cmd = "curl http://127.0.0.1:8080/v1/models && echo"
for attempt in range(20 * self.timeout_multiplier):
time.sleep(5)
# To debug the llama-server startup, uncomment the
# following line:
# self.assertRunOk("cat /tmp/llama-server.log")
out, ret = self.emulator.run(cmd)
if ret == 0:
models_json = "".join(out)
models = json.loads(models_json)
model_name = models['models'][0]['name']
if model_name == hf_model:
break
else:
self.fail("Timeout while waiting for llama-server.")
# We ask our question and check the expected answer is present
# in the output. We pipe the output in "cat" to suppress the
# aichat UTF-8 spinner (aichat stdout will not be a tty).
cmd = f"aichat '{prompt}' | cat"
out, ret = self.emulator.run(cmd, timeout=120)
self.assertEqual(ret, 0)
out_str = "\n".join(out).lower()
self.assertIn(expected_answer, out_str)

View File

@@ -0,0 +1,11 @@
# see https://github.com/sigoden/aichat/blob/main/config.example.yaml
model: llama-server:ggml-org/gemma-3-270m-it-GGUF
stream: false
highlight: false
clients:
- type: openai-compatible
name: llama-server
api_base: http://127.0.0.1:8080/v1
models:
- name: ggml-org/gemma-3-270m-it-GGUF