Gentoo Archives: gentoo-commits

From: Gilles Dartiguelongue <eva@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gnome:master commit in: app-admin/packagekit-base/, app-admin/packagekit-base/files/
Date: Fri, 27 Nov 2015 13:57:09
Message-Id: 1448632599.903740134df3108d505ff0251afa8179931fdd60.eva@gentoo
1 commit: 903740134df3108d505ff0251afa8179931fdd60
2 Author: Gilles Dartiguelongue <eva <AT> gentoo <DOT> org>
3 AuthorDate: Fri Nov 27 13:51:34 2015 +0000
4 Commit: Gilles Dartiguelongue <eva <AT> gentoo <DOT> org>
5 CommitDate: Fri Nov 27 13:56:39 2015 +0000
6 URL: https://gitweb.gentoo.org/proj/gnome.git/commit/?id=90374013
7
8 app-admin/packagekit-base: version bump to 1.0.10
9
10 .../0001-Fix-typo-python-backend-detection.patch | 25 -
11 ...-exception-handling-to-be-python2.7-compa.patch | 44 ++
12 .../0002-Sort-imports-according-to-PEP8.patch | 72 --
13 ...2-portage-do-not-redefine-builtin-license.patch | 34 +
14 .../files/0003-Update-layman-API-usage-to-2.patch | 104 ---
15 .../files/0003-portage-drop-unused-imports.patch | 25 +
16 .../files/0004-Use-python-idioms.patch | 191 -----
17 ...0004-portage-initialize-licenses-variable.patch | 26 +
18 .../0005-Enhance-get_repo_list-function.patch | 56 --
19 ...-fix-a-typo-in-restoring-license-settings.patch | 30 +
20 ...-_get_cpv_slotted-with-collections-module.patch | 41 --
21 ...-PackageKitProgress-to-ease-progress-step.patch | 260 +++++++
22 .../files/0007-Simplify-_get_metadata.patch | 42 --
23 ...ython-make-PackagekitProgress-an-Iterable.patch | 56 ++
24 .../files/0008-Remove-useless-instruction.patch | 24 -
25 ...steps-on-PackagekitProgress-instanciation.patch | 49 ++
26 .../packagekit-base/files/0009-Cosmetics.patch | 800 ---------------------
27 ...age-use-PackagekitProgress-as-an-iterable.patch | 222 ++++++
28 ...010-Add-helper-to-change-portage-settings.patch | 73 --
29 ...1-Remove-compatibility-with-older-portage.patch | 77 --
30 .../files/0011-portage-fix-a-typo.patch | 25 +
31 ...PI-and-KEYWORDS-before-calling-setcpv-met.patch | 36 -
32 ...2-portage-fix-step-percentage-computation.patch | 25 +
33 ...not-refetch-package-listing-for-no-reason.patch | 32 +
34 ...-1.0.6.ebuild => packagekit-base-1.0.10.ebuild} | 23 +-
35 25 files changed, 843 insertions(+), 1549 deletions(-)
36
37 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
38 deleted file mode 100644
39 index 5786d87..0000000
40 --- a/app-admin/packagekit-base/files/0001-Fix-typo-python-backend-detection.patch
41 +++ /dev/null
42 @@ -1,25 +0,0 @@
43 -From ff0e2a1fe4f32def11b74e9eb7ffa7989e3061d8 Mon Sep 17 00:00:00 2001
44 -From: Gilles Dartiguelongue <eva@g.o>
45 -Date: Sun, 3 May 2015 18:37:24 +0200
46 -Subject: [PATCH 01/12] Fix typo python backend detection
47 -
48 ----
49 - configure.ac | 2 +-
50 - 1 file changed, 1 insertion(+), 1 deletion(-)
51 -
52 -diff --git a/configure.ac b/configure.ac
53 -index 655507f..844c454 100644
54 ---- a/configure.ac
55 -+++ b/configure.ac
56 -@@ -454,7 +454,7 @@ if test x$enable_hif = xyes; then
57 - fi
58 -
59 - have_python_backend="no"
60 --if test x$enable_entropy = xyes -o x$enable_pisi = xyes -o $enable_portage = xyes; then
61 -+if test x$enable_entropy = xyes -o x$enable_pisi = xyes -o x$enable_portage = xyes; then
62 - have_python_backend="yes"
63 - fi
64 - AM_CONDITIONAL(HAVE_PYTHON_BACKEND, test x$have_python_backend = xyes)
65 ---
66 -2.3.6
67 -
68
69 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
70 new file mode 100644
71 index 0000000..b834f2b
72 --- /dev/null
73 +++ b/app-admin/packagekit-base/files/0001-portage-fix-exception-handling-to-be-python2.7-compa.patch
74 @@ -0,0 +1,44 @@
75 +From 56a54a7bbf3b28546619a4d2b458ea50c3f5c3e9 Mon Sep 17 00:00:00 2001
76 +From: Gilles Dartiguelongue <eva@g.o>
77 +Date: Sun, 6 Sep 2015 13:32:23 +0200
78 +Subject: [PATCH 1/9] portage: fix exception handling to be python2.7+
79 + compatible
80 +
81 +---
82 + backends/portage/portageBackend.py | 10 ++++++----
83 + 1 file changed, 6 insertions(+), 4 deletions(-)
84 +
85 +diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
86 +index dc72bd9..d4726b6 100755
87 +--- a/backends/portage/portageBackend.py
88 ++++ b/backends/portage/portageBackend.py
89 +@@ -1542,9 +1542,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
90 + if not enable and self._is_repo_enabled(installed_layman_db, repoid):
91 + try:
92 + installed_layman_db.delete(installed_layman_db.select(repoid))
93 +- except Exception, e:
94 ++ except Exception as exc:
95 + self.error(ERROR_INTERNAL_ERROR,
96 +- "Failed to disable repository " + repoid + " : " + str(e))
97 ++ "Failed to disable repository %s: %s" %
98 ++ (repoid, str(exc)))
99 + return
100 +
101 + # enabling (adding) a db
102 +@@ -1555,10 +1556,11 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
103 + self._block_output()
104 + installed_layman_db.add(available_layman_db.select(repoid))
105 + self._unblock_output()
106 +- except Exception, e:
107 ++ except Exception as exc:
108 + self._unblock_output()
109 + self.error(ERROR_INTERNAL_ERROR,
110 +- "Failed to enable repository " + repoid + " : " + str(e))
111 ++ "Failed to enable repository %s: %s" %
112 ++ (repoid, str(exc)))
113 + return
114 +
115 + def resolve(self, filters, pkgs):
116 +--
117 +2.6.3
118 +
119
120 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
121 deleted file mode 100644
122 index abb8720..0000000
123 --- a/app-admin/packagekit-base/files/0002-Sort-imports-according-to-PEP8.patch
124 +++ /dev/null
125 @@ -1,72 +0,0 @@
126 -From 6d62155472c3ae1f85a756518e9014425354511d Mon Sep 17 00:00:00 2001
127 -From: Gilles Dartiguelongue <eva@g.o>
128 -Date: Sun, 3 May 2015 12:08:43 +0200
129 -Subject: [PATCH 02/12] Sort imports according to PEP8
130 -
131 ----
132 - backends/portage/portageBackend.py | 39 ++++++++++++++++++--------------------
133 - 1 file changed, 18 insertions(+), 21 deletions(-)
134 -
135 -diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
136 -index 82bf6cd..f403986 100755
137 ---- a/backends/portage/portageBackend.py
138 -+++ b/backends/portage/portageBackend.py
139 -@@ -22,37 +22,34 @@
140 - # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
141 -
142 - import os
143 -+import re
144 -+import signal
145 -+import sys
146 - import traceback
147 -+from itertools import izip
148 -
149 --
150 -+# layman imports
151 -+import layman.config
152 -+import layman.db
153 - # packagekit imports
154 -+from packagekit.backend import (
155 -+ PackageKitBaseBackend,
156 -+ get_package_id,
157 -+ split_package_id,
158 -+)
159 - from packagekit.enums import *
160 --
161 --from packagekit.backend import PackageKitBaseBackend, \
162 -- get_package_id, split_package_id
163 --from packagekit.progress import *
164 - from packagekit.package import PackagekitPackage
165 --
166 -+from packagekit.progress import *
167 - # portage imports
168 --import portage
169 --import portage.versions
170 --import portage.dep
171 -+import _emerge.AtomArg
172 - import _emerge.actions
173 --import _emerge.stdout_spinner
174 - import _emerge.create_depgraph_params
175 --import _emerge.AtomArg
176 -+import _emerge.stdout_spinner
177 -+import portage
178 -+import portage.dep
179 -+import portage.versions
180 - from portage.exception import InvalidAtom
181 -
182 --# layman imports
183 --import layman.db
184 --import layman.config
185 --
186 --# misc imports
187 --import sys
188 --import signal
189 --import re
190 --from itertools import izip
191 --
192 - # NOTES:
193 - #
194 - # Package IDs description:
195 ---
196 -2.3.6
197 -
198
199 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
200 new file mode 100644
201 index 0000000..8ef1e9a
202 --- /dev/null
203 +++ b/app-admin/packagekit-base/files/0002-portage-do-not-redefine-builtin-license.patch
204 @@ -0,0 +1,34 @@
205 +From 232519b102571933f034cee72979ecf834af4b46 Mon Sep 17 00:00:00 2001
206 +From: Gilles Dartiguelongue <eva@g.o>
207 +Date: Sun, 6 Sep 2015 14:14:03 +0200
208 +Subject: [PATCH 2/9] portage: do not redefine builtin license
209 +
210 +---
211 + backends/portage/portageBackend.py | 6 +++---
212 + 1 file changed, 3 insertions(+), 3 deletions(-)
213 +
214 +diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
215 +index d4726b6..f40ca92 100755
216 +--- a/backends/portage/portageBackend.py
217 ++++ b/backends/portage/portageBackend.py
218 +@@ -334,14 +334,14 @@ class PackageKitPortageMixin(object):
219 + def _get_real_license_str(self, cpv, metadata):
220 + # use conditionals info (w/ USE) in LICENSE and remove ||
221 + ebuild_settings = self._get_ebuild_settings(cpv, metadata)
222 +- license = set(portage.flatten(
223 ++ license_ = set(portage.flatten(
224 + portage.dep.use_reduce(
225 + portage.dep.paren_reduce(metadata["LICENSE"]),
226 + uselist=ebuild_settings.get("USE", "").split()
227 + )
228 + ))
229 +- license.discard('||')
230 +- return ' '.join(license)
231 ++ license_.discard('||')
232 ++ return ' '.join(license_)
233 +
234 + def _signal_config_update(self):
235 + result = list(portage.util.find_updated_config_files(
236 +--
237 +2.6.3
238 +
239
240 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
241 deleted file mode 100644
242 index afd94a2..0000000
243 --- a/app-admin/packagekit-base/files/0003-Update-layman-API-usage-to-2.patch
244 +++ /dev/null
245 @@ -1,104 +0,0 @@
246 -From b41a8c225d5fc593a10f54e10eba829c58d410d6 Mon Sep 17 00:00:00 2001
247 -From: Gilles Dartiguelongue <eva@g.o>
248 -Date: Sun, 3 May 2015 12:48:13 +0200
249 -Subject: [PATCH 03/12] Update layman API usage to >=2
250 -
251 ----
252 - backends/portage/portageBackend.py | 44 ++++++++++++++------------------------
253 - 1 file changed, 16 insertions(+), 28 deletions(-)
254 -
255 -diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
256 -index f403986..7ad23ec 100755
257 ---- a/backends/portage/portageBackend.py
258 -+++ b/backends/portage/portageBackend.py
259 -@@ -28,9 +28,10 @@ import sys
260 - import traceback
261 - from itertools import izip
262 -
263 --# layman imports
264 -+# layman imports (>=2)
265 - import layman.config
266 - import layman.db
267 -+import layman.remotedb
268 - # packagekit imports
269 - from packagekit.backend import (
270 - PackageKitBaseBackend,
271 -@@ -1050,17 +1051,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
272 - self.allow_cancel(True)
273 - self.percentage(None)
274 -
275 -- # get installed and available dbs
276 -- if hasattr(layman.config, "Config"):
277 -- installed_layman_db = layman.db.DB(layman.config.Config())
278 -- else:
279 -- installed_layman_db = layman.db.DB(layman.config.BareConfig())
280 --
281 -- if hasattr(layman.config, "Config"):
282 -- available_layman_db = layman.db.RemoteDB(layman.config.Config())
283 -- else:
284 -- available_layman_db = layman.db.RemoteDB(layman.config.BareConfig())
285 --
286 -+ conf = layman.config.BareConfig()
287 -+ conf.set_option('quiet', True)
288 -+ installed_layman_db = layman.db.DB(conf)
289 -+ available_layman_db = layman.remotedb.RemoteDB(conf)
290 -
291 - # 'gentoo' is a dummy repo
292 - self.repo_detail('gentoo', 'Gentoo Portage tree', True)
293 -@@ -1386,15 +1380,9 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
294 -
295 - myopts = {'--quiet': True}
296 -
297 -- # get installed and available dbs
298 -- if hasattr(layman.config, "Config"):
299 -- layman_opts = {"quiet": True}
300 -- installed_layman_db = layman.db.DB(layman.config.Config())
301 -- else:
302 -- layman_opts = {}
303 -- conf = layman.config.BareConfig()
304 -- conf.set_option("quiet", True)
305 -- installed_layman_db = layman.db.DB(conf)
306 -+ conf = layman.config.BareConfig()
307 -+ conf.set_option('quiet', True)
308 -+ installed_layman_db = layman.db.DB(conf)
309 -
310 - if force:
311 - timestamp_path = os.path.join(
312 -@@ -1404,8 +1392,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
313 -
314 - try:
315 - self._block_output()
316 -- for o in installed_layman_db.overlays.keys():
317 -- installed_layman_db.sync(o, **layman_opts)
318 -+ for overlay in installed_layman_db.overlays.keys():
319 -+ installed_layman_db.sync(overlay)
320 - _emerge.actions.action_sync(self.pvar.settings, self.pvar.trees,
321 - self.pvar.mtimedb, myopts, "")
322 - except:
323 -@@ -1541,9 +1529,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
324 - "gentoo repository can't be disabled")
325 - return
326 -
327 -- # get installed and available dbs
328 -- installed_layman_db = layman.db.DB(layman.config.Config())
329 -- available_layman_db = layman.db.RemoteDB(layman.config.Config())
330 -+ conf = layman.config.BareConfig()
331 -+ conf.set_option('quiet', True)
332 -+ installed_layman_db = layman.db.DB(conf)
333 -+ available_layman_db = layman.remotedb.RemoteDB(conf)
334 -
335 - # check now for repoid so we don't have to do it after
336 - if not repoid in available_layman_db.overlays.keys():
337 -@@ -1567,8 +1556,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
338 - try:
339 - # TODO: clean the trick to prevent outputs from layman
340 - self._block_output()
341 -- installed_layman_db.add(available_layman_db.select(repoid),
342 -- quiet=True)
343 -+ installed_layman_db.add(available_layman_db.select(repoid))
344 - self._unblock_output()
345 - except Exception, e:
346 - self._unblock_output()
347 ---
348 -2.3.6
349 -
350
351 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
352 new file mode 100644
353 index 0000000..2b99528
354 --- /dev/null
355 +++ b/app-admin/packagekit-base/files/0003-portage-drop-unused-imports.patch
356 @@ -0,0 +1,25 @@
357 +From 6b2592232d9ed2713df874d3bb770f68ef701841 Mon Sep 17 00:00:00 2001
358 +From: Gilles Dartiguelongue <eva@g.o>
359 +Date: Sun, 6 Sep 2015 14:14:45 +0200
360 +Subject: [PATCH 3/9] portage: drop unused imports
361 +
362 +---
363 + backends/portage/portageBackend.py | 2 --
364 + 1 file changed, 2 deletions(-)
365 +
366 +diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
367 +index f40ca92..4301c14 100755
368 +--- a/backends/portage/portageBackend.py
369 ++++ b/backends/portage/portageBackend.py
370 +@@ -40,8 +40,6 @@ from packagekit.backend import (
371 + split_package_id,
372 + )
373 + from packagekit.enums import *
374 +-from packagekit.package import PackagekitPackage
375 +-from packagekit.progress import *
376 + # portage imports
377 + import _emerge.AtomArg
378 + import _emerge.actions
379 +--
380 +2.6.3
381 +
382
383 diff --git a/app-admin/packagekit-base/files/0004-Use-python-idioms.patch b/app-admin/packagekit-base/files/0004-Use-python-idioms.patch
384 deleted file mode 100644
385 index dc9c982..0000000
386 --- a/app-admin/packagekit-base/files/0004-Use-python-idioms.patch
387 +++ /dev/null
388 @@ -1,191 +0,0 @@
389 -From e8520218790e939ee69891e1031ba7c9934959a1 Mon Sep 17 00:00:00 2001
390 -From: Gilles Dartiguelongue <eva@g.o>
391 -Date: Sun, 3 May 2015 12:49:15 +0200
392 -Subject: [PATCH 04/12] Use python idioms
393 -
394 ----
395 - backends/portage/portageBackend.py | 80 ++++++++++++--------------------------
396 - 1 file changed, 25 insertions(+), 55 deletions(-)
397 -
398 -diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
399 -index 7ad23ec..f37542e 100755
400 ---- a/backends/portage/portageBackend.py
401 -+++ b/backends/portage/portageBackend.py
402 -@@ -191,10 +191,10 @@ class PortageBridge():
403 - self.settings.backup_changes("ACCEPT_PROPERTIES")
404 -
405 - # do not log with mod_echo (cleanly prevent some outputs)
406 -- def filter_echo(x): return x != 'echo'
407 -- elogs = self.settings["PORTAGE_ELOG_SYSTEM"].split()
408 -- elogs = filter(filter_echo, elogs)
409 -- self.settings["PORTAGE_ELOG_SYSTEM"] = ' '.join(elogs)
410 -+ self.settings["PORTAGE_ELOG_SYSTEM"] = ' '.join([
411 -+ elog for elog in self.settings["PORTAGE_ELOG_SYSTEM"].split()
412 -+ if elog != 'echo'
413 -+ ])
414 - self.settings.backup_changes("PORTAGE_ELOG_SYSTEM")
415 -
416 - # finally, regenerate settings and lock them again
417 -@@ -237,9 +237,7 @@ class PackageKitPortageMixin(object):
418 - return TRANSACTION_FLAG_ONLY_DOWNLOAD in transaction_flags
419 -
420 - def _is_repo_enabled(self, layman_db, repo_name):
421 -- if repo_name in layman_db.overlays.keys():
422 -- return True
423 -- return False
424 -+ return repo_name in layman_db.overlays.keys()
425 -
426 - def _get_search_list(self, keys_list):
427 - '''
428 -@@ -334,18 +332,10 @@ class PackageKitPortageMixin(object):
429 - return InternalPackageSet
430 -
431 - def _is_installed(self, cpv):
432 -- if self.pvar.vardb.cpv_exists(cpv):
433 -- return True
434 -- return False
435 -+ return self.pvar.vardb.cpv_exists(cpv)
436 -
437 - def _is_cpv_valid(self, cpv):
438 -- if self._is_installed(cpv):
439 -- # actually if is_installed return True that means cpv is in db
440 -- return True
441 -- elif self.pvar.portdb.cpv_exists(cpv):
442 -- return True
443 --
444 -- return False
445 -+ return any([self._is_installed(cpv), self.pvar.portdb.cpv_exists(cpv)])
446 -
447 - def _get_real_license_str(self, cpv, metadata):
448 - # use conditionals info (w/ USE) in LICENSE and remove ||
449 -@@ -354,9 +344,7 @@ class PackageKitPortageMixin(object):
450 - portage.dep.paren_reduce(metadata["LICENSE"]),
451 - uselist=ebuild_settings.get("USE", "").split())))
452 - license.discard('||')
453 -- license = ' '.join(license)
454 --
455 -- return license
456 -+ return ' '.join(license)
457 -
458 - def _signal_config_update(self):
459 - result = list(portage.util.find_updated_config_files(
460 -@@ -472,10 +460,7 @@ class PackageKitPortageMixin(object):
461 - vartree=self.pvar.vardb)
462 -
463 - contents = db.getcontents()
464 -- if not contents:
465 -- return []
466 --
467 -- return db.getcontents().keys()
468 -+ return contents.keys() if contents else []
469 -
470 - def _cmp_cpv(self, cpv1, cpv2):
471 - '''
472 -@@ -535,10 +520,7 @@ class PackageKitPortageMixin(object):
473 - size = 0
474 - if self._is_installed(cpv):
475 - size = self._get_metadata(cpv, ["SIZE"])[0]
476 -- if size == '':
477 -- size = 0
478 -- else:
479 -- size = int(size)
480 -+ size = int(size) if size else 0
481 - else:
482 - self
483 - metadata = self._get_metadata(cpv, ["IUSE", "SLOT"], in_dict=True)
484 -@@ -553,8 +535,7 @@ class PackageKitPortageMixin(object):
485 -
486 - fetch_file = self.pvar.portdb.getfetchsizes(package[2],
487 - package.use.enabled)
488 -- for f in fetch_file:
489 -- size += fetch_file[f]
490 -+ size = sum(fetch_file)
491 -
492 - return size
493 -
494 -@@ -670,14 +651,12 @@ class PackageKitPortageMixin(object):
495 - if FILTER_INSTALLED in filters:
496 - cpv_list = self.pvar.vardb.match(cp)
497 - elif FILTER_NOT_INSTALLED in filters:
498 -- for cpv in self.pvar.portdb.match(cp):
499 -- if not self._is_installed(cpv):
500 -- cpv_list.append(cpv)
501 -+ cpv_list = [cpv for cpv in self.pvar.portdb.match(cp)
502 -+ if not self._is_installed(cpv)]
503 - else:
504 - cpv_list = self.pvar.vardb.match(cp)
505 -- for cpv in self.pvar.portdb.match(cp):
506 -- if cpv not in cpv_list:
507 -- cpv_list.append(cpv)
508 -+ cpv_list.extend(self.pvar.portdb.match(cp))
509 -+ cpv_list = set(cpv_list)
510 -
511 - # free filter
512 - cpv_list = self._filter_free(cpv_list, filters)
513 -@@ -714,22 +693,18 @@ class PackageKitPortageMixin(object):
514 - pkg_keywords, repo, slot = self._get_metadata(cpv,
515 - ["KEYWORDS", "repository", "SLOT"])
516 -
517 -- pkg_keywords = pkg_keywords.split()
518 -- sys_keywords = self.pvar.settings["ACCEPT_KEYWORDS"].split()
519 -- keywords = []
520 --
521 -- for x in sys_keywords:
522 -- if x in pkg_keywords:
523 -- keywords.append(x)
524 -+ # filter accepted keywords
525 -+ keywords = list(set(pkg_keywords.split()).intersection(
526 -+ set(self.pvar.settings["ACCEPT_KEYWORDS"].split())
527 -+ ))
528 -
529 - # if no keywords, check in package.keywords
530 - if not keywords:
531 - key_dict = self.pvar.settings.pkeywordsdict.get(
532 - portage.dep.dep_getkey(cpv))
533 - if key_dict:
534 -- for _, keys in key_dict.iteritems():
535 -- for x in keys:
536 -- keywords.append(x)
537 -+ for keys in key_dict.values():
538 -+ keyword.extend(keys)
539 -
540 - if not keywords:
541 - keywords.append("no keywords")
542 -@@ -942,9 +917,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
543 -
544 - # now we can change cpv_list to a real cpv list
545 - tmp_list = cpv_list[:]
546 -- cpv_list = []
547 -- for x in tmp_list:
548 -- cpv_list.append(x[2])
549 -+ cpv_list = [x[2] for x in tmp_list]
550 - del tmp_list
551 -
552 - # free filter
553 -@@ -1100,12 +1073,9 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
554 -
555 - cpv_input.append(cpv)
556 -
557 -- packages_list = self._get_required_packages(cpv_input, recursive)
558 --
559 - # now we can populate cpv_list
560 -- cpv_list = []
561 -- for p in packages_list:
562 -- cpv_list.append(p.cpv)
563 -+ packages_list = self._get_required_packages(cpv_input, recursive)
564 -+ cpv_list = [package.cpv for package in packages_list]
565 - del packages_list
566 -
567 - # free filter
568 -@@ -1535,7 +1505,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
569 - available_layman_db = layman.remotedb.RemoteDB(conf)
570 -
571 - # check now for repoid so we don't have to do it after
572 -- if not repoid in available_layman_db.overlays.keys():
573 -+ if repoid not in available_layman_db.overlays.keys():
574 - self.error(ERROR_REPO_NOT_FOUND,
575 - "Repository %s was not found" % repoid)
576 - return
577 ---
578 -2.3.6
579 -
580
581 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
582 new file mode 100644
583 index 0000000..5c31b26
584 --- /dev/null
585 +++ b/app-admin/packagekit-base/files/0004-portage-initialize-licenses-variable.patch
586 @@ -0,0 +1,26 @@
587 +From 438fd88070860f858d09758daf5ff379a4d788a5 Mon Sep 17 00:00:00 2001
588 +From: Gilles Dartiguelongue <eva@g.o>
589 +Date: Sun, 6 Sep 2015 14:33:48 +0200
590 +Subject: [PATCH 4/9] portage: initialize licenses variable
591 +
592 +It should not be possible for licenses to be undefined but cleans up
593 +static analysis warnings.
594 +---
595 + backends/portage/portageBackend.py | 1 +
596 + 1 file changed, 1 insertion(+)
597 +
598 +diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
599 +index 4301c14..f36695a 100755
600 +--- a/backends/portage/portageBackend.py
601 ++++ b/backends/portage/portageBackend.py
602 +@@ -554,6 +554,7 @@ class PackageKitPortageMixin(object):
603 + return not self.pvar.settings._getMissingLicenses(cpv, metadata)
604 +
605 + if FILTER_FREE in filters or FILTER_NOT_FREE in filters:
606 ++ licenses = ""
607 + free_licenses = "@FSF-APPROVED"
608 + if FILTER_FREE in filters:
609 + licenses = "-* " + free_licenses
610 +--
611 +2.6.3
612 +
613
614 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
615 deleted file mode 100644
616 index 4f093e2..0000000
617 --- a/app-admin/packagekit-base/files/0005-Enhance-get_repo_list-function.patch
618 +++ /dev/null
619 @@ -1,56 +0,0 @@
620 -From 97afdc42a3cd50de94d824fab06b8c4a13a20c29 Mon Sep 17 00:00:00 2001
621 -From: Gilles Dartiguelongue <eva@g.o>
622 -Date: Sun, 3 May 2015 12:58:40 +0200
623 -Subject: [PATCH 05/12] Enhance get_repo_list function
624 -
625 -Adds a PEP257 docstring and use layman API to provide a description to
626 -repositories.
627 ----
628 - backends/portage/portageBackend.py | 24 +++++++++++++++---------
629 - 1 file changed, 15 insertions(+), 9 deletions(-)
630 -
631 -diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
632 -index f37542e..ddeca0d 100755
633 ---- a/backends/portage/portageBackend.py
634 -+++ b/backends/portage/portageBackend.py
635 -@@ -1016,10 +1016,14 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
636 - self.percentage(100)
637 -
638 - def get_repo_list(self, filters):
639 -- # NOTES:
640 -- # use layman API
641 -- # returns only official and supported repositories
642 -- # and creates a dummy repo for portage tree
643 -+ """ Get list of repository.
644 -+
645 -+ Get the list of repository tagged as official and supported by current
646 -+ setup of layman.
647 -+
648 -+ Adds a dummy entry for gentoo-x86 official tree even though it appears
649 -+ in layman's listing nowadays.
650 -+ """
651 - self.status(STATUS_INFO)
652 - self.allow_cancel(True)
653 - self.percentage(None)
654 -@@ -1033,11 +1037,13 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
655 - self.repo_detail('gentoo', 'Gentoo Portage tree', True)
656 -
657 - if FILTER_NOT_DEVELOPMENT not in filters:
658 -- for o in available_layman_db.overlays.keys():
659 -- if available_layman_db.overlays[o].is_official() \
660 -- and available_layman_db.overlays[o].is_supported():
661 -- self.repo_detail(o, o,
662 -- self._is_repo_enabled(installed_layman_db, o))
663 -+ for repo_name, overlay in available_layman_db.overlays.items():
664 -+ if overlay.is_official() and overlay.is_supported():
665 -+ self.repo_detail(
666 -+ repo_name,
667 -+ overlay.name,
668 -+ self._is_repo_enabled(installed_layman_db, repo_name)
669 -+ )
670 -
671 - def required_by(self, filters, pkgs, recursive):
672 - # TODO: manage non-installed package
673 ---
674 -2.3.6
675 -
676
677 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
678 new file mode 100644
679 index 0000000..885c90f
680 --- /dev/null
681 +++ b/app-admin/packagekit-base/files/0005-portage-fix-a-typo-in-restoring-license-settings.patch
682 @@ -0,0 +1,30 @@
683 +From d42390d7c78e622a8051d47f86a422a1861d7eef Mon Sep 17 00:00:00 2001
684 +From: Gilles Dartiguelongue <eva@g.o>
685 +Date: Sun, 6 Sep 2015 14:35:40 +0200
686 +Subject: [PATCH 5/9] portage: fix a typo in restoring license settings
687 +
688 +---
689 + backends/portage/portageBackend.py | 4 ++--
690 + 1 file changed, 2 insertions(+), 2 deletions(-)
691 +
692 +diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
693 +index f36695a..9b572e9 100755
694 +--- a/backends/portage/portageBackend.py
695 ++++ b/backends/portage/portageBackend.py
696 +@@ -560,11 +560,11 @@ class PackageKitPortageMixin(object):
697 + licenses = "-* " + free_licenses
698 + elif FILTER_NOT_FREE in filters:
699 + licenses = "* -" + free_licenses
700 +- backup_license = self.pvar.settings["ACCEPT_LICENSE"]
701 ++ backup_licenses = self.pvar.settings["ACCEPT_LICENSE"]
702 +
703 + self.pvar.apply_settings({'ACCEPT_LICENSE': licences})
704 + cpv_list = filter(_has_validLicense, cpv_list)
705 +- self.pvar.apply_settings({'ACCEPT_LICENSE': backup_licence})
706 ++ self.pvar.apply_settings({'ACCEPT_LICENSE': backup_licenses})
707 +
708 + return cpv_list
709 +
710 +--
711 +2.6.3
712 +
713
714 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
715 deleted file mode 100644
716 index 6f47b1d..0000000
717 --- a/app-admin/packagekit-base/files/0006-Simplify-_get_cpv_slotted-with-collections-module.patch
718 +++ /dev/null
719 @@ -1,41 +0,0 @@
720 -From d581bea1699a8d9982e91a5de2b8dd315b6c2c54 Mon Sep 17 00:00:00 2001
721 -From: Gilles Dartiguelongue <eva@g.o>
722 -Date: Sun, 3 May 2015 13:05:27 +0200
723 -Subject: [PATCH 06/12] Simplify _get_cpv_slotted with collections module
724 -
725 ----
726 - backends/portage/portageBackend.py | 8 +++-----
727 - 1 file changed, 3 insertions(+), 5 deletions(-)
728 -
729 -diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
730 -index ddeca0d..773256a 100755
731 ---- a/backends/portage/portageBackend.py
732 -+++ b/backends/portage/portageBackend.py
733 -@@ -26,6 +26,7 @@ import re
734 - import signal
735 - import sys
736 - import traceback
737 -+from collections import defaultdict
738 - from itertools import izip
739 -
740 - # layman imports (>=2)
741 -@@ -540,14 +541,11 @@ class PackageKitPortageMixin(object):
742 - return size
743 -
744 - def _get_cpv_slotted(self, cpv_list):
745 -- cpv_dict = {}
746 -+ cpv_dict = defaultdict(list)
747 -
748 - for cpv in cpv_list:
749 - slot = self._get_metadata(cpv, ["SLOT"])[0]
750 -- if slot not in cpv_dict:
751 -- cpv_dict[slot] = [cpv]
752 -- else:
753 -- cpv_dict[slot].append(cpv)
754 -+ cpv_dict[slot].append(cpv)
755 -
756 - return cpv_dict
757 -
758 ---
759 -2.3.6
760 -
761
762 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
763 new file mode 100644
764 index 0000000..8d6a51c
765 --- /dev/null
766 +++ b/app-admin/packagekit-base/files/0006-portage-use-PackageKitProgress-to-ease-progress-step.patch
767 @@ -0,0 +1,260 @@
768 +From 3c002cb530493664f94405c408b27203c7355cad Mon Sep 17 00:00:00 2001
769 +From: Gilles Dartiguelongue <eva@g.o>
770 +Date: Sun, 6 Sep 2015 15:09:50 +0200
771 +Subject: [PATCH 6/9] portage: use PackageKitProgress to ease progress steps
772 + manipulations
773 +
774 +---
775 + backends/portage/portageBackend.py | 91 +++++++++++++++++++++-----------------
776 + 1 file changed, 51 insertions(+), 40 deletions(-)
777 +
778 +diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
779 +index 9b572e9..5cb64f6 100755
780 +--- a/backends/portage/portageBackend.py
781 ++++ b/backends/portage/portageBackend.py
782 +@@ -40,6 +40,7 @@ from packagekit.backend import (
783 + split_package_id,
784 + )
785 + from packagekit.enums import *
786 ++from packagekit.progress import PackagekitProgress
787 + # portage imports
788 + import _emerge.AtomArg
789 + import _emerge.actions
790 +@@ -68,6 +69,11 @@ from portage.exception import InvalidAtom
791 + # Map Gentoo categories to the PackageKit group name space
792 +
793 +
794 ++def compute_equal_steps(iterable):
795 ++ return [idx * (100.0 / len(iterable)) / 100.0
796 ++ for idx, _ in enumerate(iterable, start=1)]
797 ++
798 ++
799 + class PortagePackageGroups(dict):
800 +
801 + """
802 +@@ -932,10 +938,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
803 + def get_details(self, pkgs):
804 + self.status(STATUS_INFO)
805 + self.allow_cancel(True)
806 +- self.percentage(0)
807 +
808 +- nb_pkg = float(len(pkgs))
809 +- pkg_processed = 0.0
810 ++ progress = PackagekitProgress()
811 ++ progress.set_steps(compute_equal_steps(pkgs))
812 ++ self.percentage(progress.percent)
813 +
814 + for pkg in pkgs:
815 + cpv = self._id_to_cpv(pkg)
816 +@@ -961,18 +967,18 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
817 + self._get_size(cpv)
818 + )
819 +
820 +- pkg_processed += 100.0
821 +- self.percentage(int(pkg_processed / nb_pkg))
822 ++ progress.step()
823 ++ self.percentage(progress.percent)
824 +
825 + self.percentage(100)
826 +
827 + def get_files(self, pkgs):
828 + self.status(STATUS_INFO)
829 + self.allow_cancel(True)
830 +- self.percentage(0)
831 +
832 +- nb_pkg = float(len(pkgs))
833 +- pkg_processed = 0.0
834 ++ progress = PackagekitProgress()
835 ++ progress.set_steps(compute_equal_steps(pkgs))
836 ++ self.percentage(progress.percent)
837 +
838 + for pkg in pkgs:
839 + cpv = self._id_to_cpv(pkg)
840 +@@ -990,19 +996,20 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
841 +
842 + self.files(pkg, ';'.join(sorted(self._get_file_list(cpv))))
843 +
844 +- pkg_processed += 100.0
845 +- self.percentage(int(pkg_processed / nb_pkg))
846 ++ progress.step()
847 ++ self.percentage(progress.percent)
848 +
849 + self.percentage(100)
850 +
851 + def get_packages(self, filters):
852 + self.status(STATUS_QUERY)
853 + self.allow_cancel(True)
854 +- self.percentage(0)
855 +
856 + cp_list = self._get_all_cp(filters)
857 +- nb_cp = float(len(cp_list))
858 +- cp_processed = 0.0
859 ++
860 ++ progress = PackagekitProgress()
861 ++ progress.set_steps(compute_equal_steps(cp_list))
862 ++ self.percentage(progress.percent)
863 +
864 + for cp in self._get_all_cp(filters):
865 + for cpv in self._get_all_cpv(cp, filters):
866 +@@ -1011,8 +1018,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
867 + except InvalidAtom:
868 + continue
869 +
870 +- cp_processed += 100.0
871 +- self.percentage(int(cp_processed / nb_cp))
872 ++ progress.step()
873 ++ self.percentage(progress.percent)
874 +
875 + self.percentage(100)
876 +
877 +@@ -1565,11 +1572,11 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
878 + def resolve(self, filters, pkgs):
879 + self.status(STATUS_QUERY)
880 + self.allow_cancel(True)
881 +- self.percentage(0)
882 +
883 + cp_list = self._get_all_cp(filters)
884 +- nb_cp = float(len(cp_list))
885 +- cp_processed = 0.0
886 ++ progress = PackagekitProgress()
887 ++ progress.set_steps(compute_equal_steps(cp_list))
888 ++ self.percentage(progress.percent)
889 +
890 + reg_expr = []
891 + for pkg in pkgs:
892 +@@ -1584,8 +1591,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
893 + for cpv in self._get_all_cpv(cp, filters):
894 + self._package(cpv)
895 +
896 +- cp_processed += 100.0
897 +- self.percentage(int(cp_processed / nb_cp))
898 ++ progress.step()
899 ++ self.percentage(progress.percent)
900 +
901 + self.percentage(100)
902 +
903 +@@ -1593,13 +1600,14 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
904 + # NOTES: very bad performance
905 + self.status(STATUS_QUERY)
906 + self.allow_cancel(True)
907 +- self.percentage(0)
908 +
909 + cp_list = self._get_all_cp(filters)
910 +- nb_cp = float(len(cp_list))
911 +- cp_processed = 0.0
912 + search_list = self._get_search_list(keys)
913 +
914 ++ progress = PackagekitProgress()
915 ++ progress.set_steps(compute_equal_steps(cp_list))
916 ++ self.percentage(progress.percent)
917 ++
918 + for cp in cp_list:
919 + # unfortunatelly, everything is related to cpv, not cp
920 + # can't filter cp
921 +@@ -1635,8 +1643,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
922 + for cpv in cpv_list:
923 + self._package(cpv)
924 +
925 +- cp_processed += 100.0
926 +- self.percentage(int(cp_processed / nb_cp))
927 ++ progress.step()
928 ++ self.percentage(progress.percent)
929 +
930 + self.percentage(100)
931 +
932 +@@ -1647,7 +1655,6 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
933 + # - newest: as only installed, by himself
934 + self.status(STATUS_QUERY)
935 + self.allow_cancel(True)
936 +- self.percentage(0)
937 +
938 + if FILTER_NOT_INSTALLED in filters:
939 + self.error(ERROR_CANNOT_GET_FILELIST,
940 +@@ -1655,10 +1662,12 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
941 + return
942 +
943 + cpv_list = self.pvar.vardb.cpv_all()
944 +- nb_cpv = 0.0
945 +- cpv_processed = 0.0
946 + is_full_path = True
947 +
948 ++ progress = PackagekitProgress()
949 ++ progress.set_steps(compute_equal_steps(cpv_list))
950 ++ self.percentage(progress.percent)
951 ++
952 + count = 0
953 + values_len = len(values)
954 + for key in values:
955 +@@ -1679,8 +1688,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
956 + self._package(cpv)
957 + break
958 +
959 +- count += 1
960 +- self.percentage(float(count) / values_len)
961 ++ progress.step()
962 ++ self.percentage(progress.percent)
963 +
964 + self.percentage(100)
965 +
966 +@@ -1688,11 +1697,12 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
967 + # TODO: filter unknown groups before searching ? (optimization)
968 + self.status(STATUS_QUERY)
969 + self.allow_cancel(True)
970 +- self.percentage(0)
971 +
972 + cp_list = self._get_all_cp(filters)
973 +- nb_cp = float(len(cp_list))
974 +- cp_processed = 0.0
975 ++
976 ++ progress = PackagekitProgress()
977 ++ progress.set_steps(compute_equal_steps(cp_list))
978 ++ self.percentage(progress.percent)
979 +
980 + for cp in cp_list:
981 + for group in groups:
982 +@@ -1700,8 +1710,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
983 + for cpv in self._get_all_cpv(cp, filters):
984 + self._package(cpv)
985 +
986 +- cp_processed += 100.0
987 +- self.percentage(int(cp_processed / nb_cp))
988 ++ progress.step()
989 ++ self.percentage(progress.percent)
990 +
991 + self.percentage(100)
992 +
993 +@@ -1711,7 +1721,6 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
994 + # keys contain more than one category name, no results can be found
995 + self.status(STATUS_QUERY)
996 + self.allow_cancel(True)
997 +- self.percentage(0)
998 +
999 + categories = []
1000 + for k in keys_list[:]:
1001 +@@ -1736,8 +1745,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1002 + search_list.append(re.compile(k, re.IGNORECASE))
1003 +
1004 + cp_list = self._get_all_cp(filters)
1005 +- nb_cp = float(len(cp_list))
1006 +- cp_processed = 0.0
1007 ++
1008 ++ progress = PackagekitProgress()
1009 ++ progress.set_steps(compute_equal_steps(cp_list))
1010 ++ self.percentage(progress.percent)
1011 +
1012 + for cp in cp_list:
1013 + if category_filter:
1014 +@@ -1757,8 +1768,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1015 + for cpv in self._get_all_cpv(cp, filters):
1016 + self._package(cpv)
1017 +
1018 +- cp_processed += 100.0
1019 +- self.percentage(int(cp_processed / nb_cp))
1020 ++ progress.step()
1021 ++ self.percentage(progress.percent)
1022 +
1023 + self.percentage(100)
1024 +
1025 +--
1026 +2.6.3
1027 +
1028
1029 diff --git a/app-admin/packagekit-base/files/0007-Simplify-_get_metadata.patch b/app-admin/packagekit-base/files/0007-Simplify-_get_metadata.patch
1030 deleted file mode 100644
1031 index ed158fe..0000000
1032 --- a/app-admin/packagekit-base/files/0007-Simplify-_get_metadata.patch
1033 +++ /dev/null
1034 @@ -1,42 +0,0 @@
1035 -From fa38519e8b0785199a1181e5cc7287190a29fc44 Mon Sep 17 00:00:00 2001
1036 -From: Gilles Dartiguelongue <eva@g.o>
1037 -Date: Sun, 3 May 2015 17:54:15 +0200
1038 -Subject: [PATCH 07/12] Simplify _get_metadata
1039 -
1040 ----
1041 - backends/portage/portageBackend.py | 16 ++++++----------
1042 - 1 file changed, 6 insertions(+), 10 deletions(-)
1043 -
1044 -diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
1045 -index 773256a..fc2d45a 100755
1046 ---- a/backends/portage/portageBackend.py
1047 -+++ b/backends/portage/portageBackend.py
1048 -@@ -497,19 +497,15 @@ class PackageKitPortageMixin(object):
1049 - If in_dict is True, metadata is returned in a dict object.
1050 - If add_cache_keys is True, cached keys are added to keys in parameter.
1051 - '''
1052 -- if self._is_installed(cpv):
1053 -- aux_get = self.pvar.vardb.aux_get
1054 -- if add_cache_keys:
1055 -- keys.extend(list(self.pvar.vardb._aux_cache_keys))
1056 -- else:
1057 -- aux_get = self.pvar.portdb.aux_get
1058 -- if add_cache_keys:
1059 -- keys.extend(list(self.pvar.portdb._aux_cache_keys))
1060 -+ db = self.pvar.vardb if self._is_installed(cpv) else self.pvar.portdb
1061 -+
1062 -+ if add_cache_keys:
1063 -+ keys.extend(list(db._aux_cache_keys))
1064 -
1065 - if in_dict:
1066 -- return dict(izip(keys, aux_get(cpv, keys)))
1067 -+ return dict(izip(keys, db.aux_get(cpv, keys)))
1068 - else:
1069 -- return aux_get(cpv, keys)
1070 -+ return db.aux_get(cpv, keys)
1071 -
1072 - def _get_size(self, cpv):
1073 - '''
1074 ---
1075 -2.3.6
1076 -
1077
1078 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
1079 new file mode 100644
1080 index 0000000..ca78c62
1081 --- /dev/null
1082 +++ b/app-admin/packagekit-base/files/0007-python-make-PackagekitProgress-an-Iterable.patch
1083 @@ -0,0 +1,56 @@
1084 +From eb52dc157c5dbda9630b448dab06fb05cdf1060c Mon Sep 17 00:00:00 2001
1085 +From: Gilles Dartiguelongue <eva@g.o>
1086 +Date: Sun, 6 Sep 2015 15:26:05 +0200
1087 +Subject: [PATCH 7/9] python: make PackagekitProgress an Iterable
1088 +
1089 +---
1090 + lib/python/packagekit/progress.py | 17 ++++++++++++++++-
1091 + 1 file changed, 16 insertions(+), 1 deletion(-)
1092 +
1093 +diff --git a/lib/python/packagekit/progress.py b/lib/python/packagekit/progress.py
1094 +index 7a5d363..d0c0c26 100644
1095 +--- a/lib/python/packagekit/progress.py
1096 ++++ b/lib/python/packagekit/progress.py
1097 +@@ -17,7 +17,13 @@
1098 + # Copyright (C) 2008
1099 + # Richard Hughes <richard@×××××××.com>
1100 +
1101 +-class PackagekitProgress:
1102 ++try:
1103 ++ from collections import Iterable
1104 ++except ImportError:
1105 ++ from collections.abc import Iterable
1106 ++
1107 ++
1108 ++class PackagekitProgress(Iterable):
1109 + '''
1110 + Progress class there controls the total progress of a transaction
1111 + the transaction is divided in n milestones. the class contains
1112 +@@ -42,6 +48,7 @@ class PackagekitProgress:
1113 + #TODO: Add support for elapsed/remaining time
1114 +
1115 + def __init__(self):
1116 ++ super(PackagekitProgress, self).__init__()
1117 + self.percent = 0
1118 + self.steps = []
1119 + self.current_step = 0
1120 +@@ -68,8 +75,16 @@ class PackagekitProgress:
1121 + self.current_step += 1
1122 + self.percent = self.steps[self.current_step]
1123 + else:
1124 ++ self.current_step = len(self.steps)
1125 + self.percent = 100
1126 +
1127 ++ def __iter__(self):
1128 ++ while self.current_step < len(self.steps):
1129 ++ yield self.percent
1130 ++ self.step()
1131 ++
1132 ++ raise StopIteration
1133 ++
1134 + def _update_percent(self):
1135 + '''
1136 + Increment percentage based on current step
1137 +--
1138 +2.6.3
1139 +
1140
1141 diff --git a/app-admin/packagekit-base/files/0008-Remove-useless-instruction.patch b/app-admin/packagekit-base/files/0008-Remove-useless-instruction.patch
1142 deleted file mode 100644
1143 index e568727..0000000
1144 --- a/app-admin/packagekit-base/files/0008-Remove-useless-instruction.patch
1145 +++ /dev/null
1146 @@ -1,24 +0,0 @@
1147 -From 775b16156373b08a7bdd50c446d740051db93a8d Mon Sep 17 00:00:00 2001
1148 -From: Gilles Dartiguelongue <eva@g.o>
1149 -Date: Sun, 3 May 2015 14:27:08 +0200
1150 -Subject: [PATCH 08/12] Remove useless instruction
1151 -
1152 ----
1153 - backends/portage/portageBackend.py | 1 -
1154 - 1 file changed, 1 deletion(-)
1155 -
1156 -diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
1157 -index fc2d45a..4ca4fb5 100755
1158 ---- a/backends/portage/portageBackend.py
1159 -+++ b/backends/portage/portageBackend.py
1160 -@@ -519,7 +519,6 @@ class PackageKitPortageMixin(object):
1161 - size = self._get_metadata(cpv, ["SIZE"])[0]
1162 - size = int(size) if size else 0
1163 - else:
1164 -- self
1165 - metadata = self._get_metadata(cpv, ["IUSE", "SLOT"], in_dict=True)
1166 -
1167 - package = _emerge.Package.Package(
1168 ---
1169 -2.3.6
1170 -
1171
1172 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
1173 new file mode 100644
1174 index 0000000..b15df47
1175 --- /dev/null
1176 +++ b/app-admin/packagekit-base/files/0008-python-set-steps-on-PackagekitProgress-instanciation.patch
1177 @@ -0,0 +1,49 @@
1178 +From 3c046f4586605f51a55c82f81861adcf5e408488 Mon Sep 17 00:00:00 2001
1179 +From: Gilles Dartiguelongue <eva@g.o>
1180 +Date: Sun, 6 Sep 2015 16:10:32 +0200
1181 +Subject: [PATCH 8/9] python: set steps on PackagekitProgress instanciation
1182 +
1183 +---
1184 + lib/python/packagekit/progress.py | 18 ++++++++----------
1185 + 1 file changed, 8 insertions(+), 10 deletions(-)
1186 +
1187 +diff --git a/lib/python/packagekit/progress.py b/lib/python/packagekit/progress.py
1188 +index d0c0c26..b5c7e52 100644
1189 +--- a/lib/python/packagekit/progress.py
1190 ++++ b/lib/python/packagekit/progress.py
1191 +@@ -34,24 +34,22 @@ class PackagekitProgress(Iterable):
1192 + from packagekit import PackagekitProgress
1193 +
1194 + steps = [10, 30, 50, 70] # Milestones in %
1195 +- progress = PackagekitProgress()
1196 +- progress.set_steps(steps)
1197 +- for milestone in range(len(steps)):
1198 ++ progress = PackagekitProgress(steps)
1199 ++ for milestone in progress:
1200 + # do the action is this step
1201 + for i in range(100):
1202 + # do some action
1203 +- print "progress : %s " % progress.percent
1204 +- progress.step() # step to next milestone
1205 +-
1206 ++ print "progress : %s " % milestone
1207 + '''
1208 +
1209 + #TODO: Add support for elapsed/remaining time
1210 +
1211 +- def __init__(self):
1212 ++ def __init__(self, steps=None):
1213 + super(PackagekitProgress, self).__init__()
1214 +- self.percent = 0
1215 +- self.steps = []
1216 +- self.current_step = 0
1217 ++ if not steps:
1218 ++ self.reset()
1219 ++ else:
1220 ++ self.set_steps(steps)
1221 +
1222 + def set_steps(self, steps):
1223 + '''
1224 +--
1225 +2.6.3
1226 +
1227
1228 diff --git a/app-admin/packagekit-base/files/0009-Cosmetics.patch b/app-admin/packagekit-base/files/0009-Cosmetics.patch
1229 deleted file mode 100644
1230 index e3bf255..0000000
1231 --- a/app-admin/packagekit-base/files/0009-Cosmetics.patch
1232 +++ /dev/null
1233 @@ -1,800 +0,0 @@
1234 -From 53ff394fdadfccc90f24d35f3c6333d853825a74 Mon Sep 17 00:00:00 2001
1235 -From: Gilles Dartiguelongue <eva@g.o>
1236 -Date: Sun, 3 May 2015 14:26:20 +0200
1237 -Subject: [PATCH 09/12] Cosmetics
1238 -
1239 ----
1240 - backends/portage/portageBackend.py | 348 ++++++++++++++++++++-----------------
1241 - 1 file changed, 191 insertions(+), 157 deletions(-)
1242 -
1243 -diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
1244 -index 4ca4fb5..9775466 100755
1245 ---- a/backends/portage/portageBackend.py
1246 -+++ b/backends/portage/portageBackend.py
1247 -@@ -84,8 +84,8 @@ class PortagePackageGroups(dict):
1248 - 'name': "Office",
1249 - 'description': "Applications used in office environments",
1250 - 'categories': ['app-office', 'app-pda', 'app-mobilephone',
1251 -- 'app-cdr', 'app-antivirus', 'app-laptop', 'mail-',
1252 -- ],
1253 -+ 'app-cdr', 'app-antivirus', 'app-laptop',
1254 -+ 'mail-'],
1255 - },
1256 - 'development': {
1257 - 'name': "Development",
1258 -@@ -104,56 +104,47 @@ class PortagePackageGroups(dict):
1259 - },
1260 - 'gnome': {
1261 - 'name': "GNOME Desktop",
1262 -- 'description': \
1263 -- "Applications and libraries for the GNOME Desktop",
1264 -+ 'description': "Applications and libraries for the GNOME Desktop",
1265 - 'categories': ['gnome-'],
1266 - },
1267 - 'kde': {
1268 - 'name': "KDE Desktop",
1269 -- 'description': \
1270 -- "Applications and libraries for the KDE Desktop",
1271 -+ 'description': "Applications and libraries for the KDE Desktop",
1272 - 'categories': ['kde-'],
1273 - },
1274 - 'xfce': {
1275 - 'name': "XFCE Desktop",
1276 -- 'description': \
1277 -- "Applications and libraries for the XFCE Desktop",
1278 -+ 'description': "Applications and libraries for the XFCE Desktop",
1279 - 'categories': ['xfce-'],
1280 - },
1281 - 'lxde': {
1282 - 'name': "LXDE Desktop",
1283 -- 'description': \
1284 -- "Applications and libraries for the LXDE Desktop",
1285 -+ 'description': "Applications and libraries for the LXDE Desktop",
1286 - 'categories': ['lxde-'],
1287 - },
1288 - 'multimedia': {
1289 - 'name': "Multimedia",
1290 -- 'description': \
1291 -- "Applications and libraries for Multimedia",
1292 -+ 'description': "Applications and libraries for Multimedia",
1293 - 'categories': ['media-'],
1294 - },
1295 - 'networking': {
1296 - 'name': "Networking",
1297 -- 'description': \
1298 -- "Applications and libraries for Networking",
1299 -+ 'description': "Applications and libraries for Networking",
1300 - 'categories': ['net-', 'www-'],
1301 - },
1302 - 'science': {
1303 - 'name': "Science",
1304 -- 'description': \
1305 -- "Scientific applications and libraries",
1306 -+ 'description': "Scientific applications and libraries",
1307 - 'categories': ['sci-'],
1308 - },
1309 - 'security': {
1310 - 'name': "Security",
1311 -- 'description': \
1312 -- "Security orientend applications",
1313 -+ 'description': "Security orientend applications",
1314 - 'categories': ['app-antivirus', 'net-analyzer', 'net-firewall'],
1315 - },
1316 - 'x11': {
1317 - 'name': "X11",
1318 -- 'description': \
1319 -- "Applications and libraries for X11",
1320 -+ 'description': "Applications and libraries for X11",
1321 - 'categories': ['x11-'],
1322 - },
1323 - }
1324 -@@ -179,7 +170,7 @@ class PortageBridge():
1325 -
1326 - def update(self):
1327 - self.settings, self.trees, self.mtimedb = \
1328 -- _emerge.actions.load_emerge_config()
1329 -+ _emerge.actions.load_emerge_config()
1330 - self.vardb = self.trees[self.settings['ROOT']]['vartree'].dbapi
1331 - self.portdb = self.trees[self.settings['ROOT']]['porttree'].dbapi
1332 - self.root_config = self.trees[self.settings['ROOT']]['root_config']
1333 -@@ -299,8 +290,8 @@ class PackageKitPortageMixin(object):
1334 - Return PackageKit group belonging to given Portage package.
1335 - """
1336 - category = portage.versions.catsplit(cp)[0]
1337 -- group_data = [key for key, data in self._get_portage_groups().items() \
1338 -- if category in data['categories']]
1339 -+ group_data = [key for key, data in self._get_portage_groups().items()
1340 -+ if category in data['categories']]
1341 - try:
1342 - generic_group_name = group_data.pop(0)
1343 - except IndexError:
1344 -@@ -341,9 +332,12 @@ class PackageKitPortageMixin(object):
1345 - def _get_real_license_str(self, cpv, metadata):
1346 - # use conditionals info (w/ USE) in LICENSE and remove ||
1347 - ebuild_settings = self._get_ebuild_settings(cpv, metadata)
1348 -- license = set(portage.flatten(portage.dep.use_reduce(
1349 -- portage.dep.paren_reduce(metadata["LICENSE"]),
1350 -- uselist=ebuild_settings.get("USE", "").split())))
1351 -+ license = set(portage.flatten(
1352 -+ portage.dep.use_reduce(
1353 -+ portage.dep.paren_reduce(metadata["LICENSE"]),
1354 -+ uselist=ebuild_settings.get("USE", "").split()
1355 -+ )
1356 -+ ))
1357 - license.discard('||')
1358 - return ' '.join(license)
1359 -
1360 -@@ -353,10 +347,12 @@ class PackageKitPortageMixin(object):
1361 - self.pvar.settings.get('CONFIG_PROTECT', '').split()))
1362 -
1363 - if result:
1364 -- message = "Some configuration files need updating."
1365 -- message += ";You should use Gentoo's tools to update them (dispatch-conf)"
1366 -- message += ";If you can't do that, ask your system administrator."
1367 -- self.message(MESSAGE_CONFIG_FILES_CHANGED, message)
1368 -+ self.message(
1369 -+ MESSAGE_CONFIG_FILES_CHANGED,
1370 -+ "Some configuration files need updating."
1371 -+ ";You should use Gentoo's tools to update them (dispatch-conf)"
1372 -+ ";If you can't do that, ask your system administrator."
1373 -+ )
1374 -
1375 - def _get_restricted_fetch_files(self, cpv, metadata):
1376 - '''
1377 -@@ -374,28 +370,32 @@ class PackageKitPortageMixin(object):
1378 - ebuild_settings = self._get_ebuild_settings(cpv, metadata)
1379 -
1380 - files = self.pvar.portdb.getFetchMap(cpv,
1381 -- ebuild_settings['USE'].split())
1382 -+ ebuild_settings['USE'].split())
1383 -
1384 - for f in files:
1385 - file_path = os.path.join(ebuild_settings["DISTDIR"], f)
1386 - if not os.access(file_path, os.F_OK):
1387 - missing_files.append([file_path, files[f]])
1388 -
1389 -- if len(missing_files) > 0:
1390 -- return missing_files
1391 --
1392 -- return None
1393 -+ return missing_files if missing_files else None
1394 -
1395 - def _check_fetch_restrict(self, packages_list):
1396 -- for p in packages_list:
1397 -- if 'fetch' in p.metadata['RESTRICT']:
1398 -- files = self._get_restricted_fetch_files(p.cpv, p.metadata)
1399 -- if files:
1400 -- message = "Package %s can't download some files." % p.cpv
1401 -- message += ";Please, download manually the followonig file(s):"
1402 -- for x in files:
1403 -- message += ";- %s then copy it to %s" % (' '.join(x[1]), x[0])
1404 -- self.error(ERROR_RESTRICTED_DOWNLOAD, message)
1405 -+ for pkg in packages_list:
1406 -+ if 'fetch' not in pkg.metadata['RESTRICT']:
1407 -+ continue
1408 -+
1409 -+ files = self._get_restricted_fetch_files(pkg.cpv, pkg.metadata)
1410 -+ if files:
1411 -+ message = (
1412 -+ "Package {0} can't download some files."
1413 -+ ";Please, download manually the following file(s): "
1414 -+ ).format(pkg.cpv)
1415 -+ message += ''.join([
1416 -+ ";- {0} then copy it to {1}"
1417 -+ .format(' '.join(file_info[1]), file_info[0])
1418 -+ for file_info in files
1419 -+ ])
1420 -+ self.error(ERROR_RESTRICTED_DOWNLOAD, message)
1421 -
1422 - def _elog_listener(self, settings, key, logentries, fulltext):
1423 - '''
1424 -@@ -440,12 +440,12 @@ class PackageKitPortageMixin(object):
1425 - # EAPI-2 compliant (at least)
1426 - # 'other' phase is ignored except this one, every phase should be there
1427 - if self._error_phase in ("setup", "unpack", "prepare", "configure",
1428 -- "nofetch", "config", "info"):
1429 -+ "nofetch", "config", "info"):
1430 - error_type = ERROR_PACKAGE_FAILED_TO_CONFIGURE
1431 - elif self._error_phase in ("compile", "test"):
1432 - error_type = ERROR_PACKAGE_FAILED_TO_BUILD
1433 - elif self._error_phase in ("install", "preinst", "postinst",
1434 -- "package"):
1435 -+ "package"):
1436 - error_type = ERROR_PACKAGE_FAILED_TO_INSTALL
1437 - elif self._error_phase in ("prerm", "postrm"):
1438 - error_type = ERROR_PACKAGE_FAILED_TO_REMOVE
1439 -@@ -457,8 +457,8 @@ class PackageKitPortageMixin(object):
1440 - def _get_file_list(self, cpv):
1441 - cat, pv = portage.versions.catsplit(cpv)
1442 - db = portage.dblink(cat, pv, self.pvar.settings['ROOT'],
1443 -- self.pvar.settings, treetype="vartree",
1444 -- vartree=self.pvar.vardb)
1445 -+ self.pvar.settings, treetype="vartree",
1446 -+ vartree=self.pvar.vardb)
1447 -
1448 - contents = db.getcontents()
1449 - return contents.keys() if contents else []
1450 -@@ -470,7 +470,7 @@ class PackageKitPortageMixin(object):
1451 - returns -1 if cpv1 < cpv2
1452 - '''
1453 - return portage.versions.pkgcmp(portage.versions.pkgsplit(cpv1),
1454 -- portage.versions.pkgsplit(cpv2))
1455 -+ portage.versions.pkgsplit(cpv2))
1456 -
1457 - def _get_newest_cpv(self, cpv_list, installed):
1458 - newer = ""
1459 -@@ -491,7 +491,7 @@ class PackageKitPortageMixin(object):
1460 -
1461 - return newer
1462 -
1463 -- def _get_metadata(self, cpv, keys, in_dict = False, add_cache_keys = False):
1464 -+ def _get_metadata(self, cpv, keys, in_dict=False, add_cache_keys=False):
1465 - '''
1466 - This function returns required metadata.
1467 - If in_dict is True, metadata is returned in a dict object.
1468 -@@ -522,15 +522,15 @@ class PackageKitPortageMixin(object):
1469 - metadata = self._get_metadata(cpv, ["IUSE", "SLOT"], in_dict=True)
1470 -
1471 - package = _emerge.Package.Package(
1472 -- type_name="ebuild",
1473 -- built=False,
1474 -- installed=False,
1475 -- root_config=self.pvar.root_config,
1476 -- cpv=cpv,
1477 -- metadata=metadata)
1478 --
1479 -+ type_name="ebuild",
1480 -+ built=False,
1481 -+ installed=False,
1482 -+ root_config=self.pvar.root_config,
1483 -+ cpv=cpv,
1484 -+ metadata=metadata
1485 -+ )
1486 - fetch_file = self.pvar.portdb.getfetchsizes(package[2],
1487 -- package.use.enabled)
1488 -+ package.use.enabled)
1489 - size = sum(fetch_file)
1490 -
1491 - return size
1492 -@@ -668,10 +668,11 @@ class PackageKitPortageMixin(object):
1493 -
1494 - if len(ret) < 4:
1495 - self.error(ERROR_PACKAGE_ID_INVALID,
1496 -- "The package id %s does not contain 4 fields" % pkgid)
1497 -+ "The package id %s does not contain 4 fields" % pkgid)
1498 - if '/' not in ret[0]:
1499 - self.error(ERROR_PACKAGE_ID_INVALID,
1500 -- "The first field of the package id must contain a category")
1501 -+ "The first field of the package id must contain"
1502 -+ " a category")
1503 -
1504 - # remove slot info from version field
1505 - version = ret[1].split(':')[0]
1506 -@@ -683,8 +684,9 @@ class PackageKitPortageMixin(object):
1507 - Transform the cpv (portage) to a package id (packagekit)
1508 - '''
1509 - package, version, rev = portage.versions.pkgsplit(cpv)
1510 -- pkg_keywords, repo, slot = self._get_metadata(cpv,
1511 -- ["KEYWORDS", "repository", "SLOT"])
1512 -+ pkg_keywords, repo, slot = self._get_metadata(
1513 -+ cpv, ["KEYWORDS", "repository", "SLOT"]
1514 -+ )
1515 -
1516 - # filter accepted keywords
1517 - keywords = list(set(pkg_keywords.split()).intersection(
1518 -@@ -694,7 +696,8 @@ class PackageKitPortageMixin(object):
1519 - # if no keywords, check in package.keywords
1520 - if not keywords:
1521 - key_dict = self.pvar.settings.pkeywordsdict.get(
1522 -- portage.dep.dep_getkey(cpv))
1523 -+ portage.dep.dep_getkey(cpv)
1524 -+ )
1525 - if key_dict:
1526 - for keys in key_dict.values():
1527 - keyword.extend(keys)
1528 -@@ -702,7 +705,7 @@ class PackageKitPortageMixin(object):
1529 - if not keywords:
1530 - keywords.append("no keywords")
1531 - self.message(MESSAGE_UNKNOWN,
1532 -- "No keywords have been found for %s" % cpv)
1533 -+ "No keywords have been found for %s" % cpv)
1534 -
1535 - # don't want to see -r0
1536 - if rev != "r0":
1537 -@@ -728,19 +731,23 @@ class PackageKitPortageMixin(object):
1538 - myopts["--selective"] = True
1539 - myopts["--deep"] = True
1540 -
1541 -- myparams = _emerge.create_depgraph_params.create_depgraph_params(
1542 -- myopts, "remove")
1543 -+ myparams = _emerge.create_depgraph_params \
1544 -+ .create_depgraph_params(myopts, "remove")
1545 - depgraph = _emerge.depgraph.depgraph(self.pvar.settings,
1546 -- self.pvar.trees, myopts, myparams, None)
1547 -+ self.pvar.trees, myopts,
1548 -+ myparams, None)
1549 -
1550 - # TODO: atm, using FILTER_INSTALLED because it's quicker
1551 - # and we don't want to manage non-installed packages
1552 - for cp in self._get_all_cp([FILTER_INSTALLED]):
1553 - for cpv in self._get_all_cpv(cp, [FILTER_INSTALLED]):
1554 - depgraph._dynamic_config._dep_stack.append(
1555 -- _emerge.Dependency.Dependency(
1556 -- atom=portage.dep.Atom('=' + cpv),
1557 -- root=self.pvar.settings["ROOT"], parent=None))
1558 -+ _emerge.Dependency.Dependency(
1559 -+ atom=portage.dep.Atom('=' + cpv),
1560 -+ root=self.pvar.settings["ROOT"],
1561 -+ parent=None
1562 -+ )
1563 -+ )
1564 -
1565 - if not depgraph._complete_graph():
1566 - self.error(ERROR_INTERNAL_ERROR, "Error when generating depgraph")
1567 -@@ -851,23 +858,24 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1568 - cpv = self._id_to_cpv(pkg)
1569 - if not self._is_cpv_valid(cpv):
1570 - self.error(ERROR_PACKAGE_NOT_FOUND,
1571 -- "Package %s was not found" % pkg)
1572 -+ "Package %s was not found" % pkg)
1573 - continue
1574 - cpv_input.append('=' + cpv)
1575 -
1576 - myopts = {}
1577 - myopts["--selective"] = True
1578 - myopts["--deep"] = True
1579 -- myparams = _emerge.create_depgraph_params.create_depgraph_params(
1580 -- myopts, "")
1581 -+ myparams = _emerge.create_depgraph_params \
1582 -+ .create_depgraph_params(myopts, "")
1583 -
1584 -- depgraph = _emerge.depgraph.depgraph(
1585 -- self.pvar.settings, self.pvar.trees, myopts, myparams, None)
1586 -+ depgraph = _emerge.depgraph.depgraph(self.pvar.settings,
1587 -+ self.pvar.trees, myopts,
1588 -+ myparams, None)
1589 - retval, fav = depgraph.select_files(cpv_input)
1590 -
1591 - if not retval:
1592 - self.error(ERROR_DEP_RESOLUTION_FAILED,
1593 -- "Wasn't able to get dependency graph")
1594 -+ "Wasn't able to get dependency graph")
1595 - return
1596 -
1597 - def _add_children_to_list(cpv_list, node):
1598 -@@ -937,18 +945,23 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1599 -
1600 - if not self._is_cpv_valid(cpv):
1601 - self.error(ERROR_PACKAGE_NOT_FOUND,
1602 -- "Package %s was not found" % pkg)
1603 -+ "Package %s was not found" % pkg)
1604 - continue
1605 -
1606 -- metadata = self._get_metadata(cpv,
1607 -- ["DESCRIPTION", "HOMEPAGE", "IUSE", "LICENSE", "SLOT"],
1608 -- in_dict=True)
1609 -- license = self._get_real_license_str(cpv, metadata)
1610 -+ metadata = self._get_metadata(
1611 -+ cpv, ["DESCRIPTION", "HOMEPAGE", "IUSE", "LICENSE", "SLOT"],
1612 -+ in_dict=True
1613 -+ )
1614 -
1615 -- self.details(self._cpv_to_id(cpv), '', license,
1616 -+ self.details(
1617 -+ self._cpv_to_id(cpv),
1618 -+ '',
1619 -+ self._get_real_license_str(cpv, metadata),
1620 - self._get_pk_group(cpv),
1621 -- metadata["DESCRIPTION"], metadata["HOMEPAGE"],
1622 -- self._get_size(cpv))
1623 -+ metadata["DESCRIPTION"],
1624 -+ metadata["HOMEPAGE"],
1625 -+ self._get_size(cpv)
1626 -+ )
1627 -
1628 - pkg_processed += 100.0
1629 - self.percentage(int(pkg_processed/nb_pkg))
1630 -@@ -968,19 +981,16 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1631 -
1632 - if not self._is_cpv_valid(cpv):
1633 - self.error(ERROR_PACKAGE_NOT_FOUND,
1634 -- "Package %s was not found" % pkg)
1635 -+ "Package %s was not found" % pkg)
1636 - continue
1637 -
1638 - if not self._is_installed(cpv):
1639 - self.error(ERROR_CANNOT_GET_FILELIST,
1640 -- "get-files is only available for installed packages")
1641 -+ "get-files is only available for installed"
1642 -+ " packages")
1643 - continue
1644 -
1645 -- files = self._get_file_list(cpv)
1646 -- files = sorted(files)
1647 -- files = ";".join(files)
1648 --
1649 -- self.files(pkg, files)
1650 -+ self.files(pkg, ';'.join(sorted(self._get_file_list(cpv))))
1651 -
1652 - pkg_processed += 100.0
1653 - self.percentage(int(pkg_processed/nb_pkg))
1654 -@@ -1055,7 +1065,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1655 -
1656 - if FILTER_NOT_INSTALLED in filters:
1657 - self.error(ERROR_CANNOT_GET_REQUIRES,
1658 -- "required-by returns only installed packages at the moment")
1659 -+ "required-by returns only installed packages"
1660 -+ " at the moment")
1661 - return
1662 -
1663 - for pkg in pkgs:
1664 -@@ -1063,11 +1074,12 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1665 -
1666 - if not self._is_cpv_valid(cpv):
1667 - self.error(ERROR_PACKAGE_NOT_FOUND,
1668 -- "Package %s was not found" % pkg)
1669 -+ "Package %s was not found" % pkg)
1670 - continue
1671 - if not self._is_installed(cpv):
1672 - self.error(ERROR_CANNOT_GET_REQUIRES,
1673 -- "required-by is only available for installed packages at the moment")
1674 -+ "required-by is only available for installed"
1675 -+ " packages at the moment")
1676 - continue
1677 -
1678 - cpv_input.append(cpv)
1679 -@@ -1105,7 +1117,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1680 - cpv = self._id_to_cpv(pkg)
1681 -
1682 - if not self.pvar.portdb.cpv_exists(cpv):
1683 -- self.message(MESSAGE_COULD_NOT_FIND_PACKAGE, "could not find %s" % pkg)
1684 -+ self.message(MESSAGE_COULD_NOT_FIND_PACKAGE,
1685 -+ "could not find %s" % pkg)
1686 -
1687 - for cpv in self.pvar.vardb.match(portage.versions.pkgsplit(cpv)[0]):
1688 - updates.append(cpv)
1689 -@@ -1117,9 +1130,11 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1690 - issued = ""
1691 - updated = ""
1692 -
1693 -- self.update_detail(pkg, updates, obsoletes, vendor_url, bugzilla_url,
1694 -- cve_url, "none", "No update text", "No ChangeLog",
1695 -- UPDATE_STATE_STABLE, issued, updated)
1696 -+ self.update_detail(
1697 -+ pkg, updates, obsoletes, vendor_url, bugzilla_url, cve_url,
1698 -+ "none", "No update text", "No ChangeLog", UPDATE_STATE_STABLE,
1699 -+ issued, updated
1700 -+ )
1701 -
1702 - def get_updates(self, filters):
1703 - # NOTES:
1704 -@@ -1150,7 +1165,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1705 - # get system and world packages
1706 - for s in ["system", "world"]:
1707 - sets = self._get_internal_package_set_class()(
1708 -- initial_atoms=self.pvar.root_config.setconfig.getSetAtoms(s))
1709 -+ initial_atoms=self.pvar.root_config.setconfig.getSetAtoms(s)
1710 -+ )
1711 - for atom in sets:
1712 - update_candidates.append(atom.cp)
1713 -
1714 -@@ -1214,8 +1230,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1715 - cpv_downgra[cp] = dict_down
1716 -
1717 - # get security updates
1718 -- for atom in self._get_internal_package_set_class()(
1719 -- initial_atoms=self.pvar.root_config.setconfig.getSetAtoms("security")):
1720 -+ for atom in self._get_internal_package_set_class(
1721 -+ initial_atoms=self.pvar.root_config.setconfig
1722 -+ .getSetAtoms("security")
1723 -+ ):
1724 - # send update message and remove atom from cpv_updates
1725 - if atom.cp in cpv_updates:
1726 - slot = self._get_metadata(atom.cpv, ["SLOT"])[0]
1727 -@@ -1269,12 +1287,12 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1728 -
1729 - if not self._is_cpv_valid(cpv):
1730 - self.error(ERROR_PACKAGE_NOT_FOUND,
1731 -- "Package %s was not found" % pkg)
1732 -+ "Package %s was not found" % pkg)
1733 - continue
1734 -
1735 - if self._is_installed(cpv):
1736 - self.error(ERROR_PACKAGE_ALREADY_INSTALLED,
1737 -- "Package %s is already installed" % pkg)
1738 -+ "Package %s is already installed" % pkg)
1739 - continue
1740 -
1741 - cpv_list.append('=' + cpv)
1742 -@@ -1283,7 +1301,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1743 - # but better to show it after important errors
1744 - if only_trusted:
1745 - self.error(ERROR_MISSING_GPG_SIGNATURE,
1746 -- "Portage backend does not support GPG signature")
1747 -+ "Portage backend does not support GPG signature")
1748 - return
1749 -
1750 - # creating installation depgraph
1751 -@@ -1292,17 +1310,18 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1752 - myopts['--fetchonly'] = True
1753 -
1754 - favorites = []
1755 -- myparams = _emerge.create_depgraph_params.create_depgraph_params(
1756 -- myopts, "")
1757 -+ myparams = _emerge.create_depgraph_params \
1758 -+ .create_depgraph_params(myopts, "")
1759 -
1760 - self.status(STATUS_DEP_RESOLVE)
1761 -
1762 - depgraph = _emerge.depgraph.depgraph(self.pvar.settings,
1763 -- self.pvar.trees, myopts, myparams, None)
1764 -+ self.pvar.trees, myopts,
1765 -+ myparams, None)
1766 - retval, favorites = depgraph.select_files(cpv_list)
1767 - if not retval:
1768 - self.error(ERROR_DEP_RESOLUTION_FAILED,
1769 -- "Wasn't able to get dependency graph")
1770 -+ "Wasn't able to get dependency graph")
1771 - return
1772 -
1773 - # check fetch restrict, can stop the function via error signal
1774 -@@ -1319,9 +1338,11 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1775 - try:
1776 - self._block_output()
1777 - # compiling/installing
1778 -- mergetask = _emerge.Scheduler.Scheduler(self.pvar.settings,
1779 -- self.pvar.trees, self.pvar.mtimedb, myopts, None,
1780 -- depgraph.altlist(), favorites, depgraph.schedulerGraph())
1781 -+ mergetask = _emerge.Scheduler.Scheduler(
1782 -+ self.pvar.settings, self.pvar.trees, self.pvar.mtimedb,
1783 -+ myopts, None, depgraph.altlist(), favorites,
1784 -+ depgraph.schedulerGraph()
1785 -+ )
1786 - rval = mergetask.merge()
1787 - finally:
1788 - self._unblock_output()
1789 -@@ -1354,8 +1375,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1790 - installed_layman_db = layman.db.DB(conf)
1791 -
1792 - if force:
1793 -- timestamp_path = os.path.join(
1794 -- self.pvar.settings["PORTDIR"], "metadata", "timestamp.chk")
1795 -+ timestamp_path = os.path.join(self.pvar.settings["PORTDIR"],
1796 -+ "metadata", "timestamp.chk")
1797 - if os.access(timestamp_path, os.F_OK):
1798 - os.remove(timestamp_path)
1799 -
1800 -@@ -1364,7 +1385,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1801 - for overlay in installed_layman_db.overlays.keys():
1802 - installed_layman_db.sync(overlay)
1803 - _emerge.actions.action_sync(self.pvar.settings, self.pvar.trees,
1804 -- self.pvar.mtimedb, myopts, "")
1805 -+ self.pvar.mtimedb, myopts, "")
1806 - except:
1807 - self.error(ERROR_INTERNAL_ERROR, traceback.format_exc())
1808 - finally:
1809 -@@ -1397,18 +1418,22 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1810 -
1811 - if not self._is_cpv_valid(cpv):
1812 - self.error(ERROR_PACKAGE_NOT_FOUND,
1813 -- "Package %s was not found" % pkg)
1814 -+ "Package %s was not found" % pkg)
1815 - continue
1816 -
1817 - if not self._is_installed(cpv):
1818 - self.error(ERROR_PACKAGE_NOT_INSTALLED,
1819 -- "Package %s is not installed" % pkg)
1820 -+ "Package %s is not installed" % pkg)
1821 - continue
1822 -
1823 - # stop removal if a package is in the system set
1824 - if portage.versions.pkgsplit(cpv)[0] in system_packages:
1825 -- self.error(ERROR_CANNOT_REMOVE_SYSTEM_PACKAGE,
1826 -- "Package %s is a system package. If you really want to remove it, please use portage" % pkg)
1827 -+ self.error(
1828 -+ ERROR_CANNOT_REMOVE_SYSTEM_PACKAGE,
1829 -+ "Package %s is a system package. "
1830 -+ "If you really want to remove it, please use portage" %
1831 -+ pkg
1832 -+ )
1833 - continue
1834 -
1835 - cpv_list.append(cpv)
1836 -@@ -1416,41 +1441,45 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1837 - # backend do not implement autoremove
1838 - if autoremove:
1839 - self.message(MESSAGE_AUTOREMOVE_IGNORED,
1840 -- "Portage backend do not implement autoremove option")
1841 -+ "Portage backend do not implement autoremove option")
1842 -
1843 - # get packages needing candidates for removal
1844 -- required_packages = self._get_required_packages(cpv_list, recursive=True)
1845 -+ required_packages = self._get_required_packages(cpv_list,
1846 -+ recursive=True)
1847 -
1848 - # if there are required packages, allowdep must be on
1849 - if required_packages and not allowdep:
1850 - self.error(ERROR_DEP_RESOLUTION_FAILED,
1851 -- "Could not perform remove operation has packages are needed by other packages")
1852 -+ "Could not perform remove operation has packages "
1853 -+ "are needed by other packages")
1854 - return
1855 -
1856 - # first, we add required packages
1857 - for p in required_packages:
1858 - package = _emerge.Package.Package(
1859 -- type_name=p.type_name,
1860 -- built=p.built,
1861 -- installed=p.installed,
1862 -- root_config=p.root_config,
1863 -- cpv=p.cpv,
1864 -- metadata=p.metadata,
1865 -- operation='uninstall')
1866 -+ type_name=p.type_name,
1867 -+ built=p.built,
1868 -+ installed=p.installed,
1869 -+ root_config=p.root_config,
1870 -+ cpv=p.cpv,
1871 -+ metadata=p.metadata,
1872 -+ operation='uninstall'
1873 -+ )
1874 - packages.append(package)
1875 -
1876 - # and now, packages we want really to remove
1877 - for cpv in cpv_list:
1878 - metadata = self._get_metadata(cpv, [],
1879 -- in_dict=True, add_cache_keys=True)
1880 -+ in_dict=True, add_cache_keys=True)
1881 - package = _emerge.Package.Package(
1882 -- type_name="ebuild",
1883 -- built=True,
1884 -- installed=True,
1885 -- root_config=self.pvar.root_config,
1886 -- cpv=cpv,
1887 -- metadata=metadata,
1888 -- operation="uninstall")
1889 -+ type_name="ebuild",
1890 -+ built=True,
1891 -+ installed=True,
1892 -+ root_config=self.pvar.root_config,
1893 -+ cpv=cpv,
1894 -+ metadata=metadata,
1895 -+ operation="uninstall"
1896 -+ )
1897 - packages.append(package)
1898 -
1899 - if simulate:
1900 -@@ -1467,9 +1496,11 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1901 - # now, we can remove
1902 - try:
1903 - self._block_output()
1904 -- mergetask = _emerge.Scheduler.Scheduler(self.pvar.settings,
1905 -- self.pvar.trees, self.pvar.mtimedb, mergelist=packages,
1906 -- myopts={}, spinner=None, favorites=favorites, digraph=None)
1907 -+ mergetask = _emerge.Scheduler.Scheduler(
1908 -+ self.pvar.settings, self.pvar.trees, self.pvar.mtimedb,
1909 -+ mergelist=packages, myopts={}, spinner=None,
1910 -+ favorites=favorites, digraph=None
1911 -+ )
1912 - rval = mergetask.merge()
1913 - finally:
1914 - self._unblock_output()
1915 -@@ -1495,7 +1526,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1916 - if repoid == 'gentoo':
1917 - if not enable:
1918 - self.error(ERROR_CANNOT_DISABLE_REPOSITORY,
1919 -- "gentoo repository can't be disabled")
1920 -+ "gentoo repository can't be disabled")
1921 - return
1922 -
1923 - conf = layman.config.BareConfig()
1924 -@@ -1506,7 +1537,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1925 - # check now for repoid so we don't have to do it after
1926 - if repoid not in available_layman_db.overlays.keys():
1927 - self.error(ERROR_REPO_NOT_FOUND,
1928 -- "Repository %s was not found" % repoid)
1929 -+ "Repository %s was not found" % repoid)
1930 - return
1931 -
1932 - # disabling (removing) a db
1933 -@@ -1516,7 +1547,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1934 - installed_layman_db.delete(installed_layman_db.select(repoid))
1935 - except Exception, e:
1936 - self.error(ERROR_INTERNAL_ERROR,
1937 -- "Failed to disable repository "+repoid+" : "+str(e))
1938 -+ "Failed to disable repository "+repoid+" : "+str(e))
1939 - return
1940 -
1941 - # enabling (adding) a db
1942 -@@ -1530,7 +1561,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1943 - except Exception, e:
1944 - self._unblock_output()
1945 - self.error(ERROR_INTERNAL_ERROR,
1946 -- "Failed to enable repository "+repoid+" : "+str(e))
1947 -+ "Failed to enable repository "+repoid+" : "+str(e))
1948 - return
1949 -
1950 - def resolve(self, filters, pkgs):
1951 -@@ -1581,10 +1612,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1952 - # and newest filter could be alterated
1953 - for cpv in self._get_all_cpv(cp, filters, filter_newest=False):
1954 - match = True
1955 -- metadata = self._get_metadata(cpv,
1956 -- ["DESCRIPTION", "HOMEPAGE", "IUSE",
1957 -- "LICENSE", "repository", "SLOT"],
1958 -- in_dict=True)
1959 -+ metadata = self._get_metadata(
1960 -+ cpv, ["DESCRIPTION", "HOMEPAGE", "IUSE", "LICENSE",
1961 -+ "repository", "SLOT"], in_dict=True
1962 -+ )
1963 - # update LICENSE to correspond to system settings
1964 - metadata["LICENSE"] = self._get_real_license_str(cpv, metadata)
1965 - for s in search_list:
1966 -@@ -1621,7 +1652,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1967 -
1968 - if FILTER_NOT_INSTALLED in filters:
1969 - self.error(ERROR_CANNOT_GET_FILELIST,
1970 -- "search-file isn't available with ~installed filter")
1971 -+ "search-file isn't available with ~installed filter")
1972 - return
1973 -
1974 - cpv_list = self.pvar.vardb.cpv_all()
1975 -@@ -1759,7 +1790,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1976 -
1977 - if not self._is_cpv_valid(cpv):
1978 - self.error(ERROR_UPDATE_NOT_FOUND,
1979 -- "Package %s was not found" % pkg)
1980 -+ "Package %s was not found" % pkg)
1981 - continue
1982 -
1983 - cpv_list.append('=' + cpv)
1984 -@@ -1768,7 +1799,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1985 - # but better to show it after important errors
1986 - if only_trusted:
1987 - self.error(ERROR_MISSING_GPG_SIGNATURE,
1988 -- "Portage backend does not support GPG signature")
1989 -+ "Portage backend does not support GPG signature")
1990 - return
1991 -
1992 - # creating update depgraph
1993 -@@ -1776,17 +1807,18 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
1994 - if only_download:
1995 - myopts['--fetchonly'] = True
1996 - favorites = []
1997 -- myparams = _emerge.create_depgraph_params.create_depgraph_params(
1998 -- myopts, "")
1999 -+ myparams = _emerge.create_depgraph_params \
2000 -+ .create_depgraph_params(myopts, "")
2001 -
2002 - self.status(STATUS_DEP_RESOLVE)
2003 -
2004 - depgraph = _emerge.depgraph.depgraph(self.pvar.settings,
2005 -- self.pvar.trees, myopts, myparams, None)
2006 -+ self.pvar.trees, myopts,
2007 -+ myparams, None)
2008 - retval, favorites = depgraph.select_files(cpv_list)
2009 - if not retval:
2010 - self.error(ERROR_DEP_RESOLUTION_FAILED,
2011 -- "Wasn't able to get dependency graph")
2012 -+ "Wasn't able to get dependency graph")
2013 - return
2014 -
2015 - # check fetch restrict, can stop the function via error signal
2016 -@@ -1803,9 +1835,11 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2017 - try:
2018 - self._block_output()
2019 - # compiling/installing
2020 -- mergetask = _emerge.Scheduler.Scheduler(self.pvar.settings,
2021 -- self.pvar.trees, self.pvar.mtimedb, myopts, None,
2022 -- depgraph.altlist(), favorites, depgraph.schedulerGraph())
2023 -+ mergetask = _emerge.Scheduler.Scheduler(
2024 -+ self.pvar.settings, self.pvar.trees, self.pvar.mtimedb,
2025 -+ myopts, None, depgraph.altlist(), favorites,
2026 -+ depgraph.schedulerGraph()
2027 -+ )
2028 - rval = mergetask.merge()
2029 - finally:
2030 - self._unblock_output()
2031 ---
2032 -2.3.6
2033 -
2034
2035 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
2036 new file mode 100644
2037 index 0000000..435bb09
2038 --- /dev/null
2039 +++ b/app-admin/packagekit-base/files/0009-portage-use-PackagekitProgress-as-an-iterable.patch
2040 @@ -0,0 +1,222 @@
2041 +From 5a3b0b213c53aca26f91f0a3eae65518f1376235 Mon Sep 17 00:00:00 2001
2042 +From: Gilles Dartiguelongue <eva@g.o>
2043 +Date: Sun, 6 Sep 2015 16:10:06 +0200
2044 +Subject: [PATCH 9/9] portage: use PackagekitProgress as an iterable
2045 +
2046 +---
2047 + backends/portage/portageBackend.py | 73 +++++++++++++++-----------------------
2048 + 1 file changed, 29 insertions(+), 44 deletions(-)
2049 +
2050 +diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
2051 +index 5cb64f6..de1c490 100755
2052 +--- a/backends/portage/portageBackend.py
2053 ++++ b/backends/portage/portageBackend.py
2054 +@@ -27,7 +27,10 @@ import signal
2055 + import sys
2056 + import traceback
2057 + from collections import defaultdict
2058 +-from itertools import izip
2059 ++try:
2060 ++ from itertools import izip
2061 ++except ImportError:
2062 ++ izip = zip
2063 +
2064 + # layman imports (>=2)
2065 + import layman.config
2066 +@@ -939,11 +942,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2067 + self.status(STATUS_INFO)
2068 + self.allow_cancel(True)
2069 +
2070 +- progress = PackagekitProgress()
2071 +- progress.set_steps(compute_equal_steps(pkgs))
2072 ++ progress = PackagekitProgress(compute_equal_steps(pkgs))
2073 + self.percentage(progress.percent)
2074 +
2075 +- for pkg in pkgs:
2076 ++ for percentage, pkg in izip(progress, pkgs):
2077 + cpv = self._id_to_cpv(pkg)
2078 +
2079 + if not self._is_cpv_valid(cpv):
2080 +@@ -967,8 +969,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2081 + self._get_size(cpv)
2082 + )
2083 +
2084 +- progress.step()
2085 +- self.percentage(progress.percent)
2086 ++ self.percentage(percentage)
2087 +
2088 + self.percentage(100)
2089 +
2090 +@@ -976,11 +977,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2091 + self.status(STATUS_INFO)
2092 + self.allow_cancel(True)
2093 +
2094 +- progress = PackagekitProgress()
2095 +- progress.set_steps(compute_equal_steps(pkgs))
2096 ++ progress = PackagekitProgress(compute_equal_steps(pkgs))
2097 + self.percentage(progress.percent)
2098 +
2099 +- for pkg in pkgs:
2100 ++ for percentage, pkg in izip(progress, pkgs):
2101 + cpv = self._id_to_cpv(pkg)
2102 +
2103 + if not self._is_cpv_valid(cpv):
2104 +@@ -996,8 +996,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2105 +
2106 + self.files(pkg, ';'.join(sorted(self._get_file_list(cpv))))
2107 +
2108 +- progress.step()
2109 +- self.percentage(progress.percent)
2110 ++ self.percentage(percentage)
2111 +
2112 + self.percentage(100)
2113 +
2114 +@@ -1007,19 +1006,17 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2115 +
2116 + cp_list = self._get_all_cp(filters)
2117 +
2118 +- progress = PackagekitProgress()
2119 +- progress.set_steps(compute_equal_steps(cp_list))
2120 ++ progress = PackagekitProgress(compute_equal_steps(cp_list))
2121 + self.percentage(progress.percent)
2122 +
2123 +- for cp in self._get_all_cp(filters):
2124 ++ for percentage, cp in izip(progress, self._get_all_cp(filters)):
2125 + for cpv in self._get_all_cpv(cp, filters):
2126 + try:
2127 + self._package(cpv)
2128 + except InvalidAtom:
2129 + continue
2130 +
2131 +- progress.step()
2132 +- self.percentage(progress.percent)
2133 ++ self.percentage(percentage)
2134 +
2135 + self.percentage(100)
2136 +
2137 +@@ -1574,8 +1571,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2138 + self.allow_cancel(True)
2139 +
2140 + cp_list = self._get_all_cp(filters)
2141 +- progress = PackagekitProgress()
2142 +- progress.set_steps(compute_equal_steps(cp_list))
2143 ++ progress = PackagekitProgress(compute_equal_steps(cp_list))
2144 + self.percentage(progress.percent)
2145 +
2146 + reg_expr = []
2147 +@@ -1586,13 +1582,12 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2148 + # specifications says "be case sensitive"
2149 + s = re.compile(reg_expr)
2150 +
2151 +- for cp in cp_list:
2152 ++ for percentage, cp in izip(progress, cp_list):
2153 + if s.match(cp):
2154 + for cpv in self._get_all_cpv(cp, filters):
2155 + self._package(cpv)
2156 +
2157 +- progress.step()
2158 +- self.percentage(progress.percent)
2159 ++ self.percentage(percentage)
2160 +
2161 + self.percentage(100)
2162 +
2163 +@@ -1604,11 +1599,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2164 + cp_list = self._get_all_cp(filters)
2165 + search_list = self._get_search_list(keys)
2166 +
2167 +- progress = PackagekitProgress()
2168 +- progress.set_steps(compute_equal_steps(cp_list))
2169 ++ progress = PackagekitProgress(compute_equal_steps(cp_list))
2170 + self.percentage(progress.percent)
2171 +
2172 +- for cp in cp_list:
2173 ++ for percentage, cp in izip(progress, cp_list):
2174 + # unfortunatelly, everything is related to cpv, not cp
2175 + # can't filter cp
2176 + cpv_list = []
2177 +@@ -1643,8 +1637,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2178 + for cpv in cpv_list:
2179 + self._package(cpv)
2180 +
2181 +- progress.step()
2182 +- self.percentage(progress.percent)
2183 ++ self.percentage(percentage)
2184 +
2185 + self.percentage(100)
2186 +
2187 +@@ -1664,13 +1657,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2188 + cpv_list = self.pvar.vardb.cpv_all()
2189 + is_full_path = True
2190 +
2191 +- progress = PackagekitProgress()
2192 +- progress.set_steps(compute_equal_steps(cpv_list))
2193 +- self.percentage(progress.percent)
2194 ++ progress = PackagekitProgress(compute_equal_steps(values))
2195 ++ self.percentage(progress.percentage)
2196 +
2197 +- count = 0
2198 +- values_len = len(values)
2199 +- for key in values:
2200 ++ for percentage, key in izip(progress, values):
2201 +
2202 + if key[0] != "/":
2203 + is_full_path = False
2204 +@@ -1688,8 +1678,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2205 + self._package(cpv)
2206 + break
2207 +
2208 +- progress.step()
2209 +- self.percentage(progress.percent)
2210 ++ self.percentage(percentage)
2211 +
2212 + self.percentage(100)
2213 +
2214 +@@ -1700,18 +1689,16 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2215 +
2216 + cp_list = self._get_all_cp(filters)
2217 +
2218 +- progress = PackagekitProgress()
2219 +- progress.set_steps(compute_equal_steps(cp_list))
2220 ++ progress = PackagekitProgress(compute_equal_steps(cp_list))
2221 + self.percentage(progress.percent)
2222 +
2223 +- for cp in cp_list:
2224 ++ for percentage, cp in izip(progress, cp_list):
2225 + for group in groups:
2226 + if self._get_pk_group(cp) == group:
2227 + for cpv in self._get_all_cpv(cp, filters):
2228 + self._package(cpv)
2229 +
2230 +- progress.step()
2231 +- self.percentage(progress.percent)
2232 ++ self.percentage(percentage)
2233 +
2234 + self.percentage(100)
2235 +
2236 +@@ -1746,11 +1733,10 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2237 +
2238 + cp_list = self._get_all_cp(filters)
2239 +
2240 +- progress = PackagekitProgress()
2241 +- progress.set_steps(compute_equal_steps(cp_list))
2242 ++ progress = PackagekitProgress(compute_equal_steps(cp_list))
2243 + self.percentage(progress.percent)
2244 +
2245 +- for cp in cp_list:
2246 ++ for percentage, cp in izip(progress, cp_list):
2247 + if category_filter:
2248 + cat, pkg_name = portage.versions.catsplit(cp)
2249 + if cat != category_filter:
2250 +@@ -1768,8 +1754,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2251 + for cpv in self._get_all_cpv(cp, filters):
2252 + self._package(cpv)
2253 +
2254 +- progress.step()
2255 +- self.percentage(progress.percent)
2256 ++ self.percentage(percentage)
2257 +
2258 + self.percentage(100)
2259 +
2260 +--
2261 +2.6.3
2262 +
2263
2264 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
2265 deleted file mode 100644
2266 index af81129..0000000
2267 --- a/app-admin/packagekit-base/files/0010-Add-helper-to-change-portage-settings.patch
2268 +++ /dev/null
2269 @@ -1,73 +0,0 @@
2270 -From ecd21674a814926e31ad70613f927c73f19c3d3d Mon Sep 17 00:00:00 2001
2271 -From: Gilles Dartiguelongue <eva@g.o>
2272 -Date: Sun, 3 May 2015 15:32:53 +0200
2273 -Subject: [PATCH 10/12] Add helper to change portage settings
2274 -
2275 ----
2276 - backends/portage/portageBackend.py | 39 +++++++++++++++++---------------------
2277 - 1 file changed, 17 insertions(+), 22 deletions(-)
2278 -
2279 -diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
2280 -index 9775466..1a6d855 100755
2281 ---- a/backends/portage/portageBackend.py
2282 -+++ b/backends/portage/portageBackend.py
2283 -@@ -175,21 +175,24 @@ class PortageBridge():
2284 - self.portdb = self.trees[self.settings['ROOT']]['porttree'].dbapi
2285 - self.root_config = self.trees[self.settings['ROOT']]['root_config']
2286 -
2287 -- # doing all the changes to settings
2288 -+ self.apply_settings({
2289 -+ # we don't want interactive ebuilds
2290 -+ 'ACCEPT_PROPERTIES': '-interactive',
2291 -+ # do not log with mod_echo (cleanly prevent some outputs)
2292 -+ 'PORTAGE_ELOG_SYSTEM': ' '.join([
2293 -+ elog for elog in self.settings["PORTAGE_ELOG_SYSTEM"].split()
2294 -+ if elog != 'echo'
2295 -+ ]),
2296 -+ })
2297 -+
2298 -+ def apply_settings(self, mapping):
2299 -+ """Set portage settings."""
2300 - self.settings.unlock()
2301 -
2302 -- # we don't want interactive ebuilds
2303 -- self.settings["ACCEPT_PROPERTIES"] = "-interactive"
2304 -- self.settings.backup_changes("ACCEPT_PROPERTIES")
2305 -+ for key, value in mapping.items():
2306 -+ self.settings[key] = value
2307 -+ self.settings.backup_changes(key)
2308 -
2309 -- # do not log with mod_echo (cleanly prevent some outputs)
2310 -- self.settings["PORTAGE_ELOG_SYSTEM"] = ' '.join([
2311 -- elog for elog in self.settings["PORTAGE_ELOG_SYSTEM"].split()
2312 -- if elog != 'echo'
2313 -- ])
2314 -- self.settings.backup_changes("PORTAGE_ELOG_SYSTEM")
2315 --
2316 -- # finally, regenerate settings and lock them again
2317 - self.settings.regenerate()
2318 - self.settings.lock()
2319 -
2320 -@@ -560,17 +563,9 @@ class PackageKitPortageMixin(object):
2321 - licenses = "* -" + free_licenses
2322 - backup_license = self.pvar.settings["ACCEPT_LICENSE"]
2323 -
2324 -- self.pvar.settings.unlock()
2325 -- self.pvar.settings["ACCEPT_LICENSE"] = licenses
2326 -- self.pvar.settings.backup_changes("ACCEPT_LICENSE")
2327 -- self.pvar.settings.regenerate()
2328 --
2329 -+ self.pvar.apply_settings({'ACCEPT_LICENSE': licences})
2330 - cpv_list = filter(_has_validLicense, cpv_list)
2331 --
2332 -- self.pvar.settings["ACCEPT_LICENSE"] = backup_license
2333 -- self.pvar.settings.backup_changes("ACCEPT_LICENSE")
2334 -- self.pvar.settings.regenerate()
2335 -- self.pvar.settings.lock()
2336 -+ self.pvar.apply_settings({'ACCEPT_LICENSE': backup_licence})
2337 -
2338 - return cpv_list
2339 -
2340 ---
2341 -2.3.6
2342 -
2343
2344 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
2345 deleted file mode 100644
2346 index 222f9bf..0000000
2347 --- a/app-admin/packagekit-base/files/0011-Remove-compatibility-with-older-portage.patch
2348 +++ /dev/null
2349 @@ -1,77 +0,0 @@
2350 -From 6b8db81b43eaba3e331725227252f9d363d1b695 Mon Sep 17 00:00:00 2001
2351 -From: Gilles Dartiguelongue <eva@g.o>
2352 -Date: Sun, 3 May 2015 15:39:07 +0200
2353 -Subject: [PATCH 11/12] Remove compatibility with older portage
2354 -
2355 ----
2356 - backends/portage/portageBackend.py | 26 ++++++++------------------
2357 - 1 file changed, 8 insertions(+), 18 deletions(-)
2358 -
2359 -diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
2360 -index 1a6d855..9ce2b79 100755
2361 ---- a/backends/portage/portageBackend.py
2362 -+++ b/backends/portage/portageBackend.py
2363 -@@ -50,6 +50,7 @@ import _emerge.stdout_spinner
2364 - import portage
2365 - import portage.dep
2366 - import portage.versions
2367 -+from portage._sets.base import InternalPackageSet
2368 - from portage.exception import InvalidAtom
2369 -
2370 - # NOTES:
2371 -@@ -319,13 +320,6 @@ class PackageKitPortageMixin(object):
2372 - settings.setcpv(cpv, mydb=metadata)
2373 - return settings
2374 -
2375 -- def _get_internal_package_set_class(self):
2376 -- try:
2377 -- from portage._sets.base import InternalPackageSet
2378 -- except ImportError:
2379 -- from portage.sets.base import InternalPackageSet
2380 -- return InternalPackageSet
2381 --
2382 - def _is_installed(self, cpv):
2383 - return self.pvar.vardb.cpv_exists(cpv)
2384 -
2385 -@@ -1158,10 +1152,9 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2386 - cpv_downgra = {}
2387 -
2388 - # get system and world packages
2389 -- for s in ["system", "world"]:
2390 -- sets = self._get_internal_package_set_class()(
2391 -- initial_atoms=self.pvar.root_config.setconfig.getSetAtoms(s)
2392 -- )
2393 -+ for pkg_set in ["system", "world"]:
2394 -+ sets = InternalPackageSet(initial_atoms=self.pvar.root_config
2395 -+ .setconfig.getSetAtoms(pkg_set))
2396 - for atom in sets:
2397 - update_candidates.append(atom.cp)
2398 -
2399 -@@ -1225,10 +1218,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2400 - cpv_downgra[cp] = dict_down
2401 -
2402 - # get security updates
2403 -- for atom in self._get_internal_package_set_class(
2404 -- initial_atoms=self.pvar.root_config.setconfig
2405 -- .getSetAtoms("security")
2406 -- ):
2407 -+ for atom in InternalPackageSet(initial_atoms=self.pvar.root_config
2408 -+ .setconfig.getSetAtoms("security")):
2409 - # send update message and remove atom from cpv_updates
2410 - if atom.cp in cpv_updates:
2411 - slot = self._get_metadata(atom.cpv, ["SLOT"])[0]
2412 -@@ -1402,9 +1393,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2413 - system_packages = []
2414 -
2415 - # get system packages
2416 -- sets = self._get_internal_package_set_class()(
2417 -- initial_atoms=self.pvar.root_config.setconfig.getSetAtoms("system"))
2418 -- for atom in sets:
2419 -+ for atom in InternalPackageSet(initial_atoms=self.pvar.root_config
2420 -+ .setconfig.getSetAtoms("system")):
2421 - system_packages.append(atom.cp)
2422 -
2423 - # create cpv_list
2424 ---
2425 -2.3.6
2426 -
2427
2428 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
2429 new file mode 100644
2430 index 0000000..6b41d7c
2431 --- /dev/null
2432 +++ b/app-admin/packagekit-base/files/0011-portage-fix-a-typo.patch
2433 @@ -0,0 +1,25 @@
2434 +From 782b68eb1b381fe9bda602da7d0b951827d489a1 Mon Sep 17 00:00:00 2001
2435 +From: Gilles Dartiguelongue <eva@g.o>
2436 +Date: Fri, 27 Nov 2015 11:36:40 +0100
2437 +Subject: [PATCH 1/3] portage: fix a typo
2438 +
2439 +---
2440 + backends/portage/portageBackend.py | 2 +-
2441 + 1 file changed, 1 insertion(+), 1 deletion(-)
2442 +
2443 +diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
2444 +index de1c490..004c18b 100755
2445 +--- a/backends/portage/portageBackend.py
2446 ++++ b/backends/portage/portageBackend.py
2447 +@@ -1658,7 +1658,7 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2448 + is_full_path = True
2449 +
2450 + progress = PackagekitProgress(compute_equal_steps(values))
2451 +- self.percentage(progress.percentage)
2452 ++ self.percentage(progress.percent)
2453 +
2454 + for percentage, key in izip(progress, values):
2455 +
2456 +--
2457 +2.6.3
2458 +
2459
2460 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
2461 deleted file mode 100644
2462 index 08c7626..0000000
2463 --- a/app-admin/packagekit-base/files/0012-Retrieve-EAPI-and-KEYWORDS-before-calling-setcpv-met.patch
2464 +++ /dev/null
2465 @@ -1,36 +0,0 @@
2466 -From c08ca43ca45d55471f014dee93592b5448950aea Mon Sep 17 00:00:00 2001
2467 -From: Gilles Dartiguelongue <eva@g.o>
2468 -Date: Sun, 3 May 2015 17:54:59 +0200
2469 -Subject: [PATCH 12/12] Retrieve EAPI and KEYWORDS before calling setcpv method
2470 -
2471 ----
2472 - backends/portage/portageBackend.py | 6 ++++--
2473 - 1 file changed, 4 insertions(+), 2 deletions(-)
2474 -
2475 -diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
2476 -index 9ce2b79..79b8449 100755
2477 ---- a/backends/portage/portageBackend.py
2478 -+++ b/backends/portage/portageBackend.py
2479 -@@ -938,7 +938,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2480 - continue
2481 -
2482 - metadata = self._get_metadata(
2483 -- cpv, ["DESCRIPTION", "HOMEPAGE", "IUSE", "LICENSE", "SLOT"],
2484 -+ cpv, ["DESCRIPTION", "HOMEPAGE", "IUSE", "LICENSE", "SLOT",
2485 -+ "EAPI", "KEYWORDS"],
2486 - in_dict=True
2487 - )
2488 -
2489 -@@ -1599,7 +1600,8 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2490 - match = True
2491 - metadata = self._get_metadata(
2492 - cpv, ["DESCRIPTION", "HOMEPAGE", "IUSE", "LICENSE",
2493 -- "repository", "SLOT"], in_dict=True
2494 -+ "repository", "SLOT", "EAPI", "KEYWORDS"],
2495 -+ in_dict=True
2496 - )
2497 - # update LICENSE to correspond to system settings
2498 - metadata["LICENSE"] = self._get_real_license_str(cpv, metadata)
2499 ---
2500 -2.3.6
2501 -
2502
2503 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
2504 new file mode 100644
2505 index 0000000..301b56d
2506 --- /dev/null
2507 +++ b/app-admin/packagekit-base/files/0012-portage-fix-step-percentage-computation.patch
2508 @@ -0,0 +1,25 @@
2509 +From b76a5ee07912e0a739a5ba39aef6d96e85e58a98 Mon Sep 17 00:00:00 2001
2510 +From: Gilles Dartiguelongue <eva@g.o>
2511 +Date: Fri, 27 Nov 2015 13:00:38 +0100
2512 +Subject: [PATCH 2/3] portage: fix step percentage computation
2513 +
2514 +---
2515 + backends/portage/portageBackend.py | 2 +-
2516 + 1 file changed, 1 insertion(+), 1 deletion(-)
2517 +
2518 +diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
2519 +index 004c18b..12918b9 100755
2520 +--- a/backends/portage/portageBackend.py
2521 ++++ b/backends/portage/portageBackend.py
2522 +@@ -73,7 +73,7 @@ from portage.exception import InvalidAtom
2523 +
2524 +
2525 + def compute_equal_steps(iterable):
2526 +- return [idx * (100.0 / len(iterable)) / 100.0
2527 ++ return [idx * (100.0 / len(iterable))
2528 + for idx, _ in enumerate(iterable, start=1)]
2529 +
2530 +
2531 +--
2532 +2.6.3
2533 +
2534
2535 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
2536 new file mode 100644
2537 index 0000000..0e46401
2538 --- /dev/null
2539 +++ b/app-admin/packagekit-base/files/0013-portage-do-not-refetch-package-listing-for-no-reason.patch
2540 @@ -0,0 +1,32 @@
2541 +From 284dd27dc9f73415f49e7502de7ed0bddedcb8c0 Mon Sep 17 00:00:00 2001
2542 +From: Gilles Dartiguelongue <eva@g.o>
2543 +Date: Fri, 27 Nov 2015 13:01:37 +0100
2544 +Subject: [PATCH 3/3] portage: do not refetch package listing for no reason
2545 +
2546 +---
2547 + backends/portage/portageBackend.py | 5 ++---
2548 + 1 file changed, 2 insertions(+), 3 deletions(-)
2549 +
2550 +diff --git a/backends/portage/portageBackend.py b/backends/portage/portageBackend.py
2551 +index 12918b9..505feec 100755
2552 +--- a/backends/portage/portageBackend.py
2553 ++++ b/backends/portage/portageBackend.py
2554 +@@ -1003,13 +1003,12 @@ class PackageKitPortageBackend(PackageKitPortageMixin, PackageKitBaseBackend):
2555 + def get_packages(self, filters):
2556 + self.status(STATUS_QUERY)
2557 + self.allow_cancel(True)
2558 ++ self.percentage(0)
2559 +
2560 + cp_list = self._get_all_cp(filters)
2561 +-
2562 + progress = PackagekitProgress(compute_equal_steps(cp_list))
2563 +- self.percentage(progress.percent)
2564 +
2565 +- for percentage, cp in izip(progress, self._get_all_cp(filters)):
2566 ++ for percentage, cp in izip(progress, cp_list):
2567 + for cpv in self._get_all_cpv(cp, filters):
2568 + try:
2569 + self._package(cpv)
2570 +--
2571 +2.6.3
2572 +
2573
2574 diff --git a/app-admin/packagekit-base/packagekit-base-1.0.6.ebuild b/app-admin/packagekit-base/packagekit-base-1.0.10.ebuild
2575 similarity index 85%
2576 rename from app-admin/packagekit-base/packagekit-base-1.0.6.ebuild
2577 rename to app-admin/packagekit-base/packagekit-base-1.0.10.ebuild
2578 index 2abd7cb..844e6b6 100644
2579 --- a/app-admin/packagekit-base/packagekit-base-1.0.6.ebuild
2580 +++ b/app-admin/packagekit-base/packagekit-base-1.0.10.ebuild
2581 @@ -7,8 +7,9 @@ EAPI="5"
2582 # PackageKit supports 3.2+, but entropy and portage backends are untested
2583 # Future note: use --enable-python3
2584 PYTHON_COMPAT=( python2_7 )
2585 +VALA_USE_DEPEND="vapigen"
2586
2587 -inherit autotools bash-completion-r1 eutils multilib nsplugins python-single-r1 systemd
2588 +inherit bash-completion-r1 eutils multilib nsplugins python-single-r1 systemd vala
2589
2590 MY_PN="PackageKit"
2591 MY_P=${MY_PN}-${PV}
2592 @@ -20,8 +21,11 @@ SRC_URI="http://www.freedesktop.org/software/${MY_PN}/releases/${MY_P}.tar.xz"
2593 LICENSE="GPL-2"
2594 SLOT="0/18"
2595 KEYWORDS="~alpha ~amd64 ~arm ~mips ~ppc ~ppc64 ~x86"
2596 -IUSE="connman cron command-not-found +introspection networkmanager nsplugin entropy systemd test"
2597 -REQUIRED_USE="${PYTHON_REQUIRED_USE}"
2598 +IUSE="connman cron command-not-found +introspection networkmanager nsplugin entropy systemd test vala"
2599 +REQUIRED_USE="
2600 + ${PYTHON_REQUIRED_USE}
2601 + vala? ( introspection )
2602 +"
2603
2604 # While not strictly needed, consolekit is the alternative to systemd-login
2605 # to get current session's user.
2606 @@ -51,6 +55,7 @@ DEPEND="${CDEPEND}
2607 sys-devel/gettext
2608 virtual/pkgconfig
2609 nsplugin? ( >=net-misc/npapi-sdk-0.27 )
2610 + vala? ( $(vala_depend) )
2611 "
2612 RDEPEND="${CDEPEND}
2613 >=app-portage/layman-2[${PYTHON_USEDEP}]
2614 @@ -64,11 +69,10 @@ S="${WORKDIR}/${MY_P}"
2615 RESTRICT="test"
2616
2617 src_prepare() {
2618 - # Fix python backend detection
2619 - # Make portage backend work with newer layman/portage
2620 + # Upstreamed portage backend patches
2621 epatch "${FILESDIR}"/*
2622
2623 - eautoreconf
2624 + use vala && vala_src_prepare
2625 }
2626
2627 src_configure() {
2628 @@ -92,6 +96,7 @@ src_configure() {
2629 $(use_enable nsplugin browser-plugin) \
2630 $(use_enable systemd) \
2631 $(use_enable test daemon-tests) \
2632 + $(use_enable vala) \
2633 $(systemd_with_unitdir)
2634 #$(use_enable test local)
2635 }
2636 @@ -100,8 +105,10 @@ src_install() {
2637 emake DESTDIR="${D}" install || die "emake install failed"
2638 prune_libtool_files --all
2639
2640 - dodoc AUTHORS MAINTAINERS NEWS README || die "dodoc failed"
2641 - dodoc ChangeLog || die "dodoc failed"
2642 + einstalldocs
2643 +
2644 + #dodoc AUTHORS MAINTAINERS NEWS README || die "dodoc failed"
2645 + #dodoc ChangeLog || die "dodoc failed"
2646
2647 if use nsplugin; then
2648 dodir "/usr/$(get_libdir)/${PLUGINS_DIR}"