Name: kompare Version: 26.08.0 Release: 1%{?dist} Summary: Diff/patch viewer License: BSD-2-Clause AND CC0-1.0 AND GFDL-1.2-only AND GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND MIT URL: https://apps.kde.org/kompare Source0: https://download.kde.org/stable/release-service/%{version}/src/%{name}-%{version}.tar.xz BuildRequires: desktop-file-utils BuildRequires: extra-cmake-modules BuildRequires: kf6-rpm-macros BuildRequires: gcc-c++ BuildRequires: cmake BuildRequires: cmake(KF6CoreAddons) BuildRequires: cmake(KF6Codecs) BuildRequires: cmake(KF6IconThemes) BuildRequires: cmake(KF6JobWidgets) BuildRequires: cmake(KF6Config) BuildRequires: cmake(KF6ConfigWidgets) BuildRequires: cmake(KF6Parts) BuildRequires: cmake(KF6TextEditor) BuildRequires: cmake(KF6WidgetsAddons) BuildRequires: cmake(KF6I18n) BuildRequires: cmake(KompareDiff2) = 26.08.0 BuildRequires: cmake(Qt6Qml) BuildRequires: cmake(Qt6Core) BuildRequires: cmake(Qt6PrintSupport) BuildRequires: cmake(Qt6Widgets) Requires: %{name}-libs%{?_isa} = %{version}-%{release} %description Kompare is KDE's diff/patch viewer. Full CMakeLists.txt read recursively (top-level, src/interfaces, src/dialogpages, src/komparepart, src/komparenavtreepart, src/servicemenus, src/icons, src/app) -- one real hard blocker beyond the standard KF6/Qt6 baseline: KF6DocTools is in the top-level find_package(KF6 REQUIRED COMPONENTS ... DocTools) list unconditionally, with no BUILD_DOC-style option gating it (unlike Kate/Ark/KolourPaint). Confirmed via a full source grep that DocTools is used ZERO times in any actual C++ source -- its only two real call sites are add_subdirectory(doc) (just one kdoctools_create_handbook() line) and a bare kdoctools_install(po) call, both purely documentation-generation machinery. Removed via a tested source patch: DocTools dropped from the find_package() component list, and both the add_subdirectory(doc) and kdoctools_install(po) lines removed (the latter would otherwise fail at configure time since kdoctools_install() is itself a CMake function only defined by the KF6DocTools package). The other real hard dependency, KompareDiff2 (libkomparediff2), is a genuinely separate KDE library (not a KF6 Framework) built as its own package earlier in this same COPR repo specifically as a Kompare prerequisite. %package libs Summary: Runtime libraries for %{name} %description libs %{summary}. %package devel Summary: Development files for %{name} Requires: %{name}-libs%{?_isa} = %{version}-%{release} %description devel %{summary}. %prep %autosetup -p1 python3 - <<'PYEOF' import re def sub_file(path, pattern, repl, count=1, flags=0): with open(path, encoding="utf-8") as f: content = f.read() new_content, n = re.subn(pattern, repl, content, count=count, flags=flags) assert n == count, f"{path}: expected {count} replacement(s) for pattern {pattern!r}, got {n}" with open(path, "w", encoding="utf-8") as f: f.write(new_content) sub_file( "CMakeLists.txt", r" DocTools\n", "", ) sub_file( "CMakeLists.txt", r"add_subdirectory\(doc\)\n", "", ) sub_file( "CMakeLists.txt", r"kdoctools_install\(po\)\n", "", ) print("OK: KF6DocTools requirement removed cleanly") PYEOF %build %cmake_kf6 %cmake_build_kf6 %install %cmake_install_kf6 %find_lang %{name} --with-html %files -f %{name}.lang %license LICENSES/* %{_kf6_bindir}/kompare %{_datadir}/applications/org.kde.kompare.desktop %{_kf6_metainfodir}/org.kde.kompare.appdata.xml %{_datadir}/kio/servicemenus/kompare.desktop %{_datadir}/icons/hicolor/*/apps/kompare.png %{_datadir}/icons/hicolor/scalable/apps/kompare.svgz %{_kf6_plugindir}/parts/komparepart.so %{_kf6_plugindir}/parts/komparenavtreepart.so %files libs %{_kf6_libdir}/libkompareinterface.so.* %{_kf6_libdir}/libkomparedialogpages.so.* %files devel %{_includedir}/kompare/ %{_kf6_libdir}/libkompareinterface.so %changelog * Sun Aug 30 2026 Smech - 26.08.0-1 - Real upstream source. Required building libkomparediff2 as a prerequisite first (see %%description). KF6DocTools removed via a tested source patch after confirming zero real C++ references to it anywhere. %%files built from real install()/ecm_install_icons() call sites across every subdirectory CMakeLists.txt; komparedialog pages uses NAMELINK_SKIP (no unversioned .so, matching the Ark/ Dolphin private-library pattern) so it's not claimed in %%files devel.