Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package mpd for openSUSE:Factory checked in at 2025-11-04 18:41:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mpd (Old) and /work/SRC/openSUSE:Factory/.mpd.new.1980 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mpd" Tue Nov 4 18:41:58 2025 rev:59 rq:1315366 version:0.24.6 Changes: -------- --- /work/SRC/openSUSE:Factory/mpd/mpd.changes 2025-08-15 21:52:48.689993740 +0200 +++ /work/SRC/openSUSE:Factory/.mpd.new.1980/mpd.changes 2025-11-04 18:42:44.466397149 +0100 @@ -1,0 +2,11 @@ +Mon Nov 3 18:00:22 UTC 2025 - llyyr <[email protected]> + +- Updated to 0.24.6 + * https://raw.githubusercontent.com/MusicPlayerDaemon/MPD/v0.24.6/NEWS + * decoder + * ffmpeg: handle "*.opus" files + * mpg123: another workaround for libmpg123 ID3 corruption bug + * opus: fix seeking in files with large OpusTags + * opus, vorbis: remove METADATA_BLOCK_PICTURE size limit + +------------------------------------------------------------------- Old: ---- mpd-0.24.5.tar.xz mpd-0.24.5.tar.xz.sig New: ---- mpd-0.24.6.tar.xz mpd-0.24.6.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mpd.spec ++++++ --- /var/tmp/diff_new_pack.xinfaN/_old 2025-11-04 18:42:45.466439249 +0100 +++ /var/tmp/diff_new_pack.xinfaN/_new 2025-11-04 18:42:45.470439417 +0100 @@ -1,7 +1,7 @@ # # spec file for package mpd # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2025 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %define ver 0.24 Name: mpd -Version: %{ver}.5 +Version: %{ver}.6 Release: 0 Summary: Music Player Daemon License: GPL-2.0-or-later ++++++ mpd-0.24.5.tar.xz -> mpd-0.24.6.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/.github/workflows/build.yml new/mpd-0.24.6/.github/workflows/build.yml --- old/mpd-0.24.5/.github/workflows/build.yml 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/.github/workflows/build.yml 2025-10-20 12:47:45.000000000 +0200 @@ -72,7 +72,7 @@ steps: - id: checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Install dependencies run: | @@ -205,7 +205,7 @@ steps: - id: checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Install dependencies run: | @@ -272,7 +272,7 @@ runs-on: windows-latest steps: - id: checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - uses: msys2/setup-msys2@v2 with: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/.github/workflows/build_android.yml new/mpd-0.24.6/.github/workflows/build_android.yml --- old/mpd-0.24.5/.github/workflows/build_android.yml 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/.github/workflows/build_android.yml 2025-10-20 12:47:45.000000000 +0200 @@ -40,7 +40,7 @@ runs-on: ubuntu-24.04 steps: - id: checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Install dependencies run: | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/NEWS new/mpd-0.24.6/NEWS --- old/mpd-0.24.5/NEWS 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/NEWS 2025-10-20 12:47:45.000000000 +0200 @@ -1,3 +1,10 @@ +ver 0.24.6 (2025/10/20) +* decoder + - ffmpeg: handle "*.opus" files + - mpg123: another workaround for libmpg123 ID3 corruption bug + - opus: fix seeking in files with large OpusTags + - opus, vorbis: remove METADATA_BLOCK_PICTURE size limit + ver 0.24.5 (2025/07/31) * database - fix disappearing playlist files diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/meson.build new/mpd-0.24.6/meson.build --- old/mpd-0.24.5/meson.build 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/meson.build 2025-10-20 12:47:45.000000000 +0200 @@ -1,7 +1,7 @@ project( 'mpd', ['c', 'cpp'], - version: '0.24.5', + version: '0.24.6', meson_version: '>= 1.0', default_options: [ 'c_std=c11', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/python/build/libs.py new/mpd-0.24.6/python/build/libs.py --- old/mpd-0.24.5/python/build/libs.py 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/python/build/libs.py 2025-10-20 12:47:45.000000000 +0200 @@ -36,8 +36,8 @@ ) libopenmpt = AutotoolsProject( - 'https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-0.7.13+release.autotools.tar.gz', - 'dcd7cde4f9c498eb496c4556e1c1b81353e2a74747e8270a42565117ea42e1f1', + 'https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-0.8.3+release.autotools.tar.gz', + '0b18a9b67674e300f4915f52ef902a9bb184b96a0d93efbc2058ec9526dc97039e0da53d9605e7fda97c46734529813008c2110e2cb4822e04e411444ff21db9', 'lib/libopenmpt.a', [ '--disable-shared', '--enable-static', @@ -49,7 +49,7 @@ '--without-portaudio', '--without-portaudiocpp', '--without-sndfile', '--without-flac', ], - base='libopenmpt-0.7.13+release.autotools', + base='libopenmpt-0.8.3+release.autotools', ) wildmidi = CmakeProject( @@ -79,8 +79,8 @@ ) ffmpeg = FfmpegProject( - 'http://ffmpeg.org/releases/ffmpeg-7.1.1.tar.xz', - '733984395e0dbbe5c046abda2dc49a5544e7e0e1e2366bba849222ae9e3a03b1', + 'http://ffmpeg.org/releases/ffmpeg-8.0.tar.xz', + 'b2751fccb6cc4c77708113cd78b561059b6fa904b24162fa0be2d60273d27b8e', 'lib/libavcodec.a', [ '--disable-shared', '--enable-static', @@ -92,7 +92,6 @@ '--disable-avdevice', '--disable-swresample', '--disable-swscale', - '--disable-postproc', '--disable-avfilter', '--disable-faan', '--disable-pixelutils', @@ -107,8 +106,10 @@ '--disable-sdl2', '--disable-vulkan', + '--disable-videotoolbox', '--disable-xlib', + '--disable-parser=av1', '--disable-parser=bmp', '--disable-parser=cavsvideo', '--disable-parser=dvbsub', @@ -127,9 +128,8 @@ '--disable-parser=mpeg4video', '--disable-parser=mpegvideo', '--disable-parser=opus', + '--disable-parser=prores', '--disable-parser=qoi', - '--disable-parser=rv30', - '--disable-parser=rv40', '--disable-parser=vc1', '--disable-parser=vp3', '--disable-parser=vp8', @@ -139,6 +139,8 @@ '--disable-parser=webp', '--disable-parser=xma', + '--disable-demuxer=av1', + '--disable-demuxer=avi', '--disable-demuxer=aqtitle', '--disable-demuxer=ass', '--disable-demuxer=bethsoftvid', @@ -147,6 +149,7 @@ '--disable-demuxer=cdxl', '--disable-demuxer=dvbsub', '--disable-demuxer=dvbtxt', + '--disable-demuxer=dvdvideo', '--disable-demuxer=h261', '--disable-demuxer=h263', '--disable-demuxer=h264', @@ -210,6 +213,8 @@ '--disable-demuxer=tedcaptions', '--disable-demuxer=vobsub', '--disable-demuxer=vplayer', + '--disable-demuxer=vc1t', + '--disable-demuxer=vpk', '--disable-demuxer=webm_dash_manifest', '--disable-demuxer=webvtt', '--disable-demuxer=yuv4mpegpipe', @@ -240,6 +245,9 @@ '--disable-decoder=qdmc', # disable lots of image and video codecs + '--disable-decoder=av1', + '--disable-decoder=av1_amf', + '--disable-decoder=av1_cuvid', '--disable-decoder=acelp_kelvin', '--disable-decoder=agm', '--disable-decoder=aic', @@ -256,7 +264,6 @@ '--disable-decoder=avrn', '--disable-decoder=avrp', '--disable-decoder=avui', - '--disable-decoder=ayuv', '--disable-decoder=bethsoftvid', '--disable-decoder=bfi', '--disable-decoder=bink', @@ -320,9 +327,12 @@ '--disable-decoder=h263', '--disable-decoder=h263i', '--disable-decoder=h263p', + '--disable-decoder=h263_v4l2m2m', '--disable-decoder=h264', + '--disable-decoder=h264_v4l2m2m', '--disable-decoder=hap', '--disable-decoder=hevc', + '--disable-decoder=hevc_v4l2m2m', '--disable-decoder=hnm4_video', '--disable-decoder=hq_hqa', '--disable-decoder=hqx', @@ -360,12 +370,14 @@ '--disable-decoder=motionpixels', '--disable-decoder=movtext', '--disable-decoder=mpeg1video', + '--disable-decoder=mpeg1_v4l2m2m', '--disable-decoder=mpeg2video', + '--disable-decoder=mpeg2_v4l2m2m', '--disable-decoder=mpeg4', + '--disable-decoder=mpeg4_v4l2m2m', '--disable-decoder=mpegvideo', '--disable-decoder=msa1', '--disable-decoder=mscc', - '--disable-decoder=msmpeg4_crystalhd', '--disable-decoder=msmpeg4v1', '--disable-decoder=msmpeg4v2', '--disable-decoder=msmpeg4v3', @@ -402,6 +414,7 @@ '--disable-decoder=pjs', '--disable-decoder=ppm', '--disable-decoder=prores', + '--disable-decoder=prores_raw', '--disable-decoder=prosumer', '--disable-decoder=psd', '--disable-decoder=ptx', @@ -448,6 +461,7 @@ '--disable-decoder=targa', '--disable-decoder=targa_y216', '--disable-decoder=text', + '--disable-decoder=theora', '--disable-decoder=tiff', '--disable-decoder=tiertexseqvideo', '--disable-decoder=tmv', @@ -469,15 +483,35 @@ '--disable-decoder=vble', '--disable-decoder=vbn', '--disable-decoder=vc1', + '--disable-decoder=vc1image', + '--disable-decoder=vc1_cuvid', + '--disable-decoder=vc1_mmal', + '--disable-decoder=vc1_qsv', + '--disable-decoder=vc1_v4l2m2m', '--disable-decoder=vcr1', '--disable-decoder=vmdvideo', '--disable-decoder=vmnc', '--disable-decoder=vp3', + '--disable-decoder=vp4', '--disable-decoder=vp5', '--disable-decoder=vp6', + '--disable-decoder=vp6a', + '--disable-decoder=vp6f', '--disable-decoder=vp7', '--disable-decoder=vp8', + '--disable-decoder=vp8_cuvid', + '--disable-decoder=vp8_mediacodec', + '--disable-decoder=vp8_qsv', + '--disable-decoder=vp8_rkmpp', + '--disable-decoder=vp8_v4l2m2m', '--disable-decoder=vp9', + '--disable-decoder=vp9_amf', + '--disable-decoder=vp9_cuvid', + '--disable-decoder=vp9_mediacodec', + '--disable-decoder=vp9_qsv', + '--disable-decoder=vp9_rkmpp', + '--disable-decoder=vp9_v4l2m2m', + '--disable-decoder=vp9_vucid', '--disable-decoder=vplayer', '--disable-decoder=vqa', '--disable-decoder=webvtt', @@ -517,6 +551,7 @@ '--disable-bsf=mjpeg2jpeg', '--disable-bsf=opus_metadata', '--disable-bsf=pgs_frame_merge', + '--disable-bsf=prores', '--disable-bsf=text2movsub', '--disable-bsf=vp9_metadata', '--disable-bsf=vp9_raw_reorder', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/src/decoder/plugins/FfmpegDecoderPlugin.cxx new/mpd-0.24.6/src/decoder/plugins/FfmpegDecoderPlugin.cxx --- old/mpd-0.24.5/src/decoder/plugins/FfmpegDecoderPlugin.cxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/src/decoder/plugins/FfmpegDecoderPlugin.cxx 2025-10-20 12:47:45.000000000 +0200 @@ -717,12 +717,18 @@ void *codec_opaque = nullptr; while (const auto codec = av_codec_iterate(&codec_opaque)) { + if (codec->type != AVMEDIA_TYPE_AUDIO) + continue; + if (StringStartsWith(codec->name, "dsd_"sv)) { /* FFmpeg was compiled with DSD support */ suffixes.emplace("dff"sv); suffixes.emplace("dsf"sv); } else if (StringIsEqual(codec->name, "dst")) { suffixes.emplace("dst"sv); + } else if (StringIsEqual(codec->name, "opus") || + StringIsEqual(codec->name, "libopus")) { + suffixes.emplace("opus"sv); } else if (StringStartsWith(codec->name, "wma"sv)) { /* there are codecs "wmav1", "wmav2" etc. and they usually come in "*.wma" files */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/src/decoder/plugins/Mpg123DecoderPlugin.cxx new/mpd-0.24.6/src/decoder/plugins/Mpg123DecoderPlugin.cxx --- old/mpd-0.24.5/src/decoder/plugins/Mpg123DecoderPlugin.cxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/src/decoder/plugins/Mpg123DecoderPlugin.cxx 2025-10-20 12:47:45.000000000 +0200 @@ -474,6 +474,7 @@ #ifdef ENABLE_ID3TAG /* prepare for using mpg123_id3_raw() later */ mpg123_param(&handle, MPG123_ADD_FLAGS, MPG123_STORE_RAW_ID3, 0); + mpg123_param(&handle, MPG123_ADD_FLAGS, MPG123_SKIP_ID3V2, 0); #endif if (full_scan) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/src/decoder/plugins/OggDecoder.cxx new/mpd-0.24.6/src/decoder/plugins/OggDecoder.cxx --- old/mpd-0.24.5/src/decoder/plugins/OggDecoder.cxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/src/decoder/plugins/OggDecoder.cxx 2025-10-20 12:47:45.000000000 +0200 @@ -75,7 +75,7 @@ static const ogg_int64_t MARGIN_BEFORE = 44100 / 3; static const ogg_int64_t MARGIN_AFTER = 44100 / 10; - offset_type min_offset = 0, max_offset = input_stream.GetSize(); + offset_type min_offset = first_offset, max_offset = input_stream.GetSize(); ogg_int64_t min_granule = 0, max_granule = end_granulepos; while (true) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/src/decoder/plugins/OggDecoder.hxx new/mpd-0.24.6/src/decoder/plugins/OggDecoder.hxx --- old/mpd-0.24.5/src/decoder/plugins/OggDecoder.hxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/src/decoder/plugins/OggDecoder.hxx 2025-10-20 12:47:45.000000000 +0200 @@ -9,6 +9,23 @@ #include "input/Offset.hxx" class OggDecoder : public OggVisitor { + /** + * The file offset of the first audio packet (starts at + * granulepos 0). This is used by SeekGranulePos() to + * interpolate the seek offset between this offset and + * end-of-file, possibly skipping (large) tags preceding the + * first audio packet. + */ + offset_type first_offset = 0; + + /** + * The granulepos at the end of the last packet. This is used + * to calculate the song duration and to calculate seek file + * offsets. + * + * This field is uninitialized until UpdateEndGranulePos() is + * called. + */ ogg_int64_t end_granulepos; protected: @@ -30,6 +47,25 @@ ogg_int64_t LoadEndGranulePos() const; protected: + bool HasFirstOffset() const noexcept { + return first_offset > 0; + } + + void SetFirstOffset(offset_type _first_offset) noexcept { + first_offset = _first_offset; + } + + /** + * If currently unset, set the #first_offset field to the + * start of the most recent Ogg page. Decoder implementations + * should call this when they see the first page/packet + * containing audio data. + */ + void AutoSetFirstOffset() noexcept { + if (!HasFirstOffset()) + SetFirstOffset(GetStartOffset()); + } + ogg_int64_t UpdateEndGranulePos() { return end_granulepos = LoadEndGranulePos(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/src/decoder/plugins/OpusDecoderPlugin.cxx new/mpd-0.24.6/src/decoder/plugins/OpusDecoderPlugin.cxx --- old/mpd-0.24.5/src/decoder/plugins/OpusDecoderPlugin.cxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/src/decoder/plugins/OpusDecoderPlugin.cxx 2025-10-20 12:47:45.000000000 +0200 @@ -113,6 +113,14 @@ */ bool submitted_replay_gain = false; + /** + * This is true if a SEEK command was received from + * DecoderClient::Ready(). We continue reading until we see + * the first packet in order to apply ReplayGain and find the + * file offset of the first audio packet. + */ + bool initial_seek = false; + public: explicit MPDOpusDecoder(DecoderReader &reader) :OggDecoder(reader) {} @@ -230,8 +238,17 @@ * audio_format.channels]; auto cmd = client.GetCommand(); - if (cmd != DecoderCommand::NONE) + if (cmd != DecoderCommand::NONE) { + if (cmd == DecoderCommand::SEEK) { + /* postpone the seek until we have found the + first packet with audio data, i.e. after + the AutoSetFirstOffset() call */ + initial_seek = true; + return; + } + throw cmd; + } } void @@ -274,7 +291,8 @@ if (!tag_builder.empty()) { Tag tag = tag_builder.Commit(); auto cmd = client.SubmitTag(input_stream, std::move(tag)); - if (cmd != DecoderCommand::NONE) + if (cmd != DecoderCommand::NONE && + (cmd != DecoderCommand::SEEK || !initial_seek)) throw cmd; } } @@ -296,6 +314,16 @@ submitted_replay_gain = true; } + AutoSetFirstOffset(); + + if (initial_seek) { + /* now that AutoSetFirstOffset() was called, we can do + the seek (don't bother to waste time on decoding + audio data) */ + initial_seek = false; + throw DecoderCommand::SEEK; + } + int nframes = opus_decode(opus_decoder, (const unsigned char*)packet.packet, packet.bytes, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/src/decoder/plugins/VorbisDecoderPlugin.cxx new/mpd-0.24.6/src/decoder/plugins/VorbisDecoderPlugin.cxx --- old/mpd-0.24.5/src/decoder/plugins/VorbisDecoderPlugin.cxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/src/decoder/plugins/VorbisDecoderPlugin.cxx 2025-10-20 12:47:45.000000000 +0200 @@ -268,6 +268,8 @@ vorbis_block_init(&dsp, &block); } + AutoSetFirstOffset(); + if (vorbis_synthesis(&block, &packet) != 0) { /* ignore bad packets, but give the MPD core a chance to stop us */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/src/event/Loop.cxx new/mpd-0.24.6/src/event/Loop.cxx --- old/mpd-0.24.5/src/event/Loop.cxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/src/event/Loop.cxx 2025-10-20 12:47:45.000000000 +0200 @@ -415,7 +415,12 @@ io_uring_prep_poll_multishot() is edge-triggered, so we have to consume all events to rearm it */ - if (!epoll_ready) { + if (epoll_ready) + /* don't wait for io_uring completions if epoll is + still ready */ + timeout = Event::Duration{0}; + + { struct __kernel_timespec timeout_buffer; auto *kernel_timeout = ExportTimeoutKernelTimespec(timeout, timeout_buffer); Uring::Queue &uring_queue = *uring; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/src/event/ServerSocket.cxx new/mpd-0.24.6/src/event/ServerSocket.cxx --- old/mpd-0.24.5/src/event/ServerSocket.cxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/src/event/ServerSocket.cxx 2025-10-20 12:47:45.000000000 +0200 @@ -15,7 +15,7 @@ #include "net/Resolver.hxx" #include "net/AddressInfo.hxx" #include "event/SocketEvent.hxx" -#include "fs/AllocatedPath.hxx" +#include "fs/Path.hxx" #include "util/Domain.hxx" #include "Log.hxx" @@ -33,10 +33,6 @@ const unsigned serial; -#ifdef HAVE_UN - AllocatedPath path; -#endif - const AllocatedSocketAddress address; public: @@ -47,9 +43,6 @@ :parent(_parent), event(_loop, BIND_THIS_METHOD(OnSocketReady)), serial(_serial), -#ifdef HAVE_UN - path(nullptr), -#endif address(std::forward<A>(_address)) { } @@ -65,14 +58,6 @@ return serial; } -#ifdef HAVE_UN - void SetPath(AllocatedPath &&_path) noexcept { - assert(path.IsNull()); - - path = std::move(_path); - } -#endif - [[nodiscard]] bool IsDefined() const noexcept { return event.IsDefined(); } @@ -157,8 +142,8 @@ #ifdef HAVE_UN /* allow everybody to connect */ - if (!path.IsNull()) - chmod(path.c_str(), 0666); + if (const char *path = address.GetLocalPath()) + chmod(path, 0666); #endif /* register in the EventLoop */ @@ -345,7 +330,7 @@ } void -ServerSocket::AddPath(AllocatedPath &&path) +ServerSocket::AddPath(Path path) { #ifdef HAVE_UN unlink(path.c_str()); @@ -353,8 +338,7 @@ AllocatedSocketAddress address; address.SetLocal(path.c_str()); - OneServerSocket &s = AddAddress(std::move(address)); - s.SetPath(std::move(path)); + AddAddress(std::move(address)); #else /* !HAVE_UN */ (void)path; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/src/event/ServerSocket.hxx new/mpd-0.24.6/src/event/ServerSocket.hxx --- old/mpd-0.24.5/src/event/ServerSocket.hxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/src/event/ServerSocket.hxx 2025-10-20 12:47:45.000000000 +0200 @@ -13,7 +13,7 @@ class AllocatedSocketAddress; class UniqueSocketDescriptor; class EventLoop; -class AllocatedPath; +class Path; /** * A socket that accepts incoming stream connections (e.g. TCP). @@ -97,7 +97,7 @@ * * @param path the absolute socket path */ - void AddPath(AllocatedPath &&path); + void AddPath(Path path); /** * Add a listener on an abstract local socket (Linux specific). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/src/lib/xiph/OggSyncState.cxx new/mpd-0.24.6/src/lib/xiph/OggSyncState.cxx --- old/mpd-0.24.5/src/lib/xiph/OggSyncState.cxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/src/lib/xiph/OggSyncState.cxx 2025-10-20 12:47:45.000000000 +0200 @@ -51,7 +51,7 @@ bool OggSyncState::ExpectPageSeek(ogg_page &page) { - size_t remaining_skipped = 65536; + size_t remaining_skipped = 1024 * 1024; while (true) { int r = ogg_sync_pageseek(&oy, &page); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/src/lib/xiph/VorbisComments.cxx new/mpd-0.24.6/src/lib/xiph/VorbisComments.cxx --- old/mpd-0.24.5/src/lib/xiph/VorbisComments.cxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/src/lib/xiph/VorbisComments.cxx 2025-10-20 12:47:45.000000000 +0200 @@ -18,6 +18,8 @@ #include <tremor/ivorbiscodec.h> #endif /* HAVE_TREMOR */ +using std::string_view_literals::operator""sv; + template<typename F> static void ForEachUserComment(const vorbis_comment &vc, F &&f) @@ -49,11 +51,11 @@ static void vorbis_scan_comment(std::string_view comment, TagHandler &handler) noexcept { - const auto picture_b64 = handler.WantPicture() - ? GetVorbisCommentValue(comment, "METADATA_BLOCK_PICTURE") - : std::string_view{}; - if (picture_b64.data() != nullptr) - return ScanVorbisPicture(picture_b64, handler); + if (handler.WantPicture()) { + if (const auto picture_b64 = GetVorbisCommentValue(comment, "METADATA_BLOCK_PICTURE"sv); + picture_b64.data() != nullptr) + return ScanVorbisPicture(picture_b64, handler); + } ScanVorbisComment(comment, handler); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/src/lib/xiph/VorbisPicture.cxx new/mpd-0.24.6/src/lib/xiph/VorbisPicture.cxx --- old/mpd-0.24.5/src/lib/xiph/VorbisPicture.cxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/src/lib/xiph/VorbisPicture.cxx 2025-10-20 12:47:45.000000000 +0200 @@ -11,10 +11,6 @@ ScanVorbisPicture(std::string_view value, TagHandler &handler) noexcept { #ifdef HAVE_BASE64 - if (value.size() > 1024 * 1024) - /* ignore image files which are too huge */ - return; - try { return ScanId3Apic(DecodeBase64(value), handler); } catch (...) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/src/neighbor/Glue.cxx new/mpd-0.24.6/src/neighbor/Glue.cxx --- old/mpd-0.24.5/src/neighbor/Glue.cxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/src/neighbor/Glue.cxx 2025-10-20 12:47:45.000000000 +0200 @@ -57,7 +57,7 @@ for (auto k = explorers.begin(); k != i; ++k) k->explorer->Close(); - std::throw_with_nested(FmtRuntimeError("Failed to open neighblor plugin {:?}", + std::throw_with_nested(FmtRuntimeError("Failed to open neighbor plugin {:?}", i->name)); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/subprojects/.gitignore new/mpd-0.24.6/subprojects/.gitignore --- old/mpd-0.24.5/subprojects/.gitignore 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/subprojects/.gitignore 2025-10-20 12:47:45.000000000 +0200 @@ -1,4 +1,5 @@ /packagecache/ +/.wraplock /curl-*/ /expat-*/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/subprojects/expat.wrap new/mpd-0.24.6/subprojects/expat.wrap --- old/mpd-0.24.5/subprojects/expat.wrap 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/subprojects/expat.wrap 2025-10-20 12:47:45.000000000 +0200 @@ -1,13 +1,13 @@ [wrap-file] -directory = expat-2.7.1 -source_url = https://github.com/libexpat/libexpat/releases/download/R_2_7_1/expat-2.7.1.tar.xz -source_filename = expat-2.7.1.tar.bz2 -source_hash = 354552544b8f99012e5062f7d570ec77f14b412a3ff5c7d8d0dae62c0d217c30 -patch_filename = expat_2.7.1-1_patch.zip -patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.7.1-1/get_patch -patch_hash = fe28cbbc427a7c9787d08b969ad54d19f59d8dd18294b4a18651cecfc789d4ef -source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/expat_2.7.1-1/expat-2.7.1.tar.bz2 -wrapdb_version = 2.7.1-1 +directory = expat-2.7.3 +source_url = https://github.com/libexpat/libexpat/releases/download/R_2_7_3/expat-2.7.3.tar.xz +source_filename = expat-2.7.3.tar.bz2 +source_hash = 71df8f40706a7bb0a80a5367079ea75d91da4f8c65c58ec59bcdfbf7decdab9f +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/expat_2.7.3-1/expat-2.7.3.tar.bz2 +patch_filename = expat_2.7.3-1_patch.zip +patch_url = https://wrapdb.mesonbuild.com/v2/expat_2.7.3-1/get_patch +patch_hash = e870eb4b2e3c142ce1d18ed24309aa40e07c6c911a4625fa1c6fc493ba18153a +wrapdb_version = 2.7.3-1 [provide] expat = expat_dep diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/subprojects/flac.wrap new/mpd-0.24.6/subprojects/flac.wrap --- old/mpd-0.24.5/subprojects/flac.wrap 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/subprojects/flac.wrap 2025-10-20 12:47:45.000000000 +0200 @@ -3,11 +3,11 @@ source_url = https://github.com/xiph/flac/releases/download/1.5.0/flac-1.5.0.tar.xz source_filename = flac-1.5.0.tar.xz source_hash = f2c1c76592a82ffff8413ba3c4a1299b6c7ab06c734dee03fd88630485c2b920 -patch_filename = flac_1.5.0-1_patch.zip -patch_url = https://wrapdb.mesonbuild.com/v2/flac_1.5.0-1/get_patch -patch_hash = c3d7dcb01d6e0a2bc066b12e789661fd9c4356500787004cfc1950d52babd6ca -source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/flac_1.5.0-1/flac-1.5.0.tar.xz -wrapdb_version = 1.5.0-1 +patch_filename = flac_1.5.0-2_patch.zip +patch_url = https://wrapdb.mesonbuild.com/v2/flac_1.5.0-2/get_patch +patch_hash = ee4cd8175784b4032e3b19dda1fe4c1d6d4b285dfa87fe94361f1a6fde732ff0 +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/flac_1.5.0-2/flac-1.5.0.tar.xz +wrapdb_version = 1.5.0-2 [provide] flac = flac_dep diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/subprojects/fmt.wrap new/mpd-0.24.6/subprojects/fmt.wrap --- old/mpd-0.24.5/subprojects/fmt.wrap 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/subprojects/fmt.wrap 2025-10-20 12:47:45.000000000 +0200 @@ -1,13 +1,13 @@ [wrap-file] -directory = fmt-11.2.0 -source_url = https://github.com/fmtlib/fmt/archive/11.2.0.tar.gz -source_filename = fmt-11.2.0.tar.gz -source_hash = bc23066d87ab3168f27cef3e97d545fa63314f5c79df5ea444d41d56f962c6af -patch_filename = fmt_11.2.0-1_patch.zip -patch_url = https://wrapdb.mesonbuild.com/v2/fmt_11.2.0-1/get_patch -patch_hash = 645bf1c335a24608b4b34f16ed10b9237bbb0131488668fb86454202239e086c -source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/fmt_11.2.0-1/fmt-11.2.0.tar.gz -wrapdb_version = 11.2.0-1 +directory = fmt-12.0.0 +source_url = https://github.com/fmtlib/fmt/archive/12.0.0.tar.gz +source_filename = fmt-12.0.0.tar.gz +source_hash = aa3e8fbb6a0066c03454434add1f1fc23299e85758ceec0d7d2d974431481e40 +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/fmt_12.0.0-1/fmt-12.0.0.tar.gz +patch_filename = fmt_12.0.0-1_patch.zip +patch_url = https://wrapdb.mesonbuild.com/v2/fmt_12.0.0-1/get_patch +patch_hash = 307f288ebf3850abf2f0c50ac1fb07de97df9538d39146d802f3c0d6cada8998 +wrapdb_version = 12.0.0-1 [provide] -fmt = fmt_dep +dependency_names = fmt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/subprojects/gtest.wrap new/mpd-0.24.6/subprojects/gtest.wrap --- old/mpd-0.24.5/subprojects/gtest.wrap 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/subprojects/gtest.wrap 2025-10-20 12:47:45.000000000 +0200 @@ -3,11 +3,11 @@ source_url = https://github.com/google/googletest/archive/refs/tags/v1.17.0.tar.gz source_filename = googletest-1.17.0.tar.gz source_hash = 65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c -patch_filename = gtest_1.17.0-3_patch.zip -patch_url = https://wrapdb.mesonbuild.com/v2/gtest_1.17.0-3/get_patch -patch_hash = 3e2799683f27c6dce138b7bae823416581c467ddde755c9a516c0863225f0ceb -source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/gtest_1.17.0-3/googletest-1.17.0.tar.gz -wrapdb_version = 1.17.0-3 +patch_filename = gtest_1.17.0-4_patch.zip +patch_url = https://wrapdb.mesonbuild.com/v2/gtest_1.17.0-4/get_patch +patch_hash = 3abf7662d09db706453a5b064a1e914678c74b9d9b0b19382747ca561d0d8750 +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/gtest_1.17.0-4/googletest-1.17.0.tar.gz +wrapdb_version = 1.17.0-4 [provide] gtest = gtest_dep diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/subprojects/liburing.wrap new/mpd-0.24.6/subprojects/liburing.wrap --- old/mpd-0.24.5/subprojects/liburing.wrap 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/subprojects/liburing.wrap 2025-10-20 12:47:45.000000000 +0200 @@ -1,13 +1,13 @@ [wrap-file] -directory = liburing-liburing-2.5 -source_url = https://github.com/axboe/liburing/archive/refs/tags/liburing-2.5.tar.gz -source_filename = liburing-2.5.tar.gz -source_hash = 456f5f882165630f0dc7b75e8fd53bd01a955d5d4720729b4323097e6e9f2a98 -patch_filename = liburing_2.5-2_patch.zip -patch_url = https://wrapdb.mesonbuild.com/v2/liburing_2.5-2/get_patch -patch_hash = b502734fe6c1ce8318fe22b549883a1a0fee47ac13ae22cbc239191fe8baf4d0 -source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/liburing_2.5-2/liburing-2.5.tar.gz -wrapdb_version = 2.5-2 +directory = liburing-liburing-2.12 +source_url = https://github.com/axboe/liburing/archive/refs/tags/liburing-2.12.tar.gz +source_filename = liburing-2.12.tar.gz +source_hash = f1d10cb058c97c953b4c0c446b11e9177e8c8b32a5a88b309f23fdd389e26370 +patch_filename = liburing_2.12-1_patch.zip +patch_url = https://wrapdb.mesonbuild.com/v2/liburing_2.12-1/get_patch +patch_hash = b21f90196008cde9ed242571a71d8302c703272a2f8b91edd589bd8d6abea47a +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/liburing_2.12-1/liburing-2.12.tar.gz +wrapdb_version = 2.12-1 [provide] dependency_names = liburing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/subprojects/sqlite3.wrap new/mpd-0.24.6/subprojects/sqlite3.wrap --- old/mpd-0.24.5/subprojects/sqlite3.wrap 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/subprojects/sqlite3.wrap 2025-10-20 12:47:45.000000000 +0200 @@ -1,13 +1,13 @@ [wrap-file] -directory = sqlite-amalgamation-3500300 -source_url = https://www.sqlite.org/2025/sqlite-amalgamation-3500300.zip -source_filename = sqlite-amalgamation-3500300.zip -source_hash = 9ad6d16cbc1df7cd55c8b55127c82a9bca5e9f287818de6dc87e04e73599d754 -patch_filename = sqlite3_3.50.3-1_patch.zip -patch_url = https://wrapdb.mesonbuild.com/v2/sqlite3_3.50.3-1/get_patch -patch_hash = 3cc51ec6b835d6cd817153a50a834db164d88f0632b22f3c0673e4674fe5a552 -source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/sqlite3_3.50.3-1/sqlite-amalgamation-3500300.zip -wrapdb_version = 3.50.3-1 +directory = sqlite-amalgamation-3500400 +source_url = https://www.sqlite.org/2025/sqlite-amalgamation-3500400.zip +source_filename = sqlite-amalgamation-3500400.zip +source_hash = 1d3049dd0f830a025a53105fc79fd2ab9431aea99e137809d064d8ee8356b032 +patch_filename = sqlite3_3.50.4-1_patch.zip +patch_url = https://wrapdb.mesonbuild.com/v2/sqlite3_3.50.4-1/get_patch +patch_hash = 61f23729c411d96d575b8d16c47a454f41b815de585289dec8daf855620ebc3e +source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/sqlite3_3.50.4-1/sqlite-amalgamation-3500400.zip +wrapdb_version = 3.50.4-1 [provide] sqlite3 = sqlite3_dep diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/test/DumpOgg.cxx new/mpd-0.24.6/test/DumpOgg.cxx --- old/mpd-0.24.5/test/DumpOgg.cxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/test/DumpOgg.cxx 2025-10-20 12:47:45.000000000 +0200 @@ -10,14 +10,13 @@ #include "event/Thread.hxx" #include "util/PrintException.hxx" -#include <inttypes.h> -#include <stdio.h> +#include <fmt/core.h> int main(int argc, char **argv) noexcept try { if (argc != 2) { - fprintf(stderr, "Usage: DumpOgg FILE\n"); + fmt::print(stderr, "Usage: DumpOgg FILE\n"); return EXIT_FAILURE; } @@ -41,8 +40,8 @@ if (!sync.ExpectPage(page)) break; - printf("page offset=%" PRIu64 " serial=%d\n", - sync.GetStartOffset(), ogg_page_serialno(&page)); + fmt::print("page offset={} serial={}\n", + sync.GetStartOffset(), ogg_page_serialno(&page)); } return EXIT_SUCCESS; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/test/meson.build new/mpd-0.24.6/test/meson.build --- old/mpd-0.24.5/test/meson.build 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/test/meson.build 2025-10-20 12:47:45.000000000 +0200 @@ -490,6 +490,7 @@ 'DumpOgg.cxx', include_directories: inc, dependencies: [ + fmt_dep, ogg_dep, input_glue_dep, archive_glue_dep, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.24.5/test/run_decoder.cxx new/mpd-0.24.6/test/run_decoder.cxx --- old/mpd-0.24.5/test/run_decoder.cxx 2025-07-31 21:58:34.000000000 +0200 +++ new/mpd-0.24.6/test/run_decoder.cxx 2025-10-20 12:47:45.000000000 +0200 @@ -72,7 +72,7 @@ auto args = option_parser.GetRemaining(); if (args.size() != 2) - throw std::runtime_error("Usage: run_decoder [--verbose] [--config=FILE] DECODER URI"); + throw std::runtime_error("Usage: run_decoder [--verbose] [--config=FILE] [--seek=POS] ECODER URI"); c.decoder = args[0]; c.uri = args[1];
