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

Reply via email to