diff --git a/baselibs.conf b/baselibs.conf index 898d5b2..6d43a73 100644 --- a/baselibs.conf +++ b/baselibs.conf @@ -1,2 +1,2 @@ -libtag1 -libtag_c0 +libtag2 +libtag_c2 diff --git a/taglib-1.13.1.tar.gz b/taglib-1.13.1.tar.gz deleted file mode 100644 index f010972..0000000 --- a/taglib-1.13.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c8da2b10f1bfec2cd7dbfcd33f4a2338db0765d851a50583d410bacf055cfd0b -size 1372618 diff --git a/taglib-2.0.tar.gz b/taglib-2.0.tar.gz new file mode 100644 index 0000000..5984e8f --- /dev/null +++ b/taglib-2.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e36ea877a6370810b97d84cf8f72b1e4ed205149ab3ac8232d44c850f38a2859 +size 1429934 diff --git a/taglib-utf8cpp-include.patch b/taglib-utf8cpp-include.patch new file mode 100644 index 0000000..2ca31ea --- /dev/null +++ b/taglib-utf8cpp-include.patch @@ -0,0 +1,13 @@ +diff --git a/taglib/toolkit/tstring.cpp b/taglib/toolkit/tstring.cpp +index f19a675..04181e5 100644 +--- a/taglib/toolkit/tstring.cpp ++++ b/taglib/toolkit/tstring.cpp +@@ -28,7 +28,7 @@ + #include + #include + #include +-#include ++#include + + #include "tdebug.h" + #include "tstringlist.h" diff --git a/taglib.changes b/taglib.changes index 4bf636a..45668e9 100644 --- a/taglib.changes +++ b/taglib.changes @@ -1,3 +1,133 @@ +------------------------------------------------------------------- +Wed Jan 24 19:23:10 UTC 2024 - Jonas Kvinge + +- Update to version 2.0: + * New major version, binary incompatible, but source-compatible with the + latest 1.x release if no deprecated features are used. + * Requires a C++17 compiler and uses features of C++17. + * Major code cleanup, fixed warnings issued by compilers and static analyzers. + * Made methods virtual which should have been virtual but could not be + changed to keep binary compatibility, remove related workarounds. + * Removed deprecated functions: + - APE::Item::Item(const String &, const String &) + - APE::Item::toStringList(): Use values() + - APE::Item::value(): Use binaryData() + - ASF::Properties::setLength() + - ByteVector::checksum() + - ByteVector::isNull(): Use isEmpty() + - ByteVector::null + - FLAC::File::setID3v2FrameFactory() + - FLAC::File::streamInfoData() + - FLAC::File::streamLength() + - FLAC::Properties::Properties(File *, ReadStyle) + - FLAC::Properties::sampleWidth(): Use bitsPerSample() + - File::isReadable(): Use system functions + - File::isWritable(): Use system functions + - FileName::str() + - FileRef::create(): Use constructor + - MP4::Tag::itemListMap(): Use itemMap() + - MPC::File::remove(): Use strip() + - MPC::Properties::Properties(const ByteVector &, long, ReadStyle) + - MPEG::File::save(int, ...): Use overload + - MPEG::File::setID3v2FrameFactory(): Use constructor + - MPEG::ID3v2::Frame::Header::Header(const ByteVector &, bool) + - MPEG::ID3v2::Frame::Header::frameAlterPreservation(): Use + fileAlterPreservation() + - MPEG::ID3v2::Frame::Header::setData(const ByteVector &, bool) + - MPEG::ID3v2::Frame::Header::size(unsigned int): Use size() + - MPEG::ID3v2::Frame::Header::unsycronisation(): use unsynchronisation() + - MPEG::ID3v2::Frame::checkEncoding(const StringList &, String::Type): Use + checkTextEncoding(const StringList &, String::Type) + - MPEG::ID3v2::Frame::headerSize(): Use Header::size() + - MPEG::ID3v2::Frame::headerSize(unsigned int): Use + Header::size(unsigned int) + - MPEG::ID3v2::FrameFactory::createFrame(const ByteVector &, bool) + - MPEG::ID3v2::FrameFactory::createFrame(const ByteVector &, unsigned int): + Use createFrame(const ByteVector &, const Header *) + - MPEG::ID3v2::RelativeVolumeFrame::channelType() + - MPEG::ID3v2::RelativeVolumeFrame::peakVolume(): Use peakVolume(ChannelType) + - MPEG::ID3v2::RelativeVolumeFrame::setChannelType() + - MPEG::ID3v2::RelativeVolumeFrame::setPeakVolume(const PeakVolume &): Use + setPeakVolume(const PeakVolume &, ChannelType) + - MPEG::ID3v2::RelativeVolumeFrame::setVolumeAdjustment(float): Use + setVolumeAdjustment(float, ChannelType) + - MPEG::ID3v2::RelativeVolumeFrame::setVolumeAdjustmentIndex(short): Use + setVolumeAdjustmentIndex(short, ChannelType) + - MPEG::ID3v2::RelativeVolumeFrame::volumeAdjustment(): Use + volumeAdjustment(ChannelType) + - MPEG::ID3v2::RelativeVolumeFrame::volumeAdjustmentIndex(): Use + volumeAdjustmentIndex(ChannelType) + - MPEG::ID3v2::Tag::footer() + - MPEG::ID3v2::Tag::render(int): Use render(Version) + - MPEG::XingHeader::xingHeaderOffset() + - Ogg::Page::getCopyWithNewPageSequenceNumber() + - Ogg::XiphComment::removeField(): Use removeFields() + - PropertyMap::unsupportedData(): Returns now const reference, use + addUnsupportedData() to add keys + - RIFF::AIFF::Properties::Properties(const ByteVector &, ReadStyle) + - RIFF::AIFF::Properties::Properties(const ByteVector &, int, ReadStyle) + - RIFF::AIFF::Properties::sampleWidth(): Use bitsPerSample() + - RIFF::WAV::File::save(TagTypes, bool, int): Use + save(TagTypes, StripTags, Version) + - RIFF::WAV::File::tag(): Returns now a TagUnion, use ID3v2Tag() to get an + ID3v2::Tag + - String::isNull(): Use isEmpty() + - String::null + - TrueAudio::File::setID3v2FrameFactory(): Use constructor + - WavPack::Properties::Properties(const ByteVector &, long, ReadStyle) +* Made methods const: Frame::Header::size(), Frame::headerSize(), + MP4::Atom::findall(), MP4::Atoms::find(), MP4::Atoms::path(). +* Made classes non-virtual: APE::Footer, APE::Item, ASF::Attribute, + ASF::Picture, MP4::CoverArt, MP4::Item, ID3v2::ExtendedHeader, ID3v2::Footer, + ID3v2::Header, MPEG::Header, MPEG::XingHeader, Ogg::Page, Ogg::PageHeader. +* Removed type definitions in TagLib namespace: wchar, uchar, ushort, uint, + ulong, ulonglong, wstring: Use the standard types. +* Removed include file taglib_config.h and its defines TAGLIB_WITH_ASF, + TAGLIB_WITH_MP4: They were always 1 since version 1.8. +* Behavioral changes: + - The basic tag methods (e.g. genre()) separate multiple values with " / " + instead of " ". + - The stream operator for String uses UTF-8 instead of ISO-8859-1 encoding. + - MP4 property ORIGINALDATE is mapped to "----:com.apple.iTunes:ORIGINALDATE" + instead of "----:com.apple.iTunes:originaldate". + - MP4 property ENCODEDBY is mapped to "©enc" instead of "©too", which is now + mapped to ENCODING. + * Unified interface for complex properties like pictures. + * Simplified the unified properties interface by providing its methods on + FileRef. + * C bindings: Support for properties (taglib_property_...) and complex + properties like cover art (taglib_complex_property_...), memory I/O streams. + * Support for Direct Stream Digital (DSD) stream files (DSF) and interchange + file format (DSDIFF, DFF), ADTS (AAC) files. + * The runtime version can be queried. + * Additional utility functions ByteVector::fromUShort(), + ByteVector::fromULongLong(), ByteVector::toULongLong(), + ByteVector::toULongLong(), List::sort(). + * Fixed List::setAutoDelete() affecting implicitly shared copies. + * Build system: Direct support for CMake, find_package(TagLib) exports target + TagLib::tag. + * Build system: Fixed PackageConfig to support both relative and absolute paths. + * Build system: utf8cpp is no longer included, it can be provided via a system + package or a Git submodule. + * ASF: Support additional properties ARTISTWEBPAGE, ENCODING, ENCODINGTIME, + FILEWEBPAGE, INITIALKEY, ORIGINALALBUM, ORIGINALARTIST, ORIGINALFILENAME, + ORIGINALLYRICIST. + * ID3v2: Fixed extensibility of FrameFactory, use it also for WAV and AIFF + files. + * MP4: Support additional properties OWNER, RELEASEDATE. + * MP4: Introduced ItemFactory allowing clients to support new atom types. + * MP4: Detect duration from mvhd atom if not present in mdhd atom. + * MP4: Fixed type of hdvd atom to be integer instead of boolean. + * MP4: Tolerate trailing garbage in M4A files. + * MPC: Fixed content check in presence of an ID3v2 tag. + * MPEG: Do not scan full file for ID3v2 tag when ReadStyle Fast is used. + * RIFF: Support properties ALBUM, ARRANGER, ARTIST, ARTISTWEBPAGE, BPM, + COMMENT, COMPOSER, COPYRIGHT, DATE, DISCSUBTITLE, ENCODEDBY, ENCODING, + ENCODINGTIME, GENRE, ISRC, LABEL, LANGUAGE, LYRICIST, MEDIA, PERFORMER, + RELEASECOUNTRY, REMIXER, TITLE, TRACKNUMBER. + * WAV: Fixed crash with files having the "id3 " chunk as the only valid chunk. + * Windows: Fixed support for files larger than 2GB. + ------------------------------------------------------------------- Wed Jul 12 14:20:57 UTC 2023 - Danilo Spinella diff --git a/taglib.spec b/taglib.spec index def2018..03e5df0 100644 --- a/taglib.spec +++ b/taglib.spec @@ -1,7 +1,7 @@ # -# spec file +# spec file for package taglib # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -27,7 +27,7 @@ %bcond_with tests %endif Name: taglib%{psuffix} -Version: 1.13.1 +Version: 2.0 Release: 0 Summary: Audio Meta-Data Library License: LGPL-2.1-or-later AND MPL-1.1 @@ -36,15 +36,17 @@ 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 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: libtag1 >= %{version}-%{release} -Requires: libtag_c0 >= %{version}-%{release} +Requires: libtag2 >= %{version}-%{release} +Requires: libtag_c2 >= %{version}-%{release} %if %{with tests} BuildRequires: doxygen BuildRequires: ghostscript-fonts-std @@ -62,25 +64,25 @@ TrueAudio, WAV, AIFF, MP4 and ASF files. This package contains built examples which manipulate tags from the command line. -%package -n libtag1 +%package -n libtag2 Summary: Audio Meta-Data Library License: LGPL-2.1-or-later Group: System/Libraries Conflicts: taglib <= 1.6.3 -%description -n libtag1 +%description -n libtag2 TagLib is a library for reading and editing the meta-data of several popular 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. -%package -n libtag_c0 +%package -n libtag_c2 Summary: Audio Meta-Data Library License: LGPL-2.1-or-later Group: System/Libraries Conflicts: taglib <= 1.6.3 -%description -n libtag_c0 +%description -n libtag_c2 TagLib is a library for reading and editing the meta-data of several popular 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 @@ -91,8 +93,8 @@ Summary: Development files for taglib License: LGPL-2.1-or-later Group: Development/Libraries/C and C++ Requires: libstdc++-devel -Requires: libtag1 >= %{version}-%{release} -Requires: libtag_c0 >= %{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. @@ -113,12 +115,11 @@ This package contains the taglib API Documentation in HTML format. %prep %setup -q -n %{sname}-%{version} +%patch1 -p1 %build # The testing needs static libs too %cmake \ - -DWITH_ASF:BOOL=ON \ - -DWITH_MP4:BOOL=ON \ -DCMAKE_SKIP_BUILD_RPATH=ON \ %if %{with tests} -DBUILD_TESTS:BOOL=ON \ @@ -161,35 +162,37 @@ install -m755 build/examples/{framelist,strip-id3v1,tagreader,tagreader_c,tagwri %endif %if !%{with tests} -%post -n libtag1 -p /sbin/ldconfig -%postun -n libtag1 -p /sbin/ldconfig -%post -n libtag_c0 -p /sbin/ldconfig -%postun -n libtag_c0 -p /sbin/ldconfig +%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 %files %license COPYING.LGPL COPYING.MPL %{_bindir}/* %exclude %{_bindir}/taglib-config -%files -n libtag1 +%files -n libtag2 %license COPYING.LGPL COPYING.MPL -%{_libdir}/libtag.so.1 -%{_libdir}/libtag.so.1.* +%{_libdir}/libtag.so.2 +%{_libdir}/libtag.so.2.* -%files -n libtag_c0 +%files -n libtag_c2 %license COPYING.LGPL COPYING.MPL -%{_libdir}/libtag_c.so.0 -%{_libdir}/libtag_c.so.0.* +%{_libdir}/libtag_c.so.2 +%{_libdir}/libtag_c.so.2.* %files -n libtag-devel %{_bindir}/taglib-config %{_includedir}/taglib/ %{_libdir}/libtag*.so %{_libdir}/pkgconfig/*.pc +%{_libdir}/cmake/taglib +%{_libdir}/cmake/taglib/*.cmake %else %files -n libtag-doc -%doc AUTHORS NEWS examples +%doc AUTHORS CHANGELOG.md examples %{_docdir}/libtag-doc/html %{_datadir}/susehelp/ %endif