commit: 30c2492cf48338c11aa4bd7a13127f6768badcce Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> AuthorDate: Sun Oct 12 17:31:42 2025 +0000 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> CommitDate: Sun Oct 12 17:35:52 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=30c2492c
kde-apps/marble: Restore thumbnailer functionality Which incidentally also gets rid of broken desktop files. Closes: https://bugs.gentoo.org/962789 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org> .../marble/files/marble-25.08.2-thumbnailers.patch | 385 +++++++++++++++++++++ kde-apps/marble/marble-25.08.2-r1.ebuild | 97 ++++++ 2 files changed, 482 insertions(+) diff --git a/kde-apps/marble/files/marble-25.08.2-thumbnailers.patch b/kde-apps/marble/files/marble-25.08.2-thumbnailers.patch new file mode 100644 index 000000000000..0e96d29f5c01 --- /dev/null +++ b/kde-apps/marble/files/marble-25.08.2-thumbnailers.patch @@ -0,0 +1,385 @@ +From 025903718c4a40d48c846cb58e849d904de24aee Mon Sep 17 00:00:00 2001 +From: Nicolas Fella <[email protected]> +Date: Tue, 12 Aug 2025 14:54:55 +0200 +Subject: [PATCH] Restore thumbnailer functionality + +The thumbnailers were never properly ported to KF6. + +The code has multiple desktop files that all load the same thumbnailer plugin. + +That approach does not work with KF6. Instead we need a proper plugin with +embedded JSON metadata for each. + +(cherry picked from commit 18528fa5062c4d9ec90785fc3d709163d86af6e8) + +* asturm 2025-10-12: Leaving ever changing .desktop files intact to keep + working with 25.08.3. +--- + src/plugins/runner/gpx/CMakeLists.txt | 3 +++ + src/plugins/runner/gpx/marble_thumbnail_gpx.json | 8 ++++++++ + src/plugins/runner/gpx/thumbnail.cpp | 11 +++++++++++ + src/plugins/runner/json/CMakeLists.txt | 3 +++ + .../runner/json/marble_thumbnail_geojson.json | 8 ++++++++ + src/plugins/runner/json/thumbnail.cpp | 11 +++++++++++ + src/plugins/runner/kml/CMakeLists.txt | 8 +++++--- + src/plugins/runner/kml/marble_thumbnail_kml.json | 8 ++++++++ + src/plugins/runner/kml/marble_thumbnail_kmz.json | 8 ++++++++ + src/plugins/runner/kml/thumbnail_kml.cpp | 11 +++++++++++ + src/plugins/runner/kml/thumbnail_kmz.cpp | 11 +++++++++++ + src/plugins/runner/osm/CMakeLists.txt | 7 +++---- + src/plugins/runner/osm/marble_thumbnail_osm.json | 8 ++++++++ + src/plugins/runner/osm/thumbnail.cpp | 11 +++++++++++ + src/plugins/runner/shp/CMakeLists.txt | 4 ++-- + src/plugins/runner/shp/marble_thumbnail_shp.json | 8 ++++++++ + src/plugins/runner/shp/thumbnail.cpp | 11 +++++++++++ + src/thumbnailer/CMakeLists.txt | 4 +--- + src/thumbnailer/main.cpp | 12 ------------ + src/thumbnailer/thumbnailer.cpp | 4 ++-- + src/thumbnailer/thumbnailer.h | 2 +- + 21 files changed, 134 insertions(+), 27 deletions(-) + create mode 100644 src/plugins/runner/gpx/marble_thumbnail_gpx.json + create mode 100644 src/plugins/runner/gpx/thumbnail.cpp + create mode 100644 src/plugins/runner/json/marble_thumbnail_geojson.json + create mode 100644 src/plugins/runner/json/thumbnail.cpp + create mode 100644 src/plugins/runner/kml/marble_thumbnail_kml.json + create mode 100644 src/plugins/runner/kml/marble_thumbnail_kmz.json + create mode 100644 src/plugins/runner/kml/thumbnail_kml.cpp + create mode 100644 src/plugins/runner/kml/thumbnail_kmz.cpp + create mode 100644 src/plugins/runner/osm/marble_thumbnail_osm.json + create mode 100644 src/plugins/runner/osm/thumbnail.cpp + create mode 100644 src/plugins/runner/shp/marble_thumbnail_shp.json + create mode 100644 src/plugins/runner/shp/thumbnail.cpp + delete mode 100644 src/thumbnailer/main.cpp + +diff --git a/src/plugins/runner/gpx/CMakeLists.txt b/src/plugins/runner/gpx/CMakeLists.txt +index 69f63d5a0..cfc8a318d 100644 +--- a/src/plugins/runner/gpx/CMakeLists.txt ++++ b/src/plugins/runner/gpx/CMakeLists.txt +@@ -74,6 +74,9 @@ if(NOT KF6_FOUND) + return() + endif() + ++kcoreaddons_add_plugin(marble_thumbnail_gpx SOURCES thumbnail.cpp INSTALL_NAMESPACE "kf6/thumbcreator") ++target_link_libraries(marble_thumbnail_gpx PRIVATE marblethumbnail) ++ + # register marble part as handler + # install again once part is fixed to load and show the passed file + # install(FILES marble_part_gpx.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) +diff --git a/src/plugins/runner/gpx/marble_thumbnail_gpx.json b/src/plugins/runner/gpx/marble_thumbnail_gpx.json +new file mode 100644 +index 000000000..e9074e32b +--- /dev/null ++++ b/src/plugins/runner/gpx/marble_thumbnail_gpx.json +@@ -0,0 +1,8 @@ ++{ ++ "KPlugin": { ++ "MimeTypes": [ ++ "application/gpx+xml" ++ ], ++ "Name": "GPX Geographic Data" ++ } ++} +diff --git a/src/plugins/runner/gpx/thumbnail.cpp b/src/plugins/runner/gpx/thumbnail.cpp +new file mode 100644 +index 000000000..638d869e5 +--- /dev/null ++++ b/src/plugins/runner/gpx/thumbnail.cpp +@@ -0,0 +1,11 @@ ++// SPDX-License-Identifier: LGPL-2.1-or-later ++// ++// SPDX-FileCopyrightText: 2025 Nicolas Fella <[email protected]> ++ ++#include "thumbnailer.h" ++ ++#include <KPluginFactory> ++ ++K_PLUGIN_CLASS_WITH_JSON(Marble::GeoDataThumbnailer, "marble_thumbnail_gpx.json") ++ ++#include "thumbnail.moc" +diff --git a/src/plugins/runner/json/CMakeLists.txt b/src/plugins/runner/json/CMakeLists.txt +index fd52ff188..07a92f123 100644 +--- a/src/plugins/runner/json/CMakeLists.txt ++++ b/src/plugins/runner/json/CMakeLists.txt +@@ -14,6 +14,9 @@ if(NOT KF6_FOUND) + return() + endif() + ++kcoreaddons_add_plugin(marble_thumbnail_geojson SOURCES thumbnail.cpp INSTALL_NAMESPACE "kf6/thumbcreator") ++target_link_libraries(marble_thumbnail_geojson PRIVATE marblethumbnail) ++ + # register marble part as handler + # install again once part is fixed to load and show the passed file + # install(FILES marble_part_geojson.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) +diff --git a/src/plugins/runner/json/marble_thumbnail_geojson.json b/src/plugins/runner/json/marble_thumbnail_geojson.json +new file mode 100644 +index 000000000..ff7a673a3 +--- /dev/null ++++ b/src/plugins/runner/json/marble_thumbnail_geojson.json +@@ -0,0 +1,8 @@ ++{ ++ "KPlugin": { ++ "MimeTypes": [ ++ "application/geo+json" ++ ], ++ "Name": "GeoJSON Geographic Data" ++ } ++} +diff --git a/src/plugins/runner/json/thumbnail.cpp b/src/plugins/runner/json/thumbnail.cpp +new file mode 100644 +index 000000000..5590ffa9a +--- /dev/null ++++ b/src/plugins/runner/json/thumbnail.cpp +@@ -0,0 +1,11 @@ ++// SPDX-License-Identifier: LGPL-2.1-or-later ++// ++// SPDX-FileCopyrightText: 2025 Nicolas Fella <[email protected]> ++ ++#include "thumbnailer.h" ++ ++#include <KPluginFactory> ++ ++K_PLUGIN_CLASS_WITH_JSON(Marble::GeoDataThumbnailer, "marble_thumbnail_geojson.json") ++ ++#include "thumbnail.moc" +diff --git a/src/plugins/runner/kml/CMakeLists.txt b/src/plugins/runner/kml/CMakeLists.txt +index 59eb85928..6b5c0cbf3 100644 +--- a/src/plugins/runner/kml/CMakeLists.txt ++++ b/src/plugins/runner/kml/CMakeLists.txt +@@ -20,9 +20,11 @@ endif() + # install(FILES marble_part_kml.desktop DESTINATION ${KDE_INSTALL_FULL_KSERVICESDIR}) + # install(FILES marble_part_kmz.desktop DESTINATION ${KDE_INSTALL_FULL_KSERVICESDIR}) + +-# register thumbnail plugin as handler +-install(FILES marble_thumbnail_kml.desktop DESTINATION ${KDE_INSTALL_FULL_APPDIR}) +-install(FILES marble_thumbnail_kmz.desktop DESTINATION ${KDE_INSTALL_FULL_APPDIR}) ++kcoreaddons_add_plugin(marble_thumbnail_kml SOURCES thumbnail_kml.cpp INSTALL_NAMESPACE "kf6/thumbcreator") ++target_link_libraries(marble_thumbnail_kml PRIVATE marblethumbnail) ++ ++kcoreaddons_add_plugin(marble_thumbnail_kmz SOURCES thumbnail_kmz.cpp INSTALL_NAMESPACE "kf6/thumbcreator") ++target_link_libraries(marble_thumbnail_kmz PRIVATE marblethumbnail) + + if(NOT WIN32 AND NOT APPLE) + # register marble app as handler +diff --git a/src/plugins/runner/kml/marble_thumbnail_kml.json b/src/plugins/runner/kml/marble_thumbnail_kml.json +new file mode 100644 +index 000000000..0523c56e9 +--- /dev/null ++++ b/src/plugins/runner/kml/marble_thumbnail_kml.json +@@ -0,0 +1,8 @@ ++{ ++ "KPlugin": { ++ "MimeTypes": [ ++ "application/vnd.google-earth.kml+xml" ++ ], ++ "Name": "KML Geographic Data" ++ } ++} +diff --git a/src/plugins/runner/kml/marble_thumbnail_kmz.json b/src/plugins/runner/kml/marble_thumbnail_kmz.json +new file mode 100644 +index 000000000..8ff4d3209 +--- /dev/null ++++ b/src/plugins/runner/kml/marble_thumbnail_kmz.json +@@ -0,0 +1,8 @@ ++{ ++ "KPlugin": { ++ "MimeTypes": [ ++ "application/vnd.google-earth.kmz" ++ ], ++ "Name": "KML Geographic Compressed Data" ++ } ++} +diff --git a/src/plugins/runner/kml/thumbnail_kml.cpp b/src/plugins/runner/kml/thumbnail_kml.cpp +new file mode 100644 +index 000000000..c3f9df0c3 +--- /dev/null ++++ b/src/plugins/runner/kml/thumbnail_kml.cpp +@@ -0,0 +1,11 @@ ++// SPDX-License-Identifier: LGPL-2.1-or-later ++// ++// SPDX-FileCopyrightText: 2025 Nicolas Fella <[email protected]> ++ ++#include "thumbnailer.h" ++ ++#include <KPluginFactory> ++ ++K_PLUGIN_CLASS_WITH_JSON(Marble::GeoDataThumbnailer, "marble_thumbnail_kml.json") ++ ++#include "thumbnail_kml.moc" +diff --git a/src/plugins/runner/kml/thumbnail_kmz.cpp b/src/plugins/runner/kml/thumbnail_kmz.cpp +new file mode 100644 +index 000000000..4dee965de +--- /dev/null ++++ b/src/plugins/runner/kml/thumbnail_kmz.cpp +@@ -0,0 +1,11 @@ ++// SPDX-License-Identifier: LGPL-2.1-or-later ++// ++// SPDX-FileCopyrightText: 2025 Nicolas Fella <[email protected]> ++ ++#include "thumbnailer.h" ++ ++#include <KPluginFactory> ++ ++K_PLUGIN_CLASS_WITH_JSON(Marble::GeoDataThumbnailer, "marble_thumbnail_kmz.json") ++ ++#include "thumbnail_kmz.moc" +diff --git a/src/plugins/runner/osm/CMakeLists.txt b/src/plugins/runner/osm/CMakeLists.txt +index 3cb2f6fbb..e69a1e8b0 100644 +--- a/src/plugins/runner/osm/CMakeLists.txt ++++ b/src/plugins/runner/osm/CMakeLists.txt +@@ -78,10 +78,9 @@ if(NOT KF6_FOUND) + return() + endif() + ++kcoreaddons_add_plugin(marble_thumbnail_osm SOURCES thumbnail.cpp INSTALL_NAMESPACE "kf6/thumbcreator") ++target_link_libraries(marble_thumbnail_osm PRIVATE marblethumbnail) ++ + # register marble part as handler + # install again once part is fixed to load and show the passed file + # install(FILES marble_part_osm.desktop DESTINATION ${KDE_INSTALL_FULL_KSERVICE5DIR}) +- +-# register thumbnail plugin as handler +-install(FILES marble_thumbnail_osm.desktop DESTINATION ${KDE_INSTALL_FULL_APPDIR}) +- +diff --git a/src/plugins/runner/osm/marble_thumbnail_osm.json b/src/plugins/runner/osm/marble_thumbnail_osm.json +new file mode 100644 +index 000000000..050615de6 +--- /dev/null ++++ b/src/plugins/runner/osm/marble_thumbnail_osm.json +@@ -0,0 +1,8 @@ ++{ ++ "KPlugin": { ++ "MimeTypes": [ ++ "application/x-osm+xml" ++ ], ++ "Name": "OSM Data" ++ } ++} +diff --git a/src/plugins/runner/osm/thumbnail.cpp b/src/plugins/runner/osm/thumbnail.cpp +new file mode 100644 +index 000000000..0536d304d +--- /dev/null ++++ b/src/plugins/runner/osm/thumbnail.cpp +@@ -0,0 +1,11 @@ ++// SPDX-License-Identifier: LGPL-2.1-or-later ++// ++// SPDX-FileCopyrightText: 2025 Nicolas Fella <[email protected]> ++ ++#include "thumbnailer.h" ++ ++#include <KPluginFactory> ++ ++K_PLUGIN_CLASS_WITH_JSON(Marble::GeoDataThumbnailer, "marble_thumbnail_osm.json") ++ ++#include "thumbnail.moc" +diff --git a/src/plugins/runner/shp/CMakeLists.txt b/src/plugins/runner/shp/CMakeLists.txt +index 9d1cdc9a1..472b8190f 100644 +--- a/src/plugins/runner/shp/CMakeLists.txt ++++ b/src/plugins/runner/shp/CMakeLists.txt +@@ -21,8 +21,8 @@ endif() + # install again once part is fixed to load and show the passed file + # install(FILES marble_part_shp.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) + +-# register thumbnail plugin as handler +-install(FILES marble_thumbnail_shp.desktop DESTINATION ${KDE_INSTALL_APPDIR}) ++kcoreaddons_add_plugin(marble_thumbnail_shp SOURCES thumbnail.cpp INSTALL_NAMESPACE "kf6/thumbcreator") ++target_link_libraries(marble_thumbnail_shp PRIVATE marblethumbnail) + + if(NOT WIN32 AND NOT APPLE) + # register marble app as handler +diff --git a/src/plugins/runner/shp/marble_thumbnail_shp.json b/src/plugins/runner/shp/marble_thumbnail_shp.json +new file mode 100644 +index 000000000..401dd4e02 +--- /dev/null ++++ b/src/plugins/runner/shp/marble_thumbnail_shp.json +@@ -0,0 +1,8 @@ ++{ ++ "KPlugin": { ++ "MimeTypes": [ ++ "application/x-esri-shape" ++ ], ++ "Name": "ESRI Shapefile" ++ } ++} +diff --git a/src/plugins/runner/shp/thumbnail.cpp b/src/plugins/runner/shp/thumbnail.cpp +new file mode 100644 +index 000000000..caee98a89 +--- /dev/null ++++ b/src/plugins/runner/shp/thumbnail.cpp +@@ -0,0 +1,11 @@ ++// SPDX-License-Identifier: LGPL-2.1-or-later ++// ++// SPDX-FileCopyrightText: 2025 Nicolas Fella <[email protected]> ++ ++#include "thumbnailer.h" ++ ++#include <KPluginFactory> ++ ++K_PLUGIN_CLASS_WITH_JSON(Marble::GeoDataThumbnailer, "marble_thumbnail_shp.json") ++ ++#include "thumbnail.moc" +diff --git a/src/thumbnailer/CMakeLists.txt b/src/thumbnailer/CMakeLists.txt +index 62e692b72..5ac0b1535 100644 +--- a/src/thumbnailer/CMakeLists.txt ++++ b/src/thumbnailer/CMakeLists.txt +@@ -9,11 +9,9 @@ endif() + set(marblethumbnail_SRCS + thumbnailer.cpp + thumbnailer.h +- main.cpp + ) +-add_library(marblethumbnail MODULE ${marblethumbnail_SRCS}) ++add_library(marblethumbnail STATIC ${marblethumbnail_SRCS}) + target_link_libraries(marblethumbnail + marblewidget + KF6::KIOGui + ) +-install(TARGETS marblethumbnail DESTINATION ${KDE_INSTALL_PLUGINDIR}) +diff --git a/src/thumbnailer/main.cpp b/src/thumbnailer/main.cpp +deleted file mode 100644 +index c26e553dd..000000000 +--- a/src/thumbnailer/main.cpp ++++ /dev/null +@@ -1,12 +0,0 @@ +-// SPDX-FileCopyrightText: 2014 Friedrich W. H. Kossebau <[email protected]> +-// SPDX-License-Identifier: LGPL-2.1-or-later +- +-#include "thumbnailer.h" +- +-extern "C" { +- +-Q_DECL_EXPORT ThumbnailCreator *new_creator() +-{ +- return new Marble::GeoDataThumbnailer; +-} +-} +diff --git a/src/thumbnailer/thumbnailer.cpp b/src/thumbnailer/thumbnailer.cpp +index ce84a86d4..6e2520396 100644 +--- a/src/thumbnailer/thumbnailer.cpp ++++ b/src/thumbnailer/thumbnailer.cpp +@@ -18,8 +18,8 @@ static const int timeoutTime = 5000; // in msec + namespace Marble + { + +-GeoDataThumbnailer::GeoDataThumbnailer() +- : ThumbnailCreator(nullptr, QVariantList()) ++GeoDataThumbnailer::GeoDataThumbnailer(QObject *parent) ++ : ThumbnailCreator(parent, QVariantList()) + { + m_marbleMap.setMapThemeId(QStringLiteral("earth/openstreetmap/openstreetmap.dgml")); + m_marbleMap.setProjection(Equirectangular); +diff --git a/src/thumbnailer/thumbnailer.h b/src/thumbnailer/thumbnailer.h +index 47266050f..66ce681c2 100644 +--- a/src/thumbnailer/thumbnailer.h ++++ b/src/thumbnailer/thumbnailer.h +@@ -26,7 +26,7 @@ class GeoDataThumbnailer : public ThumbnailCreator + Q_OBJECT + + public: +- GeoDataThumbnailer(); ++ GeoDataThumbnailer(QObject *parent); + ~GeoDataThumbnailer() override; + + ThumbnailResult create(const ThumbnailRequest &request) override; +-- +2.51.0 + diff --git a/kde-apps/marble/marble-25.08.2-r1.ebuild b/kde-apps/marble/marble-25.08.2-r1.ebuild new file mode 100644 index 000000000000..68452fe6dada --- /dev/null +++ b/kde-apps/marble/marble-25.08.2-r1.ebuild @@ -0,0 +1,97 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +ECM_HANDBOOK="optional" # see src/apps/marble-kde/CMakeLists.txt +ECM_TEST="true" +KFMIN=6.16.0 +QTMIN=6.9.1 +inherit ecm gear.kde.org xdg + +DESCRIPTION="Virtual Globe and World Atlas to learn more about Earth" +HOMEPAGE="https://marble.kde.org/" + +LICENSE="GPL-2" # TODO: CHECK +SLOT="6/$(ver_cut 1-2)" +KEYWORDS="~amd64 ~arm64 ~riscv ~x86" +IUSE="aprs +dbus designer +geolocation gps +kde +pbf phonon shapefile +webengine" + +# bug 588320 +RESTRICT="test" + +# FIXME (new package): libwlocate, WLAN-based geolocation +DEPEND=" + >=dev-qt/qt5compat-${QTMIN}:6 + >=dev-qt/qtbase-${QTMIN}:6[concurrent,dbus?,gui,network,sql,widgets,xml] + >=dev-qt/qtdeclarative-${QTMIN}:6 + >=dev-qt/qtsvg-${QTMIN}:6 + sys-libs/zlib + aprs? ( >=dev-qt/qtserialport-${QTMIN}:6 ) + designer? ( >=dev-qt/qttools-${QTMIN}:6[designer] ) + geolocation? ( >=dev-qt/qtpositioning-${QTMIN}:6 ) + gps? ( sci-geosciences/gpsd:= ) + kde? ( + >=kde-frameworks/kconfig-${KFMIN}:6 + >=kde-frameworks/kconfigwidgets-${KFMIN}:6 + >=kde-frameworks/kcoreaddons-${KFMIN}:6 + >=kde-frameworks/kcrash-${KFMIN}:6 + >=kde-frameworks/ki18n-${KFMIN}:6 + >=kde-frameworks/kio-${KFMIN}:6 + >=kde-frameworks/kparts-${KFMIN}:6 + >=kde-frameworks/krunner-${KFMIN}:6 + webengine? ( >=dev-qt/qtwebengine-${QTMIN}:6[qml] ) + ) + pbf? ( + dev-cpp/abseil-cpp:= + dev-libs/protobuf:= + ) + phonon? ( >=media-libs/phonon-4.12.0[qt6(+)] ) + shapefile? ( sci-libs/shapelib:= ) + webengine? ( + >=dev-qt/qtwebchannel-${QTMIN}:6 + >=dev-qt/qtwebengine-${QTMIN}:6[widgets] + ) +" +RDEPEND="${DEPEND} + kde? ( + dev-libs/kirigami-addons:6 + >=dev-qt/qt5compat-${QTMIN}:6[qml] + >=kde-frameworks/kirigami-${KFMIN}:6 + ) +" +BDEPEND=" + >=dev-qt/qttools-${QTMIN}:6[linguist] + aprs? ( dev-lang/perl ) +" + +PATCHES=( "${FILESDIR}/${P}-thumbnailers.patch" ) # bug #962789, git master + +src_prepare() { + ecm_src_prepare + + rm -r src/3rdparty/zlib || die "Failed to remove bundled libs" +} + +src_configure() { + local mycmakeargs=( + $(cmake_use_find_package aprs Perl) + $(cmake_use_find_package geolocation Qt6Positioning) + -DBUILD_WITH_DBUS=$(usex dbus) + -DWITH_DESIGNER_PLUGIN=$(usex designer) + -DWITH_libgps=$(usex gps) + $(cmake_use_find_package pbf Protobuf) + -DWITH_Phonon4Qt6=$(usex phonon) + -DWITH_libshp=$(usex shapefile) + $(cmake_use_find_package webengine Qt6WebEngineWidgets) + -DWITH_libwlocate=OFF + # bug 608890 + -DKDE_INSTALL_CONFDIR="/etc/xdg" + ) + # KF6KIO: src/thumbnailer/CMakeLists.txt + # KF6Runner: src/plasmarunner/CMakeLists.txt + for x in CoreAddons I18n Config Crash KIO Parts Runner; do + mycmakeargs+=( $(cmake_use_find_package kde KF6${x}) ) + done + ecm_src_configure +}
