[PackageKit] 0.8.4-2

Rex Dieter rdieter at fedoraproject.org
Tue Oct 2 17:10:06 UTC 2012


commit d915c61d134a0d3bbb9480327cf706ca497a76f3
Author: Rex Dieter <rdieter at fedoraproject.org>
Date:   Tue Oct 2 12:10:24 2012 -0500

    0.8.4-2
    
    - -yum: Requires: yum >= 3.4.3-35
    - PackageKit.conf: StateChangedTimeoutPriority=2
    - backport -qt api/abi change

 ...priority-state-changed-timeout-to-2-secon.patch |   28 +
 ...qt-Break-ABI-to-make-pk-qt-more-closer-to.patch |  711 ++++++++++++++++++++
 PackageKit.spec                                    |   16 +-
 3 files changed, 753 insertions(+), 2 deletions(-)
---
diff --git a/0003-Change-the-priority-state-changed-timeout-to-2-secon.patch b/0003-Change-the-priority-state-changed-timeout-to-2-secon.patch
new file mode 100644
index 0000000..0d05544
--- /dev/null
+++ b/0003-Change-the-priority-state-changed-timeout-to-2-secon.patch
@@ -0,0 +1,28 @@
+From 1945d27506ce72e3a135c204c9e550be92c0c65b Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard at hughsie.com>
+Date: Tue, 2 Oct 2012 11:56:41 +0100
+Subject: [PATCH 3/4] Change the priority state changed timeout to 2 seconds
+
+30 seconds is too long to have incorrect data showing in the UI.
+---
+ etc/PackageKit.conf.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/etc/PackageKit.conf.in b/etc/PackageKit.conf.in
+index 18c5deb..3440be5 100644
+--- a/etc/PackageKit.conf.in
++++ b/etc/PackageKit.conf.in
+@@ -194,8 +194,8 @@ DeveloperMode=false
+ # This should be used when a native tool has been used, and the update UIs
+ # should be updated to reflect reality.
+ #
+-# default=30
+-StateChangedTimeoutPriority=30
++# default=2
++StateChangedTimeoutPriority=2
+ 
+ # The time in seconds to wait after the computer has been resumed or any non
+ # package related system event
+-- 
+1.7.12.1
+
diff --git a/0004-packagekit-qt-Break-ABI-to-make-pk-qt-more-closer-to.patch b/0004-packagekit-qt-Break-ABI-to-make-pk-qt-more-closer-to.patch
new file mode 100644
index 0000000..e5dd5fc
--- /dev/null
+++ b/0004-packagekit-qt-Break-ABI-to-make-pk-qt-more-closer-to.patch
@@ -0,0 +1,711 @@
+From ab3ee74c7ec4b74b4c9d1ab6298f4c32da03073b Mon Sep 17 00:00:00 2001
+From: Daniel Nicoletti <dantti12 at gmail.com>
+Date: Tue, 2 Oct 2012 09:04:19 -0300
+Subject: [PATCH 4/4] packagekit-qt: Break ABI to make pk-qt more closer to
+ what pk-glib is and allow for searchGroup() to work
+
+---
+ configure.ac                              |  2 +-
+ lib/packagekit-qt2/Makefile.am            |  4 ++
+ lib/packagekit-qt2/bitfield.cpp           | 70 +++++++++++++++++++++++++++
+ lib/packagekit-qt2/bitfield.h             | 33 +++++++++++++
+ lib/packagekit-qt2/daemon.cpp             | 15 +-----
+ lib/packagekit-qt2/daemon.h               | 77 ++++++++++++++++++++++++++++++
+ lib/packagekit-qt2/package.cpp            | 23 ++++-----
+ lib/packagekit-qt2/package.h              |  4 +-
+ lib/packagekit-qt2/packagedetails.cpp     |  8 +---
+ lib/packagekit-qt2/packagedetails.h       | 79 ++++++++++++++++---------------
+ lib/packagekit-qt2/transaction.cpp        | 18 ++++---
+ lib/packagekit-qt2/transaction.h          | 74 ++++++++++++++++-------------
+ lib/packagekit-qt2/transactionprivate.cpp |  2 +-
+ 13 files changed, 295 insertions(+), 114 deletions(-)
+ create mode 100644 lib/packagekit-qt2/bitfield.cpp
+ create mode 100644 lib/packagekit-qt2/bitfield.h
+
+diff --git a/configure.ac b/configure.ac
+index 1a4f123..a7530c3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -74,7 +74,7 @@ AC_SUBST(LT_AGE)
+ # - If the interface is the same as the previous version, but bugs are
+ #   fixed, change:
+ #      REVISION += 1
+-LT_QT_CURRENT=4
++LT_QT_CURRENT=5
+ LT_QT_REVISION=0
+ LT_QT_AGE=0
+ AC_SUBST(LT_QT_CURRENT)
+diff --git a/lib/packagekit-qt2/Makefile.am b/lib/packagekit-qt2/Makefile.am
+index 6e5e777..959e618 100644
+--- a/lib/packagekit-qt2/Makefile.am
++++ b/lib/packagekit-qt2/Makefile.am
+@@ -21,6 +21,8 @@ MOCFILES =							\
+ 	daemonproxy.moc						\
+ 	transactionproxy.moc					\
+ 	transaction.moc						\
++	package.moc						\
++	packagedetails.moc					\
+ 	$(NULL)
+ 
+ lib_LTLIBRARIES =						\
+@@ -30,6 +32,7 @@ lib_LTLIBRARIES =						\
+ libpackagekit_qt2_includedir = $(includedir)/PackageKit/packagekit-qt2
+ 
+ libpackagekit_qt2_include_HEADERS =				\
++	bitfield.h						\
+ 	Signature						\
+ 	signature.h						\
+ 	Eula							\
+@@ -47,6 +50,7 @@ libpackagekit_qt2_include_HEADERS =				\
+ 	$(NULL)
+ 
+ libpackagekit_qt2_la_SOURCES =					\
++	bitfield.cpp						\
+ 	signature.h						\
+ 	signature.cpp						\
+ 	eula.h							\
+diff --git a/lib/packagekit-qt2/bitfield.cpp b/lib/packagekit-qt2/bitfield.cpp
+new file mode 100644
+index 0000000..2fa6e82
+--- /dev/null
++++ b/lib/packagekit-qt2/bitfield.cpp
+@@ -0,0 +1,70 @@
++#include "bitfield.h"
++
++using namespace PackageKit;
++
++Bitfield::Bitfield () : m_val (0)
++{
++}
++
++Bitfield::Bitfield (qulonglong val) : m_val (val)
++{
++}
++
++Bitfield::~Bitfield ()
++{
++}
++
++qulonglong Bitfield::operator& (qulonglong mask) const
++{
++	return m_val & (1ULL << mask);
++}
++
++qulonglong Bitfield::operator&= (qulonglong mask)
++{
++	m_val &= (1ULL << mask);
++	return m_val;
++}
++
++qulonglong Bitfield::operator| (qulonglong mask) const
++{
++	return m_val | (1ULL << mask);
++}
++
++qulonglong Bitfield::operator|= (qulonglong mask)
++{
++	m_val |= (1ULL << mask);
++	return m_val;
++}
++
++Bitfield Bitfield::operator& (Bitfield mask) const
++{
++	return m_val & mask.m_val;
++}
++
++Bitfield Bitfield::operator&= (Bitfield mask)
++{
++	m_val &= mask.m_val;
++	return m_val;
++}
++
++Bitfield Bitfield::operator| (Bitfield mask) const
++{
++	return m_val | mask.m_val;
++}
++
++Bitfield Bitfield::operator|= (Bitfield mask)
++{
++	m_val |= mask.m_val;
++	return m_val;
++}
++
++
++Bitfield& Bitfield::operator= (const Bitfield& other)
++{
++	if (this == &other)
++		return *this;
++
++	m_val = other.m_val;
++
++	return *this;
++}
+diff --git a/lib/packagekit-qt2/bitfield.h b/lib/packagekit-qt2/bitfield.h
+new file mode 100644
+index 0000000..d7dd481
+--- /dev/null
++++ b/lib/packagekit-qt2/bitfield.h
+@@ -0,0 +1,33 @@
++#ifndef PACKAGEKIT_BITFIELD_H
++#define PACKAGEKIT_BITFIELD_H
++
++#include <QtGlobal>
++
++namespace PackageKit {
++
++class Bitfield
++{
++public:
++    Bitfield ();
++    Bitfield (qulonglong val);
++    ~Bitfield ();
++
++    qulonglong operator& (qulonglong mask) const;
++    qulonglong operator&= (qulonglong mask);
++    qulonglong operator| (qulonglong mask) const;
++    qulonglong operator|= (qulonglong mask);
++
++    Bitfield operator& (Bitfield mask) const;
++    Bitfield operator&= (Bitfield mask);
++    Bitfield operator| (Bitfield mask) const;
++    Bitfield operator|= (Bitfield mask);
++
++    Bitfield& operator= (const Bitfield& other);
++
++private:
++    qulonglong m_val;
++};
++
++} // End namespace PackageKit
++
++#endif
+diff --git a/lib/packagekit-qt2/daemon.cpp b/lib/packagekit-qt2/daemon.cpp
+index 7b0cee1..8984946 100644
+--- a/lib/packagekit-qt2/daemon.cpp
++++ b/lib/packagekit-qt2/daemon.cpp
+@@ -78,11 +78,7 @@ Daemon::~Daemon()
+ 
+ Transaction::Roles Daemon::actions()
+ {
+-    qulonglong roles = global()->d_ptr->daemon->roles();
+-
+-    Transaction::Roles flags;
+-    flags |= static_cast<Transaction::Role>(roles);
+-    return flags;
++    return global()->d_ptr->daemon->roles();
+ }
+ 
+ QString Daemon::backendName()
+@@ -144,14 +140,7 @@ QDBusObjectPath Daemon::getTid()
+ 
+ uint Daemon::getTimeSinceAction(Transaction::Role role)
+ {
+-    // We need to find the Role enum position
+-    // since this method does not support bitwised enum.
+-    for (uint i = 0; i < 64; ++i) {
+-        if (role == (1 << i)) {
+-            return global()->d_ptr->daemon->GetTimeSinceAction(i);
+-        }
+-    }
+-    return UINT_MAX;
++    return global()->d_ptr->daemon->GetTimeSinceAction(role);
+ }
+ 
+ QList<QDBusObjectPath> Daemon::getTransactionList()
+diff --git a/lib/packagekit-qt2/daemon.h b/lib/packagekit-qt2/daemon.h
+index 8ef525f..d8bb976 100644
+--- a/lib/packagekit-qt2/daemon.h
++++ b/lib/packagekit-qt2/daemon.h
+@@ -23,6 +23,7 @@
+ #define PACKAGEKIT_DAEMON_H
+ 
+ #include <QtCore/QObject>
++#include <QtCore/QMetaEnum>
+ 
+ #include "package.h"
+ #include "transaction.h"
+@@ -242,6 +243,82 @@ public:
+      * The micro version number.
+      */
+     static uint versionMicro();
++    
++    /**
++     * Returns the string representing the enum
++     * Useful for PackageDetails::Group
++     */
++    template<class T> static QString enumToString(int value, const char *enumName)
++    {
++        QString prefix = enumName;
++        int id = T::staticMetaObject.indexOfEnumerator(enumName);
++        QMetaEnum e = T::staticMetaObject.enumerator(id);
++        if (!e.isValid ()) {
++//             qDebug() << "Invalid enum " << prefix;
++            return QString();
++        }
++        QString enumString = e.valueToKey(value);
++        if (enumString.isNull()) {
++//             qDebug() << "Enum key not found while searching for value" << QString::number(value) << "in enum" << prefix;
++            return QString();
++        }
++
++        // Remove the prefix
++        if(!prefix.isNull() && enumString.indexOf(prefix) == 0) {
++            enumString.remove(0, prefix.length());
++        }
++
++        QString pkName;
++        for(int i = 0 ; i < enumString.length() - 1 ; ++i) {
++            pkName += enumString[i];
++            if(enumString[i+1].isUpper())
++                pkName += QChar('-');
++        }
++        pkName += enumString[enumString.length() - 1];
++
++        return pkName.toLower();
++    }
++    
++    template<class T> static int enumFromString(const QString &str, const char *enumName)
++    {
++        QString prefix = enumName;
++        QString realName;
++        bool lastWasDash = false;
++        QChar buf;
++
++        for(int i = 0 ; i < str.length() ; ++i) {
++            buf = str[i].toLower();
++            if(i == 0 || lastWasDash) {
++                buf = buf.toUpper();
++            }
++
++            lastWasDash = false;
++            if(buf == QLatin1Char('-')) {
++                lastWasDash = true;
++            } else if(buf == QLatin1Char('~')) {
++                lastWasDash = true;
++                realName += "Not";
++            } else {
++                realName += buf;
++            }
++        };
++
++        if (!prefix.isNull()) {
++            realName = prefix + realName;
++        }
++
++        int id = T::staticMetaObject.indexOfEnumerator(enumName);
++        QMetaEnum e = T::staticMetaObject.enumerator(id);
++        int enumValue = e.keyToValue(realName.toAscii().data());
++
++        if (enumValue == -1) {
++            enumValue = e.keyToValue(prefix.append("Unknown").toAscii().data());
++            if (!QString(enumName).isEmpty()) {
++//                 qDebug() << "enumFromString (" << enumName << ") : converted" << str << "to" << QString("Unknown").append(enumName) << ", enum id" << id;
++            }
++        }
++        return enumValue;
++    }
+ 
+ Q_SIGNALS:
+     /**
+diff --git a/lib/packagekit-qt2/package.cpp b/lib/packagekit-qt2/package.cpp
+index 2e1a91a..384c32e 100644
+--- a/lib/packagekit-qt2/package.cpp
++++ b/lib/packagekit-qt2/package.cpp
+@@ -28,9 +28,9 @@
+ using namespace PackageKit;
+ 
+ Package::Package(const QString &packageId, Info info, const QString &summary) :
+-    QString(packageId),
+     d(new PackagePrivate)
+ {
++    d->id = packageId;
+     d->info = info;
+     d->summary = summary;
+ }
+@@ -42,11 +42,8 @@ Package::Package() :
+ }
+ 
+ Package::Package(const Package &other) :
+-    d(new PackagePrivate)
++    d(other.d)
+ {
+-    d->info = InfoUnknown;
+-
+-    *this = other;
+ }
+ 
+ Package::~Package()
+@@ -55,40 +52,40 @@ Package::~Package()
+ 
+ bool Package::isValid() const
+ {
+-    int sepCount = count(QLatin1Char(';'));
++    int sepCount = d->id.count(QLatin1Char(';'));
+     if (sepCount == 3) {
+         // A valid pk-id "name;version;arch;data"
+         return true;
+     } else if (sepCount == 0) {
+         // its also valid just "name"
+-        return !isEmpty();
++        return !d->id.isEmpty();
+     }
+     return false;
+ }
+ 
+ QString Package::id() const
+ {
+-    return *this;
++    return d->id;
+ }
+ 
+ QString Package::name() const
+ {
+-    return section(QLatin1Char(';'), 0, 0);
++    return d->id.section(QLatin1Char(';'), 0, 0);
+ }
+ 
+ QString Package::version() const
+ {
+-    return section(QLatin1Char(';'), 1, 1);
++    return d->id.section(QLatin1Char(';'), 1, 1);
+ }
+ 
+ QString Package::arch() const
+ {
+-    return section(QLatin1Char(';'), 2, 2);
++    return d->id.section(QLatin1Char(';'), 2, 2);
+ }
+ 
+ QString Package::data() const
+ {
+-    return section(QLatin1Char(';'), 3, 3);
++    return d->id.section(QLatin1Char(';'), 3, 3);
+ }
+ 
+ QString Package::summary() const
+@@ -144,6 +141,6 @@ bool Package::operator==(const Package &package) const
+ Package& Package::operator=(const Package &package)
+ {
+     d = package.d;
+-    QString::operator=(package);
+ }
+ 
++#include "package.moc"
+diff --git a/lib/packagekit-qt2/package.h b/lib/packagekit-qt2/package.h
+index 57fb153..81eca8d 100644
+--- a/lib/packagekit-qt2/package.h
++++ b/lib/packagekit-qt2/package.h
+@@ -37,6 +37,7 @@ public:
+         info(other.info),
+         summary(other.summary) { }
+     ~PackagePrivate() { }
++    QString id;
+     uint info;
+     QString summary;
+ };
+@@ -51,8 +52,9 @@ public:
+  *
+  * \note All Package objects should be deleted by the user.
+  */
+-class Package : public QString
++class Package
+ {
++    Q_GADGET
+ public:
+     /**
+      * Describes the state of a package
+diff --git a/lib/packagekit-qt2/packagedetails.cpp b/lib/packagekit-qt2/packagedetails.cpp
+index 3be7de1..c273e5d 100644
+--- a/lib/packagekit-qt2/packagedetails.cpp
++++ b/lib/packagekit-qt2/packagedetails.cpp
+@@ -22,12 +22,6 @@
+ 
+ #include <QtCore/QDebug>
+ 
+-namespace PackageKit {
+-
+-
+-
+-}
+-
+ using namespace PackageKit;
+ 
+ PackageDetails::PackageDetails(const QString &package_id, const QString &license, uint group, const QString &detail, const QString &url, qulonglong size) :
+@@ -82,3 +76,5 @@ qulonglong PackageDetails::size() const
+ {
+     return d->size;
+ }
++
++#include "packagedetails.moc"
+diff --git a/lib/packagekit-qt2/packagedetails.h b/lib/packagekit-qt2/packagedetails.h
+index c4751db..f188e18 100644
+--- a/lib/packagekit-qt2/packagedetails.h
++++ b/lib/packagekit-qt2/packagedetails.h
+@@ -22,6 +22,7 @@
+ #define PACKAGEKIT_PACKAGE_DETAILS_H
+ 
+ #include "package.h"
++#include "bitfield.h"
+ 
+ #include <QtCore/QDateTime>
+ 
+@@ -57,48 +58,50 @@ namespace PackageKit {
+  */
+ class PackageDetails : public Package
+ {
++    Q_GADGET
++    Q_ENUMS(Group)
+ public:
+     /**
+      * Describes the different package groups
+      */
+-    enum Group {
+-        GroupUnknown         = 1ULL << 0,
+-        GroupAccessibility   = 1ULL << 1,
+-        GroupAccessories     = 1ULL << 2,
+-        GroupAdminTools      = 1ULL << 3,
+-        GroupCommunication   = 1ULL << 4,
+-        GroupDesktopGnome    = 1ULL << 5,
+-        GroupDesktopKde      = 1ULL << 6,
+-        GroupDesktopOther    = 1ULL << 7,
+-        GroupDesktopXfce     = 1ULL << 8,
+-        GroupEducation       = 1ULL << 9,
+-        GroupFonts           = 1ULL << 10,
+-        GroupGames           = 1ULL << 11,
+-        GroupGraphics        = 1ULL << 12,
+-        GroupInternet        = 1ULL << 13,
+-        GroupLegacy          = 1ULL << 14,
+-        GroupLocalization    = 1ULL << 15,
+-        GroupMaps            = 1ULL << 16,
+-        GroupMultimedia      = 1ULL << 17,
+-        GroupNetwork         = 1ULL << 18,
+-        GroupOffice          = 1ULL << 19,
+-        GroupOther           = 1ULL << 20,
+-        GroupPowerManagement = 1ULL << 21,
+-        GroupProgramming     = 1ULL << 22,
+-        GroupPublishing      = 1ULL << 23,
+-        GroupRepos           = 1ULL << 24,
+-        GroupSecurity        = 1ULL << 25,
+-        GroupServers         = 1ULL << 26,
+-        GroupSystem          = 1ULL << 27,
+-        GroupVirtualization  = 1ULL << 28,
+-        GroupScience         = 1ULL << 29,
+-        GroupDocumentation   = 1ULL << 30,
+-        GroupElectronics     = 1ULL << 31,
+-        GroupCollections     = 1ULL << 32,
+-        GroupVendor          = 1ULL << 33,
+-        GroupNewest          = 1ULL << 34
+-    };
+-    typedef qulonglong Groups;
++    typedef enum {
++        GroupUnknown,
++        GroupAccessibility,
++        GroupAccessories,
++        GroupAdminTools,
++        GroupCommunication,
++        GroupDesktopGnome,
++        GroupDesktopKde,
++        GroupDesktopOther,
++        GroupDesktopXfce,
++        GroupEducation,
++        GroupFonts,
++        GroupGames,
++        GroupGraphics,
++        GroupInternet,
++        GroupLegacy,
++        GroupLocalization,
++        GroupMaps,
++        GroupMultimedia,
++        GroupNetwork,
++        GroupOffice,
++        GroupOther,
++        GroupPowerManagement,
++        GroupProgramming,
++        GroupPublishing,
++        GroupRepos,
++        GroupSecurity,
++        GroupServers,
++        GroupSystem,
++        GroupVirtualization,
++        GroupScience,
++        GroupDocumentation,
++        GroupElectronics,
++        GroupCollections,
++        GroupVendor,
++        GroupNewest
++    } Group;
++    typedef Bitfield Groups;
+ 
+     /**
+      * Constructs package
+diff --git a/lib/packagekit-qt2/transaction.cpp b/lib/packagekit-qt2/transaction.cpp
+index f605b1b..ee7c59b 100644
+--- a/lib/packagekit-qt2/transaction.cpp
++++ b/lib/packagekit-qt2/transaction.cpp
+@@ -59,7 +59,6 @@ void Transaction::init(const QDBusObjectPath &tid)
+ {
+     Q_D(Transaction);
+ 
+-    d->tid = tid;
+     d->oldtrans = false;
+     d->p = 0;
+ 
+@@ -67,7 +66,8 @@ void Transaction::init(const QDBusObjectPath &tid)
+     // he want us to get it
+     if (tid.path().isNull()) {
+         d->tid = Daemon::global()->getTid();
+-        qDebug() << "packagekit-qt:" << d->tid.path();
++    } else {
++        d->tid = tid;
+     }
+ 
+     int retry = 0;
+@@ -78,7 +78,7 @@ void Transaction::init(const QDBusObjectPath &tid)
+                                     QDBusConnection::systemBus(),
+                                     this);
+         if (!d->p->isValid()) {
+-            qDebug() << "Error, cannot create transaction proxy" << d->p->lastError();
++            qWarning() << "Error, cannot create transaction proxy" << d->p->lastError();
+             QDBusMessage message;
+             message = QDBusMessage::createMethodCall(QLatin1String("org.freedesktop.DBus"),
+                                                      QLatin1String("/"),
+@@ -278,16 +278,14 @@ Transaction::Role Transaction::role() const
+ {
+     Q_D(const Transaction);
+     if(d->oldtrans) {
+-        uint role = 1 << d->role;
+-        return static_cast<Transaction::Role>(role);
++        return d->role;
+     }
+ 
+     if (d->destroyed) {
+         return Transaction::RoleUnknown;
+     }
+ 
+-    uint role = 1 << d->p->role();
+-    return static_cast<Transaction::Role>(role);
++    return static_cast<Transaction::Role>(d->p->role());
+ }
+ 
+ void Transaction::setHints(const QStringList &hints)
+@@ -543,6 +541,12 @@ void Transaction::searchGroup(const QString &group, Transaction::Filters filters
+     searchGroups(QStringList() << group, filters);
+ }
+ 
++void Transaction::searchGroup(PackageDetails::Group group, Filters filters)
++{
++    QString groupString = Daemon::enumToString<PackageDetails>(group, "Group");
++    searchGroup(groupString, filters);
++}
++
+ void Transaction::searchGroups(PackageDetails::Groups groups, Transaction::Filters filters)
+ {
+     searchGroups(groups, filters);
+diff --git a/lib/packagekit-qt2/transaction.h b/lib/packagekit-qt2/transaction.h
+index 9e3416d..c599957 100644
+--- a/lib/packagekit-qt2/transaction.h
++++ b/lib/packagekit-qt2/transaction.h
+@@ -88,40 +88,40 @@ public:
+     /**
+      * Describes the role of the transaction
+      */
+-    enum Role {
+-        RoleUnknown            = 1 << 0,
+-        RoleCancel             = 1 << 1,
+-        RoleGetDepends         = 1 << 2,
+-        RoleGetDetails         = 1 << 3,
+-        RoleGetFiles           = 1 << 4,
+-        RoleGetPackages        = 1 << 5,
+-        RoleGetRepoList        = 1 << 6,
+-        RoleGetRequires        = 1 << 7,
+-        RoleGetUpdateDetail    = 1 << 8,
+-        RoleGetUpdates         = 1 << 9,
+-        RoleInstallFiles       = 1 << 10,
+-        RoleInstallPackages    = 1 << 11,
+-        RoleInstallSignature   = 1 << 12,
+-        RoleRefreshCache       = 1 << 13,
+-        RoleRemovePackages     = 1 << 14,
+-        RoleRepoEnable         = 1 << 15,
+-        RoleRepoSetData        = 1 << 16,
+-        RoleResolve            = 1 << 17,
+-        RoleSearchDetails      = 1 << 18,
+-        RoleSearchFile         = 1 << 19,
+-        RoleSearchGroup        = 1 << 20,
+-        RoleSearchName         = 1 << 21,
+-        RoleUpdatePackages     = 1 << 22,
+-        RoleWhatProvides       = 1 << 23,
+-        RoleAcceptEula         = 1 << 24,
+-        RoleDownloadPackages   = 1 << 25,
+-        RoleGetDistroUpgrades  = 1 << 26,
+-        RoleGetCategories      = 1 << 27,
+-        RoleGetOldTransactions = 1 << 28,
+-        RoleUpgradeSystem      = 1 << 29, // Since 0.6.11
+-        RoleRepairSystem       = 1 << 30 // Since 0.7.2
+-    };
+-    Q_DECLARE_FLAGS(Roles, Role)
++    typedef enum {
++        RoleUnknown,
++        RoleCancel,
++        RoleGetDepends,
++        RoleGetDetails,
++        RoleGetFiles,
++        RoleGetPackages,
++        RoleGetRepoList,
++        RoleGetRequires,
++        RoleGetUpdateDetail,
++        RoleGetUpdates,
++        RoleInstallFiles,
++        RoleInstallPackages,
++        RoleInstallSignature,
++        RoleRefreshCache,
++        RoleRemovePackages,
++        RoleRepoEnable,
++        RoleRepoSetData,
++        RoleResolve,
++        RoleSearchDetails,
++        RoleSearchFile,
++        RoleSearchGroup,
++        RoleSearchName,
++        RoleUpdatePackages,
++        RoleWhatProvides,
++        RoleAcceptEula,
++        RoleDownloadPackages,
++        RoleGetDistroUpgrades,
++        RoleGetCategories,
++        RoleGetOldTransactions,
++        RoleUpgradeSystem, // Since 0.6.11
++        RoleRepairSystem   // Since 0.7.2
++    } Role;
++    typedef Bitfield Roles;
+ 
+     /**
+      * Describes the different types of error
+@@ -844,6 +844,12 @@ public:
+      * \sa searchGroups(const QStringList &groups, Filters filters = FilterNone)
+      */
+     void searchGroup(const QString &group, Filters filters = FilterNone);
++    
++    /**
++     * Convenience function to search by group enum
++     * \sa searchGroups(const QStringList &groups, Filters filters = FilterNone)
++     */
++    void searchGroup(PackageDetails::Group group, Filters filters = FilterNone);
+ 
+     /**
+      * \brief Lists all the packages in the given \p group
+diff --git a/lib/packagekit-qt2/transactionprivate.cpp b/lib/packagekit-qt2/transactionprivate.cpp
+index 94b2832..564bd58 100644
+--- a/lib/packagekit-qt2/transactionprivate.cpp
++++ b/lib/packagekit-qt2/transactionprivate.cpp
+@@ -202,7 +202,7 @@ QStringList TransactionPrivate::packageListToPids(const PackageList &packages) c
+ {
+     QStringList pids;
+     foreach (const Package &package, packages) {
+-        pids << package;
++        pids << package.id();
+     }
+     return pids;
+ }
+-- 
+1.7.12.1
+
diff --git a/PackageKit.spec b/PackageKit.spec
index b696845..a262101 100644
--- a/PackageKit.spec
+++ b/PackageKit.spec
@@ -3,7 +3,7 @@
 Summary:   Package management service
 Name:      PackageKit
 Version:   0.8.4
-Release:   1%{?dist}
+Release:   2%{?dist}
 License:   GPLv2+ and LGPLv2+
 URL:       http://www.packagekit.org
 Source0:   http://www.packagekit.org/releases/%{name}-%{version}.tar.xz
@@ -17,6 +17,10 @@ Patch1:    PackageKit-0.4.4-Fedora-turn-off-time.conf.patch
 # Upstreamable?  allow use of xulrunner2 for browser-plugin support
 Patch4: PackageKit-0.7.4-xulrunner2.patch
 
+# upstream patches
+Patch103: 0003-Change-the-priority-state-changed-timeout-to-2-secon.patch
+Patch104: 0004-packagekit-qt-Break-ABI-to-make-pk-qt-more-closer-to.patch
+
 Requires: %{name}-glib%{?_isa} = %{version}-%{release}
 Requires: PackageKit-backend
 Requires: shared-mime-info
@@ -77,7 +81,7 @@ cross-architecture API.
 %package yum
 Summary: PackageKit YUM backend
 Group: System Environment/Libraries
-Requires: yum >= 3.2.19
+Requires: yum >= 3.4.3-35
 # python(gio)
 Requires: pygobject2
 Requires: %{name}%{?_isa} = %{version}-%{release}
@@ -254,6 +258,8 @@ user to restart the computer or remove and re-insert the device.
 %patch0 -p1 -b .fedora
 %patch1 -p1 -b .no-time
 %patch4 -p1 -b .xulrunner2
+%patch103 -p1 -b .0003
+%patch104 -p1 -b .0004
 NOCONFIGURE=1 ./autogen.sh
 
 %build
@@ -463,6 +469,12 @@ update-mime-database %{_datadir}/mime &> /dev/null || :
 %{_libdir}/pkgconfig/packagekit-plugin.pc
 
 %changelog
+* Tue Oct 02 2012 Rex Dieter <rdieter at fedoraproject.org> 
+- 0.8.4-2
+- -yum: Requires: yum >= 3.4.3-35
+- PackageKit.conf: StateChangedTimeoutPriority=2 
+- backport -qt api/abi change
+
 * Mon Oct 01 2012 Richard Hughes  <rhughes at redhat.com> - 0.8.4-1
 - New upstream release
 - Suggest a Linux binary if the Solaris name is used


More information about the scm-commits mailing list