Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package kf6-kfilemetadata for
openSUSE:Factory checked in at 2026-07-15 16:29:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kf6-kfilemetadata (Old)
and /work/SRC/openSUSE:Factory/.kf6-kfilemetadata.new.1991 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kf6-kfilemetadata"
Wed Jul 15 16:29:05 2026 rev:29 rq:1365105 version:6.28.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/kf6-kfilemetadata/kf6-kfilemetadata.changes
2026-06-16 13:54:45.612584835 +0200
+++
/work/SRC/openSUSE:Factory/.kf6-kfilemetadata.new.1991/kf6-kfilemetadata.changes
2026-07-15 16:36:02.091107466 +0200
@@ -1,0 +2,13 @@
+Fri Jul 10 12:15:50 UTC 2026 - Christophe Marin <[email protected]>
+
+- Update to 6.28.0
+ * New feature release
+ * For more details please see:
+ * https://kde.org/announcements/frameworks/6/6.28.0
+- Changes since 6.27.0:
+ * OSS-Fuzz: serialize AFL fuzzer builds
+ * Integrate KFileMetaData into OSS-Fuzz
+ * Update dependency version to 6.28.0
+ * Update version to 6.28.0
+
+-------------------------------------------------------------------
Old:
----
kfilemetadata-6.27.0.tar.xz
kfilemetadata-6.27.0.tar.xz.sig
New:
----
kfilemetadata-6.28.0.tar.xz
kfilemetadata-6.28.0.tar.xz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kf6-kfilemetadata.spec ++++++
--- /var/tmp/diff_new_pack.tamTj4/_old 2026-07-15 16:36:05.051208307 +0200
+++ /var/tmp/diff_new_pack.tamTj4/_new 2026-07-15 16:36:05.051208307 +0200
@@ -19,12 +19,12 @@
%define qt6_version 6.9.0
%define rname kfilemetadata
-# Full KF6 version (e.g. 6.27.0)
+# Full KF6 version (e.g. 6.28.0)
%{!?_kf6_version: %global _kf6_version %{version}}
%bcond_without ffmpeg
%bcond_without released
Name: kf6-kfilemetadata
-Version: 6.27.0
+Version: 6.28.0
Release: 0
Summary: Library for extracting Metadata
License: GPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-3.0-only
++++++ kfilemetadata-6.27.0.tar.xz -> kfilemetadata-6.28.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kfilemetadata-6.27.0/.gitlab-ci.yml
new/kfilemetadata-6.28.0/.gitlab-ci.yml
--- old/kfilemetadata-6.27.0/.gitlab-ci.yml 2026-06-05 17:46:45.000000000
+0200
+++ new/kfilemetadata-6.28.0/.gitlab-ci.yml 2026-07-03 12:54:50.000000000
+0200
@@ -10,3 +10,4 @@
- /gitlab-templates/windows-qt6.yml
- /gitlab-templates/xml-lint.yml
- /gitlab-templates/yaml-lint.yml
+ - /gitlab-templates/oss-fuzz.yml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kfilemetadata-6.27.0/CMakeLists.txt
new/kfilemetadata-6.28.0/CMakeLists.txt
--- old/kfilemetadata-6.27.0/CMakeLists.txt 2026-06-05 17:46:45.000000000
+0200
+++ new/kfilemetadata-6.28.0/CMakeLists.txt 2026-07-03 12:54:50.000000000
+0200
@@ -1,11 +1,11 @@
cmake_minimum_required(VERSION 3.29)
-set(KF_VERSION "6.27.0") # handled by release scripts
-set(KF_DEP_VERSION "6.27.0") # handled by release scripts
+set(KF_VERSION "6.28.0") # handled by release scripts
+set(KF_DEP_VERSION "6.28.0") # handled by release scripts
project(KFileMetaData VERSION ${KF_VERSION})
include(FeatureSummary)
-find_package(ECM 6.27.0 NO_MODULE)
+find_package(ECM 6.28.0 NO_MODULE)
set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake
Modules." URL "https://commits.kde.org/extra-cmake-modules")
feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND
FATAL_ON_MISSING_REQUIRED_PACKAGES)
@@ -32,6 +32,9 @@
PACKAGE_VERSION_FILE
"${CMAKE_CURRENT_BINARY_DIR}/KF6FileMetaDataConfigVersion.cmake"
SOVERSION 3)
+option(BUILD_FUZZERS "Build fuzzers" OFF)
+option(FUZZERS_USE_QT_MINIMAL_INTEGRATION_PLUGIN "Whether to use the Qt
minimal integration plugin for fuzzers" OFF)
+
# Dependencies
set(REQUIRED_QT_VERSION 6.9.0)
@@ -123,7 +126,7 @@
ecm_set_disabled_deprecation_versions(
QT 6.4
- KF 6.26
+ KF 6.27
)
add_definitions(-DTRANSLATION_DOMAIN=\"kfilemetadata6\")
@@ -132,6 +135,13 @@
add_subdirectory(autotests)
endif()
add_subdirectory(tests)
+if (BUILD_FUZZERS AND Qt6Gui_FOUND)
+ if (BUILD_SHARED_LIBS)
+ message(FATAL_ERROR "Fuzzers can only be built with static libraries")
+ else()
+ add_subdirectory(autotests/ossfuzz)
+ endif()
+endif()
# Config files
set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6FileMetaData")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kfilemetadata-6.27.0/autotests/CMakeLists.txt
new/kfilemetadata-6.28.0/autotests/CMakeLists.txt
--- old/kfilemetadata-6.27.0/autotests/CMakeLists.txt 2026-06-05
17:46:45.000000000 +0200
+++ new/kfilemetadata-6.28.0/autotests/CMakeLists.txt 2026-07-03
12:54:50.000000000 +0200
@@ -87,7 +87,7 @@
../src/extractors/epubextractor.cpp
../src/kfilemetadata_debug.cpp
TEST_NAME "epubextractortest"
- LINK_LIBRARIES Qt6::Test KF6::FileMetaData ${EPUB_LIBRARIES}
+ LINK_LIBRARIES Qt6::Test KF6::FileMetaData EPub::EPub
)
endif()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kfilemetadata-6.27.0/autotests/ossfuzz/CMakeLists.txt
new/kfilemetadata-6.28.0/autotests/ossfuzz/CMakeLists.txt
--- old/kfilemetadata-6.27.0/autotests/ossfuzz/CMakeLists.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/kfilemetadata-6.28.0/autotests/ossfuzz/CMakeLists.txt 2026-07-03
12:54:50.000000000 +0200
@@ -0,0 +1,94 @@
+# SPDX-FileCopyrightText: 2025 Azhar Momin <[email protected]>
+# SPDX-License-Identifier: BSD-2-Clause
+
+if(DEFINED ENV{LIB_FUZZING_ENGINE})
+ set(fuzzing_engine $ENV{LIB_FUZZING_ENGINE})
+else()
+ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ set(fuzzing_engine -fsanitize=fuzzer)
+ else()
+ message(FATAL_ERROR "Fuzzing engine not supported")
+ endif()
+endif()
+
+function(add_extractor_fuzzer extractor extractor_header target_lib)
+ set(gen_src ${CMAKE_CURRENT_BINARY_DIR}/${target_lib}_fuzzer.cc)
+ set(EXTRACTOR "${extractor}")
+ set(EXTRACTOR_HEADER "${extractor_header}")
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/kfilemetadata_fuzzer.cc.in
+ ${gen_src}
+ @ONLY
+ )
+
+ add_executable(${target_lib}_fuzzer
+ ${gen_src}
+ )
+
+ target_link_libraries(${target_lib}_fuzzer
+ PRIVATE
+ Qt6::Gui
+ kfilemetadata_${target_lib}
+ ${fuzzing_engine}
+ )
+
+ if(FUZZERS_USE_QT_MINIMAL_INTEGRATION_PLUGIN)
+ qt_import_plugins(${target_lib}_fuzzer INCLUDE
Qt::QMinimalIntegrationPlugin)
+ endif()
+
+ set_target_properties(${target_lib}_fuzzer PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/fuzzers
+ )
+endfunction()
+
+if(TARGET Poppler::Qt6)
+ add_extractor_fuzzer(PopplerExtractor popplerextractor popplerextractor)
+endif()
+
+if(Taglib_FOUND)
+ add_extractor_fuzzer(TagLibExtractor taglibextractor taglibextractor)
+endif()
+
+if(LibExiv2_FOUND)
+ add_extractor_fuzzer(Exiv2Extractor exiv2extractor exiv2extractor)
+endif()
+
+if(AVCODEC_FOUND AND AVFORMAT_FOUND AND AVUTIL_FOUND)
+ add_extractor_fuzzer(FFmpegExtractor ffmpegextractor ffmpegextractor)
+endif()
+
+if(EPUB_FOUND)
+ add_extractor_fuzzer(EPubExtractor epubextractor epubextractor)
+endif()
+
+add_extractor_fuzzer(PlainTextExtractor plaintextextractor plaintextextractor)
+
+add_extractor_fuzzer(POExtractor poextractor poextractor)
+
+add_extractor_fuzzer(XmlExtractor xmlextractor xmlextractor)
+
+add_extractor_fuzzer(DscExtractor postscriptdscextractor
postscriptdscextractor)
+
+if(KF6Archive_FOUND)
+ add_extractor_fuzzer(OdfExtractor odfextractor odfextractor)
+
+ add_extractor_fuzzer(Office2007Extractor office2007extractor
office2007extractor)
+endif()
+
+add_extractor_fuzzer(OfficeExtractor officeextractor officeextractor)
+
+if (QMobipocket6_FOUND)
+ add_extractor_fuzzer(MobiExtractor mobiextractor mobiextractor)
+endif()
+
+if(libappimage_FOUND AND KF6Config_FOUND)
+ add_extractor_fuzzer(AppImageExtractor appimageextractor appimageextractor)
+endif()
+
+add_extractor_fuzzer(PngExtractor pngextractor pngextractor)
+
+if(KF6Archive_FOUND)
+ add_extractor_fuzzer(Fb2Extractor fb2extractor fb2extractor)
+
+ add_extractor_fuzzer(KritaExtractor kritaextractor krita)
+endif()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kfilemetadata-6.27.0/autotests/ossfuzz/README.md
new/kfilemetadata-6.28.0/autotests/ossfuzz/README.md
--- old/kfilemetadata-6.27.0/autotests/ossfuzz/README.md 1970-01-01
01:00:00.000000000 +0100
+++ new/kfilemetadata-6.28.0/autotests/ossfuzz/README.md 2026-07-03
12:54:50.000000000 +0200
@@ -0,0 +1,44 @@
+<!-- SPDX-FileCopyrightText: 2025 Azhar Momin <[email protected]> -->
+<!-- SPDX-License-Identifier: CC-BY-SA-4.0 -->
+
+# KFileMetaData OSS-Fuzz Integration
+
+## Fuzzing Locally
+Make sure you're using Clang (by setting `CC` and `CXX`), since fuzzing
requires it. Then build KFileMetaData with `BUILD_FUZZERS=ON` to generate the
fuzzer binaries:
+```sh
+cmake -B build -DBUILD_FUZZERS=ON
+cmake --build build
+# Then run one of the fuzzer binaries:
+./build/bin/fuzzers/plaintextextractor_fuzzer
+```
+
+## Testing OSS-Fuzz Integration
+Testing OSS-Fuzz integration requires: Python & Docker
+
+First clone the OSS-Fuzz repository:
+```sh
+git clone https://github.com/google/oss-fuzz.git
+```
+
+After navigating to the cloned repository, run the following command to build
the fuzzers:
+```sh
+python3 infra/helper.py build_image kfilemetadata
+python3 infra/helper.py build_fuzzers --sanitizer address kfilemetadata
+```
+
+This may take a while since it builds the qtbase, all extractor dependencies,
and KFileMetaData itself. Once the build is completed, you can run the fuzzers
using the following command:
+```sh
+python3 infra/helper.py run_fuzzer kfilemetadata plaintextextractor_fuzzer
+```
+
+The code for preparing the build lives in the `prepare_build.sh` script and
the code for building the fuzzers lives in the `build_fuzzers.sh` script (which
is also responsible for building the dependencies, and creating the seed
corpora).
+
+For more information on OSS-Fuzz, visit the [official
website](https://google.github.io/oss-fuzz/).
+
+## Integrating New Fuzzers
+
+When you add a new extractor, you need to add a corresponding fuzzer for it
using the following steps:
+
+- Update `CMakeLists.txt` to include the new fuzzer, following the pattern of
existing ones
+- If the extractor needs extra dependencies, update `prepare_build.sh`
accordingly
+- Update `build_fuzzers.sh` to build those dependencies and include the new
fuzzer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kfilemetadata-6.27.0/autotests/ossfuzz/build_fuzzers.sh
new/kfilemetadata-6.28.0/autotests/ossfuzz/build_fuzzers.sh
--- old/kfilemetadata-6.27.0/autotests/ossfuzz/build_fuzzers.sh 1970-01-01
01:00:00.000000000 +0100
+++ new/kfilemetadata-6.28.0/autotests/ossfuzz/build_fuzzers.sh 2026-07-03
12:54:50.000000000 +0200
@@ -0,0 +1,334 @@
+#!/bin/bash -eu
+
+# SPDX-FileCopyrightText: 2025 Azhar Momin <[email protected]>
+# SPDX-License-Identifier: LGPL-2.0-or-later
+
+LDFLAGS=""
+if [[ $FUZZING_ENGINE == "afl" ]]; then
+ LDFLAGS="-fuse-ld=lld"
+fi
+export LDFLAGS
+
+rm -rf $WORK/*
+
+export PATH="$WORK/bin:$WORK/libexec:$PATH"
+export PKG_CONFIG="$(which pkg-config) --static"
+export
PKG_CONFIG_PATH="$WORK/lib/pkgconfig:$WORK/lib/x86_64-linux-gnu/pkgconfig"
+export CMAKE_PREFIX_PATH="$WORK"
+
+# Build qtbase and dependencies
+cd $SRC/zlib
+./configure \
+ --static --prefix $WORK
+make install -j$(nproc)
+
+cd $SRC/freetype
+./autogen.sh
+./configure \
+ --enable-static \
+ --disable-shared \
+ --prefix $WORK
+make install -j$(nproc)
+
+cd $SRC/libexpat/expat
+cmake . -G Ninja \
+ -DCMAKE_INSTALL_PREFIX=$WORK \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DEXPAT_BUILD_TESTS=OFF \
+ -DEXPAT_BUILD_EXAMPLES=OFF
+ninja install -j$(nproc)
+
+cd $SRC/
+tar xzf libpng-*.tar.gz && rm -f libpng-*.tar.gz
+cd libpng-*
+cmake . -G Ninja \
+ -DCMAKE_INSTALL_PREFIX=$WORK \
+ -DPNG_SHARED=OFF \
+ -DPNG_STATIC=ON \
+ -DPNG_TESTS=OFF \
+ -DPNG_TOOLS=OFF
+ninja install -j$(nproc)
+
+cd $SRC/fontconfig
+meson setup builddir \
+ --prefix=$WORK \
+ --default-library=static \
+ --buildtype=plain \
+ -Dtests=disabled \
+ -Dtools=disabled
+ninja install -C builddir -j$(nproc)
+
+# A workaround that lets QtGui find all transitive dependencies of Fontconfig
correctly
+sed -i 's|INTERFACE_INCLUDE_DIRECTORIES
"${Fontconfig_INCLUDE_DIR}"|INTERFACE_INCLUDE_DIRECTORIES
"${Fontconfig_INCLUDE_DIR}"\nINTERFACE_LINK_LIBRARIES
"${PKG_FONTCONFIG_LINK_LIBRARIES}"|' \
+ /usr/local/share/cmake-3.29/Modules/FindFontconfig.cmake
+
+cd $SRC/qtbase
+./configure -platform linux-clang-libc++ -prefix $WORK \
+ -qpa minimal -default-qpa minimal \
+ -opensource -confirm-license -debug \
+ -qt-pcre \
+ -static -no-glib -no-icu -no-opengl -no-feature-sql -no-feature-network \
+ -no-feature-dbus -no-feature-printsupport
+ninja install -j$(nproc)
+
+# Build ECM
+cd $SRC/extra-cmake-modules
+cmake . -G Ninja \
+ -DCMAKE_INSTALL_PREFIX=$WORK
+ninja install -j$(nproc)
+
+# Build karchive
+cd $SRC/karchive
+rm -r poqm
+cmake . -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK \
+ -DWITH_BZIP2=OFF \
+ -DWITH_LIBLZMA=OFF \
+ -DWITH_OPENSSL=OFF \
+ -DWITH_LIBZSTD=OFF
+ninja install -j$(nproc)
+
+# Build kcoreaddons
+cd $SRC/kcoreaddons
+rm -r poqm
+cmake . -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK \
+ -DBUILD_PYTHON_BINDINGS=OFF \
+ -DKCOREADDONS_USE_QML=OFF \
+ -DUSE_DBUS=OFF
+ninja install -j$(nproc)
+
+# Build kconfig
+cd $SRC/kconfig
+rm -r poqm
+cmake . -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK \
+ -DKCONFIG_USE_GUI=OFF \
+ -DKCONFIG_USE_QML=OFF \
+ -DUSE_DBUS=OFF
+ninja install -j$(nproc)
+
+# Build ki18n
+cd $SRC/ki18n
+rm -r po
+cmake . -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK \
+ -DBUILD_WITH_QML=OFF
+ninja install -j$(nproc)
+
+# Build kcodecs
+cd $SRC/kcodecs
+rm -r poqm
+cmake . -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK \
+ -DBUILD_TESTING=OFF
+ninja install -j$(nproc)
+
+# Build poppler
+cd $SRC/poppler
+cmake . -G Ninja \
+ -DCMAKE_CXX_SCAN_FOR_MODULES=OFF \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK \
+ -DBUILD_GTK_TESTS=OFF \
+ -DBUILD_QT5_TESTS=OFF \
+ -DBUILD_QT6_TESTS=OFF \
+ -DBUILD_CPP_TESTS=OFF \
+ -DBUILD_MANUAL_TESTS=OFF \
+ -DENABLE_BOOST=OFF \
+ -DENABLE_UTILS=OFF \
+ -DENABLE_CPP=OFF \
+ -DENABLE_GLIB=OFF \
+ -DENABLE_GOBJECT_INTROSPECTION=OFF \
+ -DENABLE_GTK_DOC=OFF \
+ -DENABLE_QT5=OFF \
+ -DENABLE_QT6=ON \
+ -DENABLE_LIBOPENJPEG="none" \
+ -DENABLE_DCTDECODER="none" \
+ -DENABLE_LCMS=OFF \
+ -DENABLE_LIBCURL=OFF \
+ -DENABLE_LIBTIFF=OFF \
+ -DENABLE_LIBJPEG=OFF \
+ -DENABLE_LIBOPENJPEG=OFF \
+ -DENABLE_NSS3=OFF \
+ -DENABLE_GPGME=OFF
+ninja install -j$(nproc)
+
+# Build taglib and its dependencies
+cd $SRC
+tar -xzf utfcpp-*.tar.gz && rm -f utfcpp-*.tar.gz
+cp -r utfcpp-*/source/* $WORK/include/
+
+cd $SRC/taglib
+cmake . -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK
+ninja install -j$(nproc)
+
+# Build exiv2 and its dependencies
+cd $SRC/brotli
+cmake -B builddir -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK
+ninja install -C builddir -j$(nproc)
+
+cd $SRC/libexpat/expat
+cmake -B builddir -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK \
+ -DEXPAT_BUILD_TESTS=OFF \
+ -DEXPAT_BUILD_EXAMPLES=OFF
+ninja install -C builddir -j$(nproc)
+
+cd $SRC/fmt
+cmake . -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK \
+ -DFMT_DOC=OFF \
+ -DFMT_TEST=OFF
+ninja install -j$(nproc)
+
+cd $SRC/exiv2
+cmake . -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK \
+ -DEXIV2_ENABLE_DYNAMIC_RUNTIME=OFF \
+ -DEXIV2_BUILD_EXIV2_COMMAND=OFF \
+ -DEXIV2_ENABLE_INIH=OFF
+ninja install -j$(nproc)
+
+# Build ffmpeg (avcodec, avformat, avutil)
+cd $SRC/ffmpeg
+if [ "$SANITIZER" = "memory" ]; then
+ disable_asm="--disable-inline-asm --disable-x86asm"
+else
+ disable_asm=
+fi
+./configure \
+ --cc="$CC" \
+ --cxx="$CXX" \
+ --ld="$CXX $CXXFLAGS -std=c++11" \
+ --prefix=$WORK \
+ $disable_asm \
+ --enable-static \
+ --disable-shared \
+ --disable-doc \
+ --disable-everything \
+ --disable-programs \
+ --disable-avdevice \
+ --disable-avfilter \
+ --disable-swresample \
+ --disable-swscale \
+ --enable-avcodec \
+ --enable-avformat \
+ --enable-avutil
+make install -j$(nproc)
+
+# Build libepub and its dependencies
+cd $SRC/libxml2
+cmake -B builddir -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK
+ninja install -C builddir -j$(nproc)
+
+cd $SRC/libzip
+cmake . -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK
+ninja install -j$(nproc)
+
+cd $SRC
+tar -xzf ebook-tools-*.tar.gz && rm -f ebook-tools-*.tar.gz
+cd ebook-tools-*
+# disable the cli tools
+sed -i '/add_subdirectory *(tools)/d' src/CMakeLists.txt
+sed -i 's/add_library *(epub SHARED/add_library(epub/'
src/libepub/CMakeLists.txt
+cmake . -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK
+ninja install -j$(nproc)
+
+# Build catdoc
+CFLAGS_SAVE="$CFLAGS"
+CXXFLAGS_SAVE="$CXXFLAGS"
+unset CFLAGS
+unset CXXFLAGS
+export AFL_NOOPT=1
+cd $SRC/catdoc
+mkdir -p $WORK/share/catdoc # not sure why it fails without this
+./configure --disable-charset-check --disable-wordview --disable-langinfo
--prefix $WORK
+make install -j$(nproc)
+cp $WORK/bin/{catdoc,xls2csv,catppt} $OUT
+unset AFL_NOOPT
+export CFLAGS="$CFLAGS_SAVE"
+export CXXFLAGS="$CXXFLAGS_SAVE"
+
+# Build attr
+cd $SRC
+tar -xzf attr-*.tar.gz && rm -f attr-*.tar.gz
+cd attr-*
+./configure --enable-static --disable-shared --prefix $WORK
+make install -j$(nproc)
+
+# Build kdegraphics-mobipocket
+cd $SRC/kdegraphics-mobipocket
+sed -i '/add_subdirectory(tools)/d' CMakeLists.txt
+cmake . -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_INSTALL_PREFIX=$WORK
+ninja install -j$(nproc)
+
+# Build the fuzzers
+cd $SRC/kfilemetadata
+cmake -B build -G Ninja \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DBUILD_TESTING=OFF \
+ -DBUILD_FUZZERS=ON \
+ -DFUZZERS_USE_QT_MINIMAL_INTEGRATION_PLUGIN=ON \
+ -DCMAKE_INSTALL_PREFIX=$WORK
+if [[ $FUZZING_ENGINE != "afl" ]]; then
+ ninja -C build -j$(nproc)
+else
+ # AFL builds can fail during linking under high parallelism due to memory
pressure,
+ # so build serially.
+ ninja -C build -j1
+fi
+
+EXTENSIONS="epubextractor_fuzzer epub
+ exiv2extractor_fuzzer heif webp jpg avif png jxl
+ fb2extractor_fuzzer fb2 fb2.zip
+ ffmpegextractor_fuzzer ogv mkv webm ts avi
+ krita_fuzzer kra
+ mobiextractor_fuzzer mobi
+ odfextractor_fuzzer odp fodp odg fodg odt fodt ods
+ office2007extractor_fuzzer docx dotx xlsx xltx pptx potx ppsx sldx
xps oxps 3mf
+ officeextractor_fuzzer doc dot xls xlt xla ppt pot pps
+ plaintextextractor_fuzzer txt pl html
+ pngextractor_fuzzer png
+ poextractor_fuzzer po
+ popplerextractor_fuzzer pdf
+ postscriptdscextractor_fuzzer ps eps
+ taglibextractor_fuzzer flac mp3 m4a ogg wav aif ape wma mpc opus
spx wv mod s3m xm it aax aaxc
+ xmlextractor_fuzzer xml svg svgz"
+
+echo "$EXTENSIONS" | while read fuzzer_name extensions; do
+ # copy the fuzzer binary
+ cp build/bin/fuzzers/$fuzzer_name $OUT
+
+ # create seed corpus
+ for extension in $extensions; do
+ find . -name "*.$extension" -exec zip -q
"$OUT/${fuzzer_name}_seed_corpus.zip" {} +
+ done
+done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kfilemetadata-6.27.0/autotests/ossfuzz/kfilemetadata_fuzzer.cc.in
new/kfilemetadata-6.28.0/autotests/ossfuzz/kfilemetadata_fuzzer.cc.in
--- old/kfilemetadata-6.27.0/autotests/ossfuzz/kfilemetadata_fuzzer.cc.in
1970-01-01 01:00:00.000000000 +0100
+++ new/kfilemetadata-6.28.0/autotests/ossfuzz/kfilemetadata_fuzzer.cc.in
2026-07-03 12:54:50.000000000 +0200
@@ -0,0 +1,47 @@
+/*
+ * SPDX-FileCopyrightText: 2025 Azhar Momin <[email protected]>
+ * SPDX-License-Identifier: LGPL-2.0-or-later
+ */
+
+#include <QByteArray>
+#include <QGuiApplication>
+#include <QMimeDatabase>
+#include <QTemporaryFile>
+
+#include "simpleextractionresult.h"
+
+#include "@[email protected]"
+
+static void runExtractor(const QString &fileName, const QString &mimetype)
+{
+ KFileMetaData::@EXTRACTOR@ ex;
+ KFileMetaData::SimpleExtractionResult result(fileName, mimetype);
+ ex.extract(&result);
+}
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+ int argc = 0;
+ QGuiApplication app(argc, nullptr);
+
+ QByteArray b((const char *)data, size);
+
+ QTemporaryFile f;
+ if (!f.open()) {
+ return 0;
+ }
+ f.write(b);
+ f.close();
+
+ QMimeDatabase mimeDb;
+ QMimeType mimetype = mimeDb.mimeTypeForData(b);
+
+ runExtractor(f.fileName(), mimetype.name());
+ for (const QString &ancestor : mimetype.allAncestors()) {
+ if (ancestor != QLatin1String("application/octet-stream")) {
+ runExtractor(f.fileName(), ancestor);
+ }
+ }
+
+ return 0;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kfilemetadata-6.27.0/autotests/ossfuzz/prepare_build.sh
new/kfilemetadata-6.28.0/autotests/ossfuzz/prepare_build.sh
--- old/kfilemetadata-6.27.0/autotests/ossfuzz/prepare_build.sh 1970-01-01
01:00:00.000000000 +0100
+++ new/kfilemetadata-6.28.0/autotests/ossfuzz/prepare_build.sh 2026-07-03
12:54:50.000000000 +0200
@@ -0,0 +1,34 @@
+# SPDX-FileCopyrightText: 2025 Azhar Momin <[email protected]>
+# SPDX-License-Identifier: LGPL-2.0-or-later
+
+apt-get update && \
+ apt-get install -y cmake make autoconf automake libtool autopoint
libmount-dev \
+ wget po4a gettext pkg-config nasm python3 gperf
+
+pip3 install meson ninja
+
+git clone --depth 1 https://github.com/madler/zlib.git
+git clone --depth=1 https://gitlab.freedesktop.org/freetype/freetype.git
+wget
https://sourceforge.net/projects/libpng/files/libpng16/1.6.50/libpng-1.6.50.tar.gz
+git clone --depth=1 https://gitlab.freedesktop.org/fontconfig/fontconfig.git
+git clone --depth 1 -b dev git://code.qt.io/qt/qtbase.git
+git clone --depth 1 https://invent.kde.org/frameworks/extra-cmake-modules.git
+git clone --depth 1 https://invent.kde.org/frameworks/karchive.git
+git clone --depth 1 https://invent.kde.org/frameworks/kcoreaddons.git
+git clone --depth 1 https://invent.kde.org/frameworks/kconfig.git
+git clone --depth 1 https://invent.kde.org/frameworks/ki18n.git
+git clone --depth 1 https://invent.kde.org/frameworks/kcodecs.git
+git clone --depth 1 https://gitlab.freedesktop.org/poppler/poppler.git
+wget https://github.com/nemtrif/utfcpp/archive/refs/tags/v4.0.6.tar.gz -O
utfcpp-4.0.6.tar.gz
+git clone --depth 1 https://github.com/taglib/taglib.git
+git clone --depth 1 https://github.com/google/brotli.git
+git clone --depth 1 https://github.com/libexpat/libexpat.git
+git clone --depth 1 https://github.com/fmtlib/fmt.git
+git clone --depth 1 https://github.com/exiv2/exiv2.git
+git clone --depth 1 https://git.ffmpeg.org/ffmpeg.git
+git clone --depth 1 https://gitlab.gnome.org/GNOME/libxml2.git
+git clone --depth 1 https://github.com/nih-at/libzip.git
+wget
https://sourceforge.net/projects/ebook-tools/files/ebook-tools/0.2.2/ebook-tools-0.2.2.tar.gz
+git clone http://www.wagner.pp.ru/git/oss/catdoc.git
+wget https://download-mirror.savannah.gnu.org/releases/attr/attr-2.5.2.tar.gz
+git clone --depth 1 https://invent.kde.org/graphics/kdegraphics-mobipocket.git
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kfilemetadata-6.27.0/cmake/FindEPub.cmake
new/kfilemetadata-6.28.0/cmake/FindEPub.cmake
--- old/kfilemetadata-6.27.0/cmake/FindEPub.cmake 2026-06-05
17:46:45.000000000 +0200
+++ new/kfilemetadata-6.28.0/cmake/FindEPub.cmake 2026-07-03
12:54:50.000000000 +0200
@@ -3,30 +3,38 @@
#
# This module defines
# EPUB_FOUND - whether the EPub library was found
-# EPUB_LIBRARIES - the EPub library
+# EPUB_LIBRARY - the EPub library
# EPUB_INCLUDE_DIR - the include path of the EPub library
+# EPub::EPub - the EPub target
# SPDX-FileCopyrightText: 2008 Pino Toscano <[email protected]>
+# SPDX-FileCopyrightText: 2025 Azhar Momin <[email protected]>
# SPDX-License-Identifier: BSD-3-Clause
-if (EPUB_INCLUDE_DIR AND EPUB_LIBRARIES)
-
- # Already in cache
- set (EPUB_FOUND TRUE)
-
-else (EPUB_INCLUDE_DIR AND EPUB_LIBRARIES)
-
- find_library (EPUB_LIBRARIES
- NAMES epub libepub
+find_path(EPUB_INCLUDE_DIR
+ NAMES epub.h
+)
+
+find_library(EPUB_LIBRARY
+ NAMES epub libepub
+)
+
+find_package(LibZip QUIET)
+find_package(LibXml2 QUIET)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(EPub
+ REQUIRED_VARS EPUB_LIBRARY EPUB_INCLUDE_DIR LibZip_FOUND LibXml2_FOUND
+ VERSION_VAR EPUB_VERSION
+)
+
+if (EPUB_FOUND AND NOT TARGET EPub::EPub)
+ add_library(EPub::EPub UNKNOWN IMPORTED)
+ set_target_properties(EPub::EPub PROPERTIES
+ IMPORTED_LOCATION "${EPUB_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${EPUB_INCLUDE_DIR}"
+ INTERFACE_LINK_LIBRARIES
"\$<LINK_ONLY:libzip::zip>;\$<LINK_ONLY:LibXml2::LibXml2>"
)
+endif()
- find_path (EPUB_INCLUDE_DIR
- NAMES epub.h
- )
-
- include (FindPackageHandleStandardArgs)
- find_package_handle_standard_args (EPub DEFAULT_MSG EPUB_LIBRARIES
EPUB_INCLUDE_DIR)
-
-endif (EPUB_INCLUDE_DIR AND EPUB_LIBRARIES)
-
-mark_as_advanced(EPUB_INCLUDE_DIR EPUB_LIBRARIES)
+mark_as_advanced(EPUB_INCLUDE_DIR EPUB_LIBRARY)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kfilemetadata-6.27.0/po/nb/kfilemetadata6.po
new/kfilemetadata-6.28.0/po/nb/kfilemetadata6.po
--- old/kfilemetadata-6.27.0/po/nb/kfilemetadata6.po 2026-06-05
17:46:45.000000000 +0200
+++ new/kfilemetadata-6.28.0/po/nb/kfilemetadata6.po 2026-07-03
12:54:50.000000000 +0200
@@ -8,7 +8,7 @@
"POT-Creation-Date: 2025-11-17 11:49+0000\n"
"PO-Revision-Date: 2025-04-05 12:31+0200\n"
"Last-Translator: Martin Hansen <[email protected]>\n"
-"Language-Team: Norwegian Bokmål <[email protected]>\n"
+"Language-Team: Norwegian Bokmål <[email protected]>\n"
"Language: nb\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kfilemetadata-6.27.0/po/nn/kfilemetadata6.po
new/kfilemetadata-6.28.0/po/nn/kfilemetadata6.po
--- old/kfilemetadata-6.27.0/po/nn/kfilemetadata6.po 2026-06-05
17:46:45.000000000 +0200
+++ new/kfilemetadata-6.28.0/po/nn/kfilemetadata6.po 2026-07-03
12:54:50.000000000 +0200
@@ -7,7 +7,7 @@
"POT-Creation-Date: 2025-11-17 11:49+0000\n"
"PO-Revision-Date: 2026-04-18 16:05+0200\n"
"Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
-"Language-Team: Norwegian Nynorsk <[email protected]>\n"
+"Language-Team: Norwegian Nynorsk <[email protected]>\n"
"Language: nn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kfilemetadata-6.27.0/src/extractors/CMakeLists.txt
new/kfilemetadata-6.28.0/src/extractors/CMakeLists.txt
--- old/kfilemetadata-6.27.0/src/extractors/CMakeLists.txt 2026-06-05
17:46:45.000000000 +0200
+++ new/kfilemetadata-6.28.0/src/extractors/CMakeLists.txt 2026-07-03
12:54:50.000000000 +0200
@@ -1,6 +1,11 @@
+if(BUILD_SHARED_LIBS)
+ set(_lib_type MODULE)
+else()
+ set(_lib_type STATIC)
+endif()
if(TARGET Poppler::Qt6)
- add_library(kfilemetadata_popplerextractor MODULE popplerextractor.cpp
${debug_SRCS})
+ add_library(kfilemetadata_popplerextractor ${_lib_type}
popplerextractor.cpp ${debug_SRCS})
target_link_libraries(kfilemetadata_popplerextractor
KF6::FileMetaData
@@ -15,7 +20,7 @@
endif()
if(Taglib_FOUND)
- add_library(kfilemetadata_taglibextractor MODULE taglibextractor.cpp
${debug_SRCS})
+ add_library(kfilemetadata_taglibextractor ${_lib_type} taglibextractor.cpp
${debug_SRCS})
target_link_libraries( kfilemetadata_taglibextractor
KF6::FileMetaData
Taglib::Taglib
@@ -28,7 +33,7 @@
endif()
if(LibExiv2_FOUND)
- add_library(kfilemetadata_exiv2extractor MODULE exiv2extractor.cpp
${debug_SRCS})
+ add_library(kfilemetadata_exiv2extractor ${_lib_type} exiv2extractor.cpp
${debug_SRCS})
kde_target_enable_exceptions(kfilemetadata_exiv2extractor PRIVATE)
target_link_libraries(kfilemetadata_exiv2extractor
KF6::FileMetaData
@@ -38,7 +43,7 @@
set_target_properties(kfilemetadata_exiv2extractor PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/kf6/kfilemetadata")
if (${LibExiv2_VERSION} VERSION_LESS 0.28.0)
- # exiv2 0.27.x still uses std::auto_ptr, which is incompatible with
C++17
+ # exiv2 0.27.x still uses std::auto_ptr, which is incompatible with
C++17
set_target_properties(kfilemetadata_exiv2extractor PROPERTIES
CXX_STANDARD 14)
endif()
@@ -49,16 +54,16 @@
endif()
if(AVCODEC_FOUND AND AVFORMAT_FOUND AND AVUTIL_FOUND)
- add_library(kfilemetadata_ffmpegextractor MODULE
+ add_library(kfilemetadata_ffmpegextractor ${_lib_type}
ffmpegextractor.cpp
../kfilemetadata_debug.cpp
)
target_include_directories(kfilemetadata_ffmpegextractor SYSTEM PRIVATE
${AVCODEC_INCLUDE_DIRS} ${AVFORMAT_INCLUDE_DIRS} ${AVUTIL_INCLUDE_DIRS})
target_link_libraries(kfilemetadata_ffmpegextractor
KF6::FileMetaData
- ${AVCODEC_LIBRARIES}
- ${AVFORMAT_LIBRARIES}
- ${AVUTIL_LIBRARIES}
+ ${AVFORMAT_LIBRARIES}
+ ${AVCODEC_LIBRARIES}
+ ${AVUTIL_LIBRARIES}
)
set_target_properties(kfilemetadata_ffmpegextractor PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/kf6/kfilemetadata")
@@ -70,14 +75,14 @@
if(EPUB_FOUND)
- add_library(kfilemetadata_epubextractor MODULE
+ add_library(kfilemetadata_epubextractor ${_lib_type}
epubextractor.cpp
../kfilemetadata_debug.cpp
)
target_include_directories(kfilemetadata_epubextractor SYSTEM PRIVATE
${EPUB_INCLUDE_DIR})
target_link_libraries(kfilemetadata_epubextractor
KF6::FileMetaData
- ${EPUB_LIBRARIES}
+ EPub::EPub
)
set_target_properties(kfilemetadata_epubextractor PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/kf6/kfilemetadata")
@@ -90,7 +95,7 @@
#
# Plain Text
#
-add_library(kfilemetadata_plaintextextractor MODULE
+add_library(kfilemetadata_plaintextextractor ${_lib_type}
plaintextextractor.cpp
../kfilemetadata_debug.cpp
)
@@ -108,7 +113,7 @@
#
# PO
#
-add_library(kfilemetadata_poextractor MODULE poextractor.cpp)
+add_library(kfilemetadata_poextractor ${_lib_type} poextractor.cpp)
target_link_libraries( kfilemetadata_poextractor
KF6::FileMetaData
)
@@ -122,7 +127,7 @@
# XML
#
set_package_properties(KF6Archive PROPERTIES PURPOSE "- Required for
extracting data from compressed SVGs")
-add_library(kfilemetadata_xmlextractor MODULE
+add_library(kfilemetadata_xmlextractor ${_lib_type}
dublincoreextractor.cpp
xmlextractor.cpp
../kfilemetadata_debug.cpp
@@ -146,7 +151,7 @@
#
# Postscript DSC
#
-add_library(kfilemetadata_postscriptdscextractor MODULE
+add_library(kfilemetadata_postscriptdscextractor ${_lib_type}
postscriptdscextractor.cpp
../kfilemetadata_debug.cpp
)
@@ -166,7 +171,7 @@
#
set_package_properties(KF6Archive PROPERTIES PURPOSE "- Required for ODF
extractor")
if(KF6Archive_FOUND)
- add_library(kfilemetadata_odfextractor MODULE odfextractor.cpp
${debug_SRCS})
+ add_library(kfilemetadata_odfextractor ${_lib_type} odfextractor.cpp
${debug_SRCS})
target_link_libraries(kfilemetadata_odfextractor
KF6::FileMetaData
@@ -186,7 +191,7 @@
#
set_package_properties(KF6Archive PROPERTIES PURPOSE "- Required for Office
2007 extractor")
if(KF6Archive_FOUND)
- add_library(kfilemetadata_office2007extractor MODULE
+ add_library(kfilemetadata_office2007extractor ${_lib_type}
office2007extractor.cpp
dublincoreextractor.cpp
${debug_SRCS}
@@ -209,7 +214,7 @@
# Office (binary formats)
#
-add_library(kfilemetadata_officeextractor MODULE)
+add_library(kfilemetadata_officeextractor ${_lib_type})
target_sources(kfilemetadata_officeextractor
PRIVATE
officeextractor.cpp
@@ -229,7 +234,7 @@
# Mobipocket
#
if (QMobipocket6_FOUND)
- add_library(kfilemetadata_mobiextractor MODULE mobiextractor.cpp
${debug_SRCS})
+ add_library(kfilemetadata_mobiextractor ${_lib_type} mobiextractor.cpp
${debug_SRCS})
target_link_libraries(kfilemetadata_mobiextractor
KF6::FileMetaData
QMobipocket6
@@ -247,7 +252,7 @@
set_package_properties(Qt6Gui PROPERTIES PURPOSE "- Required for AppImage
extractor")
if(libappimage_FOUND AND KF6Config_FOUND AND Qt6Gui_FOUND)
- add_library(kfilemetadata_appimageextractor MODULE appimageextractor.cpp )
+ add_library(kfilemetadata_appimageextractor ${_lib_type}
appimageextractor.cpp )
target_link_libraries( kfilemetadata_appimageextractor
KF6::FileMetaData
KF6::ConfigCore
@@ -264,7 +269,7 @@
set_package_properties(Qt6Gui PROPERTIES PURPOSE "- Required for Qt based PNG
extractor")
if(Qt6Gui_FOUND)
- add_library(kfilemetadata_pngextractor MODULE pngextractor.cpp )
+ add_library(kfilemetadata_pngextractor ${_lib_type} pngextractor.cpp )
target_link_libraries(kfilemetadata_pngextractor
KF6::FileMetaData
Qt6::Gui
@@ -281,7 +286,7 @@
#
set_package_properties(KF6Archive PROPERTIES PURPOSE "- Required for
FictionBook2 extractor")
if(KF6Archive_FOUND)
- add_library(kfilemetadata_fb2extractor MODULE fb2extractor.cpp
${debug_SRCS})
+ add_library(kfilemetadata_fb2extractor ${_lib_type} fb2extractor.cpp
${debug_SRCS})
target_link_libraries(kfilemetadata_fb2extractor
KF6::Archive
KF6::FileMetaData
@@ -299,7 +304,7 @@
#
set_package_properties(KF6Archive PROPERTIES PURPOSE "- Required for Krita
extractor")
if(KF6Archive_FOUND)
- add_library(kfilemetadata_krita MODULE)
+ add_library(kfilemetadata_krita ${_lib_type})
target_sources(kfilemetadata_krita
PRIVATE
kritaextractor.cpp
@@ -316,5 +321,3 @@
TARGETS kfilemetadata_krita
DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf6/kfilemetadata)
endif()
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kfilemetadata-6.27.0/src/writers/CMakeLists.txt
new/kfilemetadata-6.28.0/src/writers/CMakeLists.txt
--- old/kfilemetadata-6.27.0/src/writers/CMakeLists.txt 2026-06-05
17:46:45.000000000 +0200
+++ new/kfilemetadata-6.28.0/src/writers/CMakeLists.txt 2026-07-03
12:54:50.000000000 +0200
@@ -1,5 +1,11 @@
+if(BUILD_SHARED_LIBS)
+ set(_lib_type MODULE)
+else()
+ set(_lib_type STATIC)
+endif()
+
if(Taglib_FOUND)
- add_library(kfilemetadata_taglibwriter MODULE taglibwriter.cpp
${debug_SRCS})
+ add_library(kfilemetadata_taglibwriter ${_lib_type} taglibwriter.cpp
${debug_SRCS})
target_link_libraries( kfilemetadata_taglibwriter
KF6::FileMetaData