public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/gnome:master commit in: app-admin/packagekit-base/, app-admin/packagekit-base/files/
@ 2015-11-27 13:57 Gilles Dartiguelongue
  0 siblings, 0 replies; only message in thread
From: Gilles Dartiguelongue @ 2015-11-27 13:57 UTC (permalink / raw
  To: gentoo-commits

commit:     903740134df3108d505ff0251afa8179931fdd60
Author:     Gilles Dartiguelongue <eva <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 27 13:51:34 2015 +0000
Commit:     Gilles Dartiguelongue <eva <AT> gentoo <DOT> org>
CommitDate: Fri Nov 27 13:56:39 2015 +0000
URL:        https://gitweb.gentoo.org/proj/gnome.git/commit/?id=90374013

app-admin/packagekit-base: version bump to 1.0.10

 .../0001-Fix-typo-python-backend-detection.patch   |  25 -
 ...-exception-handling-to-be-python2.7-compa.patch |  44 ++
 .../0002-Sort-imports-according-to-PEP8.patch      |  72 --
 ...2-portage-do-not-redefine-builtin-license.patch |  34 +
 .../files/0003-Update-layman-API-usage-to-2.patch  | 104 ---
 .../files/0003-portage-drop-unused-imports.patch   |  25 +
 .../files/0004-Use-python-idioms.patch             | 191 -----
 ...0004-portage-initialize-licenses-variable.patch |  26 +
 .../0005-Enhance-get_repo_list-function.patch      |  56 --
 ...-fix-a-typo-in-restoring-license-settings.patch |  30 +
 ...-_get_cpv_slotted-with-collections-module.patch |  41 --
 ...-PackageKitProgress-to-ease-progress-step.patch | 260 +++++++
 .../files/0007-Simplify-_get_metadata.patch        |  42 --
 ...ython-make-PackagekitProgress-an-Iterable.patch |  56 ++
 .../files/0008-Remove-useless-instruction.patch    |  24 -
 ...steps-on-PackagekitProgress-instanciation.patch |  49 ++
 .../packagekit-base/files/0009-Cosmetics.patch     | 800 ---------------------
 ...age-use-PackagekitProgress-as-an-iterable.patch | 222 ++++++
 ...010-Add-helper-to-change-portage-settings.patch |  73 --
 ...1-Remove-compatibility-with-older-portage.patch |  77 --
 .../files/0011-portage-fix-a-typo.patch            |  25 +
 ...PI-and-KEYWORDS-before-calling-setcpv-met.patch |  36 -
 ...2-portage-fix-step-percentage-computation.patch |  25 +
 ...not-refetch-package-listing-for-no-reason.patch |  32 +
 ...-1.0.6.ebuild => packagekit-base-1.0.10.ebuild} |  23 +-
 25 files changed, 843 insertions(+), 1549 deletions(-)

diff --git a/app-admin/packagekit-base/files/0001-Fix-typo-python-backend-detection.patch b/app-admin/packagekit-base/files/0001-Fix-typo-python-backend-detection.patch
deleted file mode 100644
index 5786d87..0000000
--- a/app-admin/packagekit-base/files/0001-Fix-typo-python-backend-detection.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From ff0e2a1fe4f32def11b74e9eb7ffa7989e3061d8 Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Sun, 3 May 2015 18:37:24 +0200
-Subject: [PATCH 01/12] Fix typo python backend detection
-
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 655507f..844c454 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -454,7 +454,7 @@ if test x$enable_hif = xyes; then
- fi
- 
- have_python_backend="no"
--if test x$enable_entropy = xyes -o x$enable_pisi = xyes -o $enable_portage = xyes; then
-+if test x$enable_entropy = xyes -o x$enable_pisi = xyes -o x$enable_portage = xyes; then
- 	have_python_backend="yes"
- fi
- AM_CONDITIONAL(HAVE_PYTHON_BACKEND, test x$have_python_backend = xyes)
--- 
-2.3.6
-

diff --git a/app-admin/packagekit-base/files/0001-portage-fix-exception-handling-to-be-python2.7-compa.patch b/app-admin/packagekit-base/files/0001-portage-fix-exception-handling-to-be-python2.7-compa.patch
new file mode 100644
index 0000000..b834f2b
--- /dev/null
+++ b/app-admin/packagekit-base/files/0001-portage-fix-exception-handling-to-be-python2.7-compa.patch
@@ -0,0 +1,44 @@
+From 56a54a7bbf3b28546619a4d2b458ea50c3f5c3e9 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 6 Sep 2015 13:32:23 +0200
+Subject: [PATCH 1/9] portage: fix exception handling to be python2.7+
+ compatible
+
+---
+ backends/portage/portageBackend.py | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
+index dc72bd9..d4726b6 100755
+--- a/backends/portage/portageBackend.py
++++ b/backends/portage/portageBackend.py
+@@ -1542,9 +1542,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+         if not enable and self._is_repo_enabled(installed_layman_db, repoid):
+             try:
+                 installed_layman_db.delete(installed_layman_db.select(repoid))
+-            except Exception, e:
++            except Exception as exc:
+                 self.error(ERROR_INTERNAL_ERROR,
+-                           "Failed to disable repository " + repoid + " : " + str(e))
++                           "Failed to disable repository %s: %s" %
++                           (repoid, str(exc)))
+                 return
+ 
+         # enabling (adding) a db
+@@ -1555,10 +1556,11 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+                 self._block_output()
+                 installed_layman_db.add(available_layman_db.select(repoid))
+                 self._unblock_output()
+-            except Exception, e:
++            except Exception as exc:
+                 self._unblock_output()
+                 self.error(ERROR_INTERNAL_ERROR,
+-                           "Failed to enable repository " + repoid + " : " + str(e))
++                           "Failed to enable repository %s: %s" %
++                           (repoid, str(exc)))
+                 return
+ 
+     def resolve(self, filters, pkgs):
+-- 
+2.6.3
+

diff --git a/app-admin/packagekit-base/files/0002-Sort-imports-according-to-PEP8.patch b/app-admin/packagekit-base/files/0002-Sort-imports-according-to-PEP8.patch
deleted file mode 100644
index abb8720..0000000
--- a/app-admin/packagekit-base/files/0002-Sort-imports-according-to-PEP8.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 6d62155472c3ae1f85a756518e9014425354511d Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Sun, 3 May 2015 12:08:43 +0200
-Subject: [PATCH 02/12] Sort imports according to PEP8
-
----
- backends/portage/portageBackend.py | 39 ++++++++++++++++++--------------------
- 1 file changed, 18 insertions(+), 21 deletions(-)
-
-diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
-index 82bf6cd..f403986 100755
---- a/backends/portage/portageBackend.py
-+++ b/backends/portage/portageBackend.py
-@@ -22,37 +22,34 @@
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- 
- import os
-+import re
-+import signal
-+import sys
- import traceback
-+from itertools import izip
- 
--
-+# layman imports
-+import layman.config
-+import layman.db
- # packagekit imports
-+from packagekit.backend import (
-+    PackageKitBaseBackend,
-+    get_package_id,
-+    split_package_id,
-+)
- from packagekit.enums import *
--
--from packagekit.backend import PackageKitBaseBackend, \
--    get_package_id, split_package_id
--from packagekit.progress import *
- from packagekit.package import PackagekitPackage
--
-+from packagekit.progress import *
- # portage imports
--import portage
--import portage.versions
--import portage.dep
-+import _emerge.AtomArg
- import _emerge.actions
--import _emerge.stdout_spinner
- import _emerge.create_depgraph_params
--import _emerge.AtomArg
-+import _emerge.stdout_spinner
-+import portage
-+import portage.dep
-+import portage.versions
- from portage.exception import InvalidAtom
- 
--# layman imports
--import layman.db
--import layman.config
--
--# misc imports
--import sys
--import signal
--import re
--from itertools import izip
--
- # NOTES:
- #
- # Package IDs description:
--- 
-2.3.6
-

diff --git a/app-admin/packagekit-base/files/0002-portage-do-not-redefine-builtin-license.patch b/app-admin/packagekit-base/files/0002-portage-do-not-redefine-builtin-license.patch
new file mode 100644
index 0000000..8ef1e9a
--- /dev/null
+++ b/app-admin/packagekit-base/files/0002-portage-do-not-redefine-builtin-license.patch
@@ -0,0 +1,34 @@
+From 232519b102571933f034cee72979ecf834af4b46 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 6 Sep 2015 14:14:03 +0200
+Subject: [PATCH 2/9] portage: do not redefine builtin license
+
+---
+ backends/portage/portageBackend.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
+index d4726b6..f40ca92 100755
+--- a/backends/portage/portageBackend.py
++++ b/backends/portage/portageBackend.py
+@@ -334,14 +334,14 @@ class PackageKitPortageMixin(object):
+     def _get_real_license_str(self, cpv, metadata):
+         # use conditionals info (w/ USE) in LICENSE and remove ||
+         ebuild_settings = self._get_ebuild_settings(cpv, metadata)
+-        license = set(portage.flatten(
++        license_ = set(portage.flatten(
+             portage.dep.use_reduce(
+                 portage.dep.paren_reduce(metadata["LICENSE"]),
+                 uselist=ebuild_settings.get("USE", "").split()
+             )
+         ))
+-        license.discard('||')
+-        return ' '.join(license)
++        license_.discard('||')
++        return ' '.join(license_)
+ 
+     def _signal_config_update(self):
+         result = list(portage.util.find_updated_config_files(
+-- 
+2.6.3
+

diff --git a/app-admin/packagekit-base/files/0003-Update-layman-API-usage-to-2.patch b/app-admin/packagekit-base/files/0003-Update-layman-API-usage-to-2.patch
deleted file mode 100644
index afd94a2..0000000
--- a/app-admin/packagekit-base/files/0003-Update-layman-API-usage-to-2.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From b41a8c225d5fc593a10f54e10eba829c58d410d6 Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Sun, 3 May 2015 12:48:13 +0200
-Subject: [PATCH 03/12] Update layman API usage to >=2
-
----
- backends/portage/portageBackend.py | 44 ++++++++++++++------------------------
- 1 file changed, 16 insertions(+), 28 deletions(-)
-
-diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
-index f403986..7ad23ec 100755
---- a/backends/portage/portageBackend.py
-+++ b/backends/portage/portageBackend.py
-@@ -28,9 +28,10 @@ import sys
- import traceback
- from itertools import izip
- 
--# layman imports
-+# layman imports (>=2)
- import layman.config
- import layman.db
-+import layman.remotedb
- # packagekit imports
- from packagekit.backend import (
-     PackageKitBaseBackend,
-@@ -1050,17 +1051,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         self.allow_cancel(True)
-         self.percentage(None)
- 
--        # get installed and available dbs
--        if hasattr(layman.config, "Config"):
--            installed_layman_db = layman.db.DB(layman.config.Config())
--        else:
--            installed_layman_db = layman.db.DB(layman.config.BareConfig())
--
--        if hasattr(layman.config, "Config"):
--            available_layman_db = layman.db.RemoteDB(layman.config.Config())
--        else:
--            available_layman_db = layman.db.RemoteDB(layman.config.BareConfig())
--
-+        conf = layman.config.BareConfig()
-+        conf.set_option('quiet', True)
-+        installed_layman_db = layman.db.DB(conf)
-+        available_layman_db = layman.remotedb.RemoteDB(conf)
- 
-         # 'gentoo' is a dummy repo
-         self.repo_detail('gentoo', 'Gentoo Portage tree', True)
-@@ -1386,15 +1380,9 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
- 
-         myopts = {'--quiet': True}
- 
--        # get installed and available dbs
--        if hasattr(layman.config, "Config"):
--            layman_opts = {"quiet": True}
--            installed_layman_db = layman.db.DB(layman.config.Config())
--        else:
--            layman_opts = {}
--            conf = layman.config.BareConfig()
--            conf.set_option("quiet", True)
--            installed_layman_db = layman.db.DB(conf)
-+        conf = layman.config.BareConfig()
-+        conf.set_option('quiet', True)
-+        installed_layman_db = layman.db.DB(conf)
- 
-         if force:
-             timestamp_path = os.path.join(
-@@ -1404,8 +1392,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
- 
-         try:
-             self._block_output()
--            for o in installed_layman_db.overlays.keys():
--                installed_layman_db.sync(o, **layman_opts)
-+            for overlay in installed_layman_db.overlays.keys():
-+                installed_layman_db.sync(overlay)
-             _emerge.actions.action_sync(self.pvar.settings, self.pvar.trees,
-                     self.pvar.mtimedb, myopts, "")
-         except:
-@@ -1541,9 +1529,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-                         "gentoo repository can't be disabled")
-             return
- 
--        # get installed and available dbs
--        installed_layman_db = layman.db.DB(layman.config.Config())
--        available_layman_db = layman.db.RemoteDB(layman.config.Config())
-+        conf = layman.config.BareConfig()
-+        conf.set_option('quiet', True)
-+        installed_layman_db = layman.db.DB(conf)
-+        available_layman_db = layman.remotedb.RemoteDB(conf)
- 
-         # check now for repoid so we don't have to do it after
-         if not repoid in available_layman_db.overlays.keys():
-@@ -1567,8 +1556,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-             try:
-                 # TODO: clean the trick to prevent outputs from layman
-                 self._block_output()
--                installed_layman_db.add(available_layman_db.select(repoid),
--                        quiet=True)
-+                installed_layman_db.add(available_layman_db.select(repoid))
-                 self._unblock_output()
-             except Exception, e:
-                 self._unblock_output()
--- 
-2.3.6
-

diff --git a/app-admin/packagekit-base/files/0003-portage-drop-unused-imports.patch b/app-admin/packagekit-base/files/0003-portage-drop-unused-imports.patch
new file mode 100644
index 0000000..2b99528
--- /dev/null
+++ b/app-admin/packagekit-base/files/0003-portage-drop-unused-imports.patch
@@ -0,0 +1,25 @@
+From 6b2592232d9ed2713df874d3bb770f68ef701841 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 6 Sep 2015 14:14:45 +0200
+Subject: [PATCH 3/9] portage: drop unused imports
+
+---
+ backends/portage/portageBackend.py | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
+index f40ca92..4301c14 100755
+--- a/backends/portage/portageBackend.py
++++ b/backends/portage/portageBackend.py
+@@ -40,8 +40,6 @@ from packagekit.backend import (
+     split_package_id,
+ )
+ from packagekit.enums import *
+-from packagekit.package import PackagekitPackage
+-from packagekit.progress import *
+ # portage imports
+ import _emerge.AtomArg
+ import _emerge.actions
+-- 
+2.6.3
+

diff --git a/app-admin/packagekit-base/files/0004-Use-python-idioms.patch b/app-admin/packagekit-base/files/0004-Use-python-idioms.patch
deleted file mode 100644
index dc9c982..0000000
--- a/app-admin/packagekit-base/files/0004-Use-python-idioms.patch
+++ /dev/null
@@ -1,191 +0,0 @@
-From e8520218790e939ee69891e1031ba7c9934959a1 Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Sun, 3 May 2015 12:49:15 +0200
-Subject: [PATCH 04/12] Use python idioms
-
----
- backends/portage/portageBackend.py | 80 ++++++++++++--------------------------
- 1 file changed, 25 insertions(+), 55 deletions(-)
-
-diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
-index 7ad23ec..f37542e 100755
---- a/backends/portage/portageBackend.py
-+++ b/backends/portage/portageBackend.py
-@@ -191,10 +191,10 @@ class PortageBridge():
-         self.settings.backup_changes("ACCEPT_PROPERTIES")
- 
-         # do not log with mod_echo (cleanly prevent some outputs)
--        def filter_echo(x): return x != 'echo'
--        elogs = self.settings["PORTAGE_ELOG_SYSTEM"].split()
--        elogs = filter(filter_echo, elogs)
--        self.settings["PORTAGE_ELOG_SYSTEM"] = ' '.join(elogs)
-+        self.settings["PORTAGE_ELOG_SYSTEM"] = ' '.join([
-+            elog for elog in self.settings["PORTAGE_ELOG_SYSTEM"].split()
-+            if elog != 'echo'
-+        ])
-         self.settings.backup_changes("PORTAGE_ELOG_SYSTEM")
- 
-         # finally, regenerate settings and lock them again
-@@ -237,9 +237,7 @@ class PackageKitPortageMixin(object):
-         return TRANSACTION_FLAG_ONLY_DOWNLOAD in transaction_flags
- 
-     def _is_repo_enabled(self, layman_db, repo_name):
--        if repo_name in layman_db.overlays.keys():
--            return True
--        return False
-+        return repo_name in layman_db.overlays.keys()
- 
-     def _get_search_list(self, keys_list):
-         '''
-@@ -334,18 +332,10 @@ class PackageKitPortageMixin(object):
-         return InternalPackageSet
- 
-     def _is_installed(self, cpv):
--        if self.pvar.vardb.cpv_exists(cpv):
--            return True
--        return False
-+        return self.pvar.vardb.cpv_exists(cpv)
- 
-     def _is_cpv_valid(self, cpv):
--        if self._is_installed(cpv):
--            # actually if is_installed return True that means cpv is in db
--            return True
--        elif self.pvar.portdb.cpv_exists(cpv):
--            return True
--
--        return False
-+        return any([self._is_installed(cpv), self.pvar.portdb.cpv_exists(cpv)])
- 
-     def _get_real_license_str(self, cpv, metadata):
-         # use conditionals info (w/ USE) in LICENSE and remove ||
-@@ -354,9 +344,7 @@ class PackageKitPortageMixin(object):
-             portage.dep.paren_reduce(metadata["LICENSE"]),
-             uselist=ebuild_settings.get("USE", "").split())))
-         license.discard('||')
--        license = ' '.join(license)
--
--        return license
-+        return ' '.join(license)
- 
-     def _signal_config_update(self):
-         result = list(portage.util.find_updated_config_files(
-@@ -472,10 +460,7 @@ class PackageKitPortageMixin(object):
-                 vartree=self.pvar.vardb)
- 
-         contents = db.getcontents()
--        if not contents:
--            return []
--
--        return db.getcontents().keys()
-+        return contents.keys() if contents else []
- 
-     def _cmp_cpv(self, cpv1, cpv2):
-         '''
-@@ -535,10 +520,7 @@ class PackageKitPortageMixin(object):
-         size = 0
-         if self._is_installed(cpv):
-             size = self._get_metadata(cpv, ["SIZE"])[0]
--            if size == '':
--                size = 0
--            else:
--                size = int(size)
-+            size = int(size) if size else 0
-         else:
-             self
-             metadata = self._get_metadata(cpv, ["IUSE", "SLOT"], in_dict=True)
-@@ -553,8 +535,7 @@ class PackageKitPortageMixin(object):
- 
-             fetch_file = self.pvar.portdb.getfetchsizes(package[2],
-                     package.use.enabled)
--            for f in fetch_file:
--                size += fetch_file[f]
-+            size = sum(fetch_file)
- 
-         return size
- 
-@@ -670,14 +651,12 @@ class PackageKitPortageMixin(object):
-         if FILTER_INSTALLED in filters:
-             cpv_list = self.pvar.vardb.match(cp)
-         elif FILTER_NOT_INSTALLED in filters:
--            for cpv in self.pvar.portdb.match(cp):
--                if not self._is_installed(cpv):
--                    cpv_list.append(cpv)
-+            cpv_list = [cpv for cpv in self.pvar.portdb.match(cp)
-+                        if not self._is_installed(cpv)]
-         else:
-             cpv_list = self.pvar.vardb.match(cp)
--            for cpv in self.pvar.portdb.match(cp):
--                if cpv not in cpv_list:
--                    cpv_list.append(cpv)
-+            cpv_list.extend(self.pvar.portdb.match(cp))
-+            cpv_list = set(cpv_list)
- 
-         # free filter
-         cpv_list = self._filter_free(cpv_list, filters)
-@@ -714,22 +693,18 @@ class PackageKitPortageMixin(object):
-         pkg_keywords, repo, slot = self._get_metadata(cpv,
-                 ["KEYWORDS", "repository", "SLOT"])
- 
--        pkg_keywords = pkg_keywords.split()
--        sys_keywords = self.pvar.settings["ACCEPT_KEYWORDS"].split()
--        keywords = []
--
--        for x in sys_keywords:
--            if x in pkg_keywords:
--                keywords.append(x)
-+        # filter accepted keywords
-+        keywords = list(set(pkg_keywords.split()).intersection(
-+            set(self.pvar.settings["ACCEPT_KEYWORDS"].split())
-+        ))
- 
-         # if no keywords, check in package.keywords
-         if not keywords:
-             key_dict = self.pvar.settings.pkeywordsdict.get(
-                     portage.dep.dep_getkey(cpv))
-             if key_dict:
--                for _, keys in key_dict.iteritems():
--                    for x in keys:
--                        keywords.append(x)
-+                for keys in key_dict.values():
-+                    keyword.extend(keys)
- 
-         if not keywords:
-             keywords.append("no keywords")
-@@ -942,9 +917,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
- 
-         # now we can change cpv_list to a real cpv list
-         tmp_list = cpv_list[:]
--        cpv_list = []
--        for x in tmp_list:
--            cpv_list.append(x[2])
-+        cpv_list = [x[2] for x in tmp_list]
-         del tmp_list
- 
-         # free filter
-@@ -1100,12 +1073,9 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
- 
-             cpv_input.append(cpv)
- 
--        packages_list = self._get_required_packages(cpv_input, recursive)
--
-         # now we can populate cpv_list
--        cpv_list = []
--        for p in packages_list:
--            cpv_list.append(p.cpv)
-+        packages_list = self._get_required_packages(cpv_input, recursive)
-+        cpv_list = [package.cpv for package in packages_list]
-         del packages_list
- 
-         # free filter
-@@ -1535,7 +1505,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         available_layman_db = layman.remotedb.RemoteDB(conf)
- 
-         # check now for repoid so we don't have to do it after
--        if not repoid in available_layman_db.overlays.keys():
-+        if repoid not in available_layman_db.overlays.keys():
-             self.error(ERROR_REPO_NOT_FOUND,
-                     "Repository %s was not found" % repoid)
-             return
--- 
-2.3.6
-

diff --git a/app-admin/packagekit-base/files/0004-portage-initialize-licenses-variable.patch b/app-admin/packagekit-base/files/0004-portage-initialize-licenses-variable.patch
new file mode 100644
index 0000000..5c31b26
--- /dev/null
+++ b/app-admin/packagekit-base/files/0004-portage-initialize-licenses-variable.patch
@@ -0,0 +1,26 @@
+From 438fd88070860f858d09758daf5ff379a4d788a5 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 6 Sep 2015 14:33:48 +0200
+Subject: [PATCH 4/9] portage: initialize licenses variable
+
+It should not be possible for licenses to be undefined but cleans up
+static analysis warnings.
+---
+ backends/portage/portageBackend.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
+index 4301c14..f36695a 100755
+--- a/backends/portage/portageBackend.py
++++ b/backends/portage/portageBackend.py
+@@ -554,6 +554,7 @@ class PackageKitPortageMixin(object):
+             return not self.pvar.settings._getMissingLicenses(cpv, metadata)
+ 
+         if FILTER_FREE in filters or FILTER_NOT_FREE in filters:
++            licenses = ""
+             free_licenses = "@FSF-APPROVED"
+             if FILTER_FREE in filters:
+                 licenses = "-* " + free_licenses
+-- 
+2.6.3
+

diff --git a/app-admin/packagekit-base/files/0005-Enhance-get_repo_list-function.patch b/app-admin/packagekit-base/files/0005-Enhance-get_repo_list-function.patch
deleted file mode 100644
index 4f093e2..0000000
--- a/app-admin/packagekit-base/files/0005-Enhance-get_repo_list-function.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 97afdc42a3cd50de94d824fab06b8c4a13a20c29 Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Sun, 3 May 2015 12:58:40 +0200
-Subject: [PATCH 05/12] Enhance get_repo_list function
-
-Adds a PEP257 docstring and use layman API to provide a description to
-repositories.
----
- backends/portage/portageBackend.py | 24 +++++++++++++++---------
- 1 file changed, 15 insertions(+), 9 deletions(-)
-
-diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
-index f37542e..ddeca0d 100755
---- a/backends/portage/portageBackend.py
-+++ b/backends/portage/portageBackend.py
-@@ -1016,10 +1016,14 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         self.percentage(100)
- 
-     def get_repo_list(self, filters):
--        # NOTES:
--        # use layman API
--        # returns only official and supported repositories
--        # and creates a dummy repo for portage tree
-+        """ Get list of repository.
-+
-+        Get the list of repository tagged as official and supported by current
-+        setup of layman.
-+
-+        Adds a dummy entry for gentoo-x86 official tree even though it appears
-+        in layman's listing nowadays.
-+        """
-         self.status(STATUS_INFO)
-         self.allow_cancel(True)
-         self.percentage(None)
-@@ -1033,11 +1037,13 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         self.repo_detail('gentoo', 'Gentoo Portage tree', True)
- 
-         if FILTER_NOT_DEVELOPMENT not in filters:
--            for o in available_layman_db.overlays.keys():
--                if available_layman_db.overlays[o].is_official() \
--                        and available_layman_db.overlays[o].is_supported():
--                    self.repo_detail(o, o,
--                            self._is_repo_enabled(installed_layman_db, o))
-+            for repo_name, overlay in available_layman_db.overlays.items():
-+                if overlay.is_official() and overlay.is_supported():
-+                    self.repo_detail(
-+                        repo_name,
-+                        overlay.name,
-+                        self._is_repo_enabled(installed_layman_db, repo_name)
-+                    )
- 
-     def required_by(self, filters, pkgs, recursive):
-         # TODO: manage non-installed package
--- 
-2.3.6
-

diff --git a/app-admin/packagekit-base/files/0005-portage-fix-a-typo-in-restoring-license-settings.patch b/app-admin/packagekit-base/files/0005-portage-fix-a-typo-in-restoring-license-settings.patch
new file mode 100644
index 0000000..885c90f
--- /dev/null
+++ b/app-admin/packagekit-base/files/0005-portage-fix-a-typo-in-restoring-license-settings.patch
@@ -0,0 +1,30 @@
+From d42390d7c78e622a8051d47f86a422a1861d7eef Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 6 Sep 2015 14:35:40 +0200
+Subject: [PATCH 5/9] portage: fix a typo in restoring license settings
+
+---
+ backends/portage/portageBackend.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
+index f36695a..9b572e9 100755
+--- a/backends/portage/portageBackend.py
++++ b/backends/portage/portageBackend.py
+@@ -560,11 +560,11 @@ class PackageKitPortageMixin(object):
+                 licenses = "-* " + free_licenses
+             elif FILTER_NOT_FREE in filters:
+                 licenses = "* -" + free_licenses
+-            backup_license = self.pvar.settings["ACCEPT_LICENSE"]
++            backup_licenses = self.pvar.settings["ACCEPT_LICENSE"]
+ 
+             self.pvar.apply_settings({'ACCEPT_LICENSE': licences})
+             cpv_list = filter(_has_validLicense, cpv_list)
+-            self.pvar.apply_settings({'ACCEPT_LICENSE': backup_licence})
++            self.pvar.apply_settings({'ACCEPT_LICENSE': backup_licenses})
+ 
+         return cpv_list
+ 
+-- 
+2.6.3
+

diff --git a/app-admin/packagekit-base/files/0006-Simplify-_get_cpv_slotted-with-collections-module.patch b/app-admin/packagekit-base/files/0006-Simplify-_get_cpv_slotted-with-collections-module.patch
deleted file mode 100644
index 6f47b1d..0000000
--- a/app-admin/packagekit-base/files/0006-Simplify-_get_cpv_slotted-with-collections-module.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From d581bea1699a8d9982e91a5de2b8dd315b6c2c54 Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Sun, 3 May 2015 13:05:27 +0200
-Subject: [PATCH 06/12] Simplify _get_cpv_slotted with collections module
-
----
- backends/portage/portageBackend.py | 8 +++-----
- 1 file changed, 3 insertions(+), 5 deletions(-)
-
-diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
-index ddeca0d..773256a 100755
---- a/backends/portage/portageBackend.py
-+++ b/backends/portage/portageBackend.py
-@@ -26,6 +26,7 @@ import re
- import signal
- import sys
- import traceback
-+from collections import defaultdict
- from itertools import izip
- 
- # layman imports (>=2)
-@@ -540,14 +541,11 @@ class PackageKitPortageMixin(object):
-         return size
- 
-     def _get_cpv_slotted(self, cpv_list):
--        cpv_dict = {}
-+        cpv_dict = defaultdict(list)
- 
-         for cpv in cpv_list:
-             slot = self._get_metadata(cpv, ["SLOT"])[0]
--            if slot not in cpv_dict:
--                cpv_dict[slot] = [cpv]
--            else:
--                cpv_dict[slot].append(cpv)
-+            cpv_dict[slot].append(cpv)
- 
-         return cpv_dict
- 
--- 
-2.3.6
-

diff --git a/app-admin/packagekit-base/files/0006-portage-use-PackageKitProgress-to-ease-progress-step.patch b/app-admin/packagekit-base/files/0006-portage-use-PackageKitProgress-to-ease-progress-step.patch
new file mode 100644
index 0000000..8d6a51c
--- /dev/null
+++ b/app-admin/packagekit-base/files/0006-portage-use-PackageKitProgress-to-ease-progress-step.patch
@@ -0,0 +1,260 @@
+From 3c002cb530493664f94405c408b27203c7355cad Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 6 Sep 2015 15:09:50 +0200
+Subject: [PATCH 6/9] portage: use PackageKitProgress to ease progress steps
+ manipulations
+
+---
+ backends/portage/portageBackend.py | 91 +++++++++++++++++++++-----------------
+ 1 file changed, 51 insertions(+), 40 deletions(-)
+
+diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
+index 9b572e9..5cb64f6 100755
+--- a/backends/portage/portageBackend.py
++++ b/backends/portage/portageBackend.py
+@@ -40,6 +40,7 @@ from packagekit.backend import (
+     split_package_id,
+ )
+ from packagekit.enums import *
++from packagekit.progress import PackagekitProgress
+ # portage imports
+ import _emerge.AtomArg
+ import _emerge.actions
+@@ -68,6 +69,11 @@ from portage.exception import InvalidAtom
+ # Map Gentoo categories to the PackageKit group name space
+ 
+ 
++def compute_equal_steps(iterable):
++    return [idx * (100.0 / len(iterable)) / 100.0
++            for idx, _ in enumerate(iterable, start=1)]
++
++
+ class PortagePackageGroups(dict):
+ 
+     """
+@@ -932,10 +938,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+     def get_details(self, pkgs):
+         self.status(STATUS_INFO)
+         self.allow_cancel(True)
+-        self.percentage(0)
+ 
+-        nb_pkg = float(len(pkgs))
+-        pkg_processed = 0.0
++        progress = PackagekitProgress()
++        progress.set_steps(compute_equal_steps(pkgs))
++        self.percentage(progress.percent)
+ 
+         for pkg in pkgs:
+             cpv = self._id_to_cpv(pkg)
+@@ -961,18 +967,18 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+                 self._get_size(cpv)
+             )
+ 
+-            pkg_processed += 100.0
+-            self.percentage(int(pkg_processed / nb_pkg))
++            progress.step()
++            self.percentage(progress.percent)
+ 
+         self.percentage(100)
+ 
+     def get_files(self, pkgs):
+         self.status(STATUS_INFO)
+         self.allow_cancel(True)
+-        self.percentage(0)
+ 
+-        nb_pkg = float(len(pkgs))
+-        pkg_processed = 0.0
++        progress = PackagekitProgress()
++        progress.set_steps(compute_equal_steps(pkgs))
++        self.percentage(progress.percent)
+ 
+         for pkg in pkgs:
+             cpv = self._id_to_cpv(pkg)
+@@ -990,19 +996,20 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+ 
+             self.files(pkg, ';'.join(sorted(self._get_file_list(cpv))))
+ 
+-            pkg_processed += 100.0
+-            self.percentage(int(pkg_processed / nb_pkg))
++            progress.step()
++            self.percentage(progress.percent)
+ 
+         self.percentage(100)
+ 
+     def get_packages(self, filters):
+         self.status(STATUS_QUERY)
+         self.allow_cancel(True)
+-        self.percentage(0)
+ 
+         cp_list = self._get_all_cp(filters)
+-        nb_cp = float(len(cp_list))
+-        cp_processed = 0.0
++
++        progress = PackagekitProgress()
++        progress.set_steps(compute_equal_steps(cp_list))
++        self.percentage(progress.percent)
+ 
+         for cp in self._get_all_cp(filters):
+             for cpv in self._get_all_cpv(cp, filters):
+@@ -1011,8 +1018,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+                 except InvalidAtom:
+                     continue
+ 
+-            cp_processed += 100.0
+-            self.percentage(int(cp_processed / nb_cp))
++            progress.step()
++            self.percentage(progress.percent)
+ 
+         self.percentage(100)
+ 
+@@ -1565,11 +1572,11 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+     def resolve(self, filters, pkgs):
+         self.status(STATUS_QUERY)
+         self.allow_cancel(True)
+-        self.percentage(0)
+ 
+         cp_list = self._get_all_cp(filters)
+-        nb_cp = float(len(cp_list))
+-        cp_processed = 0.0
++        progress = PackagekitProgress()
++        progress.set_steps(compute_equal_steps(cp_list))
++        self.percentage(progress.percent)
+ 
+         reg_expr = []
+         for pkg in pkgs:
+@@ -1584,8 +1591,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+                 for cpv in self._get_all_cpv(cp, filters):
+                     self._package(cpv)
+ 
+-            cp_processed += 100.0
+-            self.percentage(int(cp_processed / nb_cp))
++            progress.step()
++            self.percentage(progress.percent)
+ 
+         self.percentage(100)
+ 
+@@ -1593,13 +1600,14 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+         # NOTES: very bad performance
+         self.status(STATUS_QUERY)
+         self.allow_cancel(True)
+-        self.percentage(0)
+ 
+         cp_list = self._get_all_cp(filters)
+-        nb_cp = float(len(cp_list))
+-        cp_processed = 0.0
+         search_list = self._get_search_list(keys)
+ 
++        progress = PackagekitProgress()
++        progress.set_steps(compute_equal_steps(cp_list))
++        self.percentage(progress.percent)
++
+         for cp in cp_list:
+             # unfortunatelly, everything is related to cpv, not cp
+             # can't filter cp
+@@ -1635,8 +1643,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+             for cpv in cpv_list:
+                 self._package(cpv)
+ 
+-            cp_processed += 100.0
+-            self.percentage(int(cp_processed / nb_cp))
++            progress.step()
++            self.percentage(progress.percent)
+ 
+         self.percentage(100)
+ 
+@@ -1647,7 +1655,6 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+         # - newest: as only installed, by himself
+         self.status(STATUS_QUERY)
+         self.allow_cancel(True)
+-        self.percentage(0)
+ 
+         if FILTER_NOT_INSTALLED in filters:
+             self.error(ERROR_CANNOT_GET_FILELIST,
+@@ -1655,10 +1662,12 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+             return
+ 
+         cpv_list = self.pvar.vardb.cpv_all()
+-        nb_cpv = 0.0
+-        cpv_processed = 0.0
+         is_full_path = True
+ 
++        progress = PackagekitProgress()
++        progress.set_steps(compute_equal_steps(cpv_list))
++        self.percentage(progress.percent)
++
+         count = 0
+         values_len = len(values)
+         for key in values:
+@@ -1679,8 +1688,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+                         self._package(cpv)
+                         break
+ 
+-            count += 1
+-            self.percentage(float(count) / values_len)
++            progress.step()
++            self.percentage(progress.percent)
+ 
+         self.percentage(100)
+ 
+@@ -1688,11 +1697,12 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+         # TODO: filter unknown groups before searching ? (optimization)
+         self.status(STATUS_QUERY)
+         self.allow_cancel(True)
+-        self.percentage(0)
+ 
+         cp_list = self._get_all_cp(filters)
+-        nb_cp = float(len(cp_list))
+-        cp_processed = 0.0
++
++        progress = PackagekitProgress()
++        progress.set_steps(compute_equal_steps(cp_list))
++        self.percentage(progress.percent)
+ 
+         for cp in cp_list:
+             for group in groups:
+@@ -1700,8 +1710,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+                     for cpv in self._get_all_cpv(cp, filters):
+                         self._package(cpv)
+ 
+-            cp_processed += 100.0
+-            self.percentage(int(cp_processed / nb_cp))
++            progress.step()
++            self.percentage(progress.percent)
+ 
+         self.percentage(100)
+ 
+@@ -1711,7 +1721,6 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+         # keys contain more than one category name, no results can be found
+         self.status(STATUS_QUERY)
+         self.allow_cancel(True)
+-        self.percentage(0)
+ 
+         categories = []
+         for k in keys_list[:]:
+@@ -1736,8 +1745,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+             search_list.append(re.compile(k, re.IGNORECASE))
+ 
+         cp_list = self._get_all_cp(filters)
+-        nb_cp = float(len(cp_list))
+-        cp_processed = 0.0
++
++        progress = PackagekitProgress()
++        progress.set_steps(compute_equal_steps(cp_list))
++        self.percentage(progress.percent)
+ 
+         for cp in cp_list:
+             if category_filter:
+@@ -1757,8 +1768,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+                 for cpv in self._get_all_cpv(cp, filters):
+                     self._package(cpv)
+ 
+-            cp_processed += 100.0
+-            self.percentage(int(cp_processed / nb_cp))
++            progress.step()
++            self.percentage(progress.percent)
+ 
+         self.percentage(100)
+ 
+-- 
+2.6.3
+

diff --git a/app-admin/packagekit-base/files/0007-Simplify-_get_metadata.patch b/app-admin/packagekit-base/files/0007-Simplify-_get_metadata.patch
deleted file mode 100644
index ed158fe..0000000
--- a/app-admin/packagekit-base/files/0007-Simplify-_get_metadata.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From fa38519e8b0785199a1181e5cc7287190a29fc44 Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Sun, 3 May 2015 17:54:15 +0200
-Subject: [PATCH 07/12] Simplify _get_metadata
-
----
- backends/portage/portageBackend.py | 16 ++++++----------
- 1 file changed, 6 insertions(+), 10 deletions(-)
-
-diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
-index 773256a..fc2d45a 100755
---- a/backends/portage/portageBackend.py
-+++ b/backends/portage/portageBackend.py
-@@ -497,19 +497,15 @@ class PackageKitPortageMixin(object):
-         If in_dict is True, metadata is returned in a dict object.
-         If add_cache_keys is True, cached keys are added to keys in parameter.
-         '''
--        if self._is_installed(cpv):
--            aux_get = self.pvar.vardb.aux_get
--            if add_cache_keys:
--                keys.extend(list(self.pvar.vardb._aux_cache_keys))
--        else:
--            aux_get = self.pvar.portdb.aux_get
--            if add_cache_keys:
--                keys.extend(list(self.pvar.portdb._aux_cache_keys))
-+        db = self.pvar.vardb if self._is_installed(cpv) else self.pvar.portdb
-+
-+        if add_cache_keys:
-+            keys.extend(list(db._aux_cache_keys))
- 
-         if in_dict:
--            return dict(izip(keys, aux_get(cpv, keys)))
-+            return dict(izip(keys, db.aux_get(cpv, keys)))
-         else:
--            return aux_get(cpv, keys)
-+            return db.aux_get(cpv, keys)
- 
-     def _get_size(self, cpv):
-         '''
--- 
-2.3.6
-

diff --git a/app-admin/packagekit-base/files/0007-python-make-PackagekitProgress-an-Iterable.patch b/app-admin/packagekit-base/files/0007-python-make-PackagekitProgress-an-Iterable.patch
new file mode 100644
index 0000000..ca78c62
--- /dev/null
+++ b/app-admin/packagekit-base/files/0007-python-make-PackagekitProgress-an-Iterable.patch
@@ -0,0 +1,56 @@
+From eb52dc157c5dbda9630b448dab06fb05cdf1060c Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 6 Sep 2015 15:26:05 +0200
+Subject: [PATCH 7/9] python: make PackagekitProgress an Iterable
+
+---
+ lib/python/packagekit/progress.py | 17 ++++++++++++++++-
+ 1 file changed, 16 insertions(+), 1 deletion(-)
+
+diff --git a/lib/python/packagekit/progress.py b/lib/python/packagekit/progress.py
+index 7a5d363..d0c0c26 100644
+--- a/lib/python/packagekit/progress.py
++++ b/lib/python/packagekit/progress.py
+@@ -17,7 +17,13 @@
+ # Copyright (C) 2008
+ #    Richard Hughes <richard@hughsie.com>
+ 
+-class PackagekitProgress:
++try:
++    from collections import Iterable
++except ImportError:
++    from collections.abc import Iterable
++
++
++class PackagekitProgress(Iterable):
+     '''
+     Progress class there controls the total progress of a transaction
+     the transaction is divided in n milestones. the class contains
+@@ -42,6 +48,7 @@ class PackagekitProgress:
+     #TODO: Add support for elapsed/remaining time
+ 
+     def __init__(self):
++        super(PackagekitProgress, self).__init__()
+         self.percent = 0
+         self.steps = []
+         self.current_step = 0
+@@ -68,8 +75,16 @@ class PackagekitProgress:
+             self.current_step += 1
+             self.percent = self.steps[self.current_step]
+         else:
++            self.current_step = len(self.steps)
+             self.percent = 100
+ 
++    def __iter__(self):
++        while self.current_step < len(self.steps):
++            yield self.percent
++            self.step()
++
++        raise StopIteration
++
+     def _update_percent(self):
+         '''
+         Increment percentage based on current step
+-- 
+2.6.3
+

diff --git a/app-admin/packagekit-base/files/0008-Remove-useless-instruction.patch b/app-admin/packagekit-base/files/0008-Remove-useless-instruction.patch
deleted file mode 100644
index e568727..0000000
--- a/app-admin/packagekit-base/files/0008-Remove-useless-instruction.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 775b16156373b08a7bdd50c446d740051db93a8d Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Sun, 3 May 2015 14:27:08 +0200
-Subject: [PATCH 08/12] Remove useless instruction
-
----
- backends/portage/portageBackend.py | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
-index fc2d45a..4ca4fb5 100755
---- a/backends/portage/portageBackend.py
-+++ b/backends/portage/portageBackend.py
-@@ -519,7 +519,6 @@ class PackageKitPortageMixin(object):
-             size = self._get_metadata(cpv, ["SIZE"])[0]
-             size = int(size) if size else 0
-         else:
--            self
-             metadata = self._get_metadata(cpv, ["IUSE", "SLOT"], in_dict=True)
- 
-             package = _emerge.Package.Package(
--- 
-2.3.6
-

diff --git a/app-admin/packagekit-base/files/0008-python-set-steps-on-PackagekitProgress-instanciation.patch b/app-admin/packagekit-base/files/0008-python-set-steps-on-PackagekitProgress-instanciation.patch
new file mode 100644
index 0000000..b15df47
--- /dev/null
+++ b/app-admin/packagekit-base/files/0008-python-set-steps-on-PackagekitProgress-instanciation.patch
@@ -0,0 +1,49 @@
+From 3c046f4586605f51a55c82f81861adcf5e408488 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 6 Sep 2015 16:10:32 +0200
+Subject: [PATCH 8/9] python: set steps on PackagekitProgress instanciation
+
+---
+ lib/python/packagekit/progress.py | 18 ++++++++----------
+ 1 file changed, 8 insertions(+), 10 deletions(-)
+
+diff --git a/lib/python/packagekit/progress.py b/lib/python/packagekit/progress.py
+index d0c0c26..b5c7e52 100644
+--- a/lib/python/packagekit/progress.py
++++ b/lib/python/packagekit/progress.py
+@@ -34,24 +34,22 @@ class PackagekitProgress(Iterable):
+     from packagekit import PackagekitProgress
+ 
+     steps = [10, 30, 50, 70] # Milestones in %
+-    progress = PackagekitProgress()
+-    progress.set_steps(steps)
+-    for milestone in range(len(steps)):
++    progress = PackagekitProgress(steps)
++    for milestone in progress:
+         # do the action is this step
+         for i in range(100):
+             # do some action
+-            print "progress : %s " % progress.percent
+-        progress.step() # step to next milestone
+-
++            print "progress : %s " % milestone
+     '''
+ 
+     #TODO: Add support for elapsed/remaining time
+ 
+-    def __init__(self):
++    def __init__(self, steps=None):
+         super(PackagekitProgress, self).__init__()
+-        self.percent = 0
+-        self.steps = []
+-        self.current_step = 0
++        if not steps:
++            self.reset()
++        else:
++            self.set_steps(steps)
+ 
+     def set_steps(self, steps):
+         '''
+-- 
+2.6.3
+

diff --git a/app-admin/packagekit-base/files/0009-Cosmetics.patch b/app-admin/packagekit-base/files/0009-Cosmetics.patch
deleted file mode 100644
index e3bf255..0000000
--- a/app-admin/packagekit-base/files/0009-Cosmetics.patch
+++ /dev/null
@@ -1,800 +0,0 @@
-From 53ff394fdadfccc90f24d35f3c6333d853825a74 Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Sun, 3 May 2015 14:26:20 +0200
-Subject: [PATCH 09/12] Cosmetics
-
----
- backends/portage/portageBackend.py | 348 ++++++++++++++++++++-----------------
- 1 file changed, 191 insertions(+), 157 deletions(-)
-
-diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
-index 4ca4fb5..9775466 100755
---- a/backends/portage/portageBackend.py
-+++ b/backends/portage/portageBackend.py
-@@ -84,8 +84,8 @@ class PortagePackageGroups(dict):
-                 'name': "Office",
-                 'description': "Applications used in office environments",
-                 'categories': ['app-office', 'app-pda', 'app-mobilephone',
--                    'app-cdr', 'app-antivirus', 'app-laptop', 'mail-',
--                ],
-+                               'app-cdr', 'app-antivirus', 'app-laptop',
-+                               'mail-'],
-             },
-             'development': {
-                 'name': "Development",
-@@ -104,56 +104,47 @@ class PortagePackageGroups(dict):
-             },
-             'gnome': {
-                 'name': "GNOME Desktop",
--                'description': \
--                    "Applications and libraries for the GNOME Desktop",
-+                'description': "Applications and libraries for the GNOME Desktop",
-                 'categories': ['gnome-'],
-             },
-             'kde': {
-                 'name': "KDE Desktop",
--                'description': \
--                    "Applications and libraries for the KDE Desktop",
-+                'description': "Applications and libraries for the KDE Desktop",
-                 'categories': ['kde-'],
-             },
-             'xfce': {
-                 'name': "XFCE Desktop",
--                'description': \
--                    "Applications and libraries for the XFCE Desktop",
-+                'description': "Applications and libraries for the XFCE Desktop",
-                 'categories': ['xfce-'],
-             },
-             'lxde': {
-                 'name': "LXDE Desktop",
--                'description': \
--                    "Applications and libraries for the LXDE Desktop",
-+                'description': "Applications and libraries for the LXDE Desktop",
-                 'categories': ['lxde-'],
-             },
-             'multimedia': {
-                 'name': "Multimedia",
--                'description': \
--                    "Applications and libraries for Multimedia",
-+                'description': "Applications and libraries for Multimedia",
-                 'categories': ['media-'],
-             },
-             'networking': {
-                 'name': "Networking",
--                'description': \
--                    "Applications and libraries for Networking",
-+                'description': "Applications and libraries for Networking",
-                 'categories': ['net-', 'www-'],
-             },
-             'science': {
-                 'name': "Science",
--                'description': \
--                    "Scientific applications and libraries",
-+                'description': "Scientific applications and libraries",
-                 'categories': ['sci-'],
-             },
-             'security': {
-                 'name': "Security",
--                'description': \
--                    "Security orientend applications",
-+                'description': "Security orientend applications",
-                 'categories': ['app-antivirus', 'net-analyzer', 'net-firewall'],
-             },
-             'x11': {
-                 'name': "X11",
--                'description': \
--                    "Applications and libraries for X11",
-+                'description': "Applications and libraries for X11",
-                 'categories': ['x11-'],
-             },
-         }
-@@ -179,7 +170,7 @@ class PortageBridge():
- 
-     def update(self):
-         self.settings, self.trees, self.mtimedb = \
--                _emerge.actions.load_emerge_config()
-+            _emerge.actions.load_emerge_config()
-         self.vardb = self.trees[self.settings['ROOT']]['vartree'].dbapi
-         self.portdb = self.trees[self.settings['ROOT']]['porttree'].dbapi
-         self.root_config = self.trees[self.settings['ROOT']]['root_config']
-@@ -299,8 +290,8 @@ class PackageKitPortageMixin(object):
-         Return PackageKit group belonging to given Portage package.
-         """
-         category = portage.versions.catsplit(cp)[0]
--        group_data = [key for key, data in self._get_portage_groups().items() \
--            if category in data['categories']]
-+        group_data = [key for key, data in self._get_portage_groups().items()
-+                      if category in data['categories']]
-         try:
-             generic_group_name = group_data.pop(0)
-         except IndexError:
-@@ -341,9 +332,12 @@ class PackageKitPortageMixin(object):
-     def _get_real_license_str(self, cpv, metadata):
-         # use conditionals info (w/ USE) in LICENSE and remove ||
-         ebuild_settings = self._get_ebuild_settings(cpv, metadata)
--        license = set(portage.flatten(portage.dep.use_reduce(
--            portage.dep.paren_reduce(metadata["LICENSE"]),
--            uselist=ebuild_settings.get("USE", "").split())))
-+        license = set(portage.flatten(
-+            portage.dep.use_reduce(
-+                portage.dep.paren_reduce(metadata["LICENSE"]),
-+                uselist=ebuild_settings.get("USE", "").split()
-+            )
-+        ))
-         license.discard('||')
-         return ' '.join(license)
- 
-@@ -353,10 +347,12 @@ class PackageKitPortageMixin(object):
-             self.pvar.settings.get('CONFIG_PROTECT', '').split()))
- 
-         if result:
--            message = "Some configuration files need updating."
--            message += ";You should use Gentoo's tools to update them (dispatch-conf)"
--            message += ";If you can't do that, ask your system administrator."
--            self.message(MESSAGE_CONFIG_FILES_CHANGED, message)
-+            self.message(
-+                MESSAGE_CONFIG_FILES_CHANGED,
-+                "Some configuration files need updating."
-+                ";You should use Gentoo's tools to update them (dispatch-conf)"
-+                ";If you can't do that, ask your system administrator."
-+            )
- 
-     def _get_restricted_fetch_files(self, cpv, metadata):
-         '''
-@@ -374,28 +370,32 @@ class PackageKitPortageMixin(object):
-         ebuild_settings = self._get_ebuild_settings(cpv, metadata)
- 
-         files = self.pvar.portdb.getFetchMap(cpv,
--                ebuild_settings['USE'].split())
-+                                             ebuild_settings['USE'].split())
- 
-         for f in files:
-             file_path = os.path.join(ebuild_settings["DISTDIR"], f)
-             if not os.access(file_path, os.F_OK):
-                 missing_files.append([file_path, files[f]])
- 
--        if len(missing_files) > 0:
--            return missing_files
--
--        return None
-+        return missing_files if missing_files else None
- 
-     def _check_fetch_restrict(self, packages_list):
--        for p in packages_list:
--            if 'fetch' in p.metadata['RESTRICT']:
--                files = self._get_restricted_fetch_files(p.cpv, p.metadata)
--                if files:
--                    message = "Package %s can't download some files." % p.cpv
--                    message += ";Please, download manually the followonig file(s):"
--                    for x in files:
--                        message += ";- %s then copy it to %s" % (' '.join(x[1]), x[0])
--                    self.error(ERROR_RESTRICTED_DOWNLOAD, message)
-+        for pkg in packages_list:
-+            if 'fetch' not in pkg.metadata['RESTRICT']:
-+                continue
-+
-+            files = self._get_restricted_fetch_files(pkg.cpv, pkg.metadata)
-+            if files:
-+                message = (
-+                    "Package {0} can't download some files."
-+                    ";Please, download manually the following file(s): "
-+                ).format(pkg.cpv)
-+                message += ''.join([
-+                    ";- {0} then copy it to {1}"
-+                    .format(' '.join(file_info[1]), file_info[0])
-+                    for file_info in files
-+                ])
-+                self.error(ERROR_RESTRICTED_DOWNLOAD, message)
- 
-     def _elog_listener(self, settings, key, logentries, fulltext):
-         '''
-@@ -440,12 +440,12 @@ class PackageKitPortageMixin(object):
-         # EAPI-2 compliant (at least)
-         # 'other' phase is ignored except this one, every phase should be there
-         if self._error_phase in ("setup", "unpack", "prepare", "configure",
--            "nofetch", "config", "info"):
-+                                 "nofetch", "config", "info"):
-             error_type = ERROR_PACKAGE_FAILED_TO_CONFIGURE
-         elif self._error_phase in ("compile", "test"):
-             error_type = ERROR_PACKAGE_FAILED_TO_BUILD
-         elif self._error_phase in ("install", "preinst", "postinst",
--            "package"):
-+                                   "package"):
-             error_type = ERROR_PACKAGE_FAILED_TO_INSTALL
-         elif self._error_phase in ("prerm", "postrm"):
-             error_type = ERROR_PACKAGE_FAILED_TO_REMOVE
-@@ -457,8 +457,8 @@ class PackageKitPortageMixin(object):
-     def _get_file_list(self, cpv):
-         cat, pv = portage.versions.catsplit(cpv)
-         db = portage.dblink(cat, pv, self.pvar.settings['ROOT'],
--                self.pvar.settings, treetype="vartree",
--                vartree=self.pvar.vardb)
-+                            self.pvar.settings, treetype="vartree",
-+                            vartree=self.pvar.vardb)
- 
-         contents = db.getcontents()
-         return contents.keys() if contents else []
-@@ -470,7 +470,7 @@ class PackageKitPortageMixin(object):
-         returns -1 if cpv1 < cpv2
-         '''
-         return portage.versions.pkgcmp(portage.versions.pkgsplit(cpv1),
--            portage.versions.pkgsplit(cpv2))
-+                                       portage.versions.pkgsplit(cpv2))
- 
-     def _get_newest_cpv(self, cpv_list, installed):
-         newer = ""
-@@ -491,7 +491,7 @@ class PackageKitPortageMixin(object):
- 
-         return newer
- 
--    def _get_metadata(self, cpv, keys, in_dict = False, add_cache_keys = False):
-+    def _get_metadata(self, cpv, keys, in_dict=False, add_cache_keys=False):
-         '''
-         This function returns required metadata.
-         If in_dict is True, metadata is returned in a dict object.
-@@ -522,15 +522,15 @@ class PackageKitPortageMixin(object):
-             metadata = self._get_metadata(cpv, ["IUSE", "SLOT"], in_dict=True)
- 
-             package = _emerge.Package.Package(
--                    type_name="ebuild",
--                    built=False,
--                    installed=False,
--                    root_config=self.pvar.root_config,
--                    cpv=cpv,
--                    metadata=metadata)
--
-+                type_name="ebuild",
-+                built=False,
-+                installed=False,
-+                root_config=self.pvar.root_config,
-+                cpv=cpv,
-+                metadata=metadata
-+            )
-             fetch_file = self.pvar.portdb.getfetchsizes(package[2],
--                    package.use.enabled)
-+                                                        package.use.enabled)
-             size = sum(fetch_file)
- 
-         return size
-@@ -668,10 +668,11 @@ class PackageKitPortageMixin(object):
- 
-         if len(ret) < 4:
-             self.error(ERROR_PACKAGE_ID_INVALID,
--                    "The package id %s does not contain 4 fields" % pkgid)
-+                       "The package id %s does not contain 4 fields" % pkgid)
-         if '/' not in ret[0]:
-             self.error(ERROR_PACKAGE_ID_INVALID,
--                    "The first field of the package id must contain a category")
-+                       "The first field of the package id must contain"
-+                       " a category")
- 
-         # remove slot info from version field
-         version = ret[1].split(':')[0]
-@@ -683,8 +684,9 @@ class PackageKitPortageMixin(object):
-         Transform the cpv (portage) to a package id (packagekit)
-         '''
-         package, version, rev = portage.versions.pkgsplit(cpv)
--        pkg_keywords, repo, slot = self._get_metadata(cpv,
--                ["KEYWORDS", "repository", "SLOT"])
-+        pkg_keywords, repo, slot = self._get_metadata(
-+            cpv, ["KEYWORDS", "repository", "SLOT"]
-+        )
- 
-         # filter accepted keywords
-         keywords = list(set(pkg_keywords.split()).intersection(
-@@ -694,7 +696,8 @@ class PackageKitPortageMixin(object):
-         # if no keywords, check in package.keywords
-         if not keywords:
-             key_dict = self.pvar.settings.pkeywordsdict.get(
--                    portage.dep.dep_getkey(cpv))
-+                portage.dep.dep_getkey(cpv)
-+            )
-             if key_dict:
-                 for keys in key_dict.values():
-                     keyword.extend(keys)
-@@ -702,7 +705,7 @@ class PackageKitPortageMixin(object):
-         if not keywords:
-             keywords.append("no keywords")
-             self.message(MESSAGE_UNKNOWN,
--                "No keywords have been found for %s" % cpv)
-+                         "No keywords have been found for %s" % cpv)
- 
-         # don't want to see -r0
-         if rev != "r0":
-@@ -728,19 +731,23 @@ class PackageKitPortageMixin(object):
-         myopts["--selective"] = True
-         myopts["--deep"] = True
- 
--        myparams = _emerge.create_depgraph_params.create_depgraph_params(
--                myopts, "remove")
-+        myparams = _emerge.create_depgraph_params \
-+            .create_depgraph_params(myopts, "remove")
-         depgraph = _emerge.depgraph.depgraph(self.pvar.settings,
--                self.pvar.trees, myopts, myparams, None)
-+                                             self.pvar.trees, myopts,
-+                                             myparams, None)
- 
-         # TODO: atm, using FILTER_INSTALLED because it's quicker
-         # and we don't want to manage non-installed packages
-         for cp in self._get_all_cp([FILTER_INSTALLED]):
-             for cpv in self._get_all_cpv(cp, [FILTER_INSTALLED]):
-                 depgraph._dynamic_config._dep_stack.append(
--                        _emerge.Dependency.Dependency(
--                            atom=portage.dep.Atom('=' + cpv),
--                            root=self.pvar.settings["ROOT"], parent=None))
-+                    _emerge.Dependency.Dependency(
-+                        atom=portage.dep.Atom('=' + cpv),
-+                        root=self.pvar.settings["ROOT"],
-+                        parent=None
-+                    )
-+                )
- 
-         if not depgraph._complete_graph():
-             self.error(ERROR_INTERNAL_ERROR, "Error when generating depgraph")
-@@ -851,23 +858,24 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-             cpv = self._id_to_cpv(pkg)
-             if not self._is_cpv_valid(cpv):
-                 self.error(ERROR_PACKAGE_NOT_FOUND,
--                        "Package %s was not found" % pkg)
-+                           "Package %s was not found" % pkg)
-                 continue
-             cpv_input.append('=' + cpv)
- 
-         myopts = {}
-         myopts["--selective"] = True
-         myopts["--deep"] = True
--        myparams = _emerge.create_depgraph_params.create_depgraph_params(
--                myopts, "")
-+        myparams = _emerge.create_depgraph_params \
-+            .create_depgraph_params(myopts, "")
- 
--        depgraph = _emerge.depgraph.depgraph(
--                self.pvar.settings, self.pvar.trees, myopts, myparams, None)
-+        depgraph = _emerge.depgraph.depgraph(self.pvar.settings,
-+                                             self.pvar.trees, myopts,
-+                                             myparams, None)
-         retval, fav = depgraph.select_files(cpv_input)
- 
-         if not retval:
-             self.error(ERROR_DEP_RESOLUTION_FAILED,
--                    "Wasn't able to get dependency graph")
-+                       "Wasn't able to get dependency graph")
-             return
- 
-         def _add_children_to_list(cpv_list, node):
-@@ -937,18 +945,23 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
- 
-             if not self._is_cpv_valid(cpv):
-                 self.error(ERROR_PACKAGE_NOT_FOUND,
--                        "Package %s was not found" % pkg)
-+                           "Package %s was not found" % pkg)
-                 continue
- 
--            metadata = self._get_metadata(cpv,
--                    ["DESCRIPTION", "HOMEPAGE", "IUSE", "LICENSE", "SLOT"],
--                    in_dict=True)
--            license = self._get_real_license_str(cpv, metadata)
-+            metadata = self._get_metadata(
-+                cpv, ["DESCRIPTION", "HOMEPAGE", "IUSE", "LICENSE", "SLOT"],
-+                in_dict=True
-+            )
- 
--            self.details(self._cpv_to_id(cpv), '', license,
-+            self.details(
-+                self._cpv_to_id(cpv),
-+                '',
-+                self._get_real_license_str(cpv, metadata),
-                 self._get_pk_group(cpv),
--                metadata["DESCRIPTION"], metadata["HOMEPAGE"],
--                self._get_size(cpv))
-+                metadata["DESCRIPTION"],
-+                metadata["HOMEPAGE"],
-+                self._get_size(cpv)
-+            )
- 
-             pkg_processed += 100.0
-             self.percentage(int(pkg_processed/nb_pkg))
-@@ -968,19 +981,16 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
- 
-             if not self._is_cpv_valid(cpv):
-                 self.error(ERROR_PACKAGE_NOT_FOUND,
--                        "Package %s was not found" % pkg)
-+                           "Package %s was not found" % pkg)
-                 continue
- 
-             if not self._is_installed(cpv):
-                 self.error(ERROR_CANNOT_GET_FILELIST,
--                        "get-files is only available for installed packages")
-+                           "get-files is only available for installed"
-+                           " packages")
-                 continue
- 
--            files = self._get_file_list(cpv)
--            files = sorted(files)
--            files = ";".join(files)
--
--            self.files(pkg, files)
-+            self.files(pkg, ';'.join(sorted(self._get_file_list(cpv))))
- 
-             pkg_processed += 100.0
-             self.percentage(int(pkg_processed/nb_pkg))
-@@ -1055,7 +1065,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
- 
-         if FILTER_NOT_INSTALLED in filters:
-             self.error(ERROR_CANNOT_GET_REQUIRES,
--                    "required-by returns only installed packages at the moment")
-+                       "required-by returns only installed packages"
-+                       " at the moment")
-             return
- 
-         for pkg in pkgs:
-@@ -1063,11 +1074,12 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
- 
-             if not self._is_cpv_valid(cpv):
-                 self.error(ERROR_PACKAGE_NOT_FOUND,
--                        "Package %s was not found" % pkg)
-+                           "Package %s was not found" % pkg)
-                 continue
-             if not self._is_installed(cpv):
-                 self.error(ERROR_CANNOT_GET_REQUIRES,
--                        "required-by is only available for installed packages at the moment")
-+                           "required-by is only available for installed"
-+                           " packages at the moment")
-                 continue
- 
-             cpv_input.append(cpv)
-@@ -1105,7 +1117,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-             cpv = self._id_to_cpv(pkg)
- 
-             if not self.pvar.portdb.cpv_exists(cpv):
--                self.message(MESSAGE_COULD_NOT_FIND_PACKAGE, "could not find %s" % pkg)
-+                self.message(MESSAGE_COULD_NOT_FIND_PACKAGE,
-+                             "could not find %s" % pkg)
- 
-             for cpv in self.pvar.vardb.match(portage.versions.pkgsplit(cpv)[0]):
-                 updates.append(cpv)
-@@ -1117,9 +1130,11 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-             issued = ""
-             updated = ""
- 
--            self.update_detail(pkg, updates, obsoletes, vendor_url, bugzilla_url,
--                    cve_url, "none", "No update text", "No ChangeLog",
--                    UPDATE_STATE_STABLE, issued, updated)
-+            self.update_detail(
-+                pkg, updates, obsoletes, vendor_url, bugzilla_url, cve_url,
-+                "none", "No update text", "No ChangeLog", UPDATE_STATE_STABLE,
-+                issued, updated
-+            )
- 
-     def get_updates(self, filters):
-         # NOTES:
-@@ -1150,7 +1165,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         # get system and world packages
-         for s in ["system", "world"]:
-             sets = self._get_internal_package_set_class()(
--                    initial_atoms=self.pvar.root_config.setconfig.getSetAtoms(s))
-+                initial_atoms=self.pvar.root_config.setconfig.getSetAtoms(s)
-+            )
-             for atom in sets:
-                 update_candidates.append(atom.cp)
- 
-@@ -1214,8 +1230,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-                 cpv_downgra[cp] = dict_down
- 
-         # get security updates
--        for atom in self._get_internal_package_set_class()(
--                initial_atoms=self.pvar.root_config.setconfig.getSetAtoms("security")):
-+        for atom in self._get_internal_package_set_class(
-+            initial_atoms=self.pvar.root_config.setconfig
-+                .getSetAtoms("security")
-+        ):
-             # send update message and remove atom from cpv_updates
-             if atom.cp in cpv_updates:
-                 slot = self._get_metadata(atom.cpv, ["SLOT"])[0]
-@@ -1269,12 +1287,12 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
- 
-             if not self._is_cpv_valid(cpv):
-                 self.error(ERROR_PACKAGE_NOT_FOUND,
--                        "Package %s was not found" % pkg)
-+                           "Package %s was not found" % pkg)
-                 continue
- 
-             if self._is_installed(cpv):
-                 self.error(ERROR_PACKAGE_ALREADY_INSTALLED,
--                        "Package %s is already installed" % pkg)
-+                           "Package %s is already installed" % pkg)
-                 continue
- 
-             cpv_list.append('=' + cpv)
-@@ -1283,7 +1301,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         # but better to show it after important errors
-         if only_trusted:
-             self.error(ERROR_MISSING_GPG_SIGNATURE,
--                    "Portage backend does not support GPG signature")
-+                       "Portage backend does not support GPG signature")
-             return
- 
-         # creating installation depgraph
-@@ -1292,17 +1310,18 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-             myopts['--fetchonly'] = True
- 
-         favorites = []
--        myparams = _emerge.create_depgraph_params.create_depgraph_params(
--                myopts, "")
-+        myparams = _emerge.create_depgraph_params \
-+            .create_depgraph_params(myopts, "")
- 
-         self.status(STATUS_DEP_RESOLVE)
- 
-         depgraph = _emerge.depgraph.depgraph(self.pvar.settings,
--                self.pvar.trees, myopts, myparams, None)
-+                                             self.pvar.trees, myopts,
-+                                             myparams, None)
-         retval, favorites = depgraph.select_files(cpv_list)
-         if not retval:
-             self.error(ERROR_DEP_RESOLUTION_FAILED,
--                    "Wasn't able to get dependency graph")
-+                       "Wasn't able to get dependency graph")
-             return
- 
-         # check fetch restrict, can stop the function via error signal
-@@ -1319,9 +1338,11 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         try:
-             self._block_output()
-             # compiling/installing
--            mergetask = _emerge.Scheduler.Scheduler(self.pvar.settings,
--                    self.pvar.trees, self.pvar.mtimedb, myopts, None,
--                    depgraph.altlist(), favorites, depgraph.schedulerGraph())
-+            mergetask = _emerge.Scheduler.Scheduler(
-+                self.pvar.settings, self.pvar.trees, self.pvar.mtimedb,
-+                myopts, None, depgraph.altlist(), favorites,
-+                depgraph.schedulerGraph()
-+            )
-             rval = mergetask.merge()
-         finally:
-             self._unblock_output()
-@@ -1354,8 +1375,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         installed_layman_db = layman.db.DB(conf)
- 
-         if force:
--            timestamp_path = os.path.join(
--                    self.pvar.settings["PORTDIR"], "metadata", "timestamp.chk")
-+            timestamp_path = os.path.join(self.pvar.settings["PORTDIR"],
-+                                          "metadata", "timestamp.chk")
-             if os.access(timestamp_path, os.F_OK):
-                 os.remove(timestamp_path)
- 
-@@ -1364,7 +1385,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-             for overlay in installed_layman_db.overlays.keys():
-                 installed_layman_db.sync(overlay)
-             _emerge.actions.action_sync(self.pvar.settings, self.pvar.trees,
--                    self.pvar.mtimedb, myopts, "")
-+                                        self.pvar.mtimedb, myopts, "")
-         except:
-             self.error(ERROR_INTERNAL_ERROR, traceback.format_exc())
-         finally:
-@@ -1397,18 +1418,22 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
- 
-             if not self._is_cpv_valid(cpv):
-                 self.error(ERROR_PACKAGE_NOT_FOUND,
--                        "Package %s was not found" % pkg)
-+                           "Package %s was not found" % pkg)
-                 continue
- 
-             if not self._is_installed(cpv):
-                 self.error(ERROR_PACKAGE_NOT_INSTALLED,
--                        "Package %s is not installed" % pkg)
-+                           "Package %s is not installed" % pkg)
-                 continue
- 
-             # stop removal if a package is in the system set
-             if portage.versions.pkgsplit(cpv)[0] in system_packages:
--                self.error(ERROR_CANNOT_REMOVE_SYSTEM_PACKAGE,
--                        "Package %s is a system package. If you really want to remove it, please use portage" % pkg)
-+                self.error(
-+                    ERROR_CANNOT_REMOVE_SYSTEM_PACKAGE,
-+                    "Package %s is a system package. "
-+                    "If you really want to remove it, please use portage" %
-+                    pkg
-+                )
-                 continue
- 
-             cpv_list.append(cpv)
-@@ -1416,41 +1441,45 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         # backend do not implement autoremove
-         if autoremove:
-             self.message(MESSAGE_AUTOREMOVE_IGNORED,
--                    "Portage backend do not implement autoremove option")
-+                         "Portage backend do not implement autoremove option")
- 
-         # get packages needing candidates for removal
--        required_packages = self._get_required_packages(cpv_list, recursive=True)
-+        required_packages = self._get_required_packages(cpv_list,
-+                                                        recursive=True)
- 
-         # if there are required packages, allowdep must be on
-         if required_packages and not allowdep:
-             self.error(ERROR_DEP_RESOLUTION_FAILED,
--                    "Could not perform remove operation has packages are needed by other packages")
-+                       "Could not perform remove operation has packages "
-+                       "are needed by other packages")
-             return
- 
-         # first, we add required packages
-         for p in required_packages:
-             package = _emerge.Package.Package(
--                    type_name=p.type_name,
--                    built=p.built,
--                    installed=p.installed,
--                    root_config=p.root_config,
--                    cpv=p.cpv,
--                    metadata=p.metadata,
--                    operation='uninstall')
-+                type_name=p.type_name,
-+                built=p.built,
-+                installed=p.installed,
-+                root_config=p.root_config,
-+                cpv=p.cpv,
-+                metadata=p.metadata,
-+                operation='uninstall'
-+            )
-             packages.append(package)
- 
-         # and now, packages we want really to remove
-         for cpv in cpv_list:
-             metadata = self._get_metadata(cpv, [],
--                    in_dict=True, add_cache_keys=True)
-+                                          in_dict=True, add_cache_keys=True)
-             package = _emerge.Package.Package(
--                    type_name="ebuild",
--                    built=True,
--                    installed=True,
--                    root_config=self.pvar.root_config,
--                    cpv=cpv,
--                    metadata=metadata,
--                    operation="uninstall")
-+                type_name="ebuild",
-+                built=True,
-+                installed=True,
-+                root_config=self.pvar.root_config,
-+                cpv=cpv,
-+                metadata=metadata,
-+                operation="uninstall"
-+            )
-             packages.append(package)
- 
-         if simulate:
-@@ -1467,9 +1496,11 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         # now, we can remove
-         try:
-             self._block_output()
--            mergetask = _emerge.Scheduler.Scheduler(self.pvar.settings,
--                    self.pvar.trees, self.pvar.mtimedb, mergelist=packages,
--                    myopts={}, spinner=None, favorites=favorites, digraph=None)
-+            mergetask = _emerge.Scheduler.Scheduler(
-+                self.pvar.settings, self.pvar.trees, self.pvar.mtimedb,
-+                mergelist=packages, myopts={}, spinner=None,
-+                favorites=favorites, digraph=None
-+            )
-             rval = mergetask.merge()
-         finally:
-             self._unblock_output()
-@@ -1495,7 +1526,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         if repoid == 'gentoo':
-             if not enable:
-                 self.error(ERROR_CANNOT_DISABLE_REPOSITORY,
--                        "gentoo repository can't be disabled")
-+                           "gentoo repository can't be disabled")
-             return
- 
-         conf = layman.config.BareConfig()
-@@ -1506,7 +1537,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         # check now for repoid so we don't have to do it after
-         if repoid not in available_layman_db.overlays.keys():
-             self.error(ERROR_REPO_NOT_FOUND,
--                    "Repository %s was not found" % repoid)
-+                       "Repository %s was not found" % repoid)
-             return
- 
-         # disabling (removing) a db
-@@ -1516,7 +1547,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-                 installed_layman_db.delete(installed_layman_db.select(repoid))
-             except Exception, e:
-                 self.error(ERROR_INTERNAL_ERROR,
--                        "Failed to disable repository "+repoid+" : "+str(e))
-+                           "Failed to disable repository "+repoid+" : "+str(e))
-                 return
- 
-         # enabling (adding) a db
-@@ -1530,7 +1561,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-             except Exception, e:
-                 self._unblock_output()
-                 self.error(ERROR_INTERNAL_ERROR,
--                        "Failed to enable repository "+repoid+" : "+str(e))
-+                           "Failed to enable repository "+repoid+" : "+str(e))
-                 return
- 
-     def resolve(self, filters, pkgs):
-@@ -1581,10 +1612,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-             # and newest filter could be alterated
-             for cpv in self._get_all_cpv(cp, filters, filter_newest=False):
-                 match = True
--                metadata =  self._get_metadata(cpv,
--                        ["DESCRIPTION", "HOMEPAGE", "IUSE",
--                            "LICENSE", "repository", "SLOT"],
--                        in_dict=True)
-+                metadata = self._get_metadata(
-+                    cpv, ["DESCRIPTION", "HOMEPAGE", "IUSE", "LICENSE",
-+                          "repository", "SLOT"], in_dict=True
-+                )
-                 # update LICENSE to correspond to system settings
-                 metadata["LICENSE"] = self._get_real_license_str(cpv, metadata)
-                 for s in search_list:
-@@ -1621,7 +1652,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
- 
-         if FILTER_NOT_INSTALLED in filters:
-             self.error(ERROR_CANNOT_GET_FILELIST,
--                    "search-file isn't available with ~installed filter")
-+                       "search-file isn't available with ~installed filter")
-             return
- 
-         cpv_list = self.pvar.vardb.cpv_all()
-@@ -1759,7 +1790,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
- 
-             if not self._is_cpv_valid(cpv):
-                 self.error(ERROR_UPDATE_NOT_FOUND,
--                        "Package %s was not found" % pkg)
-+                           "Package %s was not found" % pkg)
-                 continue
- 
-             cpv_list.append('=' + cpv)
-@@ -1768,7 +1799,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         # but better to show it after important errors
-         if only_trusted:
-             self.error(ERROR_MISSING_GPG_SIGNATURE,
--                    "Portage backend does not support GPG signature")
-+                       "Portage backend does not support GPG signature")
-             return
- 
-         # creating update depgraph
-@@ -1776,17 +1807,18 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         if only_download:
-             myopts['--fetchonly'] = True
-         favorites = []
--        myparams = _emerge.create_depgraph_params.create_depgraph_params(
--                myopts, "")
-+        myparams = _emerge.create_depgraph_params \
-+            .create_depgraph_params(myopts, "")
- 
-         self.status(STATUS_DEP_RESOLVE)
- 
-         depgraph = _emerge.depgraph.depgraph(self.pvar.settings,
--                self.pvar.trees, myopts, myparams, None)
-+                                             self.pvar.trees, myopts,
-+                                             myparams, None)
-         retval, favorites = depgraph.select_files(cpv_list)
-         if not retval:
-             self.error(ERROR_DEP_RESOLUTION_FAILED,
--                    "Wasn't able to get dependency graph")
-+                       "Wasn't able to get dependency graph")
-             return
- 
-         # check fetch restrict, can stop the function via error signal
-@@ -1803,9 +1835,11 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         try:
-             self._block_output()
-             # compiling/installing
--            mergetask = _emerge.Scheduler.Scheduler(self.pvar.settings,
--                    self.pvar.trees, self.pvar.mtimedb, myopts, None,
--                    depgraph.altlist(), favorites, depgraph.schedulerGraph())
-+            mergetask = _emerge.Scheduler.Scheduler(
-+                self.pvar.settings, self.pvar.trees, self.pvar.mtimedb,
-+                myopts, None, depgraph.altlist(), favorites,
-+                depgraph.schedulerGraph()
-+            )
-             rval = mergetask.merge()
-         finally:
-             self._unblock_output()
--- 
-2.3.6
-

diff --git a/app-admin/packagekit-base/files/0009-portage-use-PackagekitProgress-as-an-iterable.patch b/app-admin/packagekit-base/files/0009-portage-use-PackagekitProgress-as-an-iterable.patch
new file mode 100644
index 0000000..435bb09
--- /dev/null
+++ b/app-admin/packagekit-base/files/0009-portage-use-PackagekitProgress-as-an-iterable.patch
@@ -0,0 +1,222 @@
+From 5a3b0b213c53aca26f91f0a3eae65518f1376235 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 6 Sep 2015 16:10:06 +0200
+Subject: [PATCH 9/9] portage: use PackagekitProgress as an iterable
+
+---
+ backends/portage/portageBackend.py | 73 +++++++++++++++-----------------------
+ 1 file changed, 29 insertions(+), 44 deletions(-)
+
+diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
+index 5cb64f6..de1c490 100755
+--- a/backends/portage/portageBackend.py
++++ b/backends/portage/portageBackend.py
+@@ -27,7 +27,10 @@ import signal
+ import sys
+ import traceback
+ from collections import defaultdict
+-from itertools import izip
++try:
++    from itertools import izip
++except ImportError:
++    izip = zip
+ 
+ # layman imports (>=2)
+ import layman.config
+@@ -939,11 +942,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+         self.status(STATUS_INFO)
+         self.allow_cancel(True)
+ 
+-        progress = PackagekitProgress()
+-        progress.set_steps(compute_equal_steps(pkgs))
++        progress = PackagekitProgress(compute_equal_steps(pkgs))
+         self.percentage(progress.percent)
+ 
+-        for pkg in pkgs:
++        for percentage, pkg in izip(progress, pkgs):
+             cpv = self._id_to_cpv(pkg)
+ 
+             if not self._is_cpv_valid(cpv):
+@@ -967,8 +969,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+                 self._get_size(cpv)
+             )
+ 
+-            progress.step()
+-            self.percentage(progress.percent)
++            self.percentage(percentage)
+ 
+         self.percentage(100)
+ 
+@@ -976,11 +977,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+         self.status(STATUS_INFO)
+         self.allow_cancel(True)
+ 
+-        progress = PackagekitProgress()
+-        progress.set_steps(compute_equal_steps(pkgs))
++        progress = PackagekitProgress(compute_equal_steps(pkgs))
+         self.percentage(progress.percent)
+ 
+-        for pkg in pkgs:
++        for percentage, pkg in izip(progress, pkgs):
+             cpv = self._id_to_cpv(pkg)
+ 
+             if not self._is_cpv_valid(cpv):
+@@ -996,8 +996,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+ 
+             self.files(pkg, ';'.join(sorted(self._get_file_list(cpv))))
+ 
+-            progress.step()
+-            self.percentage(progress.percent)
++            self.percentage(percentage)
+ 
+         self.percentage(100)
+ 
+@@ -1007,19 +1006,17 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+ 
+         cp_list = self._get_all_cp(filters)
+ 
+-        progress = PackagekitProgress()
+-        progress.set_steps(compute_equal_steps(cp_list))
++        progress = PackagekitProgress(compute_equal_steps(cp_list))
+         self.percentage(progress.percent)
+ 
+-        for cp in self._get_all_cp(filters):
++        for percentage, cp in izip(progress, self._get_all_cp(filters)):
+             for cpv in self._get_all_cpv(cp, filters):
+                 try:
+                     self._package(cpv)
+                 except InvalidAtom:
+                     continue
+ 
+-            progress.step()
+-            self.percentage(progress.percent)
++            self.percentage(percentage)
+ 
+         self.percentage(100)
+ 
+@@ -1574,8 +1571,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+         self.allow_cancel(True)
+ 
+         cp_list = self._get_all_cp(filters)
+-        progress = PackagekitProgress()
+-        progress.set_steps(compute_equal_steps(cp_list))
++        progress = PackagekitProgress(compute_equal_steps(cp_list))
+         self.percentage(progress.percent)
+ 
+         reg_expr = []
+@@ -1586,13 +1582,12 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+         # specifications says "be case sensitive"
+         s = re.compile(reg_expr)
+ 
+-        for cp in cp_list:
++        for percentage, cp in izip(progress, cp_list):
+             if s.match(cp):
+                 for cpv in self._get_all_cpv(cp, filters):
+                     self._package(cpv)
+ 
+-            progress.step()
+-            self.percentage(progress.percent)
++            self.percentage(percentage)
+ 
+         self.percentage(100)
+ 
+@@ -1604,11 +1599,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+         cp_list = self._get_all_cp(filters)
+         search_list = self._get_search_list(keys)
+ 
+-        progress = PackagekitProgress()
+-        progress.set_steps(compute_equal_steps(cp_list))
++        progress = PackagekitProgress(compute_equal_steps(cp_list))
+         self.percentage(progress.percent)
+ 
+-        for cp in cp_list:
++        for percentage, cp in izip(progress, cp_list):
+             # unfortunatelly, everything is related to cpv, not cp
+             # can't filter cp
+             cpv_list = []
+@@ -1643,8 +1637,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+             for cpv in cpv_list:
+                 self._package(cpv)
+ 
+-            progress.step()
+-            self.percentage(progress.percent)
++            self.percentage(percentage)
+ 
+         self.percentage(100)
+ 
+@@ -1664,13 +1657,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+         cpv_list = self.pvar.vardb.cpv_all()
+         is_full_path = True
+ 
+-        progress = PackagekitProgress()
+-        progress.set_steps(compute_equal_steps(cpv_list))
+-        self.percentage(progress.percent)
++        progress = PackagekitProgress(compute_equal_steps(values))
++        self.percentage(progress.percentage)
+ 
+-        count = 0
+-        values_len = len(values)
+-        for key in values:
++        for percentage, key in izip(progress, values):
+ 
+             if key[0] != "/":
+                 is_full_path = False
+@@ -1688,8 +1678,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+                         self._package(cpv)
+                         break
+ 
+-            progress.step()
+-            self.percentage(progress.percent)
++            self.percentage(percentage)
+ 
+         self.percentage(100)
+ 
+@@ -1700,18 +1689,16 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+ 
+         cp_list = self._get_all_cp(filters)
+ 
+-        progress = PackagekitProgress()
+-        progress.set_steps(compute_equal_steps(cp_list))
++        progress = PackagekitProgress(compute_equal_steps(cp_list))
+         self.percentage(progress.percent)
+ 
+-        for cp in cp_list:
++        for percentage, cp in izip(progress, cp_list):
+             for group in groups:
+                 if self._get_pk_group(cp) == group:
+                     for cpv in self._get_all_cpv(cp, filters):
+                         self._package(cpv)
+ 
+-            progress.step()
+-            self.percentage(progress.percent)
++            self.percentage(percentage)
+ 
+         self.percentage(100)
+ 
+@@ -1746,11 +1733,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+ 
+         cp_list = self._get_all_cp(filters)
+ 
+-        progress = PackagekitProgress()
+-        progress.set_steps(compute_equal_steps(cp_list))
++        progress = PackagekitProgress(compute_equal_steps(cp_list))
+         self.percentage(progress.percent)
+ 
+-        for cp in cp_list:
++        for percentage, cp in izip(progress, cp_list):
+             if category_filter:
+                 cat, pkg_name = portage.versions.catsplit(cp)
+                 if cat != category_filter:
+@@ -1768,8 +1754,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+                 for cpv in self._get_all_cpv(cp, filters):
+                     self._package(cpv)
+ 
+-            progress.step()
+-            self.percentage(progress.percent)
++            self.percentage(percentage)
+ 
+         self.percentage(100)
+ 
+-- 
+2.6.3
+

diff --git a/app-admin/packagekit-base/files/0010-Add-helper-to-change-portage-settings.patch b/app-admin/packagekit-base/files/0010-Add-helper-to-change-portage-settings.patch
deleted file mode 100644
index af81129..0000000
--- a/app-admin/packagekit-base/files/0010-Add-helper-to-change-portage-settings.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From ecd21674a814926e31ad70613f927c73f19c3d3d Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Sun, 3 May 2015 15:32:53 +0200
-Subject: [PATCH 10/12] Add helper to change portage settings
-
----
- backends/portage/portageBackend.py | 39 +++++++++++++++++---------------------
- 1 file changed, 17 insertions(+), 22 deletions(-)
-
-diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
-index 9775466..1a6d855 100755
---- a/backends/portage/portageBackend.py
-+++ b/backends/portage/portageBackend.py
-@@ -175,21 +175,24 @@ class PortageBridge():
-         self.portdb = self.trees[self.settings['ROOT']]['porttree'].dbapi
-         self.root_config = self.trees[self.settings['ROOT']]['root_config']
- 
--        # doing all the changes to settings
-+        self.apply_settings({
-+            # we don't want interactive ebuilds
-+            'ACCEPT_PROPERTIES': '-interactive',
-+            # do not log with mod_echo (cleanly prevent some outputs)
-+            'PORTAGE_ELOG_SYSTEM': ' '.join([
-+                elog for elog in self.settings["PORTAGE_ELOG_SYSTEM"].split()
-+                if elog != 'echo'
-+            ]),
-+        })
-+
-+    def apply_settings(self, mapping):
-+        """Set portage settings."""
-         self.settings.unlock()
- 
--        # we don't want interactive ebuilds
--        self.settings["ACCEPT_PROPERTIES"] = "-interactive"
--        self.settings.backup_changes("ACCEPT_PROPERTIES")
-+        for key, value in mapping.items():
-+            self.settings[key] = value
-+            self.settings.backup_changes(key)
- 
--        # do not log with mod_echo (cleanly prevent some outputs)
--        self.settings["PORTAGE_ELOG_SYSTEM"] = ' '.join([
--            elog for elog in self.settings["PORTAGE_ELOG_SYSTEM"].split()
--            if elog != 'echo'
--        ])
--        self.settings.backup_changes("PORTAGE_ELOG_SYSTEM")
--
--        # finally, regenerate settings and lock them again
-         self.settings.regenerate()
-         self.settings.lock()
- 
-@@ -560,17 +563,9 @@ class PackageKitPortageMixin(object):
-                 licenses = "* -" + free_licenses
-             backup_license = self.pvar.settings["ACCEPT_LICENSE"]
- 
--            self.pvar.settings.unlock()
--            self.pvar.settings["ACCEPT_LICENSE"] = licenses
--            self.pvar.settings.backup_changes("ACCEPT_LICENSE")
--            self.pvar.settings.regenerate()
--
-+            self.pvar.apply_settings({'ACCEPT_LICENSE': licences})
-             cpv_list = filter(_has_validLicense, cpv_list)
--
--            self.pvar.settings["ACCEPT_LICENSE"] = backup_license
--            self.pvar.settings.backup_changes("ACCEPT_LICENSE")
--            self.pvar.settings.regenerate()
--            self.pvar.settings.lock()
-+            self.pvar.apply_settings({'ACCEPT_LICENSE': backup_licence})
- 
-         return cpv_list
- 
--- 
-2.3.6
-

diff --git a/app-admin/packagekit-base/files/0011-Remove-compatibility-with-older-portage.patch b/app-admin/packagekit-base/files/0011-Remove-compatibility-with-older-portage.patch
deleted file mode 100644
index 222f9bf..0000000
--- a/app-admin/packagekit-base/files/0011-Remove-compatibility-with-older-portage.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 6b8db81b43eaba3e331725227252f9d363d1b695 Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Sun, 3 May 2015 15:39:07 +0200
-Subject: [PATCH 11/12] Remove compatibility with older portage
-
----
- backends/portage/portageBackend.py | 26 ++++++++------------------
- 1 file changed, 8 insertions(+), 18 deletions(-)
-
-diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
-index 1a6d855..9ce2b79 100755
---- a/backends/portage/portageBackend.py
-+++ b/backends/portage/portageBackend.py
-@@ -50,6 +50,7 @@ import _emerge.stdout_spinner
- import portage
- import portage.dep
- import portage.versions
-+from portage._sets.base import InternalPackageSet
- from portage.exception import InvalidAtom
- 
- # NOTES:
-@@ -319,13 +320,6 @@ class PackageKitPortageMixin(object):
-         settings.setcpv(cpv, mydb=metadata)
-         return settings
- 
--    def _get_internal_package_set_class(self):
--        try:
--            from portage._sets.base import InternalPackageSet
--        except ImportError:
--            from portage.sets.base import InternalPackageSet
--        return InternalPackageSet
--
-     def _is_installed(self, cpv):
-         return self.pvar.vardb.cpv_exists(cpv)
- 
-@@ -1158,10 +1152,9 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         cpv_downgra = {}
- 
-         # get system and world packages
--        for s in ["system", "world"]:
--            sets = self._get_internal_package_set_class()(
--                initial_atoms=self.pvar.root_config.setconfig.getSetAtoms(s)
--            )
-+        for pkg_set in ["system", "world"]:
-+            sets = InternalPackageSet(initial_atoms=self.pvar.root_config
-+                                      .setconfig.getSetAtoms(pkg_set))
-             for atom in sets:
-                 update_candidates.append(atom.cp)
- 
-@@ -1225,10 +1218,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-                 cpv_downgra[cp] = dict_down
- 
-         # get security updates
--        for atom in self._get_internal_package_set_class(
--            initial_atoms=self.pvar.root_config.setconfig
--                .getSetAtoms("security")
--        ):
-+        for atom in InternalPackageSet(initial_atoms=self.pvar.root_config
-+                                       .setconfig.getSetAtoms("security")):
-             # send update message and remove atom from cpv_updates
-             if atom.cp in cpv_updates:
-                 slot = self._get_metadata(atom.cpv, ["SLOT"])[0]
-@@ -1402,9 +1393,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-         system_packages = []
- 
-         # get system packages
--        sets = self._get_internal_package_set_class()(
--            initial_atoms=self.pvar.root_config.setconfig.getSetAtoms("system"))
--        for atom in sets:
-+        for atom in InternalPackageSet(initial_atoms=self.pvar.root_config
-+                                       .setconfig.getSetAtoms("system")):
-             system_packages.append(atom.cp)
- 
-         # create cpv_list
--- 
-2.3.6
-

diff --git a/app-admin/packagekit-base/files/0011-portage-fix-a-typo.patch b/app-admin/packagekit-base/files/0011-portage-fix-a-typo.patch
new file mode 100644
index 0000000..6b41d7c
--- /dev/null
+++ b/app-admin/packagekit-base/files/0011-portage-fix-a-typo.patch
@@ -0,0 +1,25 @@
+From 782b68eb1b381fe9bda602da7d0b951827d489a1 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Fri, 27 Nov 2015 11:36:40 +0100
+Subject: [PATCH 1/3] portage: fix a typo
+
+---
+ backends/portage/portageBackend.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
+index de1c490..004c18b 100755
+--- a/backends/portage/portageBackend.py
++++ b/backends/portage/portageBackend.py
+@@ -1658,7 +1658,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+         is_full_path = True
+ 
+         progress = PackagekitProgress(compute_equal_steps(values))
+-        self.percentage(progress.percentage)
++        self.percentage(progress.percent)
+ 
+         for percentage, key in izip(progress, values):
+ 
+-- 
+2.6.3
+

diff --git a/app-admin/packagekit-base/files/0012-Retrieve-EAPI-and-KEYWORDS-before-calling-setcpv-met.patch b/app-admin/packagekit-base/files/0012-Retrieve-EAPI-and-KEYWORDS-before-calling-setcpv-met.patch
deleted file mode 100644
index 08c7626..0000000
--- a/app-admin/packagekit-base/files/0012-Retrieve-EAPI-and-KEYWORDS-before-calling-setcpv-met.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From c08ca43ca45d55471f014dee93592b5448950aea Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Sun, 3 May 2015 17:54:59 +0200
-Subject: [PATCH 12/12] Retrieve EAPI and KEYWORDS before calling setcpv method
-
----
- backends/portage/portageBackend.py | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
-index 9ce2b79..79b8449 100755
---- a/backends/portage/portageBackend.py
-+++ b/backends/portage/portageBackend.py
-@@ -938,7 +938,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-                 continue
- 
-             metadata = self._get_metadata(
--                cpv, ["DESCRIPTION", "HOMEPAGE", "IUSE", "LICENSE", "SLOT"],
-+                cpv, ["DESCRIPTION", "HOMEPAGE", "IUSE", "LICENSE", "SLOT",
-+                      "EAPI", "KEYWORDS"],
-                 in_dict=True
-             )
- 
-@@ -1599,7 +1600,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
-                 match = True
-                 metadata = self._get_metadata(
-                     cpv, ["DESCRIPTION", "HOMEPAGE", "IUSE", "LICENSE",
--                          "repository", "SLOT"], in_dict=True
-+                          "repository", "SLOT", "EAPI", "KEYWORDS"],
-+                    in_dict=True
-                 )
-                 # update LICENSE to correspond to system settings
-                 metadata["LICENSE"] = self._get_real_license_str(cpv, metadata)
--- 
-2.3.6
-

diff --git a/app-admin/packagekit-base/files/0012-portage-fix-step-percentage-computation.patch b/app-admin/packagekit-base/files/0012-portage-fix-step-percentage-computation.patch
new file mode 100644
index 0000000..301b56d
--- /dev/null
+++ b/app-admin/packagekit-base/files/0012-portage-fix-step-percentage-computation.patch
@@ -0,0 +1,25 @@
+From b76a5ee07912e0a739a5ba39aef6d96e85e58a98 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Fri, 27 Nov 2015 13:00:38 +0100
+Subject: [PATCH 2/3] portage: fix step percentage computation
+
+---
+ backends/portage/portageBackend.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
+index 004c18b..12918b9 100755
+--- a/backends/portage/portageBackend.py
++++ b/backends/portage/portageBackend.py
+@@ -73,7 +73,7 @@ from portage.exception import InvalidAtom
+ 
+ 
+ def compute_equal_steps(iterable):
+-    return [idx * (100.0 / len(iterable)) / 100.0
++    return [idx * (100.0 / len(iterable))
+             for idx, _ in enumerate(iterable, start=1)]
+ 
+ 
+-- 
+2.6.3
+

diff --git a/app-admin/packagekit-base/files/0013-portage-do-not-refetch-package-listing-for-no-reason.patch b/app-admin/packagekit-base/files/0013-portage-do-not-refetch-package-listing-for-no-reason.patch
new file mode 100644
index 0000000..0e46401
--- /dev/null
+++ b/app-admin/packagekit-base/files/0013-portage-do-not-refetch-package-listing-for-no-reason.patch
@@ -0,0 +1,32 @@
+From 284dd27dc9f73415f49e7502de7ed0bddedcb8c0 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Fri, 27 Nov 2015 13:01:37 +0100
+Subject: [PATCH 3/3] portage: do not refetch package listing for no reason
+
+---
+ backends/portage/portageBackend.py | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
+index 12918b9..505feec 100755
+--- a/backends/portage/portageBackend.py
++++ b/backends/portage/portageBackend.py
+@@ -1003,13 +1003,12 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
+     def get_packages(self, filters):
+         self.status(STATUS_QUERY)
+         self.allow_cancel(True)
++        self.percentage(0)
+ 
+         cp_list = self._get_all_cp(filters)
+-
+         progress = PackagekitProgress(compute_equal_steps(cp_list))
+-        self.percentage(progress.percent)
+ 
+-        for percentage, cp in izip(progress, self._get_all_cp(filters)):
++        for percentage, cp in izip(progress, cp_list):
+             for cpv in self._get_all_cpv(cp, filters):
+                 try:
+                     self._package(cpv)
+-- 
+2.6.3
+

diff --git a/app-admin/packagekit-base/packagekit-base-1.0.6.ebuild b/app-admin/packagekit-base/packagekit-base-1.0.10.ebuild
similarity index 85%
rename from app-admin/packagekit-base/packagekit-base-1.0.6.ebuild
rename to app-admin/packagekit-base/packagekit-base-1.0.10.ebuild
index 2abd7cb..844e6b6 100644
--- a/app-admin/packagekit-base/packagekit-base-1.0.6.ebuild
+++ b/app-admin/packagekit-base/packagekit-base-1.0.10.ebuild
@@ -7,8 +7,9 @@ EAPI="5"
 # PackageKit supports 3.2+, but entropy and portage backends are untested
 # Future note: use --enable-python3
 PYTHON_COMPAT=( python2_7 )
+VALA_USE_DEPEND="vapigen"
 
-inherit autotools bash-completion-r1 eutils multilib nsplugins python-single-r1 systemd
+inherit bash-completion-r1 eutils multilib nsplugins python-single-r1 systemd vala
 
 MY_PN="PackageKit"
 MY_P=${MY_PN}-${PV}
@@ -20,8 +21,11 @@ SRC_URI="http://www.freedesktop.org/software/${MY_PN}/releases/${MY_P}.tar.xz"
 LICENSE="GPL-2"
 SLOT="0/18"
 KEYWORDS="~alpha ~amd64 ~arm ~mips ~ppc ~ppc64 ~x86"
-IUSE="connman cron command-not-found +introspection networkmanager nsplugin entropy systemd test"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+IUSE="connman cron command-not-found +introspection networkmanager nsplugin entropy systemd test vala"
+REQUIRED_USE="
+	${PYTHON_REQUIRED_USE}
+	vala? ( introspection )
+"
 
 # While not strictly needed, consolekit is the alternative to systemd-login
 # to get current session's user.
@@ -51,6 +55,7 @@ DEPEND="${CDEPEND}
 	sys-devel/gettext
 	virtual/pkgconfig
 	nsplugin? ( >=net-misc/npapi-sdk-0.27 )
+	vala? ( $(vala_depend) )
 "
 RDEPEND="${CDEPEND}
 	>=app-portage/layman-2[${PYTHON_USEDEP}]
@@ -64,11 +69,10 @@ S="${WORKDIR}/${MY_P}"
 RESTRICT="test"
 
 src_prepare() {
-	# Fix python backend detection
-	# Make portage backend work with newer layman/portage
+	# Upstreamed portage backend patches
 	epatch "${FILESDIR}"/*
 
-	eautoreconf
+	use vala && vala_src_prepare
 }
 
 src_configure() {
@@ -92,6 +96,7 @@ src_configure() {
 		$(use_enable nsplugin browser-plugin) \
 		$(use_enable systemd) \
 		$(use_enable test daemon-tests) \
+		$(use_enable vala) \
 		$(systemd_with_unitdir)
 		#$(use_enable test local)
 }
@@ -100,8 +105,10 @@ src_install() {
 	emake DESTDIR="${D}" install || die "emake install failed"
 	prune_libtool_files --all
 
-	dodoc AUTHORS MAINTAINERS NEWS README || die "dodoc failed"
-	dodoc ChangeLog || die "dodoc failed"
+	einstalldocs
+
+	#dodoc AUTHORS MAINTAINERS NEWS README || die "dodoc failed"
+	#dodoc ChangeLog || die "dodoc failed"
 
 	if use nsplugin; then
 		dodir "/usr/$(get_libdir)/${PLUGINS_DIR}"


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2015-11-27 13:57 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-27 13:57 [gentoo-commits] proj/gnome:master commit in: app-admin/packagekit-base/, app-admin/packagekit-base/files/ Gilles Dartiguelongue

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox