Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package taglib for openSUSE:Factory checked in at 2026-01-15 16:43:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/taglib (Old) and /work/SRC/openSUSE:Factory/.taglib.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "taglib" Thu Jan 15 16:43:47 2026 rev:69 rq:1327233 version:2.1.1 Changes: -------- --- /work/SRC/openSUSE:Factory/taglib/taglib.changes 2025-09-26 22:24:44.090547917 +0200 +++ /work/SRC/openSUSE:Factory/.taglib.new.1928/taglib.changes 2026-01-15 16:44:06.594928784 +0100 @@ -1,0 +2,12 @@ +Tue Jan 13 01:17:21 UTC 2026 - Stefan BrĂ¼ns <[email protected]> + +- Fix writing of Vorbis comment for FLAC in Ogg, add patches: + * 0001-Do-not-warn-when-seeing-FLAC-picture-block-in-Ogg-fi.patch + * 0002-Set-last-header-flag-in-FLAC-Metadata-block-type-fie.patch + * 0003-Avoid-corrupting-an-invalid-FLAC-Ogg-file-without-Vo.patch + * 0004-Fix-reading-of-last-page-in-ogg-stream.patch +- Remove obsolete library dependency, obsolete with SOVERSION bump. +- Remove long obsolete susehelp fragments, drop corresponding + taglib.desktop file, remove deprecated update-desktop-file. + +------------------------------------------------------------------- Old: ---- taglib.desktop New: ---- 0001-Do-not-warn-when-seeing-FLAC-picture-block-in-Ogg-fi.patch 0002-Set-last-header-flag-in-FLAC-Metadata-block-type-fie.patch 0003-Avoid-corrupting-an-invalid-FLAC-Ogg-file-without-Vo.patch 0004-Fix-reading-of-last-page-in-ogg-stream.patch ----------(New B)---------- New:- Fix writing of Vorbis comment for FLAC in Ogg, add patches: * 0001-Do-not-warn-when-seeing-FLAC-picture-block-in-Ogg-fi.patch * 0002-Set-last-header-flag-in-FLAC-Metadata-block-type-fie.patch New: * 0001-Do-not-warn-when-seeing-FLAC-picture-block-in-Ogg-fi.patch * 0002-Set-last-header-flag-in-FLAC-Metadata-block-type-fie.patch * 0003-Avoid-corrupting-an-invalid-FLAC-Ogg-file-without-Vo.patch New: * 0002-Set-last-header-flag-in-FLAC-Metadata-block-type-fie.patch * 0003-Avoid-corrupting-an-invalid-FLAC-Ogg-file-without-Vo.patch * 0004-Fix-reading-of-last-page-in-ogg-stream.patch New: * 0003-Avoid-corrupting-an-invalid-FLAC-Ogg-file-without-Vo.patch * 0004-Fix-reading-of-last-page-in-ogg-stream.patch - Remove obsolete library dependency, obsolete with SOVERSION bump. ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ taglib.spec ++++++ --- /var/tmp/diff_new_pack.FWLvAL/_old 2026-01-15 16:44:07.686974261 +0100 +++ /var/tmp/diff_new_pack.FWLvAL/_new 2026-01-15 16:44:07.686974261 +0100 @@ -1,7 +1,7 @@ # # spec file for package taglib # -# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2026 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 @@ -34,26 +34,23 @@ Group: Productivity/Multimedia/Other URL: https://taglib.github.io/ Source0: https://taglib.github.io/releases/taglib-%{version}.tar.gz -Source1: %{sname}.desktop Source100: baselibs.conf Patch1: taglib-utf8cpp-include.patch -BuildRequires: cmake >= 2.8 +Patch2: 0001-Do-not-warn-when-seeing-FLAC-picture-block-in-Ogg-fi.patch +Patch3: 0002-Set-last-header-flag-in-FLAC-Metadata-block-type-fie.patch +Patch4: 0003-Avoid-corrupting-an-invalid-FLAC-Ogg-file-without-Vo.patch +Patch5: 0004-Fix-reading-of-last-page-in-ogg-stream.patch +BuildRequires: cmake >= 3.5 BuildRequires: fdupes BuildRequires: gcc-c++ BuildRequires: pkgconfig BuildRequires: cmake(utf8cpp) BuildRequires: pkgconfig(zlib) -# NOTE: The tagreader and writer executables give different results when built with -# an earlier taglib-1.8-ds-rusxmms patch. See bnc#814814 -Requires: libtag2 >= %{version}-%{release} -Requires: libtag_c2 >= %{version}-%{release} %if %{with tests} BuildRequires: doxygen BuildRequires: ghostscript-fonts-std BuildRequires: graphviz-gd BuildRequires: libcppunit-devel -BuildRequires: pkgconfig -BuildRequires: update-desktop-files %endif %description @@ -61,7 +58,8 @@ audio formats. Currently it supports both ID3v1 and ID3v2 for MP3 files, Ogg Vorbis comments and ID3 tags and Vorbis comments in FLAC, MPC, Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files. -This package contains built examples which manipulate tags from the + +This package contains built examples to read and write tags from the command line. %package -n libtag2 @@ -93,8 +91,8 @@ License: LGPL-2.1-or-later Group: Development/Libraries/C and C++ Requires: libstdc++-devel -Requires: libtag2 >= %{version}-%{release} -Requires: libtag_c2 >= %{version}-%{release} +Requires: libtag2 = %{version}-%{release} +Requires: libtag_c2 = %{version}-%{release} Requires: zlib-devel # taglib-devel was last used in openSUSE 11.4 (taglib-devel-1.6.2) # The last taglib-devel used was version 1.6.3 from multimedia:libs. @@ -137,12 +135,6 @@ %install %if %{with tests} -# install susehelp file -mkdir -p %{buildroot}%{_datadir}/susehelp/meta/Development/Libraries/ -install -pm 0644 %{SOURCE1} %{buildroot}%{_datadir}/susehelp/meta/Development/Libraries/ - -%suse_update_desktop_file %{buildroot}%{_datadir}/susehelp/meta/Development/Libraries/%{sname}.desktop - # Documentation mkdir -p %{buildroot}%{_defaultdocdir}/libtag-doc # Copy manually, otherwise fdupes does not work @@ -161,14 +153,16 @@ %endif %if !%{with tests} -%post -n libtag2 -p /sbin/ldconfig -%postun -n libtag2 -p /sbin/ldconfig -%post -n libtag_c2 -p /sbin/ldconfig -%postun -n libtag_c2 -p /sbin/ldconfig +%ldconfig_scriptlets -n libtag2 +%ldconfig_scriptlets -n libtag_c2 %files %license COPYING.LGPL COPYING.MPL -%{_bindir}/* +%{_bindir}/framelist +%{_bindir}/strip-id3v1 +%{_bindir}/tagreader +%{_bindir}/tagreader_c +%{_bindir}/tagwriter %exclude %{_bindir}/taglib-config %files -n libtag2 @@ -188,11 +182,11 @@ %{_libdir}/pkgconfig/*.pc %dir %{_libdir}/cmake/taglib %{_libdir}/cmake/taglib/*.cmake + %else %files -n libtag-doc %doc AUTHORS CHANGELOG.md examples %{_docdir}/libtag-doc/html -%{_datadir}/susehelp/ %endif ++++++ 0001-Do-not-warn-when-seeing-FLAC-picture-block-in-Ogg-fi.patch ++++++ >From d832128bc77258300c81c71f7ddca378422138da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <[email protected]> Date: Tue, 13 Jan 2026 00:15:21 +0100 Subject: [PATCH 1/4] Do not warn when seeing FLAC picture block in Ogg files --- taglib/ogg/flac/oggflacfile.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/taglib/ogg/flac/oggflacfile.cpp b/taglib/ogg/flac/oggflacfile.cpp index c283eddf..92fc4fd5 100644 --- a/taglib/ogg/flac/oggflacfile.cpp +++ b/taglib/ogg/flac/oggflacfile.cpp @@ -290,13 +290,28 @@ void Ogg::FLAC::File::scan() if(blockType == 1) { // debug("Ogg::FLAC::File::scan() -- Padding found"); } + else if(blockType == 2) { + // debug("Ogg::FLAC::File::scan() -- Application block found"); + } + else if(blockType == 3) { + // debug("Ogg::FLAC::File::scan() -- Seek table found"); + } else if(blockType == 4) { // debug("Ogg::FLAC::File::scan() -- Vorbis-comments found"); d->xiphCommentData = metadataHeader.mid(4, length); d->hasXiphComment = true; d->commentPacket = ipacket; } - else if(blockType > 5) { + else if(blockType == 5) { + // debug("Ogg::FLAC::File::scan() -- Cuesheet found"); + } + else if(blockType == 6) { + // debug("Ogg::FLAC::File::scan() -- Picture found"); + } + else if(blockType == 127) { + debug("Ogg::FLAC::File::scan() -- Forbidden block type found"); + } + else if(blockType > 6) { debug("Ogg::FLAC::File::scan() -- Unknown metadata block"); } } -- 2.52.0 ++++++ 0002-Set-last-header-flag-in-FLAC-Metadata-block-type-fie.patch ++++++ >From 8d693ba57e887df8502b4b09f5a51853a0d45e3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <[email protected]> Date: Tue, 13 Jan 2026 00:31:45 +0100 Subject: [PATCH 2/4] Set last header flag in FLAC Metadata block type field In case the Vorbis comment block is the last one the last block flag has to be set. As the other metadata blocks are kept as is, and in original order, and no other metadata blocks are added/inserted, these can be kept as is. Also warn if the header scan loop detects a frame sync sequence (which is the head of the first non-header packet). Previously, this was detected as the last header packet, but streamStart and streamLength are unused, and all packets but the vorbis comment packet are just copied in order. See taglib#1297 --- taglib/ogg/flac/oggflacfile.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/taglib/ogg/flac/oggflacfile.cpp b/taglib/ogg/flac/oggflacfile.cpp index 92fc4fd5..a64e7470 100644 --- a/taglib/ogg/flac/oggflacfile.cpp +++ b/taglib/ogg/flac/oggflacfile.cpp @@ -46,6 +46,7 @@ public: bool hasXiphComment { false }; int commentPacket { 0 }; + int lastHeaderPacket { 0 }; }; //////////////////////////////////////////////////////////////////////////////// @@ -129,6 +130,12 @@ bool Ogg::FLAC::File::save() v[0] = 4; + // If the comment block is the last one, set the corresponding bit + + if (d->commentPacket == d->lastHeaderPacket) { + v[0] = 0x84; + } + // Append the comment-data after the 32 bit header v.append(d->xiphCommentData); @@ -282,6 +289,12 @@ void Ogg::FLAC::File::scan() return; } + if(((header[0] & 0xff) == 0xff) && ((header[1] & 0xff) == 0xf8)) { + ipacket--; + debug("Ogg::FLAC::File::scan() -- Found frame sync marker, possibly missing last block marker"); + break; + } + blockType = header[0] & 0x7f; lastBlock = (header[0] & 0x80) != 0; length = header.toUInt(1, 3, true); @@ -315,6 +328,7 @@ void Ogg::FLAC::File::scan() debug("Ogg::FLAC::File::scan() -- Unknown metadata block"); } } + d->lastHeaderPacket = ipacket; // End of metadata, now comes the datastream d->streamStart = overhead; -- 2.52.0 ++++++ 0003-Avoid-corrupting-an-invalid-FLAC-Ogg-file-without-Vo.patch ++++++ >From 360de943f3d0990f44257c1ab83ad7855121b996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <[email protected]> Date: Tue, 13 Jan 2026 00:35:15 +0100 Subject: [PATCH 3/4] Avoid corrupting an (invalid) FLAC Ogg file without Vorbis comment FLAC in Ogg must have a Vorbis comment Metadata block, but in case the file still has none avoid overwriting the first packet, i.e. the Streaminfo Metadata block. --- taglib/ogg/flac/oggflacfile.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/taglib/ogg/flac/oggflacfile.cpp b/taglib/ogg/flac/oggflacfile.cpp index a64e7470..f0b485b1 100644 --- a/taglib/ogg/flac/oggflacfile.cpp +++ b/taglib/ogg/flac/oggflacfile.cpp @@ -107,6 +107,11 @@ Properties *Ogg::FLAC::File::audioProperties() const bool Ogg::FLAC::File::save() { + if (d->commentPacket == 0) { + debug("Ogg::FLAC::File::save() -- Invalid, file has no Vorbis comment metadata block."); + return false; + } + d->xiphCommentData = d->comment->render(false); // Create FLAC metadata-block: -- 2.52.0 ++++++ 0004-Fix-reading-of-last-page-in-ogg-stream.patch ++++++ >From 5187aeb7f727216771089e5eb0d44c40f6e15f4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <[email protected]> Date: Tue, 13 Jan 2026 02:15:22 +0100 Subject: [PATCH 4/4] Fix reading of last page in ogg stream When trying to read a packet from the last page the readPages() method would return false for all packets on the last page. Move the lastPage check just before trying to create the next page, and after the packetIndex check of the last fetched page. --- taglib/ogg/oggfile.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/taglib/ogg/oggfile.cpp b/taglib/ogg/oggfile.cpp index 29f1803a..c08ffde8 100644 --- a/taglib/ogg/oggfile.cpp +++ b/taglib/ogg/oggfile.cpp @@ -191,12 +191,15 @@ bool Ogg::File::readPages(unsigned int i) const Page *page = d->pages.back(); packetIndex = nextPacketIndex(page); offset = page->fileOffset() + page->size(); - } - - // Enough pages have been fetched. - if(packetIndex > i) - return true; + // Enough pages have been fetched. + if(packetIndex > i) { + return true; + } + else if(page->header()->lastPageOfStream()) { + return false; + } + } // Read the next page and add it to the page list. @@ -208,9 +211,6 @@ bool Ogg::File::readPages(unsigned int i) nextPage->setFirstPacketIndex(packetIndex); d->pages.append(nextPage); - - if(nextPage->header()->lastPageOfStream()) - return false; } } -- 2.52.0
