Date: Tuesday, November 8, 2016 @ 12:32:41 Author: arojas Revision: 195135
appstream-qt 0.10.3 rebuild Added: discover/trunk/discover-appstream-0.10.3.patch Modified: discover/trunk/PKGBUILD ---------------------------------+ PKGBUILD | 13 + discover-appstream-0.10.3.patch | 256 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 266 insertions(+), 3 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2016-11-08 12:22:46 UTC (rev 195134) +++ PKGBUILD 2016-11-08 12:32:41 UTC (rev 195135) @@ -8,17 +8,24 @@ arch=(i686 x86_64) url='https://projects.kde.org/projects/kde/workspace/discover' license=(LGPL) -depends=(packagekit-qt5 knewstuff kdeclarative qt5-graphicaleffects appstream-qt archlinux-appstream-data hicolor-icon-theme kirigami) +depends=(packagekit-qt5 knewstuff kdeclarative qt5-graphicaleffects appstream-qt archlinux-appstream-data + hicolor-icon-theme kirigami) makedepends=(extra-cmake-modules python plasma-framework) conflicts=(muon) replaces=(muon) -source=("http://download.kde.org/stable/plasma/$pkgver/$pkgname-$pkgver.tar.xz"{,.sig}) +source=("http://download.kde.org/stable/plasma/$pkgver/$pkgname-$pkgver.tar.xz"{,.sig} + discover-appstream-0.10.3.patch) md5sums=('555043b0cdeb1cfdb00ee45ec5dec7c6' - 'SKIP') + 'SKIP' + 'da8766914efcb8fb248bcdf8f1c38396') validpgpkeys=(2D1D5B0588357787DE9EE225EC94D18F7F05997E) # Jonathan Riddell <[email protected]> prepare() { mkdir -p build + +# Port to appstream-qt 0.10.3 API (Debian) + cd $pkgname-$pkgver + patch -p1 -i ../discover-appstream-0.10.3.patch } build() { Added: discover-appstream-0.10.3.patch =================================================================== --- discover-appstream-0.10.3.patch (rev 0) +++ discover-appstream-0.10.3.patch 2016-11-08 12:32:41 UTC (rev 195135) @@ -0,0 +1,256 @@ +commit 5748ab0d65df220ce1e084939b07e32c676f853b +Author: Matthias Klumpp <[email protected]> +Date: Sat Nov 5 16:30:43 2016 +0100 + + Make Discover compile with newer AppStreamQt releases + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 48a9b77..c59d7ad 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -28,7 +28,15 @@ if (NOT packagekitqt5_FOUND) + find_package(KF5 REQUIRED IconThemes Notifications KIO) + endif() + endif() +-find_package(AppstreamQt 0.10) ++ ++find_package(AppStreamQt 0.10) ++set(AppStreamTarget "AppStreamQt") ++if (NOT AppStreamQt_FOUND) ++ find_package(AppstreamQt 0.10) ++ set(AppStreamTarget "AppstreamQt") ++ set(AppStreamQt_FOUND TRUE) ++endif() ++ + find_package(KF5Attica 5.23) + find_package(KF5NewStuff 5.23) + +diff --git a/libdiscover/backends/CMakeLists.txt b/libdiscover/backends/CMakeLists.txt +index 93497f6..8eb7365 100644 +--- a/libdiscover/backends/CMakeLists.txt ++++ b/libdiscover/backends/CMakeLists.txt +@@ -20,7 +20,7 @@ if(BODEGA_FOUND) + add_subdirectory(BodegaBackend) + endif() + +-if(packagekitqt5_FOUND AND AppstreamQt_FOUND) ++if(packagekitqt5_FOUND AND AppStreamQt_FOUND) + add_subdirectory(PackageKitBackend) + endif() + +diff --git a/libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp +b/libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp +index 658019f..5256db3 100644 +--- a/libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp ++++ b/libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp +@@ -19,8 +19,14 @@ + ***************************************************************************/ + + #include "AppPackageKitResource.h" ++#ifdef NEWAPPSTREAM ++#include <AppStreamQt/icon.h> ++#include <AppStreamQt/screenshot.h> ++#include <AppStreamQt/image.h> ++#else + #include <AppstreamQt/screenshot.h> + #include <AppstreamQt/image.h> ++#endif + // #include <AppstreamQt/release.h> + #include <KLocalizedString> + #include <KToolInvocation> +@@ -52,7 +58,23 @@ QString AppPackageKitResource::longDescription() + QVariant AppPackageKitResource::icon() const + { + QIcon ret; +- ++#ifdef NEWAPPSTREAM ++ const auto icons = m_appdata.icons(); ++ if (icons.isEmpty()) { ++ ret = QIcon::fromTheme(QStringLiteral("package-x-generic")); ++ } else foreach(const AppStream::Icon &icon, icons) { ++ switch(icon.kind()) { ++ case AppStream::Icon::KindLocal: ++ ret.addFile(icon.url().toLocalFile(), icon.size()); ++ break; ++ case AppStream::Icon::KindCached: ++ ret.addFile(icon.url().toLocalFile(), icon.size()); ++ break; ++ default: ++ break; ++ } ++ } ++#else + const auto icons = m_appdata.iconUrls(); + if (icons.isEmpty()) + return m_appdata.name(); +@@ -66,7 +88,7 @@ QVariant AppPackageKitResource::icon() const + if (ret.isNull()) { + ret = QIcon::fromTheme(QStringLiteral("package-x-generic")); + } +- ++#endif + return ret; + } + +@@ -105,7 +127,11 @@ QString AppPackageKitResource::appstreamId() const + + QUrl AppPackageKitResource::homepage() + { ++#ifdef NEWAPPSTREAM ++ return m_appdata.url(Appstream::Component::UrlKindHomepage); ++#else + return m_appdata.urls().value(Appstream::Component::UrlKindHomepage); ++#endif + } + + bool AppPackageKitResource::isTechnical() const +@@ -150,13 +176,20 @@ static QUrl screenshot(const Appstream::Component& comp, Appstream::Image::Kind + + QUrl AppPackageKitResource::screenshotUrl() + { ++#ifdef NEWAPPSTREAM ++ return screenshot(m_appdata, Appstream::Image::KindSource); ++#else + return screenshot(m_appdata, Appstream::Image::Plain); +- ++#endif + } + + QUrl AppPackageKitResource::thumbnailUrl() + { ++#ifdef NEWAPPSTREAM ++ return screenshot(m_appdata, Appstream::Image::KindThumbnail); ++#else + return screenshot(m_appdata, Appstream::Image::Thumbnail); ++#endif + } + + void AppPackageKitResource::fetchScreenshots() +@@ -164,8 +197,13 @@ void AppPackageKitResource::fetchScreenshots() + QList<QUrl> thumbnails, screenshots; + + Q_FOREACH (const Appstream::Screenshot &s, m_appdata.screenshots()) { ++#ifdef NEWAPPSTREAM ++ const QUrl thumbnail = imageOfKind(s.images(), Appstream::Image::KindThumbnail); ++ const QUrl plain = imageOfKind(s.images(), Appstream::Image::KindSource); ++#else + const QUrl thumbnail = imageOfKind(s.images(), Appstream::Image::Thumbnail); + const QUrl plain = imageOfKind(s.images(), Appstream::Image::Plain); ++#endif + if (plain.isEmpty()) + qWarning() << "invalid screenshot for" << name(); + +@@ -183,11 +221,15 @@ bool AppPackageKitResource::canExecute() const + + QStringList AppPackageKitResource::findProvides(Appstream::Provides::Kind kind) const + { ++#ifdef NEWAPPSTREAM ++ return m_appdata.provided(kind).items(); ++#else + QStringList ret; + Q_FOREACH (Appstream::Provides p, m_appdata.provides()) + if (p.kind() == kind) + ret += p.value(); + return ret; ++#endif + } + + QStringList AppPackageKitResource::allPackageNames() const +diff --git a/libdiscover/backends/PackageKitBackend/AppPackageKitResource.h +b/libdiscover/backends/PackageKitBackend/AppPackageKitResource.h +index 08d133d..4ec3681 100644 +--- a/libdiscover/backends/PackageKitBackend/AppPackageKitResource.h ++++ b/libdiscover/backends/PackageKitBackend/AppPackageKitResource.h +@@ -24,6 +24,10 @@ + #include "PackageKitResource.h" + #include "PackageKitBackend.h" + ++#ifdef NEWAPPSTREAM ++namespace Appstream = AppStream; ++#endif ++ + class AppPackageKitResource : public PackageKitResource + { + Q_OBJECT +diff --git a/libdiscover/backends/PackageKitBackend/CMakeLists.txt b/libdiscover/backends/PackageKitBackend/CMakeLists.txt +index e31ea86..cfebaff 100644 +--- a/libdiscover/backends/PackageKitBackend/CMakeLists.txt ++++ b/libdiscover/backends/PackageKitBackend/CMakeLists.txt +@@ -10,7 +10,13 @@ add_library(packagekit-backend MODULE PackageKitBackend.cpp + PackageKitSourcesBackend.cpp + AppstreamReviews.cpp + ) +-target_link_libraries(packagekit-backend PRIVATE Discover::Common Qt5::Core PK::packagekitqt5 KF5::ConfigGui KF5::Service KF5::KIOWidgets KF5::Archive AppstreamQt) ++ ++if (${AppStreamQt_VERSION} VERSION_LESS 0.10.3) ++ target_compile_definitions(packagekit-backend PRIVATE -DNEWAPPSTREAM=0) ++else() ++ target_compile_definitions(packagekit-backend PRIVATE -DNEWAPPSTREAM=1) ++endif() ++target_link_libraries(packagekit-backend PRIVATE Discover::Common Qt5::Core PK::packagekitqt5 KF5::ConfigGui KF5::Service KF5::KIOWidgets KF5::Archive ${AppStreamTarget}) + + install(TARGETS packagekit-backend DESTINATION ${PLUGIN_INSTALL_DIR}/discover) + install(FILES packagekit-backend.desktop DESTINATION ${DATA_INSTALL_DIR}/libdiscover/backends) +diff --git a/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp b/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp +index d2698e9..3f180e5 100644 +--- a/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp ++++ b/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp +@@ -54,7 +54,11 @@ PackageKitBackend::PackageKitBackend(QObject* parent) + , m_isFetching(0) + , m_reviews(new AppstreamReviews(this)) + { ++#ifdef NEWAPPSTREAM ++ bool b = m_appdata.load(); ++#else + bool b = m_appdata.open(); ++#endif + if (!b) { + qWarning() << "Could not open the AppStream metadata pool"; + +@@ -122,7 +126,11 @@ void PackageKitBackend::reloadPackageList() + disconnect(m_refresher.data(), &PackageKit::Transaction::finished, this, &PackageKitBackend::reloadPackageList); + } + ++#ifdef NEWAPPSTREAM ++ const auto components = m_appdata.components(); ++#else + const auto components = m_appdata.allComponents(); ++#endif + QStringList neededPackages; + neededPackages.reserve(components.size()); + foreach(const Appstream::Component& component, components) { +@@ -343,7 +351,11 @@ AbstractResource* PackageKitBackend::resourceByPackageName(const QString& name) + + QList<AbstractResource*> PackageKitBackend::searchPackageName(const QString& searchText) + { ++#ifdef NEWAPPSTREAM ++ const QList<Appstream::Component> components = m_appdata.search(searchText); ++#else + const QList<Appstream::Component> components = m_appdata.findComponentsByString(searchText, {}); ++#endif + const QStringList ids = kTransform<QStringList>(components, [](const Appstream::Component& comp) { return comp.id(); }); + + return resourcesByPackageNames<QList<AbstractResource*>>(ids); +diff --git a/libdiscover/backends/PackageKitBackend/PackageKitBackend.h b/libdiscover/backends/PackageKitBackend/PackageKitBackend.h +index 7b8d3fb..562099e 100644 +--- a/libdiscover/backends/PackageKitBackend/PackageKitBackend.h ++++ b/libdiscover/backends/PackageKitBackend/PackageKitBackend.h +@@ -29,7 +29,18 @@ + #include <QTimer> + #include <QSet> + #include <PackageKit/Transaction> ++ ++#ifdef NEWAPPSTREAM ++#include <AppStreamQt/pool.h> ++#include <AppStreamQt/provided.h> ++namespace AppStream { ++ typedef Provided Provides; ++ typedef Pool Database; ++} ++namespace Appstream = AppStream; ++#else + #include <AppstreamQt/database.h> ++#endif + + class AppstreamReviews; + class AppPackageKitResource;
