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}" |