Merge ~sylvain-pineau/plainbox:xml-removal into plainbox:master
- Git
- lp:~sylvain-pineau/plainbox
- xml-removal
- Merge into master
Proposed by
Sylvain Pineau
Status: | Merged |
---|---|
Approved by: | Sylvain Pineau |
Approved revision: | ac80303917922d3edf9bcdc7fc08653a17dfe3b1 |
Merged at revision: | 30d7cf665e34499b6426cc0cffadff6883df46ee |
Proposed branch: | ~sylvain-pineau/plainbox:xml-removal |
Merge into: | plainbox:master |
Diff against target: |
56194 lines (+26/-373) 16 files modified
MANIFEST.in (+1/-1) dev/null (+0/-21) docs/glossary.rst (+1/-1) docs/manpages/plainbox-run.rst (+4/-35) docs/usage.rst (+2/-18) plainbox/abc.py (+1/-1) plainbox/impl/commands/test_run.py (+0/-2) plainbox/impl/exporter/jinja2.py (+1/-17) plainbox/impl/launcher.py (+0/-6) plainbox/impl/providers/exporters/data/checkbox.json (+1/-1) plainbox/impl/providers/exporters/units/exporter.pxu (+0/-7) plainbox/impl/result.py (+12/-42) plainbox/impl/session/assistant.py (+1/-75) plainbox/impl/session/manager.py (+1/-2) plainbox/impl/test_launcher.py (+0/-1) plainbox/impl/transport.py (+1/-143) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Maciej Kisielewski | Approve | ||
Review via email: mp+326677@code.launchpad.net |
Commit message
Description of the change
Remove XML/HEXR support from plainbox
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/MANIFEST.in b/MANIFEST.in |
2 | index 7318b78..e51f963 100644 |
3 | --- a/MANIFEST.in |
4 | +++ b/MANIFEST.in |
5 | @@ -48,4 +48,4 @@ recursive-exclude daily-package-testing * |
6 | recursive-include contrib *.policy |
7 | recursive-include docs *.rst *.py *.html *.conf |
8 | recursive-include plainbox/data *.rng |
9 | -recursive-include plainbox/test-data *.json *.xml *.html |
10 | +recursive-include plainbox/test-data *.json *.html *.tar.xz |
11 | diff --git a/docs/glossary.rst b/docs/glossary.rst |
12 | index a4eea8b..6174025 100644 |
13 | --- a/docs/glossary.rst |
14 | +++ b/docs/glossary.rst |
15 | @@ -96,7 +96,7 @@ Glossary |
16 | attachment |
17 | |
18 | Attachments are a special type of a Job that can creates an attachment |
19 | - record in the submission.xml file. They are commonly used to include |
20 | + record in the submission reports. They are commonly used to include |
21 | basic system information files and output of certain commands which can |
22 | aid in system certification. |
23 | |
24 | diff --git a/docs/manpages/plainbox-run.rst b/docs/manpages/plainbox-run.rst |
25 | index 83a5717..eaf5098 100644 |
26 | --- a/docs/manpages/plainbox-run.rst |
27 | +++ b/docs/manpages/plainbox-run.rst |
28 | @@ -191,10 +191,10 @@ plainbox-run (1) |
29 | |
30 | Some formats are more useful than others in that they are capable of |
31 | transferring more of the internal state. Depending on your application you |
32 | - may wish to choose the most generic format (json) and process it further |
33 | + may wish to choose the most generic format (tar.xz) and process it further |
34 | with additional tools, choose the most basic format (text) just to get a |
35 | simple summary of the results or lastly choose one of the two specialized |
36 | - formats (xml and html) that are specific to the Checkbox workflow. |
37 | + formats (xlsx and html) that are specific to the Checkbox workflow. |
38 | |
39 | Out of the box the following exporters are supported: |
40 | |
41 | @@ -230,7 +230,7 @@ plainbox-run (1) |
42 | xlsx |
43 | ---- |
44 | |
45 | - This exporter creates a standalone .xlsx (XML format for Microsoft Excel) |
46 | + This exporter creates a standalone .xlsx (OOXML format for Microsoft Excel) |
47 | file that contains a human-readable test report. It is quit similar to the |
48 | HTML report but it is easier to edit. It is useful for communicating with |
49 | other humans and since it is entirely standalone and off-line it can be |
50 | @@ -238,17 +238,6 @@ plainbox-run (1) |
51 | |
52 | It depends on python3-xlsxwriter package |
53 | |
54 | - hexr |
55 | - ---- |
56 | - |
57 | - This exporter creates a rather confusingly named XML document only |
58 | - applicable for internal Canonical Hardware Certification Team workflow. |
59 | - |
60 | - It is not a generic XML representation of test results and instead it |
61 | - carries quite a few legacy constructs that are only retained for |
62 | - compatibility with other internal tools. If you want generic processing |
63 | - look for JSON instead. |
64 | - |
65 | Selecting Exporter Options |
66 | ^^^^^^^^^^^^^^^^^^^^^^^^^^ |
67 | |
68 | @@ -361,15 +350,6 @@ plainbox-run (1) |
69 | with-text-attachments: |
70 | Exported spreadsheet will include text attachments on a separate sheet |
71 | |
72 | - xml |
73 | - --- |
74 | - |
75 | - client-name: |
76 | - This option allows clients to override the name of the application |
77 | - generating the XML document. By default that name is `plainbox`. To |
78 | - use this option pass ``--output-options client-name=other-name`` |
79 | - command-line option. |
80 | - |
81 | TRANSPORTING RESULTS |
82 | ==================== |
83 | |
84 | @@ -388,23 +368,12 @@ plainbox-run (1) |
85 | |
86 | Plainbox comes equipped with the following transports: |
87 | |
88 | - launchpad |
89 | - ^^^^^^^^^ |
90 | - |
91 | - This transport can send the results exported using ``xml`` exporter to the |
92 | - Launchpad Hardware Database. This is a little-known feature offered by the |
93 | - https://launchpad.net/ website. |
94 | - |
95 | certification |
96 | ^^^^^^^^^^^^^ |
97 | |
98 | - This transport can send the results exported using the ``xml`` exporter to |
99 | + This transport can send the results exported using the ``tar`` exporter to |
100 | the Canonical Certification Website (https://certification.canonical.com). |
101 | |
102 | - This transport is of little use to anyone but the Canonical Hardware |
103 | - Certification Team that also maintains Plainbox and Checkbox but it is |
104 | - mentioned here for completeness. |
105 | - |
106 | See Also |
107 | ======== |
108 | |
109 | diff --git a/docs/usage.rst b/docs/usage.rst |
110 | index c84866a..e2037b9 100644 |
111 | --- a/docs/usage.rst |
112 | +++ b/docs/usage.rst |
113 | @@ -62,8 +62,8 @@ Saving test results |
114 | ^^^^^^^^^^^^^^^^^^^ |
115 | |
116 | Anything that Plainbox captures and stores during test execution can be |
117 | -exported to a file using the exporter system. The two most commonly used |
118 | -exporters are JSON (versatile and general) and XML (for internal Canonical use). |
119 | +exported to a file using the exporter system. The three most commonly used |
120 | +exporters are tar.xz, html and xlsx. |
121 | |
122 | JSON Exporter |
123 | ------------- |
124 | @@ -83,22 +83,6 @@ exporter options can be specified, separated with commas. |
125 | |
126 | $ plainbox run --whitelist=/path/to/some/file.whitelist --output-format=com.canonical.plainbox::json --output-file=results.json |
127 | |
128 | -XML Exporter |
129 | ------------- |
130 | - |
131 | -To generate an XML file that can be sent to the :term:`certification website` |
132 | -you need to pass two additional arguments to ``plainbox run``: |
133 | - |
134 | -#. ``--output-format=com.canonical.plainbox::hexr`` |
135 | -#. ``--output-file=NAME`` where *NAME* is a file name |
136 | - |
137 | -For example, to get the default certification tests ready to be submitted |
138 | -run this command: |
139 | - |
140 | -.. code-block:: bash |
141 | - |
142 | - $ plainbox run --whitelist=/path/to/some/file.whitelist --output-format=com.canonical.plainbox::hexr --output-file=submission.xml |
143 | - |
144 | Other Exporters |
145 | --------------- |
146 | |
147 | diff --git a/plainbox/abc.py b/plainbox/abc.py |
148 | index 8b50900..3315d9d 100644 |
149 | --- a/plainbox/abc.py |
150 | +++ b/plainbox/abc.py |
151 | @@ -1064,7 +1064,7 @@ class ISessionStateTransport(metaclass=ABCMeta): |
152 | Interface for transports that send test data somewhere. |
153 | |
154 | They handle just the transmission portion of data sending; exporters are |
155 | - expected to produce data in the proper format (e.g. json, xml). |
156 | + expected to produce data in the proper format (e.g. json, tar.xz). |
157 | |
158 | Each transport can have specific parameters that are required for the |
159 | other end to properly process received information (like system |
160 | diff --git a/plainbox/data/report/hardware-1_0.rng b/plainbox/data/report/hardware-1_0.rng |
161 | deleted file mode 100644 |
162 | index 2707550..0000000 |
163 | --- a/plainbox/data/report/hardware-1_0.rng |
164 | +++ /dev/null |
165 | @@ -1,552 +0,0 @@ |
166 | -<?xml version="1.0" encoding="UTF-8" ?> |
167 | -<grammar xmlns="http://relaxng.org/ns/structure/1.0" |
168 | - datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" |
169 | - xmlns:a="http://launchpad.net/annotation"> |
170 | - <start> |
171 | - <element name="system"> |
172 | - <attribute name="version"> |
173 | - <value>1.0</value> |
174 | - </attribute> |
175 | - <interleave> |
176 | - <element name="summary"> |
177 | - <ref name="summarySection"/> |
178 | - </element> |
179 | - <element name="hardware"> |
180 | - <ref name="hardwareSection"/> |
181 | - </element> |
182 | - <element name="software"> |
183 | - <ref name="softwareSection"/> |
184 | - </element> |
185 | - <element name="questions"> |
186 | - <ref name="questionsSection"/> |
187 | - </element> |
188 | - <optional> |
189 | - <element name="context"> |
190 | - <ref name="contextSection"/> |
191 | - </element> |
192 | - </optional> |
193 | - </interleave> |
194 | - </element> |
195 | - </start> |
196 | - |
197 | - <define name="summarySection"> |
198 | - <interleave> |
199 | - <element name="live_cd"> |
200 | - <attribute name="value"> |
201 | - <ref name="booleanValue"/> |
202 | - </attribute> |
203 | - <empty/> |
204 | - </element> |
205 | - <element name="system_id"> |
206 | - <attribute name="value"> |
207 | - <text/> |
208 | - </attribute> |
209 | - <empty/> |
210 | - </element> |
211 | - <element name="distribution"> |
212 | - <attribute name="value"> |
213 | - <text/> |
214 | - </attribute> |
215 | - <empty/> |
216 | - </element> |
217 | - <element name="distroseries"> |
218 | - <attribute name="value"> |
219 | - <text/> |
220 | - </attribute> |
221 | - <empty/> |
222 | - </element> |
223 | - <element name="architecture"> |
224 | - <attribute name="value"> |
225 | - <text/> |
226 | - </attribute> |
227 | - <empty/> |
228 | - </element> |
229 | - <element name="private"> |
230 | - <attribute name="value"> |
231 | - <ref name="booleanValue"/> |
232 | - </attribute> |
233 | - <empty/> |
234 | - </element> |
235 | - <element name="contactable"> |
236 | - <attribute name="value"> |
237 | - <ref name="booleanValue"/> |
238 | - </attribute> |
239 | - <empty/> |
240 | - </element> |
241 | - <element name="date_created"> |
242 | - <attribute name="value"> |
243 | - <data type="dateTime"/> |
244 | - </attribute> |
245 | - <empty/> |
246 | - </element> |
247 | - <element name="client"> |
248 | - <attribute name="name"> |
249 | - <text/> |
250 | - </attribute> |
251 | - <attribute name="version"> |
252 | - <text/> |
253 | - </attribute> |
254 | - <empty/> |
255 | - <zeroOrMore> |
256 | - <element name="plugin"> |
257 | - <attribute name="name"> |
258 | - <text/> |
259 | - </attribute> |
260 | - <attribute name="version"> |
261 | - <text/> |
262 | - </attribute> |
263 | - </element> |
264 | - </zeroOrMore> |
265 | - </element> |
266 | - <optional> |
267 | - <element name="kernel-release"> |
268 | - <attribute name="value"> |
269 | - <text/> |
270 | - </attribute> |
271 | - </element> |
272 | - </optional> |
273 | - </interleave> |
274 | - </define> |
275 | - |
276 | - <define name="hardwareSection"> |
277 | - <interleave> |
278 | - <choice> |
279 | - <element name="hal"> |
280 | - <attribute name="version"> |
281 | - <text/> |
282 | - </attribute> |
283 | - <oneOrMore> |
284 | - <element name="device"> |
285 | - <attribute name="id"> |
286 | - <data type="integer"> |
287 | - <except> |
288 | - <value/> |
289 | - </except> |
290 | - </data> |
291 | - </attribute> |
292 | - <attribute name="udi"> |
293 | - <text/> |
294 | - </attribute> |
295 | - <optional> |
296 | - <attribute name="parent"> |
297 | - <data type="integer"/> |
298 | - </attribute> |
299 | - </optional> |
300 | - <!-- XXX: Abel Deuring 2007-12-07: |
301 | - specify a set of required properties? --> |
302 | - <oneOrMore> |
303 | - <ref name="property"/> |
304 | - </oneOrMore> |
305 | - </element> |
306 | - </oneOrMore> |
307 | - </element> |
308 | - <group> |
309 | - <interleave> |
310 | - <element name="udev"> |
311 | - <text/> |
312 | - </element> |
313 | - <element name="dmi"> |
314 | - <text/> |
315 | - </element> |
316 | - <element name="sysfs-attributes"> |
317 | - <zeroOrMore> |
318 | - <text/> |
319 | - </zeroOrMore> |
320 | - </element> |
321 | - </interleave> |
322 | - </group> |
323 | - </choice> |
324 | - <element name="processors"> |
325 | - <oneOrMore> |
326 | - <element name="processor"> |
327 | - <attribute name="id"> |
328 | - <data type="integer"> |
329 | - <except> |
330 | - <value/> |
331 | - </except> |
332 | - </data> |
333 | - </attribute> |
334 | - <attribute name="name"> |
335 | - <text/> |
336 | - </attribute> |
337 | - <oneOrMore> |
338 | - <ref name="property"/> |
339 | - </oneOrMore> |
340 | - </element> |
341 | - </oneOrMore> |
342 | - </element> |
343 | - <optional> |
344 | - <element name="aliases"> |
345 | - <zeroOrMore> |
346 | - <element name="alias"> |
347 | - <attribute name="target"> |
348 | - <text/> |
349 | - </attribute> |
350 | - <interleave> |
351 | - <element name="vendor"> |
352 | - <text/> |
353 | - </element> |
354 | - <element name="model"> |
355 | - <text/> |
356 | - </element> |
357 | - </interleave> |
358 | - </element> |
359 | - </zeroOrMore> |
360 | - </element> |
361 | - </optional> |
362 | - </interleave> |
363 | - </define> |
364 | - |
365 | - <define name="softwareSection"> |
366 | - <interleave> |
367 | - <element name="lsbrelease"> |
368 | - <!-- XXX: Abel Deuring 2007-12-07: |
369 | - specify a more restrictive set of allowed |
370 | - and/or required properties? |
371 | - --> |
372 | - <oneOrMore> |
373 | - <ref name="property"/> |
374 | - </oneOrMore> |
375 | - </element> |
376 | - <optional> |
377 | - <element name="packages"> |
378 | - <zeroOrMore> |
379 | - <element name="package"> |
380 | - <attribute name="name"/> |
381 | - <attribute name="id"> |
382 | - <data type="integer"> |
383 | - <except> |
384 | - <value/> |
385 | - </except> |
386 | - </data> |
387 | - </attribute> |
388 | - <oneOrMore> |
389 | - <ref name="property"/> |
390 | - </oneOrMore> |
391 | - </element> |
392 | - </zeroOrMore> |
393 | - </element> |
394 | - </optional> |
395 | - <optional> |
396 | - <element name="requirements"> |
397 | - <zeroOrMore> |
398 | - <element name="requirement"> |
399 | - <attribute name="name"/> |
400 | - <attribute name="id"> |
401 | - <data type="integer"> |
402 | - <except> |
403 | - <value/> |
404 | - </except> |
405 | - </data> |
406 | - </attribute> |
407 | - <oneOrMore> |
408 | - <ref name="property"/> |
409 | - </oneOrMore> |
410 | - </element> |
411 | - </zeroOrMore> |
412 | - </element> |
413 | - </optional> |
414 | - <optional> |
415 | - <element name="xorg"> |
416 | - <attribute name="version"> |
417 | - <text/> |
418 | - </attribute> |
419 | - <zeroOrMore> |
420 | - <element name="driver"> |
421 | - <optional> |
422 | - <attribute name="device"> |
423 | - <data type="integer"/> |
424 | - </attribute> |
425 | - </optional> |
426 | - <attribute name="name"> |
427 | - <text/> |
428 | - </attribute> |
429 | - <optional> |
430 | - <attribute name="version"> |
431 | - <text/> |
432 | - </attribute> |
433 | - </optional> |
434 | - <attribute name="class"> |
435 | - <text/> |
436 | - </attribute> |
437 | - </element> |
438 | - </zeroOrMore> |
439 | - </element> |
440 | - </optional> |
441 | - </interleave> |
442 | - </define> |
443 | - |
444 | - <define name="questionsSection"> |
445 | - <zeroOrMore> |
446 | - <element name="question"> |
447 | - <attribute name="name"> |
448 | - <text/> |
449 | - </attribute> |
450 | - <a:comment> |
451 | - The attribute "plugin" must be set, if the question |
452 | - is generated by a plugin. |
453 | - </a:comment> |
454 | - <optional> |
455 | - <attribute name="plugin"> |
456 | - <text/> |
457 | - </attribute> |
458 | - </optional> |
459 | - <interleave> |
460 | - <optional> |
461 | - <element name="command"> |
462 | - <text/> |
463 | - </element> |
464 | - </optional> |
465 | - <choice> |
466 | - <interleave> |
467 | - <element name="answer"> |
468 | - <attribute name="type"> |
469 | - <value>multiple_choice</value> |
470 | - </attribute> |
471 | - <optional> |
472 | - <attribute name="unit"> |
473 | - <text/> |
474 | - </attribute> |
475 | - </optional> |
476 | - <text/> |
477 | - </element> |
478 | - <element name="answer_choices"> |
479 | - <oneOrMore> |
480 | - <ref name="value"/> |
481 | - </oneOrMore> |
482 | - </element> |
483 | - </interleave> |
484 | - <element name="answer"> |
485 | - <attribute name="type"> |
486 | - <value>measurement</value> |
487 | - </attribute> |
488 | - <optional> |
489 | - <attribute name="unit"> |
490 | - <text/> |
491 | - </attribute> |
492 | - </optional> |
493 | - <data type="decimal"/> |
494 | - </element> |
495 | - </choice> |
496 | - <zeroOrMore> |
497 | - <element name="target"> |
498 | - <attribute name="id"> |
499 | - <text/> |
500 | - </attribute> |
501 | - <interleave> |
502 | - <zeroOrMore> |
503 | - <element name="driver"> |
504 | - <text/> |
505 | - </element> |
506 | - </zeroOrMore> |
507 | - </interleave> |
508 | - </element> |
509 | - </zeroOrMore> |
510 | - <optional> |
511 | - <element name="comment"> |
512 | - <text/> |
513 | - </element> |
514 | - </optional> |
515 | - </interleave> |
516 | - </element> |
517 | - </zeroOrMore> |
518 | - </define> |
519 | - |
520 | - <define name="contextSection"> |
521 | - <zeroOrMore> |
522 | - <element name="info"> |
523 | - <attribute name="command"> |
524 | - <text/> |
525 | - </attribute> |
526 | - <text/> |
527 | - </element> |
528 | - </zeroOrMore> |
529 | - </define> |
530 | - |
531 | - <a:comment> |
532 | - convenience for Python code: 'True'/'False' for boolean values |
533 | - instead of 'true'/'false' as defined by |
534 | - http://www.w3.org/2001/XMLSchema-datatypes . |
535 | - </a:comment> |
536 | - <define name="booleanValue"> |
537 | - <choice> |
538 | - <value>True</value> |
539 | - <value>False</value> |
540 | - </choice> |
541 | - </define> |
542 | - |
543 | - <define name="propertyAndValueContent"> |
544 | - <a:comment> |
545 | - Allowed types and values: |
546 | - The dbus... data types are used for HAL properties; the data |
547 | - types are specified in |
548 | - http://dbus.freedesktop.org/doc/dbus-specification.html |
549 | - The other data types are Python data types, defined in |
550 | - http://docs.python.org/lib/types.html |
551 | - </a:comment> |
552 | - <choice> |
553 | - <group> |
554 | - <attribute name="type"> |
555 | - <choice> |
556 | - <value>dbus.Boolean</value> |
557 | - <value>bool</value> |
558 | - </choice> |
559 | - </attribute> |
560 | - <ref name="booleanValue"/> |
561 | - </group> |
562 | - <group> |
563 | - <attribute name="type"> |
564 | - <choice> |
565 | - <value>dbus.String</value> |
566 | - <value>dbus.UTF8String</value> |
567 | - <value>str</value> |
568 | - </choice> |
569 | - </attribute> |
570 | - <text/> |
571 | - </group> |
572 | - <group> |
573 | - <attribute name="type"> |
574 | - <value>dbus.Byte</value> |
575 | - </attribute> |
576 | - <data type="unsignedByte"> |
577 | - <except> |
578 | - <value/> |
579 | - </except> |
580 | - </data> |
581 | - </group> |
582 | - <group> |
583 | - <attribute name="type"> |
584 | - <value>dbus.Int16</value> |
585 | - </attribute> |
586 | - <data type="short"> |
587 | - <except> |
588 | - <value/> |
589 | - </except> |
590 | - </data> |
591 | - </group> |
592 | - <group> |
593 | - <attribute name="type"> |
594 | - <value>dbus.Int32</value> |
595 | - </attribute> |
596 | - <data type="int"> |
597 | - <except> |
598 | - <value/> |
599 | - </except> |
600 | - </data> |
601 | - </group> |
602 | - <group> |
603 | - <attribute name="type"> |
604 | - <value>dbus.Int64</value> |
605 | - </attribute> |
606 | - <data type="long"> |
607 | - <except> |
608 | - <value/> |
609 | - </except> |
610 | - </data> |
611 | - </group> |
612 | - <group> |
613 | - <attribute name="type"> |
614 | - <value>dbus.UInt16</value> |
615 | - </attribute> |
616 | - <data type="unsignedShort"> |
617 | - <except> |
618 | - <value/> |
619 | - </except> |
620 | - </data> |
621 | - </group> |
622 | - <group> |
623 | - <attribute name="type"> |
624 | - <value>dbus.UInt32</value> |
625 | - </attribute> |
626 | - <data type="unsignedInt"> |
627 | - <except> |
628 | - <value/> |
629 | - </except> |
630 | - </data> |
631 | - </group> |
632 | - <group> |
633 | - <attribute name="type"> |
634 | - <value>dbus.UInt64</value> |
635 | - </attribute> |
636 | - <data type="unsignedLong"> |
637 | - <except> |
638 | - <value/> |
639 | - </except> |
640 | - </data> |
641 | - </group> |
642 | - <group> |
643 | - <attribute name="type"> |
644 | - <value>int</value> |
645 | - </attribute> |
646 | - <data type="long"> |
647 | - <except> |
648 | - <value/> |
649 | - </except> |
650 | - </data> |
651 | - </group> |
652 | - <group> |
653 | - <attribute name="type"> |
654 | - <value>long</value> |
655 | - </attribute> |
656 | - <data type="integer"> |
657 | - <except> |
658 | - <value/> |
659 | - </except> |
660 | - </data> |
661 | - </group> |
662 | - <group> |
663 | - <attribute name="type"> |
664 | - <choice> |
665 | - <value>dbus.Double</value> |
666 | - <value>float</value> |
667 | - </choice> |
668 | - </attribute> |
669 | - <data type="decimal"/> |
670 | - </group> |
671 | - <group> |
672 | - <attribute name="type"> |
673 | - <choice> |
674 | - <value>dbus.Array</value> |
675 | - <value>list</value> |
676 | - </choice> |
677 | - </attribute> |
678 | - <zeroOrMore> |
679 | - <element name="value"> |
680 | - <ref name="propertyAndValueContent"/> |
681 | - </element> |
682 | - </zeroOrMore> |
683 | - </group> |
684 | - <group> |
685 | - <attribute name="type"> |
686 | - <choice> |
687 | - <value>dbus.Dictionary</value> |
688 | - <value>dict</value> |
689 | - </choice> |
690 | - </attribute> |
691 | - <zeroOrMore> |
692 | - <element name="value"> |
693 | - <attribute name="name"> |
694 | - <text/> |
695 | - </attribute> |
696 | - <ref name="propertyAndValueContent"/> |
697 | - </element> |
698 | - </zeroOrMore> |
699 | - </group> |
700 | - </choice> |
701 | - </define> |
702 | - |
703 | - <define name="property"> |
704 | - <element name="property"> |
705 | - <attribute name="name"> |
706 | - <text/> |
707 | - </attribute> |
708 | - <ref name="propertyAndValueContent"/> |
709 | - </element> |
710 | - </define> |
711 | - |
712 | - <define name="value"> |
713 | - <element name="value"> |
714 | - <ref name="propertyAndValueContent"/> |
715 | - </element> |
716 | - </define> |
717 | -</grammar> |
718 | diff --git a/plainbox/impl/commands/test_run.py b/plainbox/impl/commands/test_run.py |
719 | index 7d6755b..19d7c9c 100644 |
720 | --- a/plainbox/impl/commands/test_run.py |
721 | +++ b/plainbox/impl/commands/test_run.py |
722 | @@ -131,7 +131,6 @@ class TestRun(TestCase): |
723 | self.assertEqual(call.exception.args, (0,)) |
724 | expected = """ |
725 | Available output formats: |
726 | - com.canonical.plainbox::hexr - Generate XML (for certification) |
727 | com.canonical.plainbox::html - Generate a standalone HTML |
728 | com.canonical.plainbox::json - Generate JSON output |
729 | com.canonical.plainbox::rfc822 - Generate RCF822 output |
730 | @@ -149,7 +148,6 @@ class TestRun(TestCase): |
731 | self.assertEqual(call.exception.args, (0,)) |
732 | expected = """ |
733 | Each format may support a different set of options |
734 | - com.canonical.plainbox::hexr: |
735 | com.canonical.plainbox::html: |
736 | com.canonical.plainbox::json: |
737 | com.canonical.plainbox::rfc822: with-io-log, squash-io-log, flatten-io-log, with-run-list, with-job-list, with-resource-map, with-job-defs, with-attachments, with-comments, with-job-via, with-job-hash, with-category-map, with-certification-status |
738 | diff --git a/plainbox/impl/exporter/jinja2.py b/plainbox/impl/exporter/jinja2.py |
739 | index 765035f..8bced61 100644 |
740 | --- a/plainbox/impl/exporter/jinja2.py |
741 | +++ b/plainbox/impl/exporter/jinja2.py |
742 | @@ -46,21 +46,6 @@ CERTIFICATION_NS = 'com.canonical.certification::' |
743 | |
744 | |
745 | @environmentfilter |
746 | -def do_sorted_xmlattr(_environment, d, autospace=True): |
747 | - """A version of xmlattr filter that sorts attributes.""" |
748 | - rv = ' '.join( |
749 | - '%s="%s"' % (escape(key), escape(value)) |
750 | - for key, value in sorted(d.items()) |
751 | - if value is not None and not isinstance(value, Undefined) |
752 | - ) |
753 | - if autospace and rv: |
754 | - rv = ' ' + rv |
755 | - if _environment.autoescape: |
756 | - rv = Markup(rv) |
757 | - return rv |
758 | - |
759 | - |
760 | -@environmentfilter |
761 | def do_strip_ns(_environment, unit_id, ns=CERTIFICATION_NS): |
762 | """Remove the namespace part of the identifier.""" |
763 | if unit_id.startswith(ns): |
764 | @@ -138,10 +123,9 @@ class Jinja2SessionStateExporter(ISessionStateExporter): |
765 | return self._unit |
766 | |
767 | def customize_environment(self, env): |
768 | - """Register filters and tests custom to the HEXR exporter.""" |
769 | + """Register filters and tests custom to the JSON exporter.""" |
770 | env.autoescape = True |
771 | env.filters['jsonify'] = json.dumps |
772 | - env.filters['sorted_xmlattr'] = do_sorted_xmlattr |
773 | env.filters['strip_ns'] = do_strip_ns |
774 | env.tests['is_name'] = do_is_name |
775 | |
776 | diff --git a/plainbox/impl/exporter/test_hexr.py b/plainbox/impl/exporter/test_hexr.py |
777 | deleted file mode 100644 |
778 | index 3ba2f62..0000000 |
779 | --- a/plainbox/impl/exporter/test_hexr.py |
780 | +++ /dev/null |
781 | @@ -1,661 +0,0 @@ |
782 | -# This file is part of Checkbox. |
783 | -# |
784 | -# Copyright 2015 Canonical Ltd. |
785 | -# Written by: |
786 | -# Zygmunt Krynicki <zygmunt.krynicki@canonical.com> |
787 | -# |
788 | -# Checkbox is free software: you can redistribute it and/or modify |
789 | -# it under the terms of the GNU General Public License version 3, |
790 | -# as published by the Free Software Foundation. |
791 | -# |
792 | -# Checkbox is distributed in the hope that it will be useful, |
793 | -# but WITHOUT ANY WARRANTY; without even the implied warranty of |
794 | -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
795 | -# GNU General Public License for more details. |
796 | -# |
797 | -# You should have received a copy of the GNU General Public License |
798 | -# along with Checkbox. If not, see <http://www.gnu.org/licenses/>. |
799 | - |
800 | -"""Tests for the hexr exporter.""" |
801 | - |
802 | -from io import BytesIO |
803 | -from unittest import TestCase |
804 | -from xml.etree import ElementTree |
805 | - |
806 | -from plainbox.impl.exporter.jinja2 import CERTIFICATION_NS |
807 | -from plainbox.impl.exporter.jinja2 import Jinja2SessionStateExporter |
808 | -from plainbox.impl.exporter.jinja2 import do_strip_ns |
809 | -from plainbox.impl.providers.special import get_stubbox |
810 | -from plainbox.impl.resource import Resource |
811 | -from plainbox.impl.result import JobResultBuilder |
812 | -from plainbox.impl.session import SessionManager |
813 | -from plainbox.impl.unit.exporter import ExporterUnitSupport |
814 | -from plainbox.impl.unit.job import JobDefinition |
815 | -from plainbox.public import get_providers |
816 | -from plainbox.vendor import mock |
817 | - |
818 | - |
819 | -class FilterTests(TestCase): |
820 | - |
821 | - """Tests for additional filters.""" |
822 | - |
823 | - def test_do_strip_ns(self): |
824 | - env = mock.Mock() |
825 | - self.assertEqual(do_strip_ns(env, "ns::id", "ns::"), "id") |
826 | - |
827 | - def test_do_strip_ns__defaults(self): |
828 | - env = mock.Mock() |
829 | - self.assertEqual( |
830 | - do_strip_ns(env, "com.canonical.certification::id"), "id") |
831 | - |
832 | - |
833 | -class HexrExporterTests(TestCase): |
834 | - |
835 | - """Tests for Jinja2SessionStateExporter using the HEXR template.""" |
836 | - |
837 | - maxDiff = None |
838 | - |
839 | - def setUp(self): |
840 | - """Common initialization.""" |
841 | - exporter_unit = self._get_all_exporter_units()[ |
842 | - 'com.canonical.plainbox::hexr'] |
843 | - self.exporter = Jinja2SessionStateExporter( |
844 | - system_id='SYSTEM_ID', timestamp='TIMESTAMP', |
845 | - client_version='CLIENT_VERSION', client_name='CLIENT_NAME', |
846 | - exporter_unit=exporter_unit) |
847 | - self.manager = SessionManager.create() |
848 | - self.manager.add_local_device_context() |
849 | - |
850 | - def _get_all_exporter_units(self): |
851 | - exporter_map = {} |
852 | - for provider in get_providers(): |
853 | - for unit in provider.unit_list: |
854 | - if unit.Meta.name == 'exporter': |
855 | - exporter_map[unit.id] = ExporterUnitSupport(unit) |
856 | - return exporter_map |
857 | - |
858 | - def _populate_session(self): |
859 | - self._make_representative_jobs() |
860 | - self._make_cert_resources() |
861 | - self._make_cert_attachments() |
862 | - |
863 | - def _make_representative_jobs(self): |
864 | - # Add all of the jobs from representative.pxu so that we don't have to |
865 | - # create verbose fakes. Each job gets a simple passing result. |
866 | - state = self.manager.default_device_context.state |
867 | - stubbox = get_stubbox(validate=False, check=True) |
868 | - for job in stubbox.job_list: |
869 | - if not job.partial_id.startswith('representative/plugin/'): |
870 | - continue |
871 | - state.add_unit(job) |
872 | - result = self._make_result_for(job) |
873 | - state.update_job_result(job, result) |
874 | - last_job = job |
875 | - last_result = result |
876 | - # Add a comment to one job (the last one) |
877 | - state.update_job_result( |
878 | - last_job, last_result.get_builder( |
879 | - comments='COMMENTS').get_result()) |
880 | - |
881 | - def _make_result_for(self, job): |
882 | - builder = JobResultBuilder(outcome='pass') |
883 | - if job.plugin == 'local': |
884 | - pass |
885 | - elif job.plugin == 'resource': |
886 | - pass |
887 | - else: |
888 | - builder.io_log = [ |
889 | - (0, 'stdout', b'IO-LOG-STDOUT\n'), |
890 | - (1, 'stderr', b'IO-LOG-STDERR\n') |
891 | - ] |
892 | - return builder.get_result() |
893 | - |
894 | - def _make_cert_resources(self): |
895 | - # Create some specific resources that this exporter relies on. The |
896 | - # corresponding jobs are _not_ loaded but this is irrelevant. |
897 | - state = self.manager.default_device_context.state |
898 | - ns = CERTIFICATION_NS |
899 | - state.set_resource_list(ns + 'cpuinfo', [Resource({ |
900 | - 'PROP-1': 'VALUE-1', |
901 | - 'PROP-2': 'VALUE-2', |
902 | - 'count': '2', # NOTE: this has to be a number :/ |
903 | - })]) |
904 | - state.set_resource_list(ns + 'dpkg', [Resource({ |
905 | - 'architecture': 'dpkg.ARCHITECTURE', |
906 | - })]) |
907 | - state.set_resource_list(ns + 'lsb', [Resource({ |
908 | - 'codename': 'lsb.CODENAME', |
909 | - 'description': 'lsb.DESCRIPTION', |
910 | - 'release': 'lsb.RELEASE', |
911 | - 'distributor_id': 'lsb.DISTRIBUTOR_ID', |
912 | - })]) |
913 | - state.set_resource_list(ns + 'uname', [Resource({ |
914 | - 'release': 'uname.RELEASE', |
915 | - })]) |
916 | - state.set_resource_list(ns + 'package', [Resource({ |
917 | - 'name': 'package.0.NAME', |
918 | - 'version': 'package.0.VERSION', |
919 | - }), Resource({ |
920 | - 'name': 'package.1.NAME', |
921 | - 'version': 'package.1.VERSION', |
922 | - })]) |
923 | - state.set_resource_list(ns + 'requirements', [Resource({ |
924 | - 'name': 'requirement.0.NAME', |
925 | - 'link': 'requirement.0.LINK', |
926 | - }), Resource({ |
927 | - 'name': 'requirement.1.NAME', |
928 | - 'link': 'requirement.1.LINK', |
929 | - })]) |
930 | - |
931 | - def _make_cert_empty_resources(self): |
932 | - # Create empty resources, as experienced when the tested system |
933 | - # freezes and corrupts the content of the session. (lp:1479719) |
934 | - state = self.manager.default_device_context.state |
935 | - ns = CERTIFICATION_NS |
936 | - state.set_resource_list(ns + 'cpuinfo', []) |
937 | - state.set_resource_list(ns + 'dpkg', []) |
938 | - state.set_resource_list(ns + 'lsb', []) |
939 | - state.set_resource_list(ns + 'uname', []) |
940 | - state.set_resource_list(ns + 'package', []) |
941 | - state.set_resource_list(ns + 'requirements', []) |
942 | - |
943 | - def _make_cert_attachments(self): |
944 | - state = self.manager.default_device_context.state |
945 | - partial_id_list = ['dmi_attachment', 'sysfs_attachment', |
946 | - 'udev_attachment'] |
947 | - for partial_id in partial_id_list: |
948 | - job = JobDefinition({ |
949 | - 'id': CERTIFICATION_NS + partial_id, |
950 | - 'plugin': 'attachment' |
951 | - }) |
952 | - result = JobResultBuilder(io_log=[ |
953 | - (0, 'stdout', 'STDOUT-{}\n'.format( |
954 | - partial_id).encode('utf-8')), |
955 | - (1, 'stderr', 'STDERR-{}\n'.format( |
956 | - partial_id).encode('utf-8'))] |
957 | - ).get_result() |
958 | - state.add_unit(job) |
959 | - state.update_job_result(job, result) |
960 | - |
961 | - def _inject_evil_input(self): |
962 | - evil = '"\'<&>' |
963 | - self.exporter._system_id = evil |
964 | - self.exporter._timestamp = evil |
965 | - self.exporter._client_name = evil |
966 | - self.exporter._client_version = evil |
967 | - state = self.manager.default_device_context.state |
968 | - for resource_id in state.resource_map: |
969 | - resource_list = state.resource_map[resource_id] |
970 | - for resource in resource_list: |
971 | - for key in resource: |
972 | - if resource_id.endswith('cpuinfo') and key == 'count': |
973 | - # don't change resources for the <hardware> section |
974 | - continue |
975 | - resource[key] = evil |
976 | - new_job_state_map = {} |
977 | - for index, job_id in enumerate(sorted(state.job_state_map)): |
978 | - job_state = state.job_state_map[job_id] |
979 | - if (job_state.job.partial_id.endswith('_attachment') |
980 | - or job_state.job.partial_id == 'cpuinfo'): |
981 | - # don't change attachments for the <hardware> section |
982 | - evil_id = job_id |
983 | - else: |
984 | - evil_id = '{}-{}-{}'.format(evil, index, job_state.job.plugin) |
985 | - # NOTE: using private API |
986 | - job_state.job._data['id'] = evil_id |
987 | - job_state.result = job_state.result.get_builder( |
988 | - comments=evil, |
989 | - io_log=[(0, 'stdout', evil.encode("UTF-8"))], |
990 | - ).get_result() |
991 | - new_job_state_map[evil_id] = job_state |
992 | - # NOTE: using private API |
993 | - state._job_state_map = new_job_state_map |
994 | - |
995 | - def tearDown(self): |
996 | - """Common teardown.""" |
997 | - self.manager.destroy() |
998 | - |
999 | - def test_smoke(self): |
1000 | - """The XML document has the right data in the right spot.""" |
1001 | - self._populate_session() |
1002 | - stream = BytesIO() |
1003 | - self.exporter.dump_from_session_manager(self.manager, stream) |
1004 | - smoke_actual = stream.getvalue().decode("utf-8") |
1005 | - self.assertMultiLineEqual(_smoke_expected, smoke_actual) |
1006 | - |
1007 | - def test_without_any_data(self): |
1008 | - """The XML document can be produced without any data in the session.""" |
1009 | - stream = BytesIO() |
1010 | - self.exporter.dump_from_session_manager(self.manager, stream) |
1011 | - empty_actual = stream.getvalue().decode("utf-8") |
1012 | - self.assertMultiLineEqual(_empty_expected, empty_actual) |
1013 | - |
1014 | - def _test_escaping(self): |
1015 | - """Evil input doesn't break the correctness of the XML document.""" |
1016 | - self._populate_session() |
1017 | - self._inject_evil_input() |
1018 | - stream = BytesIO() |
1019 | - self.exporter.dump_from_session_manager(self.manager, stream) |
1020 | - evil_actual = stream.getvalue().decode("utf-8") |
1021 | - self.assertMultiLineEqual(_evil_expected, evil_actual) |
1022 | - |
1023 | - def test_empty_resources(self): |
1024 | - """Empty resources don't break the correctness of the XML document.""" |
1025 | - self._make_representative_jobs() |
1026 | - self._make_cert_empty_resources() |
1027 | - self._make_cert_attachments() |
1028 | - stream = BytesIO() |
1029 | - self.exporter.dump_from_session_manager(self.manager, stream) |
1030 | - empty_resources_actual = stream.getvalue().decode("utf-8") |
1031 | - self.assertMultiLineEqual(_empty_resources_expected, empty_resources_actual) |
1032 | - |
1033 | - def test_xml_parsability(self): |
1034 | - """Each produced output can be parsed with an XML parser.""" |
1035 | - stream1 = BytesIO(_smoke_expected.encode("utf-8")) |
1036 | - ElementTree.parse(stream1) |
1037 | - stream2 = BytesIO(_empty_expected.encode("utf-8")) |
1038 | - ElementTree.parse(stream2) |
1039 | - stream3 = BytesIO(_evil_expected.encode("utf-8")) |
1040 | - ElementTree.parse(stream3) |
1041 | - |
1042 | - |
1043 | -_smoke_expected = """\ |
1044 | -<?xml version="1.0"?> |
1045 | -<system version="1.0"> |
1046 | - <context> |
1047 | - <info command="com.canonical.plainbox::representative/plugin/attachment">IO-LOG-STDOUT |
1048 | -</info> |
1049 | - </context> |
1050 | - <hardware> |
1051 | - <dmi>STDOUT-dmi_attachment |
1052 | -</dmi> |
1053 | - <sysfs-attributes>STDOUT-sysfs_attachment |
1054 | -</sysfs-attributes> |
1055 | - <udev>STDOUT-udev_attachment |
1056 | -</udev> |
1057 | - <processors> |
1058 | - <processor id="0" name="0"> |
1059 | - <property name="count" type="str">2</property> |
1060 | - <property name="PROP-1" type="str">VALUE-1</property> |
1061 | - <property name="PROP-2" type="str">VALUE-2</property> |
1062 | - </processor> |
1063 | - <processor id="1" name="1"> |
1064 | - <property name="count" type="str">2</property> |
1065 | - <property name="PROP-1" type="str">VALUE-1</property> |
1066 | - <property name="PROP-2" type="str">VALUE-2</property> |
1067 | - </processor> |
1068 | - </processors> |
1069 | - </hardware> |
1070 | - <questions> |
1071 | - <question name="com.canonical.plainbox::representative/plugin/manual"> |
1072 | - <answer type="multiple_choice">pass</answer> |
1073 | - <answer_choices> |
1074 | - <value type="str">none</value> |
1075 | - <value type="str">pass</value> |
1076 | - <value type="str">fail</value> |
1077 | - <value type="str">skip</value> |
1078 | - </answer_choices> |
1079 | - <comment>IO-LOG-STDOUT |
1080 | -IO-LOG-STDERR |
1081 | -</comment> |
1082 | - </question> |
1083 | - <question name="com.canonical.plainbox::representative/plugin/qml"> |
1084 | - <answer type="multiple_choice">pass</answer> |
1085 | - <answer_choices> |
1086 | - <value type="str">none</value> |
1087 | - <value type="str">pass</value> |
1088 | - <value type="str">fail</value> |
1089 | - <value type="str">skip</value> |
1090 | - </answer_choices> |
1091 | - <comment>IO-LOG-STDOUT |
1092 | -IO-LOG-STDERR |
1093 | -</comment> |
1094 | - </question> |
1095 | - <question name="com.canonical.plainbox::representative/plugin/shell"> |
1096 | - <answer type="multiple_choice">pass</answer> |
1097 | - <answer_choices> |
1098 | - <value type="str">none</value> |
1099 | - <value type="str">pass</value> |
1100 | - <value type="str">fail</value> |
1101 | - <value type="str">skip</value> |
1102 | - </answer_choices> |
1103 | - <comment>IO-LOG-STDOUT |
1104 | -IO-LOG-STDERR |
1105 | -</comment> |
1106 | - </question> |
1107 | - <question name="com.canonical.plainbox::representative/plugin/user-interact"> |
1108 | - <answer type="multiple_choice">pass</answer> |
1109 | - <answer_choices> |
1110 | - <value type="str">none</value> |
1111 | - <value type="str">pass</value> |
1112 | - <value type="str">fail</value> |
1113 | - <value type="str">skip</value> |
1114 | - </answer_choices> |
1115 | - <comment>IO-LOG-STDOUT |
1116 | -IO-LOG-STDERR |
1117 | -</comment> |
1118 | - </question> |
1119 | - <question name="com.canonical.plainbox::representative/plugin/user-interact-verify"> |
1120 | - <answer type="multiple_choice">pass</answer> |
1121 | - <answer_choices> |
1122 | - <value type="str">none</value> |
1123 | - <value type="str">pass</value> |
1124 | - <value type="str">fail</value> |
1125 | - <value type="str">skip</value> |
1126 | - </answer_choices> |
1127 | - <comment>IO-LOG-STDOUT |
1128 | -IO-LOG-STDERR |
1129 | -</comment> |
1130 | - </question> |
1131 | - <question name="com.canonical.plainbox::representative/plugin/user-verify"> |
1132 | - <answer type="multiple_choice">pass</answer> |
1133 | - <answer_choices> |
1134 | - <value type="str">none</value> |
1135 | - <value type="str">pass</value> |
1136 | - <value type="str">fail</value> |
1137 | - <value type="str">skip</value> |
1138 | - </answer_choices> |
1139 | - <comment>COMMENTS</comment> |
1140 | - </question> |
1141 | - </questions> |
1142 | - <software> |
1143 | - <lsbrelease> |
1144 | - <property name="codename" type="str">lsb.CODENAME</property> |
1145 | - <property name="description" type="str">lsb.DESCRIPTION</property> |
1146 | - <property name="distributor_id" type="str">lsb.DISTRIBUTOR_ID</property> |
1147 | - <property name="release" type="str">lsb.RELEASE</property> |
1148 | - </lsbrelease> |
1149 | - <packages> |
1150 | - <package id="0" name="package.0.NAME"> |
1151 | - <property name="version" type="str">package.0.VERSION</property> |
1152 | - </package> |
1153 | - <package id="1" name="package.1.NAME"> |
1154 | - <property name="version" type="str">package.1.VERSION</property> |
1155 | - </package> |
1156 | - </packages> |
1157 | - <requirements> |
1158 | - <requirement id=" 0" name="requirement.0.NAME"> |
1159 | - <property name="link" type="str">requirement.0.LINK</property> |
1160 | - </requirement> |
1161 | - <requirement id=" 1" name="requirement.1.NAME"> |
1162 | - <property name="link" type="str">requirement.1.LINK</property> |
1163 | - </requirement> |
1164 | - </requirements> |
1165 | - </software> |
1166 | - <summary> |
1167 | - <client name="CLIENT_NAME" version="CLIENT_VERSION"/> |
1168 | - <date_created value="TIMESTAMP"/> |
1169 | - <architecture value="dpkg.ARCHITECTURE"/> |
1170 | - <distribution value="lsb.DISTRIBUTOR_ID"/> |
1171 | - <distroseries value="lsb.RELEASE"/> |
1172 | - <kernel-release value="uname.RELEASE"/> |
1173 | - <private value="False"/> |
1174 | - <contactable value="False"/> |
1175 | - <live_cd value="False"/> |
1176 | - <system_id value="SYSTEM_ID"/> |
1177 | - </summary> |
1178 | -</system>""" |
1179 | - |
1180 | - |
1181 | -_empty_expected = """\ |
1182 | -<?xml version="1.0"?> |
1183 | -<system version="1.0"> |
1184 | - <context> |
1185 | - </context> |
1186 | - <hardware> |
1187 | - <!-- the dmi_attachment job is not available, not producing the <dmi> section --> |
1188 | - <!-- the sysfs_attachment job is not available, not producing the <sysfs-attributes> tag --> |
1189 | - <!-- the udev_attachment job is not available, not producing the <udev> tag --> |
1190 | - <!-- cpuinfo resource is not available, not producing the <processors> section --> |
1191 | - </hardware> |
1192 | - <questions> |
1193 | - </questions> |
1194 | - <software> |
1195 | - <!-- lsb resource is not available, not producing the <lsbrelease> tag --> |
1196 | - <!-- package resource is not available, not producing the <packages> tag --> |
1197 | - <!-- requirements resource is not available, not producing the <requirements> tag --> |
1198 | - </software> |
1199 | - <summary> |
1200 | - <client name="CLIENT_NAME" version="CLIENT_VERSION"/> |
1201 | - <date_created value="TIMESTAMP"/> |
1202 | - <!-- dpkg resource is not available, not producing the <architecture> tag --> |
1203 | - <!-- lsb resource is not available, not producing <distribution> and <distroseries> tags --> |
1204 | - <!-- uname resource is not available, not producing the <kernel-release> tag --> |
1205 | - <private value="False"/> |
1206 | - <contactable value="False"/> |
1207 | - <live_cd value="False"/> |
1208 | - <system_id value="SYSTEM_ID"/> |
1209 | - </summary> |
1210 | -</system>""" |
1211 | - |
1212 | -_escaped_evil_text = '"'<&>' |
1213 | -_evil_expected = """\ |
1214 | -<?xml version="1.0"?> |
1215 | -<system version="1.0"> |
1216 | - <context> |
1217 | - <info command="com.canonical.plainbox::"'<&>-3-attachment">"'<&></info> |
1218 | - </context> |
1219 | - <hardware> |
1220 | - <dmi>"'<&></dmi> |
1221 | - <sysfs-attributes>"'<&></sysfs-attributes> |
1222 | - <udev>"'<&></udev> |
1223 | - <processors> |
1224 | - <processor id="0" name="0"> |
1225 | - <property name="count" type="str">2</property> |
1226 | - <property name="PROP-1" type="str">{evil}</property> |
1227 | - <property name="PROP-2" type="str">{evil}</property> |
1228 | - </processor> |
1229 | - <processor id="1" name="1"> |
1230 | - <property name="count" type="str">2</property> |
1231 | - <property name="PROP-1" type="str">{evil}</property> |
1232 | - <property name="PROP-2" type="str">{evil}</property> |
1233 | - </processor> |
1234 | - </processors> |
1235 | - </hardware> |
1236 | - <questions> |
1237 | - <question name="com.canonical.plainbox::"'<&>-10-user-interact-verify"> |
1238 | - <answer type="multiple_choice">pass</answer> |
1239 | - <answer_choices> |
1240 | - <value type="str">none</value> |
1241 | - <value type="str">pass</value> |
1242 | - <value type="str">fail</value> |
1243 | - <value type="str">skip</value> |
1244 | - </answer_choices> |
1245 | - <comment>"'<&></comment> |
1246 | - </question> |
1247 | - <question name="com.canonical.plainbox::"'<&>-11-user-verify"> |
1248 | - <answer type="multiple_choice">pass</answer> |
1249 | - <answer_choices> |
1250 | - <value type="str">none</value> |
1251 | - <value type="str">pass</value> |
1252 | - <value type="str">fail</value> |
1253 | - <value type="str">skip</value> |
1254 | - </answer_choices> |
1255 | - <comment>"'<&></comment> |
1256 | - </question> |
1257 | - <question name="com.canonical.plainbox::"'<&>-5-manual"> |
1258 | - <answer type="multiple_choice">pass</answer> |
1259 | - <answer_choices> |
1260 | - <value type="str">none</value> |
1261 | - <value type="str">pass</value> |
1262 | - <value type="str">fail</value> |
1263 | - <value type="str">skip</value> |
1264 | - </answer_choices> |
1265 | - <comment>"'<&></comment> |
1266 | - </question> |
1267 | - <question name="com.canonical.plainbox::"'<&>-6-qml"> |
1268 | - <answer type="multiple_choice">pass</answer> |
1269 | - <answer_choices> |
1270 | - <value type="str">none</value> |
1271 | - <value type="str">pass</value> |
1272 | - <value type="str">fail</value> |
1273 | - <value type="str">skip</value> |
1274 | - </answer_choices> |
1275 | - <comment>"'<&></comment> |
1276 | - </question> |
1277 | - <question name="com.canonical.plainbox::"'<&>-8-shell"> |
1278 | - <answer type="multiple_choice">pass</answer> |
1279 | - <answer_choices> |
1280 | - <value type="str">none</value> |
1281 | - <value type="str">pass</value> |
1282 | - <value type="str">fail</value> |
1283 | - <value type="str">skip</value> |
1284 | - </answer_choices> |
1285 | - <comment>"'<&></comment> |
1286 | - </question> |
1287 | - <question name="com.canonical.plainbox::"'<&>-9-user-interact"> |
1288 | - <answer type="multiple_choice">pass</answer> |
1289 | - <answer_choices> |
1290 | - <value type="str">none</value> |
1291 | - <value type="str">pass</value> |
1292 | - <value type="str">fail</value> |
1293 | - <value type="str">skip</value> |
1294 | - </answer_choices> |
1295 | - <comment>"'<&></comment> |
1296 | - </question> |
1297 | - </questions> |
1298 | - <software> |
1299 | - <lsbrelease> |
1300 | - <property name="codename" type="str">{evil}</property> |
1301 | - <property name="description" type="str">{evil}</property> |
1302 | - <property name="distributor_id" type="str">{evil}</property> |
1303 | - <property name="release" type="str">{evil}</property> |
1304 | - </lsbrelease> |
1305 | - <packages> |
1306 | - <package id="0" name="{evil}"> |
1307 | - <property name="version" type="str">{evil}</property> |
1308 | - </package> |
1309 | - <package id="1" name="{evil}"> |
1310 | - <property name="version" type="str">{evil}</property> |
1311 | - </package> |
1312 | - </packages> |
1313 | - <requirements> |
1314 | - <requirement id=" 0" name="{evil}"> |
1315 | - <property name="link" type="str">{evil}</property> |
1316 | - </requirement> |
1317 | - <requirement id=" 1" name="{evil}"> |
1318 | - <property name="link" type="str">{evil}</property> |
1319 | - </requirement> |
1320 | - </requirements> |
1321 | - </software> |
1322 | - <summary> |
1323 | - <client name="{evil}" version="{evil}"/> |
1324 | - <date_created value="{evil}"/> |
1325 | - <architecture value="{evil}"/> |
1326 | - <distribution value="{evil}"/> |
1327 | - <distroseries value="{evil}"/> |
1328 | - <kernel-release value="{evil}"/> |
1329 | - <private value="False"/> |
1330 | - <contactable value="False"/> |
1331 | - <live_cd value="False"/> |
1332 | - <system_id value="{evil}"/> |
1333 | - </summary> |
1334 | -</system>""".format(evil=_escaped_evil_text) |
1335 | - |
1336 | -_empty_resources_expected = """\ |
1337 | -<?xml version="1.0"?> |
1338 | -<system version="1.0"> |
1339 | - <context> |
1340 | - <info command="com.canonical.plainbox::representative/plugin/attachment">IO-LOG-STDOUT |
1341 | -</info> |
1342 | - </context> |
1343 | - <hardware> |
1344 | - <dmi>STDOUT-dmi_attachment |
1345 | -</dmi> |
1346 | - <sysfs-attributes>STDOUT-sysfs_attachment |
1347 | -</sysfs-attributes> |
1348 | - <udev>STDOUT-udev_attachment |
1349 | -</udev> |
1350 | - <!-- cpuinfo resource is not available, not producing the <processors> section --> |
1351 | - </hardware> |
1352 | - <questions> |
1353 | - <question name="com.canonical.plainbox::representative/plugin/manual"> |
1354 | - <answer type="multiple_choice">pass</answer> |
1355 | - <answer_choices> |
1356 | - <value type="str">none</value> |
1357 | - <value type="str">pass</value> |
1358 | - <value type="str">fail</value> |
1359 | - <value type="str">skip</value> |
1360 | - </answer_choices> |
1361 | - <comment>IO-LOG-STDOUT |
1362 | -IO-LOG-STDERR |
1363 | -</comment> |
1364 | - </question> |
1365 | - <question name="com.canonical.plainbox::representative/plugin/qml"> |
1366 | - <answer type="multiple_choice">pass</answer> |
1367 | - <answer_choices> |
1368 | - <value type="str">none</value> |
1369 | - <value type="str">pass</value> |
1370 | - <value type="str">fail</value> |
1371 | - <value type="str">skip</value> |
1372 | - </answer_choices> |
1373 | - <comment>IO-LOG-STDOUT |
1374 | -IO-LOG-STDERR |
1375 | -</comment> |
1376 | - </question> |
1377 | - <question name="com.canonical.plainbox::representative/plugin/shell"> |
1378 | - <answer type="multiple_choice">pass</answer> |
1379 | - <answer_choices> |
1380 | - <value type="str">none</value> |
1381 | - <value type="str">pass</value> |
1382 | - <value type="str">fail</value> |
1383 | - <value type="str">skip</value> |
1384 | - </answer_choices> |
1385 | - <comment>IO-LOG-STDOUT |
1386 | -IO-LOG-STDERR |
1387 | -</comment> |
1388 | - </question> |
1389 | - <question name="com.canonical.plainbox::representative/plugin/user-interact"> |
1390 | - <answer type="multiple_choice">pass</answer> |
1391 | - <answer_choices> |
1392 | - <value type="str">none</value> |
1393 | - <value type="str">pass</value> |
1394 | - <value type="str">fail</value> |
1395 | - <value type="str">skip</value> |
1396 | - </answer_choices> |
1397 | - <comment>IO-LOG-STDOUT |
1398 | -IO-LOG-STDERR |
1399 | -</comment> |
1400 | - </question> |
1401 | - <question name="com.canonical.plainbox::representative/plugin/user-interact-verify"> |
1402 | - <answer type="multiple_choice">pass</answer> |
1403 | - <answer_choices> |
1404 | - <value type="str">none</value> |
1405 | - <value type="str">pass</value> |
1406 | - <value type="str">fail</value> |
1407 | - <value type="str">skip</value> |
1408 | - </answer_choices> |
1409 | - <comment>IO-LOG-STDOUT |
1410 | -IO-LOG-STDERR |
1411 | -</comment> |
1412 | - </question> |
1413 | - <question name="com.canonical.plainbox::representative/plugin/user-verify"> |
1414 | - <answer type="multiple_choice">pass</answer> |
1415 | - <answer_choices> |
1416 | - <value type="str">none</value> |
1417 | - <value type="str">pass</value> |
1418 | - <value type="str">fail</value> |
1419 | - <value type="str">skip</value> |
1420 | - </answer_choices> |
1421 | - <comment>COMMENTS</comment> |
1422 | - </question> |
1423 | - </questions> |
1424 | - <software> |
1425 | - <!-- lsb resource is not available, not producing the <lsbrelease> tag --> |
1426 | - <packages> |
1427 | - </packages> |
1428 | - <requirements> |
1429 | - </requirements> |
1430 | - </software> |
1431 | - <summary> |
1432 | - <client name="CLIENT_NAME" version="CLIENT_VERSION"/> |
1433 | - <date_created value="TIMESTAMP"/> |
1434 | - <!-- dpkg resource is not available, not producing the <architecture> tag --> |
1435 | - <!-- lsb resource is not available, not producing <distribution> and <distroseries> tags --> |
1436 | - <!-- uname resource is not available, not producing the <kernel-release> tag --> |
1437 | - <private value="False"/> |
1438 | - <contactable value="False"/> |
1439 | - <live_cd value="False"/> |
1440 | - <system_id value="SYSTEM_ID"/> |
1441 | - </summary> |
1442 | -</system>""" |
1443 | diff --git a/plainbox/impl/launcher.py b/plainbox/impl/launcher.py |
1444 | index dffab32..c535aef 100644 |
1445 | --- a/plainbox/impl/launcher.py |
1446 | +++ b/plainbox/impl/launcher.py |
1447 | @@ -133,12 +133,6 @@ class LauncherDefinitionLegacy(LauncherDefinition): |
1448 | section="submission", |
1449 | help_text=_("Label on the 'send' button")) |
1450 | |
1451 | - submit_to_hexr = config.Variable( |
1452 | - section="submission", |
1453 | - kind=bool, |
1454 | - # TODO: default? |
1455 | - help_text=_("If enabled then test results will be also sent to HEXR")) |
1456 | - |
1457 | submit_to = config.Variable( |
1458 | section="transport", |
1459 | validator_list=[config.ChoiceValidator(get_all_transports().keys())], |
1460 | diff --git a/plainbox/impl/providers/exporters/data/checkbox.json b/plainbox/impl/providers/exporters/data/checkbox.json |
1461 | index 31bfff6..00ed7e1 100644 |
1462 | --- a/plainbox/impl/providers/exporters/data/checkbox.json |
1463 | +++ b/plainbox/impl/providers/exporters/data/checkbox.json |
1464 | @@ -42,7 +42,7 @@ |
1465 | "name": "{{ job_state.job.tr_summary() }}", |
1466 | "certification_status": "{{ job_state.effective_certification_status }}", |
1467 | "category": "{{ job_state.effective_category_id }}", |
1468 | - "status": "{{ job_state.result.outcome_meta().hexr_xml_mapping }}", |
1469 | + "status": "{{ job_state.result.outcome_meta().hexr_mapping }}", |
1470 | "comments": {{ job_state.result.comments | jsonify | safe }}, |
1471 | "io_log": {{ job_state.result.io_log_as_flat_text | jsonify | safe }}, |
1472 | "type": "test", |
1473 | diff --git a/plainbox/impl/providers/exporters/data/hexr.xml b/plainbox/impl/providers/exporters/data/hexr.xml |
1474 | deleted file mode 100644 |
1475 | index 649c84c..0000000 |
1476 | --- a/plainbox/impl/providers/exporters/data/hexr.xml |
1477 | +++ /dev/null |
1478 | @@ -1,161 +0,0 @@ |
1479 | -{%- set ns = 'com.canonical.certification::' -%} |
1480 | -{%- set state = manager.default_device_context.state -%} |
1481 | -{%- set job_state_map = state.job_state_map -%} |
1482 | -{%- set hexr_outcome_list = OUTCOME_METADATA_MAP.values()|selectattr('hexr_xml_allowed')|sort(attribute='hexr_xml_order') -%} |
1483 | -<?xml version="1.0"?> |
1484 | -<system version="1.0"> |
1485 | - <context> |
1486 | - {%- for job_id in job_state_map|sort %} |
1487 | - {%- set job_state = job_state_map[job_id] %} |
1488 | - {%- if job_state.job.id|strip_ns not in ("dmi_attachment", "sysfs_attachment", "udev_attachment") and job_state.job.plugin == "attachment" and job_state.result.outcome %} |
1489 | - <info command="{{ job_state.job.id|strip_ns }}">{{ job_state.result.io_log_as_text_attachment }}</info> |
1490 | - {%- endif %} |
1491 | - {%- endfor %} |
1492 | - </context> |
1493 | - <hardware> |
1494 | - {%- if ns ~ 'dmi_attachment' in state.job_state_map %} |
1495 | - {%- set dmi_attachment = state.job_state_map[ns ~ 'dmi_attachment'].result.io_log_as_text_attachment %} |
1496 | - <dmi>{{ dmi_attachment }}</dmi> |
1497 | - {%- else %} |
1498 | - <!-- the dmi_attachment job is not available, not producing the <dmi> section --> |
1499 | - {%- endif %} |
1500 | - {%- if ns ~ 'sysfs_attachment' in state.job_state_map %} |
1501 | - {%- set sysfs_attachment = state.job_state_map[ns ~ 'sysfs_attachment'].result.io_log_as_text_attachment %} |
1502 | - <sysfs-attributes>{{ sysfs_attachment }}</sysfs-attributes> |
1503 | - {%- else %} |
1504 | - <!-- the sysfs_attachment job is not available, not producing the <sysfs-attributes> tag --> |
1505 | - {%- endif %} |
1506 | - {%- if ns ~ 'udev_attachment' in state.job_state_map %} |
1507 | - {%- set udev_attachment = state.job_state_map[ns ~ 'udev_attachment'].result.io_log_as_text_attachment %} |
1508 | - <udev>{{ udev_attachment }}</udev> |
1509 | - {%- else %} |
1510 | - <!-- the udev_attachment job is not available, not producing the <udev> tag --> |
1511 | - {%- endif %} |
1512 | - {%- if ns ~ 'cpuinfo' in state.resource_map and state.resource_map[ns ~ 'cpuinfo'][0] %} |
1513 | - {%- set processor_resource = state.resource_map[ns ~ 'cpuinfo'][0] %} |
1514 | - {#- FIXME: The <processors> section is quite broken by design. #} |
1515 | - {#- Yes, it does copy the data for the 0th CPU $count times. #} |
1516 | - <processors> |
1517 | - {%- for dummy_index in range(processor_resource.count|int) %} |
1518 | - <processor id="{{ loop.index0 }}" name="{{ loop.index0 }}"> |
1519 | - {%- for key in processor_resource|sort %} |
1520 | - <property name="{{ key }}" type="str">{{ processor_resource[key] }}</property> |
1521 | - {%- endfor %} |
1522 | - </processor> |
1523 | - {%- endfor %} |
1524 | - </processors> |
1525 | - {%- else %} |
1526 | - <!-- cpuinfo resource is not available, not producing the <processors> section --> |
1527 | - {%- endif %} |
1528 | - </hardware> |
1529 | - <questions> |
1530 | - {%- for job_id in job_state_map|sort %} |
1531 | - {%- set job_state = job_state_map[job_id] %} |
1532 | - {%- set job = job_state.job %} |
1533 | - {%- set result = job_state.result %} |
1534 | - {%- if job.plugin not in ("resource", "local", "attachment") and job_state.result.outcome %} |
1535 | - <question{{ { |
1536 | - 'name': job.id|strip_ns, |
1537 | - 'certification_status': job_state.certification_status, |
1538 | - }|sorted_xmlattr }}> |
1539 | - <answer type="multiple_choice">{{ result.outcome_meta().hexr_xml_mapping }}</answer> |
1540 | - {#- FIXME: Yes the <answer_choices> section is useless #} |
1541 | - <answer_choices> |
1542 | - {%- for outcome_info in hexr_outcome_list %} |
1543 | - <value type="str">{{ outcome_info.hexr_xml_mapping }}</value> |
1544 | - {%- endfor %} |
1545 | - </answer_choices> |
1546 | - {#- FIXME: yes this does munges comments and I/O log #} |
1547 | - <comment> |
1548 | - {%- if result.comments -%} |
1549 | - {{ result.comments }} |
1550 | - {%- else -%} |
1551 | - {{ result.io_log_as_flat_text }} |
1552 | - {%- endif -%} |
1553 | - </comment> |
1554 | - </question> |
1555 | - {%- endif %} |
1556 | - {%- endfor %} |
1557 | - </questions> |
1558 | - <software> |
1559 | - {%- if ns ~ 'lsb' in state.resource_map and state.resource_map[ns ~ 'lsb'][0] %} |
1560 | - {%- set lsb_resource = state.resource_map[ns ~ 'lsb'][0] %} |
1561 | - <lsbrelease> |
1562 | - {%- for key in lsb_resource|sort %} |
1563 | - <property name="{{ key }}" type="str">{{ lsb_resource[key] }}</property> |
1564 | - {%- endfor %} |
1565 | - </lsbrelease> |
1566 | - {%- else %} |
1567 | - <!-- lsb resource is not available, not producing the <lsbrelease> tag --> |
1568 | - {%- endif %} |
1569 | - {%- if ns ~ 'package' in state.resource_map %} |
1570 | - {%- set package_resource_list = state.resource_map[ns ~ 'package'] %} |
1571 | - <packages> |
1572 | - {%- for package_resource in package_resource_list if package_resource.name %} |
1573 | - <package id="{{ loop.index0 }}" name="{{ package_resource.name }}"> |
1574 | - {%- for key in package_resource|reject('is_name')|sort %} |
1575 | - <property name="{{ key }}" type="str">{{ package_resource[key] }}</property> |
1576 | - {%- endfor %} |
1577 | - </package> |
1578 | - {%- endfor %} |
1579 | - </packages> |
1580 | - {%- else %} |
1581 | - <!-- package resource is not available, not producing the <packages> tag --> |
1582 | - {%- endif %} |
1583 | - {%- if ns ~ 'snap' in state.resource_map %} |
1584 | - {%- set snap_package_resource_list = state.resource_map[ns ~ 'snap'] %} |
1585 | - <snap_packages> |
1586 | - {%- for snap_package_resource in snap_package_resource_list if snap_package_resource.name %} |
1587 | - <snap_package id="{{ loop.index0 }}" name="{{ snap_package_resource.name }}"> |
1588 | - {%- for key in snap_package_resource|reject('is_name')|sort %} |
1589 | - <property name="{{ key }}" type="str">{{ snap_package_resource[key] }}</property> |
1590 | - {%- endfor %} |
1591 | - </snap_package> |
1592 | - {%- endfor %} |
1593 | - </snap_packages> |
1594 | - {%- endif %} |
1595 | - {%- if ns ~ 'requirements' in state.resource_map %} |
1596 | - {%- set requirement_resource_list = state.resource_map[ns ~ 'requirements'] %} |
1597 | - <requirements> |
1598 | - {%- for requirement_resource in requirement_resource_list %} |
1599 | - <requirement id=" {{ loop.index0 }}" name="{{ requirement_resource.name }}"> |
1600 | - {%- for key in requirement_resource|reject('is_name')|sort %} |
1601 | - <property name="{{ key }}" type="str">{{ requirement_resource[key] }}</property> |
1602 | - {%- endfor %} |
1603 | - </requirement> |
1604 | - {%- endfor %} |
1605 | - </requirements> |
1606 | - {%- else %} |
1607 | - <!-- requirements resource is not available, not producing the <requirements> tag --> |
1608 | - {%- endif %} |
1609 | - </software> |
1610 | - <summary> |
1611 | - {#- FIXME: with all the <property> tags those should not be custom #} |
1612 | - <client name="{{ client_name }}" version="{{ client_version }}"/> |
1613 | - <date_created value="{{ timestamp }}"/> |
1614 | - {%- if ns ~ 'dpkg' in state.resource_map and state.resource_map[ns ~ 'dpkg'][0] %} |
1615 | - {%- set dpkg_resource = state.resource_map[ns ~ 'dpkg'][0] %} |
1616 | - <architecture value="{{ dpkg_resource.architecture }}"/> |
1617 | - {%- else %} |
1618 | - <!-- dpkg resource is not available, not producing the <architecture> tag --> |
1619 | - {%- endif %} |
1620 | - {%- if ns ~ 'lsb' in state.resource_map and lsb_resource %} |
1621 | - {#- NOTE: lsb_resource is computed earlier, if the condition above holds #} |
1622 | - <distribution value="{{ lsb_resource.distributor_id }}"/> |
1623 | - <distroseries value="{{ lsb_resource.release }}"/> |
1624 | - {%- else %} |
1625 | - <!-- lsb resource is not available, not producing <distribution> and <distroseries> tags --> |
1626 | - {%- endif %} |
1627 | - {%- if ns ~ 'uname' in state.resource_map and state.resource_map[ns ~ 'uname'][0] %} |
1628 | - {%- set uname_resource = state.resource_map[ns ~ 'uname'][0] %} |
1629 | - <kernel-release value="{{ uname_resource.release }}"/> |
1630 | - {%- else %} |
1631 | - <!-- uname resource is not available, not producing the <kernel-release> tag --> |
1632 | - {%- endif %} |
1633 | - {#- FIXME: yes, this is just hard-coded non-sense #} |
1634 | - <private value="False"/> |
1635 | - <contactable value="False"/> |
1636 | - <live_cd value="False"/> |
1637 | - <system_id value="{{ system_id }}"/> |
1638 | - </summary> |
1639 | -</system> |
1640 | diff --git a/plainbox/impl/providers/exporters/units/exporter.pxu b/plainbox/impl/providers/exporters/units/exporter.pxu |
1641 | index 66e155a..0d7ec67 100644 |
1642 | --- a/plainbox/impl/providers/exporters/units/exporter.pxu |
1643 | +++ b/plainbox/impl/providers/exporters/units/exporter.pxu |
1644 | @@ -1,11 +1,4 @@ |
1645 | unit: exporter |
1646 | -id: hexr |
1647 | -_summary: Generate XML (for certification) |
1648 | -entry_point: jinja2 |
1649 | -file_extension: xml |
1650 | -data: {"template": "hexr.xml"} |
1651 | - |
1652 | -unit: exporter |
1653 | id: html |
1654 | _summary: Generate a standalone HTML |
1655 | entry_point: jinja2 |
1656 | diff --git a/plainbox/impl/result.py b/plainbox/impl/result.py |
1657 | index 8bbf98a..ec325e6 100644 |
1658 | --- a/plainbox/impl/result.py |
1659 | +++ b/plainbox/impl/result.py |
1660 | @@ -54,8 +54,7 @@ logger = logging.getLogger("plainbox.result") |
1661 | # U+007F..U+009F. Also known as control characters." |
1662 | # |
1663 | # NOTE: we don't want to match certain control characters (newlines, carriage |
1664 | -# returns, tabs or vertical tabs as those are allowed by lxml and it would be |
1665 | -# silly to strip them. |
1666 | +# returns, tabs or vertical tabs). |
1667 | CONTROL_CODE_RE_STR = re.compile( |
1668 | "(?![\n\r\t\v])[\u0000-\u001F]|[\u007F-\u009F]") |
1669 | |
1670 | @@ -105,24 +104,11 @@ IOLogRecord = namedtuple("IOLogRecord", "delay stream_name data".split()) |
1671 | # for graphical applications in the same way as color_ansi is useful for |
1672 | # console applications. |
1673 | # |
1674 | -# hexr_xml_mapping - a string that needs to be used in the XML report for the |
1675 | -# Canonical HEXR application (also for the Canonical Certification web |
1676 | -# application). Those values must be in sync with a piece of code in |
1677 | -# checkbox_support that handles parsing of the XML report, for as long as the |
1678 | -# report is to be maintained. |
1679 | -# |
1680 | -# hexr_xml_allowed - a boolean indicating that this outcome may appear |
1681 | -# in the XML document generated for the Canonical HEXR application. In |
1682 | -# theory it can go away as we can now easily control both "sides" |
1683 | -# (client and server) but it does exist today. |
1684 | -# |
1685 | -# hexr_xml_order - an (optional) integer used for ordering allowed values. |
1686 | -# This is used so that the XML output can have a fixed ordering regardless of |
1687 | -# the actual order of entries in the dictionary. |
1688 | +# hexr_mapping - a string that needs to be used in the XML report for the |
1689 | +# Canonical Certification web application. |
1690 | OutcomeMetadata = namedtuple( |
1691 | "OutcomeMetadata", ("value unicode_sigil tr_outcome tr_label color_ansi" |
1692 | - " color_hex hexr_xml_mapping hexr_xml_allowed" |
1693 | - " hexr_xml_order")) |
1694 | + " color_hex hexr_mapping")) |
1695 | |
1696 | OUTCOME_METADATA_MAP = { |
1697 | IJobResult.OUTCOME_NONE: OutcomeMetadata( |
1698 | @@ -132,9 +118,7 @@ OUTCOME_METADATA_MAP = { |
1699 | tr_label=C_("chart label", "not started"), |
1700 | color_ansi="", |
1701 | color_hex="#000000", |
1702 | - hexr_xml_mapping="none", |
1703 | - hexr_xml_allowed=True, |
1704 | - hexr_xml_order=0, |
1705 | + hexr_mapping="none", |
1706 | ), |
1707 | IJobResult.OUTCOME_PASS: OutcomeMetadata( |
1708 | value=IJobResult.OUTCOME_PASS, |
1709 | @@ -143,9 +127,7 @@ OUTCOME_METADATA_MAP = { |
1710 | tr_label=C_("chart label", "passed"), |
1711 | color_ansi="\033[32;1m", |
1712 | color_hex="#6AA84F", |
1713 | - hexr_xml_mapping="pass", |
1714 | - hexr_xml_allowed=True, |
1715 | - hexr_xml_order=1, |
1716 | + hexr_mapping="pass", |
1717 | ), |
1718 | IJobResult.OUTCOME_FAIL: OutcomeMetadata( |
1719 | value=IJobResult.OUTCOME_FAIL, |
1720 | @@ -154,9 +136,7 @@ OUTCOME_METADATA_MAP = { |
1721 | tr_label=C_("chart label", "failed"), |
1722 | color_ansi="\033[31;1m", |
1723 | color_hex="#DC3912", |
1724 | - hexr_xml_mapping="fail", |
1725 | - hexr_xml_allowed=True, |
1726 | - hexr_xml_order=2, |
1727 | + hexr_mapping="fail", |
1728 | ), |
1729 | IJobResult.OUTCOME_SKIP: OutcomeMetadata( |
1730 | value=IJobResult.OUTCOME_SKIP, |
1731 | @@ -165,9 +145,7 @@ OUTCOME_METADATA_MAP = { |
1732 | tr_label=C_("chart label", "skipped"), |
1733 | color_ansi="\033[33;1m", |
1734 | color_hex="#FF9900", |
1735 | - hexr_xml_mapping="skip", |
1736 | - hexr_xml_allowed=True, |
1737 | - hexr_xml_order=3, |
1738 | + hexr_mapping="skip", |
1739 | ), |
1740 | IJobResult.OUTCOME_NOT_SUPPORTED: OutcomeMetadata( |
1741 | value=IJobResult.OUTCOME_NOT_SUPPORTED, |
1742 | @@ -176,9 +154,7 @@ OUTCOME_METADATA_MAP = { |
1743 | tr_label=C_("chart label", "not supported"), |
1744 | color_ansi="\033[33;1m", |
1745 | color_hex="#FF9900", |
1746 | - hexr_xml_mapping="skip", |
1747 | - hexr_xml_allowed=False, |
1748 | - hexr_xml_order=None, |
1749 | + hexr_mapping="skip", |
1750 | ), |
1751 | IJobResult.OUTCOME_NOT_IMPLEMENTED: OutcomeMetadata( |
1752 | value=IJobResult.OUTCOME_NOT_IMPLEMENTED, |
1753 | @@ -187,9 +163,7 @@ OUTCOME_METADATA_MAP = { |
1754 | tr_label=C_("chart label", "not implemented"), |
1755 | color_ansi="\033[31;1m", |
1756 | color_hex="#DC3912", |
1757 | - hexr_xml_mapping="skip", |
1758 | - hexr_xml_allowed=False, |
1759 | - hexr_xml_order=None, |
1760 | + hexr_mapping="skip", |
1761 | ), |
1762 | IJobResult.OUTCOME_UNDECIDED: OutcomeMetadata( |
1763 | value=IJobResult.OUTCOME_UNDECIDED, |
1764 | @@ -198,9 +172,7 @@ OUTCOME_METADATA_MAP = { |
1765 | tr_label=C_("chart label", "undecided"), |
1766 | color_ansi="\033[35;1m", |
1767 | color_hex="#FF00FF", |
1768 | - hexr_xml_mapping="skip", |
1769 | - hexr_xml_allowed=False, |
1770 | - hexr_xml_order=None, |
1771 | + hexr_mapping="skip", |
1772 | ), |
1773 | IJobResult.OUTCOME_CRASH: OutcomeMetadata( |
1774 | value=IJobResult.OUTCOME_CRASH, |
1775 | @@ -209,9 +181,7 @@ OUTCOME_METADATA_MAP = { |
1776 | tr_label=C_("chart label", "crashed"), |
1777 | color_ansi="\033[41;37;1m", |
1778 | color_hex="#FF0000", |
1779 | - hexr_xml_mapping="fail", |
1780 | - hexr_xml_allowed=False, |
1781 | - hexr_xml_order=None, |
1782 | + hexr_mapping="fail", |
1783 | ), |
1784 | } |
1785 | |
1786 | diff --git a/plainbox/impl/session/assistant.py b/plainbox/impl/session/assistant.py |
1787 | index 17c396b..52271e7 100644 |
1788 | --- a/plainbox/impl/session/assistant.py |
1789 | +++ b/plainbox/impl/session/assistant.py |
1790 | @@ -57,7 +57,6 @@ from plainbox.impl.session.manager import SessionManager |
1791 | from plainbox.impl.session.restart import IRestartStrategy |
1792 | from plainbox.impl.session.restart import detect_restart_strategy |
1793 | from plainbox.impl.session.storage import SessionStorageRepository |
1794 | -from plainbox.impl.transport import CertificationTransport |
1795 | from plainbox.impl.transport import OAuthTransport |
1796 | from plainbox.impl.transport import TransportError |
1797 | from plainbox.public import get_providers |
1798 | @@ -190,10 +189,6 @@ class SessionAssistant: |
1799 | "use an alternate execution controllers"), |
1800 | self.select_providers: ( |
1801 | "select the providers to work with"), |
1802 | - self.get_canonical_certification_transport: ( |
1803 | - "create a transport for the C3 system"), |
1804 | - self.get_canonical_hexr_transport: ( |
1805 | - "create a transport for the HEXR system"), |
1806 | self.get_old_sessions: ( |
1807 | "get previously created sessions"), |
1808 | self.delete_sessions: ( |
1809 | @@ -1475,10 +1470,6 @@ class SessionAssistant: |
1810 | self.export_to_stream: "to export the results to a stream", |
1811 | self.get_resumable_sessions: "to get resume candidates", |
1812 | self.start_new_session: "to create a new session", |
1813 | - self.get_canonical_certification_transport: ( |
1814 | - "create a transport for the C3 system"), |
1815 | - self.get_canonical_hexr_transport: ( |
1816 | - "create a transport for the HEXR system"), |
1817 | self.get_old_sessions: ( |
1818 | "get previously created sessions"), |
1819 | self.delete_sessions: ( |
1820 | @@ -1503,7 +1494,7 @@ class SessionAssistant: |
1821 | :param transport: |
1822 | A pre-created transport object such as the `CertificationTransport` |
1823 | that is useful for sending data to the Canonical Certification |
1824 | - Website and HEXR. This can also be any object conforming to the |
1825 | + Website. This can also be any object conforming to the |
1826 | appropriate API. |
1827 | :param options: |
1828 | (optional) List of options customary to the exporter that is being |
1829 | @@ -1599,71 +1590,6 @@ class SessionAssistant: |
1830 | self._metadata.flags.add(SessionMetaData.FLAG_SUBMITTED) |
1831 | self._manager.checkpoint() |
1832 | |
1833 | - @raises(ValueError, UnexpectedMethodCall) |
1834 | - def get_canonical_certification_transport( |
1835 | - self, secure_id: str, *, staging: bool=False |
1836 | - ) -> "ISesssionStateTransport": |
1837 | - """ |
1838 | - Get a transport for the Canonical Certification website. |
1839 | - |
1840 | - :param secure_id: |
1841 | - The *secure identifier* of the machine. This is an identifier |
1842 | - issued by Canonical. It is only applicable to machines that are |
1843 | - tested by the Hardware Certification team. |
1844 | - :param staging: |
1845 | - Flag indicating if the staging server should be used. |
1846 | - :returns: |
1847 | - A ISessionStateTransport instance with appropriate configuration. |
1848 | - In practice the transport object should be passed to |
1849 | - :meth:`export_to_transport()` and not handled in any other way. |
1850 | - :raises ValueError: |
1851 | - if the ``secure_id`` is malformed. |
1852 | - :raises UnexpectedMethodCall: |
1853 | - If the call is made at an unexpected time. Do not catch this error. |
1854 | - It is a bug in your program. The error message will indicate what |
1855 | - is the likely cause. |
1856 | - |
1857 | - This transport, same as the hexr transport, expects the data created by |
1858 | - the ``"hexr"`` exporter. |
1859 | - """ |
1860 | - UsageExpectation.of(self).enforce() |
1861 | - if staging: |
1862 | - url = ('https://certification.staging.canonical.com/' |
1863 | - 'submissions/submit/') |
1864 | - else: |
1865 | - url = 'https://certification.canonical.com/submissions/submit/' |
1866 | - options = "secure_id={}".format(secure_id) |
1867 | - return CertificationTransport(url, options) |
1868 | - |
1869 | - @raises(UnexpectedMethodCall) |
1870 | - def get_canonical_hexr_transport( |
1871 | - self, *, staging: bool=False |
1872 | - ) -> "ISesssionStateTransport": |
1873 | - """ |
1874 | - Get a transport for the Canonical HEXR website. |
1875 | - |
1876 | - :param staging: |
1877 | - Flag indicating if the staging server should be used. |
1878 | - :returns: |
1879 | - A ISessionStateTransport instance with appropriate configuration. |
1880 | - In practice the transport object should be passed to |
1881 | - :meth:`export_to_transport()` and not handled in any other way. |
1882 | - :raises UnexpectedMethodCall: |
1883 | - If the call is made at an unexpected time. Do not catch this error. |
1884 | - It is a bug in your program. The error message will indicate what |
1885 | - is the likely cause. |
1886 | - |
1887 | - This transport, same as the certification transport, expects the data |
1888 | - created by the ``"hexr"`` exporter. |
1889 | - """ |
1890 | - UsageExpectation.of(self).enforce() |
1891 | - if staging: |
1892 | - url = 'https://hexr.staging.canonical.com/checkbox/submit/' |
1893 | - else: |
1894 | - url = 'https://hexr.canonical.com/checkbox/submit/' |
1895 | - options = "submit_to_hexr=1" |
1896 | - return CertificationTransport(url, options) |
1897 | - |
1898 | @raises(UnexpectedMethodCall, KeyError) |
1899 | def get_ubuntu_sso_oauth_transport( |
1900 | self, transport_details: dict |
1901 | diff --git a/plainbox/impl/session/manager.py b/plainbox/impl/session/manager.py |
1902 | index 9242b15..9a056fa 100644 |
1903 | --- a/plainbox/impl/session/manager.py |
1904 | +++ b/plainbox/impl/session/manager.py |
1905 | @@ -477,7 +477,6 @@ class SessionManager(pod.POD): |
1906 | # Patch exporter map to expose short names |
1907 | legacy_mapping = { |
1908 | 'com.canonical.plainbox::global': 'global', |
1909 | - 'com.canonical.plainbox::hexr': 'xml', |
1910 | 'com.canonical.plainbox::html': 'html', |
1911 | 'com.canonical.plainbox::json': 'json', |
1912 | 'com.canonical.plainbox::junit': 'junit', |
1913 | @@ -499,7 +498,7 @@ class SessionManager(pod.POD): |
1914 | Identifier of the exporter unit (which must have been loaded |
1915 | into the session device context of the first device). For |
1916 | backwards compatibility this can also be any of the legacy |
1917 | - identifiers ``xml``, ``html``, ``json``, ``rfc822``, ``text`` or |
1918 | + identifiers ``tar``, ``html``, ``json``, ``rfc822``, ``text`` or |
1919 | ``xlsx``. |
1920 | :param option_list: |
1921 | (optional) A list of options to pass to the exporter. Each option |
1922 | diff --git a/plainbox/impl/test_launcher.py b/plainbox/impl/test_launcher.py |
1923 | index 5165037..ebce693 100644 |
1924 | --- a/plainbox/impl/test_launcher.py |
1925 | +++ b/plainbox/impl/test_launcher.py |
1926 | @@ -80,7 +80,6 @@ class LauncherDefinitionLegacyTests(TestCase): |
1927 | self.assertEqual(l.skip_test_selection, False) |
1928 | self.assertEqual(l.input_type, Unset) |
1929 | self.assertEqual(l.ok_btn_text, Unset) |
1930 | - self.assertEqual(l.submit_to_hexr, Unset) |
1931 | self.assertEqual(l.submit_to, Unset) |
1932 | self.assertEqual(l.submit_url, Unset) |
1933 | self.assertEqual(l.secure_id, Unset) |
1934 | diff --git a/plainbox/impl/transport.py b/plainbox/impl/transport.py |
1935 | index efc98e5..fedcdcc 100644 |
1936 | --- a/plainbox/impl/transport.py |
1937 | +++ b/plainbox/impl/transport.py |
1938 | @@ -71,7 +71,7 @@ class TransportBase(ISessionStateTransport): |
1939 | Base class for transports that send test data somewhere. |
1940 | |
1941 | They handle just the transmission portion of data sending; exporters are |
1942 | - expected to produce data in the proper format (e.g. json, xml). |
1943 | + expected to produce data in the proper format (e.g. json, tar). |
1944 | |
1945 | Each transport can have specific parameters that are required for the |
1946 | other end to properly process received information (like system |
1947 | @@ -125,148 +125,6 @@ class InvalidSecureIDError(ValueError): |
1948 | return repr(self.value) |
1949 | |
1950 | |
1951 | -class CertificationTransport(TransportBase): |
1952 | - |
1953 | - """ |
1954 | - Transport for sending data to certification database. |
1955 | - |
1956 | - - POSTs data to a http(s) endpoint |
1957 | - - Adds a header with a hardware identifier |
1958 | - - Data is expected to be in checkbox xml-compatible format. |
1959 | - This means it will work best with a stream produced by the |
1960 | - xml exporter. |
1961 | - """ |
1962 | - |
1963 | - def __init__(self, where, options): |
1964 | - """ |
1965 | - Initialize the Certification Transport. |
1966 | - |
1967 | - The options string may contain 'secure_id' which must be |
1968 | - a 15-character (or more) alphanumeric ID for the system. |
1969 | - |
1970 | - It may also contain a submit_to_hexr boolean, set to 1 |
1971 | - to enable submission to hexr. |
1972 | - """ |
1973 | - super().__init__(where, options) |
1974 | - # Interpret this setting here |
1975 | - submit_to_hexr = self.options.get('submit_to_hexr') |
1976 | - self._submit_to_hexr = False |
1977 | - try: |
1978 | - if submit_to_hexr and (submit_to_hexr.lower() in |
1979 | - ('yes', 'true') or |
1980 | - int(submit_to_hexr) == 1): |
1981 | - self._submit_to_hexr = True |
1982 | - except ValueError: |
1983 | - # Just leave it at False |
1984 | - pass |
1985 | - self._secure_id = self.options.get('secure_id') |
1986 | - if self._secure_id is not None: |
1987 | - self._validate_secure_id(self._secure_id) |
1988 | - |
1989 | - def send(self, data, config=None, session_state=None): |
1990 | - """ |
1991 | - Send data to the specified server. |
1992 | - |
1993 | - :param data: |
1994 | - Data containing the xml dump to be sent to the server. This |
1995 | - can be either bytes or a file-like object (BytesIO works fine too). |
1996 | - If this is a file-like object, it will be read and streamed "on |
1997 | - the fly". |
1998 | - :param config: |
1999 | - Optional PlainBoxConfig object. If http_proxy and https_proxy |
2000 | - values are set in this config object, they will be used to send |
2001 | - data via the specified protocols. Note that the transport also |
2002 | - honors the http_proxy and https_proxy environment variables. |
2003 | - Proxy string format is http://[user:password@]<proxy-ip>:port |
2004 | - :param session_state: |
2005 | - The session for which this transport is associated with |
2006 | - the data being sent (optional) |
2007 | - :returns: |
2008 | - A dictionary with responses from the server if submission |
2009 | - was successful. This should contain an 'id' key, however |
2010 | - the server response may change, so the only guarantee |
2011 | - we make is that this will be non-False if the server |
2012 | - accepted the data. |
2013 | - :raises requests.exceptions.Timeout: |
2014 | - If sending timed out. |
2015 | - :raises requests.exceptions.ConnectionError: |
2016 | - If connection failed outright. |
2017 | - :raises requests.exceptions.HTTPError: |
2018 | - If the server returned a non-success result code |
2019 | - """ |
2020 | - proxies = None |
2021 | - if config and config.environment is not Unset: |
2022 | - proxies = { |
2023 | - proto[:-len("_proxy")]: config.environment[proto] |
2024 | - for proto in ['http_proxy', 'https_proxy'] |
2025 | - if proto in config.environment |
2026 | - } |
2027 | - # Find the effective value of secure_id: |
2028 | - # - use the configuration object (if available) |
2029 | - # - override with secure_id= option (if defined) |
2030 | - secure_id = None |
2031 | - if config is not None and hasattr(config, 'secure_id'): |
2032 | - secure_id = config.secure_id |
2033 | - if self._secure_id is not None: |
2034 | - secure_id = self._secure_id |
2035 | - if secure_id is not None: |
2036 | - self._validate_secure_id(secure_id) |
2037 | - logger.debug( |
2038 | - _("Sending to %s, Secure ID is %s"), self.url, secure_id) |
2039 | - headers = {"X_HARDWARE_ID": secure_id} |
2040 | - else: |
2041 | - headers = {} |
2042 | - # Similar handling for submit_to_hexr |
2043 | - submit_to_hexr = False |
2044 | - if config is not None and hasattr(config, 'submit_to_hexr'): |
2045 | - submit_to_hexr = config.submit_to_hexr |
2046 | - logger.debug(_("submit_to_hexr set to %s by config"), |
2047 | - submit_to_hexr) |
2048 | - if self._submit_to_hexr: |
2049 | - submit_to_hexr = self._submit_to_hexr |
2050 | - logger.debug(_("submit_to_hexr set to %s by UI"), submit_to_hexr) |
2051 | - # We could always set this header since hexr will only process a value |
2052 | - # of 'True', but this avoids injecting that extraneous knowledge into |
2053 | - # the tests. |
2054 | - # Note that hexr will only process a submission with this header's |
2055 | - # value set to 'True', so this boolean conversion should be ok. |
2056 | - if submit_to_hexr: |
2057 | - headers["X-Share-With-HEXR"] = submit_to_hexr |
2058 | - |
2059 | - # Requests takes care of properly handling a file-like data. |
2060 | - form_payload = {"data": data} |
2061 | - try: |
2062 | - response = requests.post( |
2063 | - self.url, files=form_payload, headers=headers, proxies=proxies) |
2064 | - except requests.exceptions.Timeout as exc: |
2065 | - raise TransportError( |
2066 | - _("Request to {0} timed out: {1}").format(self.url, exc)) |
2067 | - except requests.exceptions.InvalidSchema as exc: |
2068 | - raise TransportError( |
2069 | - _("Invalid destination URL: {0}").format(exc)) |
2070 | - except requests.exceptions.ConnectionError as exc: |
2071 | - raise TransportError( |
2072 | - _("Unable to connect to {0}: {1}").format(self.url, exc)) |
2073 | - if response is not None: |
2074 | - try: |
2075 | - # This will raise HTTPError for status != 20x |
2076 | - response.raise_for_status() |
2077 | - except requests.exceptions.RequestException as exc: |
2078 | - raise TransportError(str(exc)) |
2079 | - logger.debug("Success! Server said %s", response.text) |
2080 | - try: |
2081 | - return response.json() |
2082 | - except Exception as exc: |
2083 | - raise TransportError(str(exc)) |
2084 | - # XXX: can response be None? |
2085 | - return {} |
2086 | - |
2087 | - def _validate_secure_id(self, secure_id): |
2088 | - if not re.match(SECURE_ID_PATTERN, secure_id): |
2089 | - raise InvalidSecureIDError( |
2090 | - _("secure_id must be a 15 characters (or more) alphanumeric string")) |
2091 | - |
2092 | - |
2093 | def oauth_available(): |
2094 | return _oauth_available |
2095 | |
2096 | diff --git a/plainbox/test-data/tar-exporter/example-data.tar.xz b/plainbox/test-data/tar-exporter/example-data.tar.xz |
2097 | new file mode 100644 |
2098 | index 0000000..77026b4 |
2099 | Binary files /dev/null and b/plainbox/test-data/tar-exporter/example-data.tar.xz differ |
2100 | diff --git a/plainbox/test-data/xml-exporter/example-data-certification-status.json b/plainbox/test-data/xml-exporter/example-data-certification-status.json |
2101 | deleted file mode 100644 |
2102 | index 51e85e8..0000000 |
2103 | --- a/plainbox/test-data/xml-exporter/example-data-certification-status.json |
2104 | +++ /dev/null |
2105 | @@ -1,19045 +0,0 @@ |
2106 | -{ |
2107 | - "attachment_map": {}, |
2108 | - "resource_map": { |
2109 | - "com.canonical.certification::cpuinfo": [ |
2110 | - { |
2111 | - "count": "2", |
2112 | - "cache": "3145728", |
2113 | - "type": "GenuineIntel", |
2114 | - "model_revision": "10", |
2115 | - "model_number": "6", |
2116 | - "bogomips": "5066", |
2117 | - "platform": "x86_64", |
2118 | - "model_version": "23", |
2119 | - "model": "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz", |
2120 | - "speed": "2534", |
2121 | - "other": "fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm ida dtherm tpr_shadow vnmi flexpriority" |
2122 | - } |
2123 | - ], |
2124 | - "com.canonical.certification::requirements": [ |
2125 | - { |
2126 | - "name": "example", |
2127 | - "link": "http://www.example.com" |
2128 | - } |
2129 | - ], |
2130 | - "com.canonical.certification::lsb": [ |
2131 | - { |
2132 | - "release": "12.04", |
2133 | - "codename": "precise", |
2134 | - "distributor_id": "Ubuntu", |
2135 | - "description": "Ubuntu 12.04.1 LTS" |
2136 | - } |
2137 | - ], |
2138 | - "com.canonical.certification::package": [ |
2139 | - { |
2140 | - "status": "Installed", |
2141 | - "desired": "Install", |
2142 | - "version": "0.6.15-2ubuntu9.4", |
2143 | - "name": "accountsservice", |
2144 | - "description": "query and manipulate user account information" |
2145 | - }, |
2146 | - { |
2147 | - "status": "Installed", |
2148 | - "desired": "Install", |
2149 | - "version": "2.2.51-5ubuntu1", |
2150 | - "name": "acl", |
2151 | - "description": "Access control list utilities" |
2152 | - }, |
2153 | - { |
2154 | - "status": "Installed", |
2155 | - "desired": "Install", |
2156 | - "version": "1.6-1", |
2157 | - "name": "acpi", |
2158 | - "description": "displays information on ACPI devices" |
2159 | - }, |
2160 | - { |
2161 | - "status": "Installed", |
2162 | - "desired": "Install", |
2163 | - "version": "0.140", |
2164 | - "name": "acpi-support", |
2165 | - "description": "scripts for handling many ACPI events" |
2166 | - }, |
2167 | - { |
2168 | - "status": "Installed", |
2169 | - "desired": "Install", |
2170 | - "version": "1:2.0.10-1ubuntu3", |
2171 | - "name": "acpid", |
2172 | - "description": "Advanced Configuration and Power Interface event daemon" |
2173 | - }, |
2174 | - { |
2175 | - "status": "Installed", |
2176 | - "desired": "Install", |
2177 | - "version": "20100513-3ubuntu1", |
2178 | - "name": "acpidump", |
2179 | - "description": "utilities to dump system's ACPI tables to an ASCII file" |
2180 | - }, |
2181 | - { |
2182 | - "status": "Installed", |
2183 | - "desired": "Install", |
2184 | - "version": "0.5.1-3", |
2185 | - "name": "acpitool", |
2186 | - "description": "command line ACPI client" |
2187 | - }, |
2188 | - { |
2189 | - "status": "Installed", |
2190 | - "desired": "Install", |
2191 | - "version": "0.9.4-0ubuntu3.2", |
2192 | - "name": "activity-log-manager-common", |
2193 | - "description": "blacklist configuration for Zeitgeist (assets)" |
2194 | - }, |
2195 | - { |
2196 | - "status": "Installed", |
2197 | - "desired": "Install", |
2198 | - "version": "0.9.4-0ubuntu3.2", |
2199 | - "name": "activity-log-manager-control-center", |
2200 | - "description": "blacklist configuration for Zeitgeist (control center integration)" |
2201 | - }, |
2202 | - { |
2203 | - "status": "Installed", |
2204 | - "desired": "Install", |
2205 | - "version": "3.113ubuntu2", |
2206 | - "name": "adduser", |
2207 | - "description": "add and remove users and groups" |
2208 | - }, |
2209 | - { |
2210 | - "status": "Installed", |
2211 | - "desired": "Install", |
2212 | - "version": "0.3.2-0ubuntu1", |
2213 | - "name": "adium-theme-ubuntu", |
2214 | - "description": "Adium message style for Ubuntu" |
2215 | - }, |
2216 | - { |
2217 | - "status": "Installed", |
2218 | - "desired": "Install", |
2219 | - "version": "1:3.2.3.2-0ubuntu1", |
2220 | - "name": "aisleriot", |
2221 | - "description": "Solitaire card games" |
2222 | - }, |
2223 | - { |
2224 | - "status": "Installed", |
2225 | - "desired": "Install", |
2226 | - "version": "0.13.2-2ubuntu4", |
2227 | - "name": "alacarte", |
2228 | - "description": "easy GNOME menu editing tool" |
2229 | - }, |
2230 | - { |
2231 | - "status": "Installed", |
2232 | - "desired": "Install", |
2233 | - "version": "1.0.25+dfsg-0ubuntu1", |
2234 | - "name": "alsa-base", |
2235 | - "description": "ALSA driver configuration files" |
2236 | - }, |
2237 | - { |
2238 | - "status": "Installed", |
2239 | - "desired": "Install", |
2240 | - "version": "1.0.25-1ubuntu5", |
2241 | - "name": "alsa-utils", |
2242 | - "description": "Utilities for configuring and using ALSA" |
2243 | - }, |
2244 | - { |
2245 | - "status": "Installed", |
2246 | - "desired": "Install", |
2247 | - "version": "2.3-14ubuntu1", |
2248 | - "name": "anacron", |
2249 | - "description": "cron-like program that doesn't go by time" |
2250 | - }, |
2251 | - { |
2252 | - "status": "Installed", |
2253 | - "desired": "Install", |
2254 | - "version": "2.2.3.dfsg.1-2", |
2255 | - "name": "apg", |
2256 | - "description": "Automated Password Generator - Standalone version" |
2257 | - }, |
2258 | - { |
2259 | - "status": "Installed", |
2260 | - "desired": "Install", |
2261 | - "version": "0.12.04.4", |
2262 | - "name": "app-install-data", |
2263 | - "description": "Ubuntu applications (data files)" |
2264 | - }, |
2265 | - { |
2266 | - "status": "Installed", |
2267 | - "desired": "Install", |
2268 | - "version": "12.12.04.1", |
2269 | - "name": "app-install-data-partner", |
2270 | - "description": "Application Installer (data files for partner applications/repositories)" |
2271 | - }, |
2272 | - { |
2273 | - "status": "Installed", |
2274 | - "desired": "Install", |
2275 | - "version": "2.7.102-0ubuntu3.7", |
2276 | - "name": "apparmor", |
2277 | - "description": "User-space parser utility for AppArmor" |
2278 | - }, |
2279 | - { |
2280 | - "status": "Installed", |
2281 | - "desired": "Install", |
2282 | - "version": "0.3.92-0ubuntu1.1", |
2283 | - "name": "appmenu-gtk", |
2284 | - "description": "Export GTK menus over DBus" |
2285 | - }, |
2286 | - { |
2287 | - "status": "Installed", |
2288 | - "desired": "Install", |
2289 | - "version": "0.3.92-0ubuntu1.1", |
2290 | - "name": "appmenu-gtk3", |
2291 | - "description": "Export GTK menus over DBus" |
2292 | - }, |
2293 | - { |
2294 | - "status": "Installed", |
2295 | - "desired": "Install", |
2296 | - "version": "0.2.6-0ubuntu1", |
2297 | - "name": "appmenu-qt", |
2298 | - "description": "appmenu support for Qt" |
2299 | - }, |
2300 | - { |
2301 | - "status": "Installed", |
2302 | - "desired": "Install", |
2303 | - "version": "2.0.1-0ubuntu17.1", |
2304 | - "name": "apport", |
2305 | - "description": "automatically generate crash reports for debugging" |
2306 | - }, |
2307 | - { |
2308 | - "status": "Installed", |
2309 | - "desired": "Install", |
2310 | - "version": "2.0.1-0ubuntu17.1", |
2311 | - "name": "apport-gtk", |
2312 | - "description": "GTK+ frontend for the apport crash report system" |
2313 | - }, |
2314 | - { |
2315 | - "status": "Installed", |
2316 | - "desired": "Install", |
2317 | - "version": "0.16.1", |
2318 | - "name": "apport-symptoms", |
2319 | - "description": "symptom scripts for apport" |
2320 | - }, |
2321 | - { |
2322 | - "status": "Installed", |
2323 | - "desired": "Install", |
2324 | - "version": "0.8.16~exp12ubuntu10.7", |
2325 | - "name": "apt", |
2326 | - "description": "commandline package manager" |
2327 | - }, |
2328 | - { |
2329 | - "status": "Installed", |
2330 | - "desired": "Install", |
2331 | - "version": "2.5.0ubuntu1", |
2332 | - "name": "apt-file", |
2333 | - "description": "search for files within Debian packages (command-line interface)" |
2334 | - }, |
2335 | - { |
2336 | - "status": "Installed", |
2337 | - "desired": "Install", |
2338 | - "version": "0.8.16~exp12ubuntu10.7", |
2339 | - "name": "apt-transport-https", |
2340 | - "description": "https download transport for APT" |
2341 | - }, |
2342 | - { |
2343 | - "status": "Installed", |
2344 | - "desired": "Install", |
2345 | - "version": "0.8.16~exp12ubuntu10.7", |
2346 | - "name": "apt-utils", |
2347 | - "description": "package managment related utility programs" |
2348 | - }, |
2349 | - { |
2350 | - "status": "Installed", |
2351 | - "desired": "Install", |
2352 | - "version": "0.44ubuntu5", |
2353 | - "name": "apt-xapian-index", |
2354 | - "description": "maintenance and search tools for a Xapian index of Debian packages" |
2355 | - }, |
2356 | - { |
2357 | - "status": "Installed", |
2358 | - "desired": "Install", |
2359 | - "version": "0.43+bzr805-0ubuntu7", |
2360 | - "name": "aptdaemon", |
2361 | - "description": "transaction based package management service" |
2362 | - }, |
2363 | - { |
2364 | - "status": "Installed", |
2365 | - "desired": "Install", |
2366 | - "version": "0.43+bzr805-0ubuntu7", |
2367 | - "name": "aptdaemon-data", |
2368 | - "description": "data files for clients" |
2369 | - }, |
2370 | - { |
2371 | - "status": "Installed", |
2372 | - "desired": "Install", |
2373 | - "version": "0.5.1ubuntu3", |
2374 | - "name": "apturl", |
2375 | - "description": "install packages using the apt protocol - GTK+ frontend" |
2376 | - }, |
2377 | - { |
2378 | - "status": "Installed", |
2379 | - "desired": "Install", |
2380 | - "version": "0.5.1ubuntu3", |
2381 | - "name": "apturl-common", |
2382 | - "description": "install packages using the apt protocol - common data" |
2383 | - }, |
2384 | - { |
2385 | - "status": "Installed", |
2386 | - "desired": "Install", |
2387 | - "version": "0.1.4-1", |
2388 | - "name": "arandr", |
2389 | - "description": "Simple visual front end for XRandR" |
2390 | - }, |
2391 | - { |
2392 | - "status": "Installed", |
2393 | - "desired": "Install", |
2394 | - "version": "0.60.7~20110707-1", |
2395 | - "name": "aspell", |
2396 | - "description": "GNU Aspell spell-checker" |
2397 | - }, |
2398 | - { |
2399 | - "status": "Installed", |
2400 | - "desired": "Install", |
2401 | - "version": "6.0-0-6ubuntu2", |
2402 | - "name": "aspell-en", |
2403 | - "description": "English dictionary for GNU Aspell" |
2404 | - }, |
2405 | - { |
2406 | - "status": "Installed", |
2407 | - "desired": "Install", |
2408 | - "version": "3.1.13-1ubuntu1", |
2409 | - "name": "at", |
2410 | - "description": "Delayed job execution and batch processing" |
2411 | - }, |
2412 | - { |
2413 | - "status": "Installed", |
2414 | - "desired": "Install", |
2415 | - "version": "2.4.2-0ubuntu0.1", |
2416 | - "name": "at-spi2-core", |
2417 | - "description": "Assistive Technology Service Provider Interface (dbus core)" |
2418 | - }, |
2419 | - { |
2420 | - "status": "Installed", |
2421 | - "desired": "Install", |
2422 | - "version": "2.0.0-1ubuntu0.1", |
2423 | - "name": "audacity", |
2424 | - "description": "fast, cross-platform audio editor" |
2425 | - }, |
2426 | - { |
2427 | - "status": "Installed", |
2428 | - "desired": "Install", |
2429 | - "version": "2.0.0-1ubuntu0.1", |
2430 | - "name": "audacity-data", |
2431 | - "description": "fast, cross-platform audio editor (data)" |
2432 | - }, |
2433 | - { |
2434 | - "status": "Installed", |
2435 | - "desired": "Install", |
2436 | - "version": "2.68-1ubuntu2", |
2437 | - "name": "autoconf", |
2438 | - "description": "automatic configure script builder" |
2439 | - }, |
2440 | - { |
2441 | - "status": "Installed", |
2442 | - "desired": "Install", |
2443 | - "version": "1:1.11.3-1ubuntu2", |
2444 | - "name": "automake", |
2445 | - "description": "Tool for generating GNU Standards-compliant Makefiles" |
2446 | - }, |
2447 | - { |
2448 | - "status": "Installed", |
2449 | - "desired": "Install", |
2450 | - "version": "20120210.1ubuntu1", |
2451 | - "name": "autotools-dev", |
2452 | - "description": "Update infrastructure for config.{guess,sub} files" |
2453 | - }, |
2454 | - { |
2455 | - "status": "Installed", |
2456 | - "desired": "Install", |
2457 | - "version": "0.6.30-5ubuntu2", |
2458 | - "name": "avahi-autoipd", |
2459 | - "description": "Avahi IPv4LL network address configuration daemon" |
2460 | - }, |
2461 | - { |
2462 | - "status": "Installed", |
2463 | - "desired": "Install", |
2464 | - "version": "0.6.30-5ubuntu2", |
2465 | - "name": "avahi-daemon", |
2466 | - "description": "Avahi mDNS/DNS-SD daemon" |
2467 | - }, |
2468 | - { |
2469 | - "status": "Installed", |
2470 | - "desired": "Install", |
2471 | - "version": "0.6.30-5ubuntu2", |
2472 | - "name": "avahi-utils", |
2473 | - "description": "Avahi browsing, publishing and discovery utilities" |
2474 | - }, |
2475 | - { |
2476 | - "status": "Installed", |
2477 | - "desired": "Install", |
2478 | - "version": "0.2.124.2-0ubuntu1", |
2479 | - "name": "bamfdaemon", |
2480 | - "description": "Window matching library - daemon" |
2481 | - }, |
2482 | - { |
2483 | - "status": "Installed", |
2484 | - "desired": "Install", |
2485 | - "version": "3.4.1-0ubuntu1", |
2486 | - "name": "baobab", |
2487 | - "description": "GNOME disk usage analyzer" |
2488 | - }, |
2489 | - { |
2490 | - "status": "Installed", |
2491 | - "desired": "Install", |
2492 | - "version": "6.5ubuntu6.4", |
2493 | - "name": "base-files", |
2494 | - "description": "Debian base system miscellaneous files" |
2495 | - }, |
2496 | - { |
2497 | - "status": "Installed", |
2498 | - "desired": "Install", |
2499 | - "version": "3.5.24", |
2500 | - "name": "base-passwd", |
2501 | - "description": "Debian base system master password and group files" |
2502 | - }, |
2503 | - { |
2504 | - "status": "Installed", |
2505 | - "desired": "Install", |
2506 | - "version": "4.2-2ubuntu2", |
2507 | - "name": "bash", |
2508 | - "description": "GNU Bourne Again SHell" |
2509 | - }, |
2510 | - { |
2511 | - "status": "Installed", |
2512 | - "desired": "Install", |
2513 | - "version": "1:1.3-1ubuntu8", |
2514 | - "name": "bash-completion", |
2515 | - "description": "programmable completion for the bash shell" |
2516 | - }, |
2517 | - { |
2518 | - "status": "Installed", |
2519 | - "desired": "Install", |
2520 | - "version": "1.06.95-2", |
2521 | - "name": "bc", |
2522 | - "description": "The GNU bc arbitrary precision calculator language" |
2523 | - }, |
2524 | - { |
2525 | - "status": "Installed", |
2526 | - "desired": "Install", |
2527 | - "version": "1:9.8.1.dfsg.P1-4ubuntu0.5", |
2528 | - "name": "bind9-host", |
2529 | - "description": "Version of 'host' bundled with BIND 9.X" |
2530 | - }, |
2531 | - { |
2532 | - "status": "Installed", |
2533 | - "desired": "Install", |
2534 | - "version": "2.22-6ubuntu1", |
2535 | - "name": "binutils", |
2536 | - "description": "GNU assembler, linker and binary utilities" |
2537 | - }, |
2538 | - { |
2539 | - "status": "Installed", |
2540 | - "desired": "Install", |
2541 | - "version": "1.23-0ubuntu2.1", |
2542 | - "name": "blueman", |
2543 | - "description": "A Graphical bluetooth manager" |
2544 | - }, |
2545 | - { |
2546 | - "status": "Installed", |
2547 | - "desired": "Install", |
2548 | - "version": "4.98-2ubuntu7", |
2549 | - "name": "bluez", |
2550 | - "description": "Bluetooth tools and daemons" |
2551 | - }, |
2552 | - { |
2553 | - "status": "Installed", |
2554 | - "desired": "Install", |
2555 | - "version": "4.98-2ubuntu7", |
2556 | - "name": "bluez-alsa", |
2557 | - "description": "Bluetooth ALSA support" |
2558 | - }, |
2559 | - { |
2560 | - "status": "Installed", |
2561 | - "desired": "Install", |
2562 | - "version": "4.98-2ubuntu7", |
2563 | - "name": "bluez-alsa:i386", |
2564 | - "description": "Bluetooth ALSA support" |
2565 | - }, |
2566 | - { |
2567 | - "status": "Installed", |
2568 | - "desired": "Install", |
2569 | - "version": "4.98-2ubuntu7", |
2570 | - "name": "bluez-cups", |
2571 | - "description": "Bluetooth printer driver for CUPS" |
2572 | - }, |
2573 | - { |
2574 | - "status": "Installed", |
2575 | - "desired": "Install", |
2576 | - "version": "4.98-2ubuntu7", |
2577 | - "name": "bluez-gstreamer", |
2578 | - "description": "Bluetooth GStreamer support" |
2579 | - }, |
2580 | - { |
2581 | - "status": "Installed", |
2582 | - "desired": "Install", |
2583 | - "version": "1.96", |
2584 | - "name": "bonnie++", |
2585 | - "description": "Hard drive benchmark suite." |
2586 | - }, |
2587 | - { |
2588 | - "status": "Installed", |
2589 | - "desired": "Install", |
2590 | - "version": "0.90.2-8ubuntu1", |
2591 | - "name": "bootchart", |
2592 | - "description": "boot sequence auditing" |
2593 | - }, |
2594 | - { |
2595 | - "status": "Installed", |
2596 | - "desired": "Install", |
2597 | - "version": "0.7", |
2598 | - "name": "branding-ubuntu", |
2599 | - "description": "Replacement artwork with Ubuntu branding" |
2600 | - }, |
2601 | - { |
2602 | - "status": "Installed", |
2603 | - "desired": "Install", |
2604 | - "version": "3.4.1-0ubuntu1.1", |
2605 | - "name": "brasero", |
2606 | - "description": "CD/DVD burning application for GNOME" |
2607 | - }, |
2608 | - { |
2609 | - "status": "Installed", |
2610 | - "desired": "Install", |
2611 | - "version": "3.4.1-0ubuntu1.1", |
2612 | - "name": "brasero-cdrkit", |
2613 | - "description": "cdrkit extensions for the Brasero burning application" |
2614 | - }, |
2615 | - { |
2616 | - "status": "Installed", |
2617 | - "desired": "Install", |
2618 | - "version": "3.4.1-0ubuntu1.1", |
2619 | - "name": "brasero-common", |
2620 | - "description": "Common files for the Brasero CD burning application and library" |
2621 | - }, |
2622 | - { |
2623 | - "status": "Installed", |
2624 | - "desired": "Install", |
2625 | - "version": "1.5-2ubuntu7", |
2626 | - "name": "bridge-utils", |
2627 | - "description": "Utilities for configuring the Linux Ethernet bridge" |
2628 | - }, |
2629 | - { |
2630 | - "status": "Installed", |
2631 | - "desired": "Install", |
2632 | - "version": "4.3-1ubuntu5", |
2633 | - "name": "brltty", |
2634 | - "description": "Access software for a blind person using a braille display" |
2635 | - }, |
2636 | - { |
2637 | - "status": "Installed", |
2638 | - "desired": "Install", |
2639 | - "version": "8.2.3ubuntu1", |
2640 | - "name": "bsdmainutils", |
2641 | - "description": "collection of more utilities from FreeBSD" |
2642 | - }, |
2643 | - { |
2644 | - "status": "Installed", |
2645 | - "desired": "Install", |
2646 | - "version": "1:2.20.1-1ubuntu3", |
2647 | - "name": "bsdutils", |
2648 | - "description": "Basic utilities from 4.4BSD-Lite" |
2649 | - }, |
2650 | - { |
2651 | - "status": "Installed", |
2652 | - "desired": "Install", |
2653 | - "version": "11.5ubuntu2.1", |
2654 | - "name": "build-essential", |
2655 | - "description": "Informational list of build-essential packages" |
2656 | - }, |
2657 | - { |
2658 | - "status": "Installed", |
2659 | - "desired": "Install", |
2660 | - "version": "1:1.18.5-1ubuntu4.1", |
2661 | - "name": "busybox-initramfs", |
2662 | - "description": "Standalone shell setup for initramfs" |
2663 | - }, |
2664 | - { |
2665 | - "status": "Installed", |
2666 | - "desired": "Install", |
2667 | - "version": "1:1.18.5-1ubuntu4.1", |
2668 | - "name": "busybox-static", |
2669 | - "description": "Standalone rescue shell with tons of builtin utilities" |
2670 | - }, |
2671 | - { |
2672 | - "status": "Installed", |
2673 | - "desired": "Install", |
2674 | - "version": "5.17-0ubuntu1", |
2675 | - "name": "byobu", |
2676 | - "description": "powerful, text based window manager and shell multiplexer" |
2677 | - }, |
2678 | - { |
2679 | - "status": "Installed", |
2680 | - "desired": "Install", |
2681 | - "version": "1.0.6-1", |
2682 | - "name": "bzip2", |
2683 | - "description": "high-quality block-sorting file compressor - utilities" |
2684 | - }, |
2685 | - { |
2686 | - "status": "Installed", |
2687 | - "desired": "Install", |
2688 | - "version": "2.5.1-0ubuntu2", |
2689 | - "name": "bzr", |
2690 | - "description": "easy to use distributed version control system" |
2691 | - }, |
2692 | - { |
2693 | - "status": "Installed", |
2694 | - "desired": "Install", |
2695 | - "version": "2.8.4", |
2696 | - "name": "bzr-builddeb", |
2697 | - "description": "bzr plugin for Debian package management" |
2698 | - }, |
2699 | - { |
2700 | - "status": "Installed", |
2701 | - "desired": "Install", |
2702 | - "version": "0.7.2-0ubuntu1", |
2703 | - "name": "bzr-builder", |
2704 | - "description": "construct a bzr branch from a recipe" |
2705 | - }, |
2706 | - { |
2707 | - "status": "Installed", |
2708 | - "desired": "Install", |
2709 | - "version": "1.2.2-1", |
2710 | - "name": "bzr-explorer", |
2711 | - "description": "GUI application for using Bazaar" |
2712 | - }, |
2713 | - { |
2714 | - "status": "Installed", |
2715 | - "desired": "Install", |
2716 | - "version": "0.13.0-1", |
2717 | - "name": "bzr-fastimport", |
2718 | - "description": "Fast-import/fast-export plugin for Bazaar" |
2719 | - }, |
2720 | - { |
2721 | - "status": "Installed", |
2722 | - "desired": "Install", |
2723 | - "version": "20111211", |
2724 | - "name": "ca-certificates", |
2725 | - "description": "Common CA certificates" |
2726 | - }, |
2727 | - { |
2728 | - "status": "Installed", |
2729 | - "desired": "Install", |
2730 | - "version": "20110912ubuntu6", |
2731 | - "name": "ca-certificates-java", |
2732 | - "description": "Common CA certificates (JKS keystore)" |
2733 | - }, |
2734 | - { |
2735 | - "status": "Installed", |
2736 | - "desired": "Install", |
2737 | - "version": "0.4.100ubuntu2", |
2738 | - "name": "cdbs", |
2739 | - "description": "common build system for Debian packages" |
2740 | - }, |
2741 | - { |
2742 | - "status": "Installed", |
2743 | - "desired": "Install", |
2744 | - "version": "1.1.2", |
2745 | - "name": "cgroup-lite", |
2746 | - "description": "Light-weight package to set up cgroups at system boot" |
2747 | - }, |
2748 | - { |
2749 | - "status": "Installed", |
2750 | - "desired": "Install", |
2751 | - "version": "0.3+bzr167-3~precise1", |
2752 | - "name": "charm-tools", |
2753 | - "description": "tools for maintaining Juju charms" |
2754 | - }, |
2755 | - { |
2756 | - "status": "Installed", |
2757 | - "desired": "Install", |
2758 | - "version": "0.15.1+bzr1894+201301181105~precise1", |
2759 | - "name": "checkbox", |
2760 | - "description": "System testing application" |
2761 | - }, |
2762 | - { |
2763 | - "status": "Installed", |
2764 | - "desired": "Install", |
2765 | - "version": "0.15+bzr563+201301171917~precise1", |
2766 | - "name": "checkbox-certification", |
2767 | - "description": "Checkbox Certification Tests" |
2768 | - }, |
2769 | - { |
2770 | - "status": "Installed", |
2771 | - "desired": "Install", |
2772 | - "version": "0.15+bzr563+201301171917~precise1", |
2773 | - "name": "checkbox-certification-client", |
2774 | - "description": "Client Certification" |
2775 | - }, |
2776 | - { |
2777 | - "status": "Installed", |
2778 | - "desired": "Install", |
2779 | - "version": "0.15+bzr563+201301171917~precise1", |
2780 | - "name": "checkbox-certification-tools", |
2781 | - "description": "Checkbox Certification Tools" |
2782 | - }, |
2783 | - { |
2784 | - "status": "Installed", |
2785 | - "desired": "Install", |
2786 | - "version": "0.15.1+bzr1894+201301181105~precise1", |
2787 | - "name": "checkbox-cli", |
2788 | - "description": "Command line interface for checkbox" |
2789 | - }, |
2790 | - { |
2791 | - "status": "Installed", |
2792 | - "desired": "Install", |
2793 | - "version": "0.10-0precise1~rev150", |
2794 | - "name": "checkbox-editor", |
2795 | - "description": "Checkbox Editor" |
2796 | - }, |
2797 | - { |
2798 | - "status": "Installed", |
2799 | - "desired": "Install", |
2800 | - "version": "0.2-0precise1~rev19", |
2801 | - "name": "checkbox-editor-oem-template", |
2802 | - "description": "Checkbox editor template for OEM projects" |
2803 | - }, |
2804 | - { |
2805 | - "status": "Installed", |
2806 | - "desired": "Install", |
2807 | - "version": "0.15.1+bzr1894+201301181105~precise1", |
2808 | - "name": "checkbox-gtk", |
2809 | - "description": "GTK interface for checkbox" |
2810 | - }, |
2811 | - { |
2812 | - "status": "Installed", |
2813 | - "desired": "Install", |
2814 | - "version": "0.2", |
2815 | - "name": "checkbox-ihv", |
2816 | - "description": "Canonical hardware testing suite." |
2817 | - }, |
2818 | - { |
2819 | - "status": "Installed", |
2820 | - "desired": "Install", |
2821 | - "version": "0.2", |
2822 | - "name": "checkbox-ihv-cli", |
2823 | - "description": "Canonical hardware testing suite - cli version." |
2824 | - }, |
2825 | - { |
2826 | - "status": "Installed", |
2827 | - "desired": "Install", |
2828 | - "version": "0.2", |
2829 | - "name": "checkbox-ihv-qt", |
2830 | - "description": "Canonical hardware testing suite - qt version." |
2831 | - }, |
2832 | - { |
2833 | - "status": "Installed", |
2834 | - "desired": "Install", |
2835 | - "version": "0.45-0-precise1~rev614", |
2836 | - "name": "checkbox-oem", |
2837 | - "description": "Checkbox OEM Tests" |
2838 | - }, |
2839 | - { |
2840 | - "status": "Installed", |
2841 | - "desired": "Install", |
2842 | - "version": "1.0-2-precise1~rev4", |
2843 | - "name": "checkbox-oem-bug", |
2844 | - "description": "Checkbox OEM bug" |
2845 | - }, |
2846 | - { |
2847 | - "status": "Installed", |
2848 | - "desired": "Install", |
2849 | - "version": "0.45-0-precise1~rev614", |
2850 | - "name": "checkbox-oem-gtk", |
2851 | - "description": "Checkbox OEM GTK Interface" |
2852 | - }, |
2853 | - { |
2854 | - "status": "Installed", |
2855 | - "desired": "Install", |
2856 | - "version": "0.45-0-precise1~rev614", |
2857 | - "name": "checkbox-oem-qt", |
2858 | - "description": "Checkbox OEM Qt Interface" |
2859 | - }, |
2860 | - { |
2861 | - "status": "Installed", |
2862 | - "desired": "Install", |
2863 | - "version": "0.1-1precise1~rev18ubuntu1", |
2864 | - "name": "checkbox-oem-stella", |
2865 | - "description": "stella System Testing" |
2866 | - }, |
2867 | - { |
2868 | - "status": "Installed", |
2869 | - "desired": "Install", |
2870 | - "version": "0.1-1precise1~rev18ubuntu1", |
2871 | - "name": "checkbox-oem-stella-gtk", |
2872 | - "description": "Checkbox stella GTK Interface" |
2873 | - }, |
2874 | - { |
2875 | - "status": "Installed", |
2876 | - "desired": "Install", |
2877 | - "version": "0.15.1+bzr1894+201301181105~precise1", |
2878 | - "name": "checkbox-qt", |
2879 | - "description": "QT4 interface for checkbox" |
2880 | - }, |
2881 | - { |
2882 | - "status": "Installed", |
2883 | - "desired": "Install", |
2884 | - "version": "3.4.1-0ubuntu2.1", |
2885 | - "name": "cheese", |
2886 | - "description": "tool to take pictures and videos from your webcam" |
2887 | - }, |
2888 | - { |
2889 | - "status": "Installed", |
2890 | - "desired": "Install", |
2891 | - "version": "3.4.1-0ubuntu2.1", |
2892 | - "name": "cheese-common", |
2893 | - "description": "Common files for the Cheese tool to take pictures and videos" |
2894 | - }, |
2895 | - { |
2896 | - "status": "Installed", |
2897 | - "desired": "Install", |
2898 | - "version": "0.25-0ubuntu5", |
2899 | - "name": "cloud-utils", |
2900 | - "description": "cloud image management utilities" |
2901 | - }, |
2902 | - { |
2903 | - "status": "Installed", |
2904 | - "desired": "Install", |
2905 | - "version": "0+20090930-2", |
2906 | - "name": "cmap-adobe-japan2", |
2907 | - "description": "CMaps for Adobe-Japan2" |
2908 | - }, |
2909 | - { |
2910 | - "status": "Installed", |
2911 | - "desired": "Install", |
2912 | - "version": "0.1.16-2ubuntu0.1", |
2913 | - "name": "colord", |
2914 | - "description": "system service to manage device colour profiles -- system daemon" |
2915 | - }, |
2916 | - { |
2917 | - "status": "Installed", |
2918 | - "desired": "Install", |
2919 | - "version": "0.2.46ubuntu6", |
2920 | - "name": "command-not-found", |
2921 | - "description": "Suggest installation of packages in interactive bash sessions" |
2922 | - }, |
2923 | - { |
2924 | - "status": "Installed", |
2925 | - "desired": "Install", |
2926 | - "version": "0.2.46ubuntu6", |
2927 | - "name": "command-not-found-data", |
2928 | - "description": "Set of data files for command-not-found." |
2929 | - }, |
2930 | - { |
2931 | - "status": "Installed", |
2932 | - "desired": "Install", |
2933 | - "version": "1:0.9.7.12-0ubuntu1", |
2934 | - "name": "compiz", |
2935 | - "description": "OpenGL window and compositing manager" |
2936 | - }, |
2937 | - { |
2938 | - "status": "Installed", |
2939 | - "desired": "Install", |
2940 | - "version": "1:0.9.7.12-0ubuntu1", |
2941 | - "name": "compiz-core", |
2942 | - "description": "OpenGL window and compositing manager" |
2943 | - }, |
2944 | - { |
2945 | - "status": "Installed", |
2946 | - "desired": "Install", |
2947 | - "version": "1:0.9.7.12-0ubuntu1", |
2948 | - "name": "compiz-gnome", |
2949 | - "description": "OpenGL window and compositing manager - GNOME window decorator" |
2950 | - }, |
2951 | - { |
2952 | - "status": "Installed", |
2953 | - "desired": "Install", |
2954 | - "version": "1:0.9.7.12-0ubuntu1", |
2955 | - "name": "compiz-plugins", |
2956 | - "description": "OpenGL window and compositing manager - plugins" |
2957 | - }, |
2958 | - { |
2959 | - "status": "Installed", |
2960 | - "desired": "Install", |
2961 | - "version": "1:0.9.7.12-0ubuntu1", |
2962 | - "name": "compiz-plugins-default", |
2963 | - "description": "OpenGL window and compositing manager - default plugins" |
2964 | - }, |
2965 | - { |
2966 | - "status": "Installed", |
2967 | - "desired": "Install", |
2968 | - "version": "1:0.9.7.0~bzr19-0ubuntu10", |
2969 | - "name": "compiz-plugins-main", |
2970 | - "description": "Compiz plugins - main collection" |
2971 | - }, |
2972 | - { |
2973 | - "status": "Installed", |
2974 | - "desired": "Install", |
2975 | - "version": "1:0.9.7.0~bzr19-0ubuntu10", |
2976 | - "name": "compiz-plugins-main-default", |
2977 | - "description": "Compiz plugins - main default collection" |
2978 | - }, |
2979 | - { |
2980 | - "status": "Installed", |
2981 | - "desired": "Install", |
2982 | - "version": "0.9.5.92-0ubuntu5", |
2983 | - "name": "compizconfig-backend-gconf", |
2984 | - "description": "Compiz Fusion configuration system - gconf backend" |
2985 | - }, |
2986 | - { |
2987 | - "status": "Installed", |
2988 | - "desired": "Install", |
2989 | - "version": "0.9.5.92-0ubuntu3", |
2990 | - "name": "compizconfig-settings-manager", |
2991 | - "description": "Compiz configuration settings manager" |
2992 | - }, |
2993 | - { |
2994 | - "status": "Installed", |
2995 | - "desired": "Install", |
2996 | - "version": "1.70ubuntu5", |
2997 | - "name": "console-setup", |
2998 | - "description": "console font and keymap setup program" |
2999 | - }, |
3000 | - { |
3001 | - "status": "Installed", |
3002 | - "desired": "Install", |
3003 | - "version": "0.4.5-2", |
3004 | - "name": "consolekit", |
3005 | - "description": "framework for defining and tracking users, sessions and seats" |
3006 | - }, |
3007 | - { |
3008 | - "status": "Installed", |
3009 | - "desired": "Install", |
3010 | - "version": "8.13-3ubuntu3.2", |
3011 | - "name": "coreutils", |
3012 | - "description": "GNU core utilities" |
3013 | - }, |
3014 | - { |
3015 | - "status": "Installed", |
3016 | - "desired": "Install", |
3017 | - "version": "2.11-7ubuntu3", |
3018 | - "name": "cpio", |
3019 | - "description": "GNU cpio -- a program to manage archives of files" |
3020 | - }, |
3021 | - { |
3022 | - "status": "Installed", |
3023 | - "desired": "Install", |
3024 | - "version": "4:4.6.3-1ubuntu5", |
3025 | - "name": "cpp", |
3026 | - "description": "GNU C preprocessor (cpp)" |
3027 | - }, |
3028 | - { |
3029 | - "status": "Installed", |
3030 | - "desired": "Install", |
3031 | - "version": "4.6.3-1ubuntu5", |
3032 | - "name": "cpp-4.6", |
3033 | - "description": "GNU C preprocessor" |
3034 | - }, |
3035 | - { |
3036 | - "status": "Installed", |
3037 | - "desired": "Install", |
3038 | - "version": "0.7-0ubuntu1", |
3039 | - "name": "cpu-checker", |
3040 | - "description": "tools to help evaluate certain CPU (or BIOS) features" |
3041 | - }, |
3042 | - { |
3043 | - "status": "Installed", |
3044 | - "desired": "Install", |
3045 | - "version": "1.1.2-1ubuntu1", |
3046 | - "name": "crda", |
3047 | - "description": "wireless Central Regulatory Domain Agent" |
3048 | - }, |
3049 | - { |
3050 | - "status": "Installed", |
3051 | - "desired": "Install", |
3052 | - "version": "3.0pl1-120ubuntu4", |
3053 | - "name": "cron", |
3054 | - "description": "process scheduling daemon" |
3055 | - }, |
3056 | - { |
3057 | - "status": "Installed", |
3058 | - "desired": "Install", |
3059 | - "version": "2:1.4.1-2ubuntu4", |
3060 | - "name": "cryptsetup-bin", |
3061 | - "description": "disk encryption support - command line tools" |
3062 | - }, |
3063 | - { |
3064 | - "status": "Installed", |
3065 | - "desired": "Install", |
3066 | - "version": "1.5.3-0ubuntu6", |
3067 | - "name": "cups", |
3068 | - "description": "Common UNIX Printing System(tm) - server" |
3069 | - }, |
3070 | - { |
3071 | - "status": "Installed", |
3072 | - "desired": "Install", |
3073 | - "version": "1.5.3-0ubuntu6", |
3074 | - "name": "cups-bsd", |
3075 | - "description": "Common UNIX Printing System(tm) - BSD commands" |
3076 | - }, |
3077 | - { |
3078 | - "status": "Installed", |
3079 | - "desired": "Install", |
3080 | - "version": "1.5.3-0ubuntu6", |
3081 | - "name": "cups-client", |
3082 | - "description": "Common UNIX Printing System(tm) - client programs (SysV)" |
3083 | - }, |
3084 | - { |
3085 | - "status": "Installed", |
3086 | - "desired": "Install", |
3087 | - "version": "1.5.3-0ubuntu6", |
3088 | - "name": "cups-common", |
3089 | - "description": "Common UNIX Printing System(tm) - common files" |
3090 | - }, |
3091 | - { |
3092 | - "status": "Installed", |
3093 | - "desired": "Install", |
3094 | - "version": "1.0.18-0ubuntu0.1", |
3095 | - "name": "cups-filters", |
3096 | - "description": "OpenPrinting CUPS Filters" |
3097 | - }, |
3098 | - { |
3099 | - "status": "Installed", |
3100 | - "desired": "Install", |
3101 | - "version": "0.2.1.2-1ubuntu0.1", |
3102 | - "name": "cups-pk-helper", |
3103 | - "description": "PolicyKit helper to configure cups with fine-grained privileges" |
3104 | - }, |
3105 | - { |
3106 | - "status": "Installed", |
3107 | - "desired": "Install", |
3108 | - "version": "1.5.3-0ubuntu6", |
3109 | - "name": "cups-ppdc", |
3110 | - "description": "Common UNIX Printing System(tm) - PPD manipulation utilities" |
3111 | - }, |
3112 | - { |
3113 | - "status": "Installed", |
3114 | - "desired": "Install", |
3115 | - "version": "7.22.0-3ubuntu4", |
3116 | - "name": "curl", |
3117 | - "description": "Get a file from an HTTP, HTTPS or FTP server" |
3118 | - }, |
3119 | - { |
3120 | - "status": "Installed", |
3121 | - "desired": "Install", |
3122 | - "version": "2:1.12.13+real-8", |
3123 | - "name": "cvs", |
3124 | - "description": "Concurrent Versions System" |
3125 | - }, |
3126 | - { |
3127 | - "status": "Installed", |
3128 | - "desired": "Install", |
3129 | - "version": "0.15.1-1ubuntu1", |
3130 | - "name": "cython", |
3131 | - "description": "C-Extensions for Python" |
3132 | - }, |
3133 | - { |
3134 | - "status": "Installed", |
3135 | - "desired": "Install", |
3136 | - "version": "0.5.7-2ubuntu2", |
3137 | - "name": "dash", |
3138 | - "description": "POSIX-compliant shell" |
3139 | - }, |
3140 | - { |
3141 | - "status": "Installed", |
3142 | - "desired": "Install", |
3143 | - "version": "1.4.18-1ubuntu1.3", |
3144 | - "name": "dbus", |
3145 | - "description": "simple interprocess messaging system (daemon and utilities)" |
3146 | - }, |
3147 | - { |
3148 | - "status": "Installed", |
3149 | - "desired": "Install", |
3150 | - "version": "1.4.18-1ubuntu1.3", |
3151 | - "name": "dbus-x11", |
3152 | - "description": "simple interprocess messaging system (X11 deps)" |
3153 | - }, |
3154 | - { |
3155 | - "status": "Installed", |
3156 | - "desired": "Install", |
3157 | - "version": "1.06.95-2", |
3158 | - "name": "dc", |
3159 | - "description": "The GNU dc arbitrary precision reverse-polish calculator" |
3160 | - }, |
3161 | - { |
3162 | - "status": "Installed", |
3163 | - "desired": "Install", |
3164 | - "version": "0.12.0-0ubuntu1.1", |
3165 | - "name": "dconf-gsettings-backend", |
3166 | - "description": "simple configuration storage system - GSettings back-end" |
3167 | - }, |
3168 | - { |
3169 | - "status": "Installed", |
3170 | - "desired": "Install", |
3171 | - "version": "0.12.0-0ubuntu1.1", |
3172 | - "name": "dconf-service", |
3173 | - "description": "simple configuration storage system - D-Bus service" |
3174 | - }, |
3175 | - { |
3176 | - "status": "Installed", |
3177 | - "desired": "Install", |
3178 | - "version": "0.12.0-0ubuntu1.1", |
3179 | - "name": "dconf-tools", |
3180 | - "description": "simple configuration storage system - utilities" |
3181 | - }, |
3182 | - { |
3183 | - "status": "Installed", |
3184 | - "desired": "Install", |
3185 | - "version": "2.18ubuntu1", |
3186 | - "name": "dctrl-tools", |
3187 | - "description": "Command-line tools to process Debian package information" |
3188 | - }, |
3189 | - { |
3190 | - "status": "Installed", |
3191 | - "desired": "Install", |
3192 | - "version": "1.5.42ubuntu1", |
3193 | - "name": "debconf", |
3194 | - "description": "Debian configuration management system" |
3195 | - }, |
3196 | - { |
3197 | - "status": "Installed", |
3198 | - "desired": "Install", |
3199 | - "version": "1.5.42ubuntu1", |
3200 | - "name": "debconf-i18n", |
3201 | - "description": "full internationalization support for debconf" |
3202 | - }, |
3203 | - { |
3204 | - "status": "Installed", |
3205 | - "desired": "Install", |
3206 | - "version": "9.20120115ubuntu3", |
3207 | - "name": "debhelper", |
3208 | - "description": "helper programs for debian/rules" |
3209 | - }, |
3210 | - { |
3211 | - "status": "Installed", |
3212 | - "desired": "Install", |
3213 | - "version": "2010.08.28", |
3214 | - "name": "debian-archive-keyring", |
3215 | - "description": "GnuPG archive keys of the Debian archive" |
3216 | - }, |
3217 | - { |
3218 | - "status": "Installed", |
3219 | - "desired": "Install", |
3220 | - "version": "2012.02.22", |
3221 | - "name": "debian-keyring", |
3222 | - "description": "GnuPG keys of Debian Developers" |
3223 | - }, |
3224 | - { |
3225 | - "status": "Installed", |
3226 | - "desired": "Install", |
3227 | - "version": "4.2.1ubuntu2", |
3228 | - "name": "debianutils", |
3229 | - "description": "Miscellaneous utilities specific to Debian" |
3230 | - }, |
3231 | - { |
3232 | - "status": "Installed", |
3233 | - "desired": "Install", |
3234 | - "version": "1.0.39ubuntu0.2", |
3235 | - "name": "debootstrap", |
3236 | - "description": "Bootstrap a basic Debian system" |
3237 | - }, |
3238 | - { |
3239 | - "status": "Installed", |
3240 | - "desired": "Install", |
3241 | - "version": "22.0-0ubuntu2", |
3242 | - "name": "deja-dup", |
3243 | - "description": "Back up your files" |
3244 | - }, |
3245 | - { |
3246 | - "status": "Installed", |
3247 | - "desired": "Install", |
3248 | - "version": "0.20-0ubuntu3", |
3249 | - "name": "desktop-file-utils", |
3250 | - "description": "Utilities for .desktop files" |
3251 | - }, |
3252 | - { |
3253 | - "status": "Installed", |
3254 | - "desired": "Install", |
3255 | - "version": "3.4.1-0ubuntu1", |
3256 | - "name": "devhelp", |
3257 | - "description": "GNOME developers help program" |
3258 | - }, |
3259 | - { |
3260 | - "status": "Installed", |
3261 | - "desired": "Install", |
3262 | - "version": "3.4.1-0ubuntu1", |
3263 | - "name": "devhelp-common", |
3264 | - "description": "Common files for devhelp and its library" |
3265 | - }, |
3266 | - { |
3267 | - "status": "Installed", |
3268 | - "desired": "Install", |
3269 | - "version": "2.11.6ubuntu1.4", |
3270 | - "name": "devscripts", |
3271 | - "description": "scripts to make the life of a Debian Package maintainer easier" |
3272 | - }, |
3273 | - { |
3274 | - "status": "Installed", |
3275 | - "desired": "Install", |
3276 | - "version": "2.7.102-0ubuntu3.7", |
3277 | - "name": "dh-apparmor", |
3278 | - "description": "AppArmor debhelper routines" |
3279 | - }, |
3280 | - { |
3281 | - "status": "Installed", |
3282 | - "desired": "Install", |
3283 | - "version": "0.59ubuntu1", |
3284 | - "name": "dh-make", |
3285 | - "description": "tool that converts source archives into Debian package source" |
3286 | - }, |
3287 | - { |
3288 | - "status": "Installed", |
3289 | - "desired": "Install", |
3290 | - "version": "116", |
3291 | - "name": "dh-translations", |
3292 | - "description": "debhelper extension for translation support" |
3293 | - }, |
3294 | - { |
3295 | - "status": "Installed", |
3296 | - "desired": "Install", |
3297 | - "version": "0.97.2-5", |
3298 | - "name": "dia-common", |
3299 | - "description": "Diagram editor (common files)" |
3300 | - }, |
3301 | - { |
3302 | - "status": "Installed", |
3303 | - "desired": "Install", |
3304 | - "version": "0.97.2-5", |
3305 | - "name": "dia-gnome", |
3306 | - "description": "Diagram editor (GNOME version)" |
3307 | - }, |
3308 | - { |
3309 | - "status": "Installed", |
3310 | - "desired": "Install", |
3311 | - "version": "0.97.2-5", |
3312 | - "name": "dia-libs", |
3313 | - "description": "Diagram editor (library files)" |
3314 | - }, |
3315 | - { |
3316 | - "status": "Installed", |
3317 | - "desired": "Install", |
3318 | - "version": "1.12.1ubuntu2", |
3319 | - "name": "dictionaries-common", |
3320 | - "description": "Common utilities for spelling dictionary tools" |
3321 | - }, |
3322 | - { |
3323 | - "status": "Installed", |
3324 | - "desired": "Install", |
3325 | - "version": "1.54-1", |
3326 | - "name": "diffstat", |
3327 | - "description": "produces graph of changes introduced by a diff file" |
3328 | - }, |
3329 | - { |
3330 | - "status": "Installed", |
3331 | - "desired": "Install", |
3332 | - "version": "1:3.2-1ubuntu1", |
3333 | - "name": "diffutils", |
3334 | - "description": "File comparison utilities" |
3335 | - }, |
3336 | - { |
3337 | - "status": "Installed", |
3338 | - "desired": "Install", |
3339 | - "version": "0.8.2", |
3340 | - "name": "distro-info", |
3341 | - "description": "provides information about the distributions' releases" |
3342 | - }, |
3343 | - { |
3344 | - "status": "Installed", |
3345 | - "desired": "Install", |
3346 | - "version": "0.8ubuntu0.2", |
3347 | - "name": "distro-info-data", |
3348 | - "description": "information about the distributions' releases (data files)" |
3349 | - }, |
3350 | - { |
3351 | - "status": "Installed", |
3352 | - "desired": "Install", |
3353 | - "version": "2.2.0.3-1ubuntu3.1", |
3354 | - "name": "dkms", |
3355 | - "description": "Dynamic Kernel Module Support Framework" |
3356 | - }, |
3357 | - { |
3358 | - "status": "Installed", |
3359 | - "desired": "Install", |
3360 | - "version": "2.11-4", |
3361 | - "name": "dmidecode", |
3362 | - "description": "SMBIOS/DMI table decoder" |
3363 | - }, |
3364 | - { |
3365 | - "status": "Installed", |
3366 | - "desired": "Install", |
3367 | - "version": "2:1.02.48-4ubuntu7.1", |
3368 | - "name": "dmsetup", |
3369 | - "description": "The Linux Kernel Device Mapper userspace library" |
3370 | - }, |
3371 | - { |
3372 | - "status": "Installed", |
3373 | - "desired": "Install", |
3374 | - "version": "0.4.3", |
3375 | - "name": "dmz-cursor-theme", |
3376 | - "description": "Style neutral, scalable cursor theme" |
3377 | - }, |
3378 | - { |
3379 | - "status": "Installed", |
3380 | - "desired": "Install", |
3381 | - "version": "2.59-4", |
3382 | - "name": "dnsmasq-base", |
3383 | - "description": "Small caching DNS proxy and DHCP/TFTP server" |
3384 | - }, |
3385 | - { |
3386 | - "status": "Installed", |
3387 | - "desired": "Install", |
3388 | - "version": "1:9.8.1.dfsg.P1-4ubuntu0.5", |
3389 | - "name": "dnsutils", |
3390 | - "description": "Clients provided with BIND" |
3391 | - }, |
3392 | - { |
3393 | - "status": "Installed", |
3394 | - "desired": "Install", |
3395 | - "version": "0.10.3", |
3396 | - "name": "doc-base", |
3397 | - "description": "utilities to manage online documentation" |
3398 | - }, |
3399 | - { |
3400 | - "status": "Installed", |
3401 | - "desired": "Install", |
3402 | - "version": "4.5-7ubuntu1", |
3403 | - "name": "docbook-xml", |
3404 | - "description": "standard XML documentation system for software and systems" |
3405 | - }, |
3406 | - { |
3407 | - "status": "Installed", |
3408 | - "desired": "Install", |
3409 | - "version": "1.76.1+dfsg-1ubuntu1", |
3410 | - "name": "docbook-xsl", |
3411 | - "description": "stylesheets for processing DocBook XML to various output formats" |
3412 | - }, |
3413 | - { |
3414 | - "status": "Installed", |
3415 | - "desired": "Install", |
3416 | - "version": "0.12-0ubuntu1~rev479~precise1", |
3417 | - "name": "doit", |
3418 | - "description": "Automation Tool" |
3419 | - }, |
3420 | - { |
3421 | - "status": "Installed", |
3422 | - "desired": "Install", |
3423 | - "version": "3.0.12-1ubuntu1", |
3424 | - "name": "dosfstools", |
3425 | - "description": "utilities for making and checking MS-DOS FAT filesystems" |
3426 | - }, |
3427 | - { |
3428 | - "status": "Installed", |
3429 | - "desired": "Install", |
3430 | - "version": "1.16.1.2ubuntu7.1", |
3431 | - "name": "dpkg", |
3432 | - "description": "Debian package management system" |
3433 | - }, |
3434 | - { |
3435 | - "status": "Installed", |
3436 | - "desired": "Install", |
3437 | - "version": "1.16.1.2ubuntu7.1", |
3438 | - "name": "dpkg-dev", |
3439 | - "description": "Debian package development tools" |
3440 | - }, |
3441 | - { |
3442 | - "status": "Installed", |
3443 | - "desired": "Install", |
3444 | - "version": "0.9.6.2ubuntu1", |
3445 | - "name": "dput", |
3446 | - "description": "Debian package upload tool" |
3447 | - }, |
3448 | - { |
3449 | - "status": "Installed", |
3450 | - "desired": "Install", |
3451 | - "version": "0.6.1+repack-1", |
3452 | - "name": "drobo-utils", |
3453 | - "description": "manage data robotics storage units (drobos)" |
3454 | - }, |
3455 | - { |
3456 | - "status": "Installed", |
3457 | - "desired": "Install", |
3458 | - "version": "0.6.18-0ubuntu3.1", |
3459 | - "name": "duplicity", |
3460 | - "description": "encrypted bandwidth-efficient backup" |
3461 | - }, |
3462 | - { |
3463 | - "status": "Installed", |
3464 | - "desired": "Install", |
3465 | - "version": "7.1-10", |
3466 | - "name": "dvd+rw-tools", |
3467 | - "description": "DVD+-RW/R tools" |
3468 | - }, |
3469 | - { |
3470 | - "status": "Installed", |
3471 | - "desired": "Install", |
3472 | - "version": "1.42-1ubuntu2", |
3473 | - "name": "e2fslibs", |
3474 | - "description": "ext2/ext3/ext4 file system libraries" |
3475 | - }, |
3476 | - { |
3477 | - "status": "Installed", |
3478 | - "desired": "Install", |
3479 | - "version": "1.42-1ubuntu2", |
3480 | - "name": "e2fsprogs", |
3481 | - "description": "ext2/ext3/ext4 file system utilities" |
3482 | - }, |
3483 | - { |
3484 | - "status": "Installed", |
3485 | - "desired": "Install", |
3486 | - "version": "2.0.9.2-2ubuntu2", |
3487 | - "name": "ebtables", |
3488 | - "description": "Ethernet bridge frame table administration" |
3489 | - }, |
3490 | - { |
3491 | - "status": "Installed", |
3492 | - "desired": "Install", |
3493 | - "version": "1.5-3", |
3494 | - "name": "ed", |
3495 | - "description": "classic UNIX line editor" |
3496 | - }, |
3497 | - { |
3498 | - "status": "Installed", |
3499 | - "desired": "Install", |
3500 | - "version": "2.1.5+deb1+cvs20081104-9", |
3501 | - "name": "eject", |
3502 | - "description": "ejects CDs and operates CD-Changers under Linux" |
3503 | - }, |
3504 | - { |
3505 | - "status": "Installed", |
3506 | - "desired": "Install", |
3507 | - "version": "3.4.2.3-0ubuntu1", |
3508 | - "name": "empathy", |
3509 | - "description": "GNOME multi-protocol chat and call client" |
3510 | - }, |
3511 | - { |
3512 | - "status": "Installed", |
3513 | - "desired": "Install", |
3514 | - "version": "3.4.2.3-0ubuntu1", |
3515 | - "name": "empathy-common", |
3516 | - "description": "GNOME multi-protocol chat and call client (common files)" |
3517 | - }, |
3518 | - { |
3519 | - "status": "Installed", |
3520 | - "desired": "Install", |
3521 | - "version": "1.6.0-7", |
3522 | - "name": "enchant", |
3523 | - "description": "Wrapper for various spell checker engines (binary programs)" |
3524 | - }, |
3525 | - { |
3526 | - "status": "Installed", |
3527 | - "desired": "Install", |
3528 | - "version": "2:1.4.6-0ubuntu0.12.04.1", |
3529 | - "name": "enigmail", |
3530 | - "description": "GPG support for Thunderbird and Debian Icedove" |
3531 | - }, |
3532 | - { |
3533 | - "status": "Installed", |
3534 | - "desired": "Install", |
3535 | - "version": "3.4.2-0ubuntu1.1", |
3536 | - "name": "eog", |
3537 | - "description": "Eye of GNOME graphics viewer program" |
3538 | - }, |
3539 | - { |
3540 | - "status": "Installed", |
3541 | - "desired": "Install", |
3542 | - "version": "0.2.41-10build3", |
3543 | - "name": "esound-common", |
3544 | - "description": "Enlightened Sound Daemon - Common files" |
3545 | - }, |
3546 | - { |
3547 | - "status": "Installed", |
3548 | - "desired": "Install", |
3549 | - "version": "1.46.02-0ubuntu1", |
3550 | - "name": "espeak", |
3551 | - "description": "Multi-lingual software speech synthesizer" |
3552 | - }, |
3553 | - { |
3554 | - "status": "Installed", |
3555 | - "desired": "Install", |
3556 | - "version": "1.46.02-0ubuntu1", |
3557 | - "name": "espeak-data", |
3558 | - "description": "Multi-lingual software speech synthesizer: speech data files" |
3559 | - }, |
3560 | - { |
3561 | - "status": "Installed", |
3562 | - "desired": "Install", |
3563 | - "version": "1:3.1-1", |
3564 | - "name": "ethtool", |
3565 | - "description": "display or change Ethernet device settings" |
3566 | - }, |
3567 | - { |
3568 | - "status": "Installed", |
3569 | - "desired": "Install", |
3570 | - "version": "2.0.0~bzr516-0ubuntu3.1", |
3571 | - "name": "euca2ools", |
3572 | - "description": "managing cloud instances for Eucalyptus" |
3573 | - }, |
3574 | - { |
3575 | - "status": "Installed", |
3576 | - "desired": "Install", |
3577 | - "version": "3.4.0-0ubuntu1.4", |
3578 | - "name": "evince", |
3579 | - "description": "Document (PostScript, PDF) viewer" |
3580 | - }, |
3581 | - { |
3582 | - "status": "Installed", |
3583 | - "desired": "Install", |
3584 | - "version": "3.4.0-0ubuntu1.4", |
3585 | - "name": "evince-common", |
3586 | - "description": "Document (PostScript, PDF) viewer - common files" |
3587 | - }, |
3588 | - { |
3589 | - "status": "Installed", |
3590 | - "desired": "Install", |
3591 | - "version": "2.0.2", |
3592 | - "name": "evoluspencil", |
3593 | - "description": "Evolus Pencil" |
3594 | - }, |
3595 | - { |
3596 | - "status": "Installed", |
3597 | - "desired": "Install", |
3598 | - "version": "3.2.3-0ubuntu7", |
3599 | - "name": "evolution-data-server", |
3600 | - "description": "evolution database backend server" |
3601 | - }, |
3602 | - { |
3603 | - "status": "Installed", |
3604 | - "desired": "Install", |
3605 | - "version": "3.2.3-0ubuntu7", |
3606 | - "name": "evolution-data-server-common", |
3607 | - "description": "architecture independent files for Evolution Data Server" |
3608 | - }, |
3609 | - { |
3610 | - "status": "Installed", |
3611 | - "desired": "Install", |
3612 | - "version": "46", |
3613 | - "name": "example-content", |
3614 | - "description": "Ubuntu example content" |
3615 | - }, |
3616 | - { |
3617 | - "status": "Installed", |
3618 | - "desired": "Install", |
3619 | - "version": "1.3.2-5", |
3620 | - "name": "fabric", |
3621 | - "description": "Simple Pythonic remote deployment tool" |
3622 | - }, |
3623 | - { |
3624 | - "status": "Installed", |
3625 | - "desired": "Install", |
3626 | - "version": "1.18.2-1", |
3627 | - "name": "fakeroot", |
3628 | - "description": "tool for simulating superuser privileges" |
3629 | - }, |
3630 | - { |
3631 | - "status": "Installed", |
3632 | - "desired": "Install", |
3633 | - "version": "4:0.8.4-0ubuntu0.12.04.1", |
3634 | - "name": "ffmpeg", |
3635 | - "description": "Multimedia player, server, encoder and transcoder (transitional package)" |
3636 | - }, |
3637 | - { |
3638 | - "status": "Installed", |
3639 | - "desired": "Install", |
3640 | - "version": "5.09-2", |
3641 | - "name": "file", |
3642 | - "description": "Determines file type using \"magic\" numbers" |
3643 | - }, |
3644 | - { |
3645 | - "status": "Installed", |
3646 | - "desired": "Install", |
3647 | - "version": "3.4.1-0ubuntu1", |
3648 | - "name": "file-roller", |
3649 | - "description": "archive manager for GNOME" |
3650 | - }, |
3651 | - { |
3652 | - "status": "Installed", |
3653 | - "desired": "Install", |
3654 | - "version": "4.4.2-4ubuntu1", |
3655 | - "name": "findutils", |
3656 | - "description": "utilities for finding files--find, xargs" |
3657 | - }, |
3658 | - { |
3659 | - "status": "Installed", |
3660 | - "desired": "Install", |
3661 | - "version": "18.0.1+build1-0ubuntu0.12.04.1", |
3662 | - "name": "firefox", |
3663 | - "description": "Safe and easy web browser from Mozilla" |
3664 | - }, |
3665 | - { |
3666 | - "status": "Installed", |
3667 | - "desired": "Install", |
3668 | - "version": "18.0.1+build1-0ubuntu0.12.04.1", |
3669 | - "name": "firefox-globalmenu", |
3670 | - "description": "Unity appmenu integration for Firefox" |
3671 | - }, |
3672 | - { |
3673 | - "status": "Installed", |
3674 | - "desired": "Install", |
3675 | - "version": "18.0.1+build1-0ubuntu0.12.04.1", |
3676 | - "name": "firefox-gnome-support", |
3677 | - "description": "Safe and easy web browser from Mozilla - GNOME support" |
3678 | - }, |
3679 | - { |
3680 | - "status": "Installed", |
3681 | - "desired": "Install", |
3682 | - "version": "0.4", |
3683 | - "name": "firefox-launchpad-plugin", |
3684 | - "description": "Launchpad firefox integration" |
3685 | - }, |
3686 | - { |
3687 | - "status": "Installed", |
3688 | - "desired": "Install", |
3689 | - "version": "18.0.1+build1-0ubuntu0.12.04.1", |
3690 | - "name": "firefox-locale-en", |
3691 | - "description": "English language pack for Firefox" |
3692 | - }, |
3693 | - { |
3694 | - "status": "Installed", |
3695 | - "desired": "Install", |
3696 | - "version": "11.2.202.261ubuntu0.12.04.1", |
3697 | - "name": "flashplugin-installer", |
3698 | - "description": "Adobe Flash Player plugin installer" |
3699 | - }, |
3700 | - { |
3701 | - "status": "Installed", |
3702 | - "desired": "Install", |
3703 | - "version": "2.5.35-10ubuntu3", |
3704 | - "name": "flex", |
3705 | - "description": "A fast lexical analyzer generator." |
3706 | - }, |
3707 | - { |
3708 | - "status": "Installed", |
3709 | - "desired": "Install", |
3710 | - "version": "0.6.8-2", |
3711 | - "name": "folks-common", |
3712 | - "description": "library to aggregates people into metacontacts (common files)" |
3713 | - }, |
3714 | - { |
3715 | - "status": "Installed", |
3716 | - "desired": "Install", |
3717 | - "version": "2.8.0-3ubuntu9.1", |
3718 | - "name": "fontconfig", |
3719 | - "description": "generic font configuration library - support binaries" |
3720 | - }, |
3721 | - { |
3722 | - "status": "Installed", |
3723 | - "desired": "Install", |
3724 | - "version": "2.8.0-3ubuntu9.1", |
3725 | - "name": "fontconfig-config", |
3726 | - "description": "generic font configuration library - configuration" |
3727 | - }, |
3728 | - { |
3729 | - "status": "Installed", |
3730 | - "desired": "Install", |
3731 | - "version": "2.01+mry-3", |
3732 | - "name": "fonts-kacst", |
3733 | - "description": "KACST free TrueType Arabic fonts" |
3734 | - }, |
3735 | - { |
3736 | - "status": "Installed", |
3737 | - "desired": "Install", |
3738 | - "version": "5.0+svn11846-2", |
3739 | - "name": "fonts-kacst-one", |
3740 | - "description": "TrueType font designed for Arabic language" |
3741 | - }, |
3742 | - { |
3743 | - "status": "Installed", |
3744 | - "desired": "Install", |
3745 | - "version": "5.0-5ubuntu1", |
3746 | - "name": "fonts-khmeros-core", |
3747 | - "description": "KhmerOS Unicode fonts for the Khmer language of Cambodia" |
3748 | - }, |
3749 | - { |
3750 | - "status": "Installed", |
3751 | - "desired": "Install", |
3752 | - "version": "0.0.20060226-8", |
3753 | - "name": "fonts-lao", |
3754 | - "description": "TrueType font for Lao language" |
3755 | - }, |
3756 | - { |
3757 | - "status": "Installed", |
3758 | - "desired": "Install", |
3759 | - "version": "1.07.0-2ubuntu0.1", |
3760 | - "name": "fonts-liberation", |
3761 | - "description": "Fonts with the same metrics as Times, Arial and Courier" |
3762 | - }, |
3763 | - { |
3764 | - "status": "Installed", |
3765 | - "desired": "Install", |
3766 | - "version": "3.010-2", |
3767 | - "name": "fonts-nanum", |
3768 | - "description": "Nanum Korean fonts" |
3769 | - }, |
3770 | - { |
3771 | - "status": "Installed", |
3772 | - "desired": "Install", |
3773 | - "version": "2:102.2+LibO3.5.4-0ubuntu1.1", |
3774 | - "name": "fonts-opensymbol", |
3775 | - "description": "OpenSymbol TrueType font" |
3776 | - }, |
3777 | - { |
3778 | - "status": "Installed", |
3779 | - "desired": "Install", |
3780 | - "version": "003.02.01-5ubuntu1", |
3781 | - "name": "fonts-takao-pgothic", |
3782 | - "description": "Japanese TrueType font set, Takao P Gothic Fonts" |
3783 | - }, |
3784 | - { |
3785 | - "status": "Installed", |
3786 | - "desired": "Install", |
3787 | - "version": "1:0.4.17-1ubuntu1", |
3788 | - "name": "fonts-thai-tlwg", |
3789 | - "description": "Thai fonts maintained by TLWG (meta package)" |
3790 | - }, |
3791 | - { |
3792 | - "status": "Installed", |
3793 | - "desired": "Install", |
3794 | - "version": "1:0.4.17-1ubuntu1", |
3795 | - "name": "fonts-tlwg-garuda", |
3796 | - "description": "Thai Garuda font" |
3797 | - }, |
3798 | - { |
3799 | - "status": "Installed", |
3800 | - "desired": "Install", |
3801 | - "version": "1:0.4.17-1ubuntu1", |
3802 | - "name": "fonts-tlwg-kinnari", |
3803 | - "description": "Thai Kinnari font" |
3804 | - }, |
3805 | - { |
3806 | - "status": "Installed", |
3807 | - "desired": "Install", |
3808 | - "version": "1:0.4.17-1ubuntu1", |
3809 | - "name": "fonts-tlwg-loma", |
3810 | - "description": "Thai Loma font" |
3811 | - }, |
3812 | - { |
3813 | - "status": "Installed", |
3814 | - "desired": "Install", |
3815 | - "version": "1:0.4.17-1ubuntu1", |
3816 | - "name": "fonts-tlwg-mono", |
3817 | - "description": "Thai TlwgMono font" |
3818 | - }, |
3819 | - { |
3820 | - "status": "Installed", |
3821 | - "desired": "Install", |
3822 | - "version": "1:0.4.17-1ubuntu1", |
3823 | - "name": "fonts-tlwg-norasi", |
3824 | - "description": "Thai Norasi font" |
3825 | - }, |
3826 | - { |
3827 | - "status": "Installed", |
3828 | - "desired": "Install", |
3829 | - "version": "1:0.4.17-1ubuntu1", |
3830 | - "name": "fonts-tlwg-purisa", |
3831 | - "description": "Thai Purisa font" |
3832 | - }, |
3833 | - { |
3834 | - "status": "Installed", |
3835 | - "desired": "Install", |
3836 | - "version": "1:0.4.17-1ubuntu1", |
3837 | - "name": "fonts-tlwg-sawasdee", |
3838 | - "description": "Thai Sawasdee font" |
3839 | - }, |
3840 | - { |
3841 | - "status": "Installed", |
3842 | - "desired": "Install", |
3843 | - "version": "1:0.4.17-1ubuntu1", |
3844 | - "name": "fonts-tlwg-typewriter", |
3845 | - "description": "Thai TlwgTypewriter font" |
3846 | - }, |
3847 | - { |
3848 | - "status": "Installed", |
3849 | - "desired": "Install", |
3850 | - "version": "1:0.4.17-1ubuntu1", |
3851 | - "name": "fonts-tlwg-typist", |
3852 | - "description": "Thai TlwgTypist font" |
3853 | - }, |
3854 | - { |
3855 | - "status": "Installed", |
3856 | - "desired": "Install", |
3857 | - "version": "1:0.4.17-1ubuntu1", |
3858 | - "name": "fonts-tlwg-typo", |
3859 | - "description": "Thai TlwgTypo font" |
3860 | - }, |
3861 | - { |
3862 | - "status": "Installed", |
3863 | - "desired": "Install", |
3864 | - "version": "1:0.4.17-1ubuntu1", |
3865 | - "name": "fonts-tlwg-umpush", |
3866 | - "description": "Thai Umpush font" |
3867 | - }, |
3868 | - { |
3869 | - "status": "Installed", |
3870 | - "desired": "Install", |
3871 | - "version": "1:0.4.17-1ubuntu1", |
3872 | - "name": "fonts-tlwg-waree", |
3873 | - "description": "Thai Waree font" |
3874 | - }, |
3875 | - { |
3876 | - "status": "Installed", |
3877 | - "desired": "Install", |
3878 | - "version": "20120322-0ubuntu1", |
3879 | - "name": "foomatic-db-compressed-ppds", |
3880 | - "description": "OpenPrinting printer support - Compressed PPDs derived from the database" |
3881 | - }, |
3882 | - { |
3883 | - "status": "Installed", |
3884 | - "desired": "Install", |
3885 | - "version": "4.0.8-2ubuntu1", |
3886 | - "name": "foomatic-db-engine", |
3887 | - "description": "OpenPrinting printer support - programs" |
3888 | - }, |
3889 | - { |
3890 | - "status": "Installed", |
3891 | - "desired": "Install", |
3892 | - "version": "4.0.16-0ubuntu0.2", |
3893 | - "name": "foomatic-filters", |
3894 | - "description": "OpenPrinting printer support - filters" |
3895 | - }, |
3896 | - { |
3897 | - "status": "Installed", |
3898 | - "desired": "Install", |
3899 | - "version": "2.6.0-1ubuntu3", |
3900 | - "name": "freeglut3", |
3901 | - "description": "OpenGL Utility Toolkit" |
3902 | - }, |
3903 | - { |
3904 | - "status": "Installed", |
3905 | - "desired": "Install", |
3906 | - "version": "2.6.0-1ubuntu3", |
3907 | - "name": "freeglut3-dev", |
3908 | - "description": "OpenGL Utility Toolkit development files" |
3909 | - }, |
3910 | - { |
3911 | - "status": "Installed", |
3912 | - "desired": "Install", |
3913 | - "version": "20060219-1", |
3914 | - "name": "freepats", |
3915 | - "description": "Free patch set for MIDI audio synthesis" |
3916 | - }, |
3917 | - { |
3918 | - "status": "Installed", |
3919 | - "desired": "Install", |
3920 | - "version": "0.2.25", |
3921 | - "name": "friendly-recovery", |
3922 | - "description": "Make recovery more user-friendly" |
3923 | - }, |
3924 | - { |
3925 | - "status": "Installed", |
3926 | - "desired": "Install", |
3927 | - "version": "20101118-2", |
3928 | - "name": "fswebcam", |
3929 | - "description": "Tiny and flexible webcam program" |
3930 | - }, |
3931 | - { |
3932 | - "status": "Installed", |
3933 | - "desired": "Install", |
3934 | - "version": "0.17-25", |
3935 | - "name": "ftp", |
3936 | - "description": "classical file transfer client" |
3937 | - }, |
3938 | - { |
3939 | - "status": "Installed", |
3940 | - "desired": "Install", |
3941 | - "version": "2.8.6-2ubuntu2", |
3942 | - "name": "fuse", |
3943 | - "description": "Filesystem in Userspace" |
3944 | - }, |
3945 | - { |
3946 | - "status": "Installed", |
3947 | - "desired": "Install", |
3948 | - "version": "0.25.06precise1", |
3949 | - "name": "fwts", |
3950 | - "description": "FirmWare Test Suite" |
3951 | - }, |
3952 | - { |
3953 | - "status": "Installed", |
3954 | - "desired": "Install", |
3955 | - "version": "4:4.6.3-1ubuntu5", |
3956 | - "name": "g++", |
3957 | - "description": "GNU C++ compiler" |
3958 | - }, |
3959 | - { |
3960 | - "status": "Installed", |
3961 | - "desired": "Install", |
3962 | - "version": "4.6.3-1ubuntu5", |
3963 | - "name": "g++-4.6", |
3964 | - "description": "GNU C++ compiler" |
3965 | - }, |
3966 | - { |
3967 | - "status": "Installed", |
3968 | - "desired": "Install", |
3969 | - "version": "1:3.1.8+dfsg-0.1ubuntu1", |
3970 | - "name": "gawk", |
3971 | - "description": "GNU awk, a pattern scanning and processing language" |
3972 | - }, |
3973 | - { |
3974 | - "status": "Installed", |
3975 | - "desired": "Install", |
3976 | - "version": "6.4.1.1-0ubuntu3", |
3977 | - "name": "gcalctool", |
3978 | - "description": "GNOME desktop calculator" |
3979 | - }, |
3980 | - { |
3981 | - "status": "Installed", |
3982 | - "desired": "Install", |
3983 | - "version": "4:4.6.3-1ubuntu5", |
3984 | - "name": "gcc", |
3985 | - "description": "GNU C compiler" |
3986 | - }, |
3987 | - { |
3988 | - "status": "Installed", |
3989 | - "desired": "Install", |
3990 | - "version": "4.6.3-1ubuntu5", |
3991 | - "name": "gcc-4.6", |
3992 | - "description": "GNU C compiler" |
3993 | - }, |
3994 | - { |
3995 | - "status": "Installed", |
3996 | - "desired": "Install", |
3997 | - "version": "4.6.3-1ubuntu5", |
3998 | - "name": "gcc-4.6-base", |
3999 | - "description": "GCC, the GNU Compiler Collection (base package)" |
4000 | - }, |
4001 | - { |
4002 | - "status": "Installed", |
4003 | - "desired": "Install", |
4004 | - "version": "4.6.3-1ubuntu5", |
4005 | - "name": "gcc-4.6-base:i386", |
4006 | - "description": "GCC, the GNU Compiler Collection (base package)" |
4007 | - }, |
4008 | - { |
4009 | - "status": "Installed", |
4010 | - "desired": "Install", |
4011 | - "version": "3.2.5-0ubuntu2", |
4012 | - "name": "gconf-defaults-service", |
4013 | - "description": "GNOME configuration database system (system defaults service)" |
4014 | - }, |
4015 | - { |
4016 | - "status": "Installed", |
4017 | - "desired": "Install", |
4018 | - "version": "3.0.1-1ubuntu2", |
4019 | - "name": "gconf-editor", |
4020 | - "description": "editor for the GConf configuration system" |
4021 | - }, |
4022 | - { |
4023 | - "status": "Installed", |
4024 | - "desired": "Install", |
4025 | - "version": "3.2.5-0ubuntu2", |
4026 | - "name": "gconf-service", |
4027 | - "description": "GNOME configuration database system (D-Bus service)" |
4028 | - }, |
4029 | - { |
4030 | - "status": "Installed", |
4031 | - "desired": "Install", |
4032 | - "version": "3.2.5-0ubuntu2", |
4033 | - "name": "gconf-service-backend", |
4034 | - "description": "GNOME configuration database system (D-Bus service)" |
4035 | - }, |
4036 | - { |
4037 | - "status": "Installed", |
4038 | - "desired": "Install", |
4039 | - "version": "3.2.5-0ubuntu2", |
4040 | - "name": "gconf2", |
4041 | - "description": "GNOME configuration database system (support tools)" |
4042 | - }, |
4043 | - { |
4044 | - "status": "Installed", |
4045 | - "desired": "Install", |
4046 | - "version": "3.2.5-0ubuntu2", |
4047 | - "name": "gconf2-common", |
4048 | - "description": "GNOME configuration database system (common files)" |
4049 | - }, |
4050 | - { |
4051 | - "status": "Installed", |
4052 | - "desired": "Install", |
4053 | - "version": "7.4-2012.04-0ubuntu2.1", |
4054 | - "name": "gdb", |
4055 | - "description": "The GNU Debugger" |
4056 | - }, |
4057 | - { |
4058 | - "status": "Installed", |
4059 | - "desired": "Install", |
4060 | - "version": "0.8.5build1", |
4061 | - "name": "gdebi", |
4062 | - "description": "simple tool to install deb files - GNOME GUI" |
4063 | - }, |
4064 | - { |
4065 | - "status": "Installed", |
4066 | - "desired": "Install", |
4067 | - "version": "0.8.5build1", |
4068 | - "name": "gdebi-core", |
4069 | - "description": "simple tool to install deb files" |
4070 | - }, |
4071 | - { |
4072 | - "status": "Installed", |
4073 | - "desired": "Install", |
4074 | - "version": "0.21.dfsg-1ubuntu4", |
4075 | - "name": "geany", |
4076 | - "description": "fast and lightweight IDE" |
4077 | - }, |
4078 | - { |
4079 | - "status": "Installed", |
4080 | - "desired": "Install", |
4081 | - "version": "0.21.dfsg-1ubuntu4", |
4082 | - "name": "geany-common", |
4083 | - "description": "fast and lightweight IDE -- common files" |
4084 | - }, |
4085 | - { |
4086 | - "status": "Installed", |
4087 | - "desired": "Install", |
4088 | - "version": "0.21.1.dfsg-2", |
4089 | - "name": "geany-plugin-treebrowser", |
4090 | - "description": "tree browser plugin for Geany" |
4091 | - }, |
4092 | - { |
4093 | - "status": "Installed", |
4094 | - "desired": "Install", |
4095 | - "version": "0.21.1.dfsg-2", |
4096 | - "name": "geany-plugins-common", |
4097 | - "description": "set of plugins for Geany (translations)" |
4098 | - }, |
4099 | - { |
4100 | - "status": "Installed", |
4101 | - "desired": "Install", |
4102 | - "version": "3.4.1-0ubuntu1", |
4103 | - "name": "gedit", |
4104 | - "description": "official text editor of the GNOME desktop environment" |
4105 | - }, |
4106 | - { |
4107 | - "status": "Installed", |
4108 | - "desired": "Install", |
4109 | - "version": "3.4.1-0ubuntu1", |
4110 | - "name": "gedit-common", |
4111 | - "description": "official text editor of the GNOME desktop environment (support files)" |
4112 | - }, |
4113 | - { |
4114 | - "status": "Installed", |
4115 | - "desired": "Install", |
4116 | - "version": "9:1.1.11-2ubuntu2", |
4117 | - "name": "genisoimage", |
4118 | - "description": "Creates ISO-9660 CD-ROM filesystem images" |
4119 | - }, |
4120 | - { |
4121 | - "status": "Installed", |
4122 | - "desired": "Install", |
4123 | - "version": "0.12.0-1ubuntu12", |
4124 | - "name": "geoclue", |
4125 | - "description": "Geographic information framework" |
4126 | - }, |
4127 | - { |
4128 | - "status": "Installed", |
4129 | - "desired": "Install", |
4130 | - "version": "0.0.2-0ubuntu6", |
4131 | - "name": "geoclue-ubuntu-geoip", |
4132 | - "description": "Provide positioning for GeoClue via Ubuntu GeoIP services" |
4133 | - }, |
4134 | - { |
4135 | - "status": "Installed", |
4136 | - "desired": "Install", |
4137 | - "version": "20111220-1", |
4138 | - "name": "geoip-database", |
4139 | - "description": "IP lookup command line tools that use the GeoIP library (country database)" |
4140 | - }, |
4141 | - { |
4142 | - "status": "Installed", |
4143 | - "desired": "Install", |
4144 | - "version": "0.18.1.1-5ubuntu3", |
4145 | - "name": "gettext", |
4146 | - "description": "GNU Internationalization utilities" |
4147 | - }, |
4148 | - { |
4149 | - "status": "Installed", |
4150 | - "desired": "Install", |
4151 | - "version": "0.18.1.1-5ubuntu3", |
4152 | - "name": "gettext-base", |
4153 | - "description": "GNU Internationalization utilities for the base system" |
4154 | - }, |
4155 | - { |
4156 | - "status": "Installed", |
4157 | - "desired": "Install", |
4158 | - "version": "9.05~dfsg-0ubuntu4.2", |
4159 | - "name": "ghostscript", |
4160 | - "description": "interpreter for the PostScript language and for PDF" |
4161 | - }, |
4162 | - { |
4163 | - "status": "Installed", |
4164 | - "desired": "Install", |
4165 | - "version": "9.05~dfsg-0ubuntu4.2", |
4166 | - "name": "ghostscript-cups", |
4167 | - "description": "interpreter for the PostScript language and for PDF - CUPS filters" |
4168 | - }, |
4169 | - { |
4170 | - "status": "Installed", |
4171 | - "desired": "Install", |
4172 | - "version": "9.05~dfsg-0ubuntu4.2", |
4173 | - "name": "ghostscript-x", |
4174 | - "description": "interpreter for the PostScript language and for PDF - X11 support" |
4175 | - }, |
4176 | - { |
4177 | - "status": "Installed", |
4178 | - "desired": "Install", |
4179 | - "version": "2.6.12-1ubuntu1.2", |
4180 | - "name": "gimp", |
4181 | - "description": "The GNU Image Manipulation Program" |
4182 | - }, |
4183 | - { |
4184 | - "status": "Installed", |
4185 | - "desired": "Install", |
4186 | - "version": "2.6.12-1ubuntu1.2", |
4187 | - "name": "gimp-data", |
4188 | - "description": "Data files for GIMP" |
4189 | - }, |
4190 | - { |
4191 | - "status": "Installed", |
4192 | - "desired": "Install", |
4193 | - "version": "0.2.4.1-0ubuntu1", |
4194 | - "name": "ginn", |
4195 | - "description": "Gesture Injector: No-GEIS, No-Toolkits" |
4196 | - }, |
4197 | - { |
4198 | - "status": "Installed", |
4199 | - "desired": "Install", |
4200 | - "version": "0.6.15-2ubuntu9.4", |
4201 | - "name": "gir1.2-accountsservice-1.0", |
4202 | - "description": "GObject introspection data for AccountService" |
4203 | - }, |
4204 | - { |
4205 | - "status": "Installed", |
4206 | - "desired": "Install", |
4207 | - "version": "0.4.92-0ubuntu1", |
4208 | - "name": "gir1.2-appindicator3-0.1", |
4209 | - "description": "Typelib files for libappindicator3-1." |
4210 | - }, |
4211 | - { |
4212 | - "status": "Installed", |
4213 | - "desired": "Install", |
4214 | - "version": "2.4.0-0ubuntu1", |
4215 | - "name": "gir1.2-atk-1.0", |
4216 | - "description": "ATK accessibility toolkit (GObject introspection)" |
4217 | - }, |
4218 | - { |
4219 | - "status": "Installed", |
4220 | - "desired": "Install", |
4221 | - "version": "2.4.2-0ubuntu0.1", |
4222 | - "name": "gir1.2-atspi-2.0", |
4223 | - "description": "Assistive Technology Service Provider (GObject introspection)" |
4224 | - }, |
4225 | - { |
4226 | - "status": "Installed", |
4227 | - "desired": "Install", |
4228 | - "version": "0.4.2-1ubuntu1", |
4229 | - "name": "gir1.2-caribou-1.0", |
4230 | - "description": "GObject introspection for the Caribou library" |
4231 | - }, |
4232 | - { |
4233 | - "status": "Installed", |
4234 | - "desired": "Install", |
4235 | - "version": "1.10.6-1~precise1", |
4236 | - "name": "gir1.2-clutter-1.0", |
4237 | - "description": "GObject introspection data for the Clutter 1.0 library" |
4238 | - }, |
4239 | - { |
4240 | - "status": "Installed", |
4241 | - "desired": "Install", |
4242 | - "version": "1.10.0-0ubuntu2", |
4243 | - "name": "gir1.2-cogl-1.0", |
4244 | - "description": "GObject introspection data for the Cogl 1.0 library" |
4245 | - }, |
4246 | - { |
4247 | - "status": "Installed", |
4248 | - "desired": "Install", |
4249 | - "version": "1.10.0-0ubuntu2", |
4250 | - "name": "gir1.2-coglpango-1.0", |
4251 | - "description": "GObject introspection data for the CoglPango 1.0 library" |
4252 | - }, |
4253 | - { |
4254 | - "status": "Installed", |
4255 | - "desired": "Install", |
4256 | - "version": "0.6.2-0ubuntu0.1", |
4257 | - "name": "gir1.2-dbusmenu-glib-0.4", |
4258 | - "description": "typelib file for libdbusmenu-glib4" |
4259 | - }, |
4260 | - { |
4261 | - "status": "Installed", |
4262 | - "desired": "Install", |
4263 | - "version": "0.6.2-0ubuntu0.1", |
4264 | - "name": "gir1.2-dbusmenu-gtk-0.4", |
4265 | - "description": "typelib file for libdbusmenu-gtk4" |
4266 | - }, |
4267 | - { |
4268 | - "status": "Installed", |
4269 | - "desired": "Install", |
4270 | - "version": "1.0.10-0ubuntu1", |
4271 | - "name": "gir1.2-dee-1.0", |
4272 | - "description": "GObject introspection data for the Dee library" |
4273 | - }, |
4274 | - { |
4275 | - "status": "Installed", |
4276 | - "desired": "Install", |
4277 | - "version": "0.6.8-2", |
4278 | - "name": "gir1.2-folks-0.6", |
4279 | - "description": "library to aggregates people into metacontacts - GObject-Introspection" |
4280 | - }, |
4281 | - { |
4282 | - "status": "Installed", |
4283 | - "desired": "Install", |
4284 | - "version": "1.32.0-1", |
4285 | - "name": "gir1.2-freedesktop", |
4286 | - "description": "Introspection data for some FreeDesktop components" |
4287 | - }, |
4288 | - { |
4289 | - "status": "Installed", |
4290 | - "desired": "Install", |
4291 | - "version": "3.2.5-0ubuntu2", |
4292 | - "name": "gir1.2-gconf-2.0", |
4293 | - "description": "GNOME configuration database system (GObject-Introspection)" |
4294 | - }, |
4295 | - { |
4296 | - "status": "Installed", |
4297 | - "desired": "Install", |
4298 | - "version": "3.4.1-0ubuntu1", |
4299 | - "name": "gir1.2-gdesktopenums-3.0", |
4300 | - "description": "GObject introspection for GSettings desktop-wide schemas" |
4301 | - }, |
4302 | - { |
4303 | - "status": "Installed", |
4304 | - "desired": "Install", |
4305 | - "version": "2.26.1-1", |
4306 | - "name": "gir1.2-gdkpixbuf-2.0", |
4307 | - "description": "GDK Pixbuf library - GObject-Introspection" |
4308 | - }, |
4309 | - { |
4310 | - "status": "Installed", |
4311 | - "desired": "Install", |
4312 | - "version": "0.6.4-1", |
4313 | - "name": "gir1.2-gee-1.0", |
4314 | - "description": "GLib Telepathy connection manager library (GObject-Introspection)" |
4315 | - }, |
4316 | - { |
4317 | - "status": "Installed", |
4318 | - "desired": "Install", |
4319 | - "version": "1.32.0-1ubuntu1", |
4320 | - "name": "gir1.2-gjsdbus-1.0", |
4321 | - "description": "GObject introspection data for GJS" |
4322 | - }, |
4323 | - { |
4324 | - "status": "Installed", |
4325 | - "desired": "Install", |
4326 | - "version": "3.4.0.2-1", |
4327 | - "name": "gir1.2-gkbd-3.0", |
4328 | - "description": "GObject introspection data for the GnomeKbd library" |
4329 | - }, |
4330 | - { |
4331 | - "status": "Installed", |
4332 | - "desired": "Install", |
4333 | - "version": "1.32.0-1", |
4334 | - "name": "gir1.2-glib-2.0", |
4335 | - "description": "Introspection data for GLib, GObject, Gio and GModule" |
4336 | - }, |
4337 | - { |
4338 | - "status": "Installed", |
4339 | - "desired": "Install", |
4340 | - "version": "3.4.0-0ubuntu1", |
4341 | - "name": "gir1.2-gmenu-3.0", |
4342 | - "description": "GObject introspection data for the GNOME menu library" |
4343 | - }, |
4344 | - { |
4345 | - "status": "Installed", |
4346 | - "desired": "Install", |
4347 | - "version": "3.2.2-0ubuntu5", |
4348 | - "name": "gir1.2-gnomebluetooth-1.0", |
4349 | - "description": "Introspection data for GnomeBluetooth" |
4350 | - }, |
4351 | - { |
4352 | - "status": "Installed", |
4353 | - "desired": "Install", |
4354 | - "version": "3.2.2-2", |
4355 | - "name": "gir1.2-gnomekeyring-1.0", |
4356 | - "description": "GNOME keyring services library - introspection data" |
4357 | - }, |
4358 | - { |
4359 | - "status": "Installed", |
4360 | - "desired": "Install", |
4361 | - "version": "0.10.36-1ubuntu0.1", |
4362 | - "name": "gir1.2-gst-plugins-base-0.10", |
4363 | - "description": "Description: GObject introspection data for the GStreamer Plugins Base library" |
4364 | - }, |
4365 | - { |
4366 | - "status": "Installed", |
4367 | - "desired": "Install", |
4368 | - "version": "0.10.36-1ubuntu1", |
4369 | - "name": "gir1.2-gstreamer-0.10", |
4370 | - "description": "Description: GObject introspection data for the GStreamer library" |
4371 | - }, |
4372 | - { |
4373 | - "status": "Installed", |
4374 | - "desired": "Install", |
4375 | - "version": "2.24.10-0ubuntu6", |
4376 | - "name": "gir1.2-gtk-2.0", |
4377 | - "description": "GTK+ graphical user interface library -- gir bindings" |
4378 | - }, |
4379 | - { |
4380 | - "status": "Installed", |
4381 | - "desired": "Install", |
4382 | - "version": "3.4.2-0ubuntu0.5", |
4383 | - "name": "gir1.2-gtk-3.0", |
4384 | - "description": "GTK+ graphical user interface library -- gir bindings" |
4385 | - }, |
4386 | - { |
4387 | - "status": "Installed", |
4388 | - "desired": "Install", |
4389 | - "version": "3.4.2-0ubuntu1", |
4390 | - "name": "gir1.2-gtksource-3.0", |
4391 | - "description": "gir files for the GTK+ syntax highlighting widget" |
4392 | - }, |
4393 | - { |
4394 | - "status": "Installed", |
4395 | - "desired": "Install", |
4396 | - "version": "175-0ubuntu9.2", |
4397 | - "name": "gir1.2-gudev-1.0", |
4398 | - "description": "libgudev-1.0 introspection data" |
4399 | - }, |
4400 | - { |
4401 | - "status": "Installed", |
4402 | - "desired": "Install", |
4403 | - "version": "0.6.92-0ubuntu1", |
4404 | - "name": "gir1.2-indicate-0.7", |
4405 | - "description": "Typelib file for libindicate5" |
4406 | - }, |
4407 | - { |
4408 | - "status": "Installed", |
4409 | - "desired": "Install", |
4410 | - "version": "1.8.3-0ubuntu0.12.04.1", |
4411 | - "name": "gir1.2-javascriptcoregtk-1.0", |
4412 | - "description": "GObject introspection data for the GTK+-based JavaScriptCore library" |
4413 | - }, |
4414 | - { |
4415 | - "status": "Installed", |
4416 | - "desired": "Install", |
4417 | - "version": "1.8.3-0ubuntu0.12.04.1", |
4418 | - "name": "gir1.2-javascriptcoregtk-3.0", |
4419 | - "description": "GObject introspection data for the GTK+-based JavaScriptCore library" |
4420 | - }, |
4421 | - { |
4422 | - "status": "Installed", |
4423 | - "desired": "Install", |
4424 | - "version": "0.14.2-1", |
4425 | - "name": "gir1.2-json-1.0", |
4426 | - "description": "GLib JSON manipulation library (introspection data)" |
4427 | - }, |
4428 | - { |
4429 | - "status": "Installed", |
4430 | - "desired": "Install", |
4431 | - "version": "0.1.56.1", |
4432 | - "name": "gir1.2-launchpad-integration-3.0", |
4433 | - "description": "library for launchpad integration (gir files)" |
4434 | - }, |
4435 | - { |
4436 | - "status": "Installed", |
4437 | - "desired": "Install", |
4438 | - "version": "3.4.1-0ubuntu1", |
4439 | - "name": "gir1.2-mutter-3.0", |
4440 | - "description": "GObject introspection data for Mutter" |
4441 | - }, |
4442 | - { |
4443 | - "status": "Installed", |
4444 | - "desired": "Install", |
4445 | - "version": "0.9.4.0-0ubuntu4.2", |
4446 | - "name": "gir1.2-networkmanager-1.0", |
4447 | - "description": "GObject introspection data for NetworkManager" |
4448 | - }, |
4449 | - { |
4450 | - "status": "Installed", |
4451 | - "desired": "Install", |
4452 | - "version": "0.7.5-1", |
4453 | - "name": "gir1.2-notify-0.7", |
4454 | - "description": "sends desktop notifications to a notification daemon (Introspection files)" |
4455 | - }, |
4456 | - { |
4457 | - "status": "Installed", |
4458 | - "desired": "Install", |
4459 | - "version": "1:3.4.1-0ubuntu1.1", |
4460 | - "name": "gir1.2-panelapplet-4.0", |
4461 | - "description": "GObject introspection for the GNOME Panel Applet library" |
4462 | - }, |
4463 | - { |
4464 | - "status": "Installed", |
4465 | - "desired": "Install", |
4466 | - "version": "1.30.0-0ubuntu3.1", |
4467 | - "name": "gir1.2-pango-1.0", |
4468 | - "description": "Layout and rendering of internationalized text - gir bindings" |
4469 | - }, |
4470 | - { |
4471 | - "status": "Installed", |
4472 | - "desired": "Install", |
4473 | - "version": "1.2.0-1ubuntu1", |
4474 | - "name": "gir1.2-peas-1.0", |
4475 | - "description": "Application plugin library (introspection files)" |
4476 | - }, |
4477 | - { |
4478 | - "status": "Installed", |
4479 | - "desired": "Install", |
4480 | - "version": "0.104-1ubuntu1", |
4481 | - "name": "gir1.2-polkit-1.0", |
4482 | - "description": "GObject introspection data for PolicyKit" |
4483 | - }, |
4484 | - { |
4485 | - "status": "Installed", |
4486 | - "desired": "Install", |
4487 | - "version": "2.96-0ubuntu4.2", |
4488 | - "name": "gir1.2-rb-3.0", |
4489 | - "description": "GObject introspection data for the rhythmbox music player" |
4490 | - }, |
4491 | - { |
4492 | - "status": "Installed", |
4493 | - "desired": "Install", |
4494 | - "version": "2.38.1-1", |
4495 | - "name": "gir1.2-soup-2.4", |
4496 | - "description": "GObject introspection data for the libsoup HTTP library" |
4497 | - }, |
4498 | - { |
4499 | - "status": "Installed", |
4500 | - "desired": "Install", |
4501 | - "version": "0.18.0-1ubuntu1", |
4502 | - "name": "gir1.2-telepathyglib-0.12", |
4503 | - "description": "GLib Telepathy connection manager library (GObject-Introspection)" |
4504 | - }, |
4505 | - { |
4506 | - "status": "Installed", |
4507 | - "desired": "Install", |
4508 | - "version": "0.4.0-0ubuntu1", |
4509 | - "name": "gir1.2-telepathylogger-0.2", |
4510 | - "description": "Telepathy logger service - introspection" |
4511 | - }, |
4512 | - { |
4513 | - "status": "Installed", |
4514 | - "desired": "Install", |
4515 | - "version": "3.0.1-0ubuntu21.1", |
4516 | - "name": "gir1.2-totem-1.0", |
4517 | - "description": "GObject introspection data for Totem media player" |
4518 | - }, |
4519 | - { |
4520 | - "status": "Installed", |
4521 | - "desired": "Install", |
4522 | - "version": "3.4.1-1", |
4523 | - "name": "gir1.2-totem-plparser-1.0", |
4524 | - "description": "GObject introspection data for the Totem Playlist Parser library" |
4525 | - }, |
4526 | - { |
4527 | - "status": "Installed", |
4528 | - "desired": "Install", |
4529 | - "version": "3.0.1-0ubuntu1", |
4530 | - "name": "gir1.2-ubuntuoneui-3.0", |
4531 | - "description": "Ubuntu One widget library" |
4532 | - }, |
4533 | - { |
4534 | - "status": "Installed", |
4535 | - "desired": "Install", |
4536 | - "version": "3.0.2-1", |
4537 | - "name": "gir1.2-unique-3.0", |
4538 | - "description": "GObject introspection data for the Unique library" |
4539 | - }, |
4540 | - { |
4541 | - "status": "Installed", |
4542 | - "desired": "Install", |
4543 | - "version": "5.12.0-0ubuntu1.1", |
4544 | - "name": "gir1.2-unity-5.0", |
4545 | - "description": "GObject introspection data for the Unity library" |
4546 | - }, |
4547 | - { |
4548 | - "status": "Installed", |
4549 | - "desired": "Install", |
4550 | - "version": "0.9.15-3git1", |
4551 | - "name": "gir1.2-upowerglib-1.0", |
4552 | - "description": "GObject introspection data for upower" |
4553 | - }, |
4554 | - { |
4555 | - "status": "Installed", |
4556 | - "desired": "Install", |
4557 | - "version": "1:0.32.1-0ubuntu1", |
4558 | - "name": "gir1.2-vte-2.90", |
4559 | - "description": "GObject introspection data for the VTE library" |
4560 | - }, |
4561 | - { |
4562 | - "status": "Installed", |
4563 | - "desired": "Install", |
4564 | - "version": "1.8.3-0ubuntu0.12.04.1", |
4565 | - "name": "gir1.2-webkit-1.0", |
4566 | - "description": "GObject introspection data for the WebKit library" |
4567 | - }, |
4568 | - { |
4569 | - "status": "Installed", |
4570 | - "desired": "Install", |
4571 | - "version": "1.8.3-0ubuntu0.12.04.1", |
4572 | - "name": "gir1.2-webkit-3.0", |
4573 | - "description": "GObject introspection data for the WebKit library" |
4574 | - }, |
4575 | - { |
4576 | - "status": "Installed", |
4577 | - "desired": "Install", |
4578 | - "version": "3.4.0-0ubuntu1", |
4579 | - "name": "gir1.2-wnck-3.0", |
4580 | - "description": "GObject introspection data for the WNCK library" |
4581 | - }, |
4582 | - { |
4583 | - "status": "Installed", |
4584 | - "desired": "Install", |
4585 | - "version": "5.2.1-1ubuntu1", |
4586 | - "name": "gir1.2-xkl-1.0", |
4587 | - "description": "X Keyboard Extension high-level API - introspection data" |
4588 | - }, |
4589 | - { |
4590 | - "status": "Installed", |
4591 | - "desired": "Install", |
4592 | - "version": "1:1.7.9.5-1", |
4593 | - "name": "git", |
4594 | - "description": "fast, scalable, distributed revision control system" |
4595 | - }, |
4596 | - { |
4597 | - "status": "Installed", |
4598 | - "desired": "Install", |
4599 | - "version": "1:1.7.9.5-1", |
4600 | - "name": "git-core", |
4601 | - "description": "fast, scalable, distributed revision control system (obsolete)" |
4602 | - }, |
4603 | - { |
4604 | - "status": "Installed", |
4605 | - "desired": "Install", |
4606 | - "version": "1:1.7.9.5-1", |
4607 | - "name": "git-email", |
4608 | - "description": "fast, scalable, distributed revision control system (email add-on)" |
4609 | - }, |
4610 | - { |
4611 | - "status": "Installed", |
4612 | - "desired": "Install", |
4613 | - "version": "1:1.7.9.5-1", |
4614 | - "name": "git-gui", |
4615 | - "description": "fast, scalable, distributed revision control system (GUI)" |
4616 | - }, |
4617 | - { |
4618 | - "status": "Installed", |
4619 | - "desired": "Install", |
4620 | - "version": "1:1.7.9.5-1", |
4621 | - "name": "git-man", |
4622 | - "description": "fast, scalable, distributed revision control system (manual pages)" |
4623 | - }, |
4624 | - { |
4625 | - "status": "Installed", |
4626 | - "desired": "Install", |
4627 | - "version": "1:1.7.9.5-1", |
4628 | - "name": "gitk", |
4629 | - "description": "fast, scalable, distributed revision control system (revision tree visualizer)" |
4630 | - }, |
4631 | - { |
4632 | - "status": "Installed", |
4633 | - "desired": "Install", |
4634 | - "version": "1.32.0-1ubuntu1", |
4635 | - "name": "gjs", |
4636 | - "description": "Mozilla-based javascript bindings for the GNOME platform" |
4637 | - }, |
4638 | - { |
4639 | - "status": "Installed", |
4640 | - "desired": "Install", |
4641 | - "version": "2.0.2-6ubuntu1", |
4642 | - "name": "gksu", |
4643 | - "description": "graphical frontend to su" |
4644 | - }, |
4645 | - { |
4646 | - "status": "Installed", |
4647 | - "desired": "Install", |
4648 | - "version": "3.12.1-0ubuntu1", |
4649 | - "name": "glade", |
4650 | - "description": "GTK+ User Interface Builder" |
4651 | - }, |
4652 | - { |
4653 | - "status": "Installed", |
4654 | - "desired": "Install", |
4655 | - "version": "3.8.0-0ubuntu4", |
4656 | - "name": "glade-gtk2", |
4657 | - "description": "GTK+ 2 User Interface Builder" |
4658 | - }, |
4659 | - { |
4660 | - "status": "Installed", |
4661 | - "desired": "Install", |
4662 | - "version": "2.32.1-1ubuntu2", |
4663 | - "name": "glib-networking", |
4664 | - "description": "network-related giomodules for GLib" |
4665 | - }, |
4666 | - { |
4667 | - "status": "Installed", |
4668 | - "desired": "Install", |
4669 | - "version": "2.32.1-1ubuntu2", |
4670 | - "name": "glib-networking:i386", |
4671 | - "description": "network-related giomodules for GLib" |
4672 | - }, |
4673 | - { |
4674 | - "status": "Installed", |
4675 | - "desired": "Install", |
4676 | - "version": "2.32.1-1ubuntu2", |
4677 | - "name": "glib-networking-common", |
4678 | - "description": "network-related giomodules for GLib - data files" |
4679 | - }, |
4680 | - { |
4681 | - "status": "Installed", |
4682 | - "desired": "Install", |
4683 | - "version": "2.32.1-1ubuntu2", |
4684 | - "name": "glib-networking-services", |
4685 | - "description": "network-related giomodules for GLib - D-Bus services" |
4686 | - }, |
4687 | - { |
4688 | - "status": "Installed", |
4689 | - "desired": "Install", |
4690 | - "version": "2011.09-0ubuntu1", |
4691 | - "name": "glmark2", |
4692 | - "description": "OpenGL (ES) 2.0 benchmark" |
4693 | - }, |
4694 | - { |
4695 | - "status": "Installed", |
4696 | - "desired": "Install", |
4697 | - "version": "2011.09-0ubuntu1", |
4698 | - "name": "glmark2-data", |
4699 | - "description": "data files for the glmark2 OpenGL (ES) 2.0 benchmark" |
4700 | - }, |
4701 | - { |
4702 | - "status": "Installed", |
4703 | - "desired": "Install", |
4704 | - "version": "2011.09-0ubuntu1", |
4705 | - "name": "glmark2-es2", |
4706 | - "description": "OpenGL (ES) 2.0 benchmark" |
4707 | - }, |
4708 | - { |
4709 | - "status": "Installed", |
4710 | - "desired": "Install", |
4711 | - "version": "3.4.1-0ubuntu1.2", |
4712 | - "name": "gnome-accessibility-themes", |
4713 | - "description": "accessibility themes for the GNOME desktop" |
4714 | - }, |
4715 | - { |
4716 | - "status": "Installed", |
4717 | - "desired": "Install", |
4718 | - "version": "3.4.1-0ubuntu1", |
4719 | - "name": "gnome-applets", |
4720 | - "description": "Various applets for the GNOME panel - binary files" |
4721 | - }, |
4722 | - { |
4723 | - "status": "Installed", |
4724 | - "desired": "Install", |
4725 | - "version": "3.4.1-0ubuntu1", |
4726 | - "name": "gnome-applets-data", |
4727 | - "description": "Various applets for the GNOME panel - data files" |
4728 | - }, |
4729 | - { |
4730 | - "status": "Installed", |
4731 | - "desired": "Install", |
4732 | - "version": "3.2.2-0ubuntu5", |
4733 | - "name": "gnome-bluetooth", |
4734 | - "description": "GNOME Bluetooth tools" |
4735 | - }, |
4736 | - { |
4737 | - "status": "Installed", |
4738 | - "desired": "Install", |
4739 | - "version": "3.4.0-1", |
4740 | - "name": "gnome-contacts", |
4741 | - "description": "Contacts manager for GNOME" |
4742 | - }, |
4743 | - { |
4744 | - "status": "Installed", |
4745 | - "desired": "Install", |
4746 | - "version": "1:3.4.2-0ubuntu0.8", |
4747 | - "name": "gnome-control-center", |
4748 | - "description": "utilities to configure the GNOME desktop" |
4749 | - }, |
4750 | - { |
4751 | - "status": "Installed", |
4752 | - "desired": "Install", |
4753 | - "version": "1:3.4.2-0ubuntu0.8", |
4754 | - "name": "gnome-control-center-data", |
4755 | - "description": "configuration applets for GNOME - data files" |
4756 | - }, |
4757 | - { |
4758 | - "status": "Installed", |
4759 | - "desired": "Install", |
4760 | - "version": "3.4.2-0ubuntu0.1", |
4761 | - "name": "gnome-desktop3-data", |
4762 | - "description": "Common files for GNOME desktop apps" |
4763 | - }, |
4764 | - { |
4765 | - "status": "Installed", |
4766 | - "desired": "Install", |
4767 | - "version": "3.0.2-2ubuntu7", |
4768 | - "name": "gnome-disk-utility", |
4769 | - "description": "manage and configure disk drives and media" |
4770 | - }, |
4771 | - { |
4772 | - "status": "Installed", |
4773 | - "desired": "Install", |
4774 | - "version": "3.4.0-1", |
4775 | - "name": "gnome-font-viewer", |
4776 | - "description": "font viewer for GNOME" |
4777 | - }, |
4778 | - { |
4779 | - "status": "Installed", |
4780 | - "desired": "Install", |
4781 | - "version": "1:3.4.1-0ubuntu2.2", |
4782 | - "name": "gnome-games-data", |
4783 | - "description": "data files for the GNOME games" |
4784 | - }, |
4785 | - { |
4786 | - "status": "Installed", |
4787 | - "desired": "Install", |
4788 | - "version": "3.4.0-0ubuntu1.1", |
4789 | - "name": "gnome-icon-theme", |
4790 | - "description": "GNOME Desktop icon theme (small subset)" |
4791 | - }, |
4792 | - { |
4793 | - "status": "Installed", |
4794 | - "desired": "Install", |
4795 | - "version": "3.4.0-0ubuntu1.1", |
4796 | - "name": "gnome-icon-theme-full", |
4797 | - "description": "GNOME Desktop icon theme" |
4798 | - }, |
4799 | - { |
4800 | - "status": "Installed", |
4801 | - "desired": "Install", |
4802 | - "version": "3.4.0-1", |
4803 | - "name": "gnome-icon-theme-symbolic", |
4804 | - "description": "GNOME desktop icon theme (symbolic icons)" |
4805 | - }, |
4806 | - { |
4807 | - "status": "Installed", |
4808 | - "desired": "Install", |
4809 | - "version": "3.2.2-2ubuntu4", |
4810 | - "name": "gnome-keyring", |
4811 | - "description": "GNOME keyring services (daemon and tools)" |
4812 | - }, |
4813 | - { |
4814 | - "status": "Installed", |
4815 | - "desired": "Install", |
4816 | - "version": "3.4.0-0ubuntu3.1", |
4817 | - "name": "gnome-media", |
4818 | - "description": "GNOME media utilities" |
4819 | - }, |
4820 | - { |
4821 | - "status": "Installed", |
4822 | - "desired": "Install", |
4823 | - "version": "3.4.0-0ubuntu1", |
4824 | - "name": "gnome-menus", |
4825 | - "description": "GNOME implementation of the freedesktop menu specification" |
4826 | - }, |
4827 | - { |
4828 | - "status": "Installed", |
4829 | - "desired": "Install", |
4830 | - "version": "1.0.5-1", |
4831 | - "name": "gnome-mplayer", |
4832 | - "description": "A GTK+ interface for MPlayer" |
4833 | - }, |
4834 | - { |
4835 | - "status": "Installed", |
4836 | - "desired": "Install", |
4837 | - "version": "3.2.0-0ubuntu1", |
4838 | - "name": "gnome-nettool", |
4839 | - "description": "network information tool for GNOME" |
4840 | - }, |
4841 | - { |
4842 | - "status": "Installed", |
4843 | - "desired": "Install", |
4844 | - "version": "3.4.0-0ubuntu1", |
4845 | - "name": "gnome-online-accounts", |
4846 | - "description": "GNOME Online Accounts" |
4847 | - }, |
4848 | - { |
4849 | - "status": "Installed", |
4850 | - "desired": "Install", |
4851 | - "version": "3.4.2-0ubuntu0.1", |
4852 | - "name": "gnome-orca", |
4853 | - "description": "Scriptable screen reader" |
4854 | - }, |
4855 | - { |
4856 | - "status": "Installed", |
4857 | - "desired": "Install", |
4858 | - "version": "1:3.4.1-0ubuntu1.1", |
4859 | - "name": "gnome-panel", |
4860 | - "description": "launcher and docking facility for GNOME" |
4861 | - }, |
4862 | - { |
4863 | - "status": "Installed", |
4864 | - "desired": "Install", |
4865 | - "version": "1:3.4.1-0ubuntu1.1", |
4866 | - "name": "gnome-panel-data", |
4867 | - "description": "common files for the GNOME Panel" |
4868 | - }, |
4869 | - { |
4870 | - "status": "Installed", |
4871 | - "desired": "Install", |
4872 | - "version": "3.4.0-0ubuntu1.1", |
4873 | - "name": "gnome-power-manager", |
4874 | - "description": "power management tool for the GNOME desktop" |
4875 | - }, |
4876 | - { |
4877 | - "status": "Installed", |
4878 | - "desired": "Install", |
4879 | - "version": "3.4.1-0ubuntu1", |
4880 | - "name": "gnome-screensaver", |
4881 | - "description": "GNOME screen saver and locker" |
4882 | - }, |
4883 | - { |
4884 | - "status": "Installed", |
4885 | - "desired": "Install", |
4886 | - "version": "3.4.1-0ubuntu1", |
4887 | - "name": "gnome-screenshot", |
4888 | - "description": "screenshot application for GNOME" |
4889 | - }, |
4890 | - { |
4891 | - "status": "Installed", |
4892 | - "desired": "Install", |
4893 | - "version": "3.2.1-0ubuntu8", |
4894 | - "name": "gnome-session", |
4895 | - "description": "GNOME Session Manager - GNOME 3 session" |
4896 | - }, |
4897 | - { |
4898 | - "status": "Installed", |
4899 | - "desired": "Install", |
4900 | - "version": "3.2.1-0ubuntu8", |
4901 | - "name": "gnome-session-bin", |
4902 | - "description": "GNOME Session Manager - Minimal runtime" |
4903 | - }, |
4904 | - { |
4905 | - "status": "Installed", |
4906 | - "desired": "Install", |
4907 | - "version": "0.28-3ubuntu3", |
4908 | - "name": "gnome-session-canberra", |
4909 | - "description": "GNOME session log in and log out sound events" |
4910 | - }, |
4911 | - { |
4912 | - "status": "Installed", |
4913 | - "desired": "Install", |
4914 | - "version": "3.2.1-0ubuntu8", |
4915 | - "name": "gnome-session-common", |
4916 | - "description": "GNOME Session Manager - common files" |
4917 | - }, |
4918 | - { |
4919 | - "status": "Installed", |
4920 | - "desired": "Install", |
4921 | - "version": "3.2.1-0ubuntu8", |
4922 | - "name": "gnome-session-fallback", |
4923 | - "description": "GNOME Session Manager - GNOME fallback session" |
4924 | - }, |
4925 | - { |
4926 | - "status": "Installed", |
4927 | - "desired": "Install", |
4928 | - "version": "3.4.2-0ubuntu0.6", |
4929 | - "name": "gnome-settings-daemon", |
4930 | - "description": "daemon handling the GNOME session settings" |
4931 | - }, |
4932 | - { |
4933 | - "status": "Installed", |
4934 | - "desired": "Install", |
4935 | - "version": "3.4.1-0ubuntu2", |
4936 | - "name": "gnome-shell", |
4937 | - "description": "graphical shell for the GNOME desktop" |
4938 | - }, |
4939 | - { |
4940 | - "status": "Installed", |
4941 | - "desired": "Install", |
4942 | - "version": "3.4.1-0ubuntu2", |
4943 | - "name": "gnome-shell-common", |
4944 | - "description": "common files for the GNOME graphical shell" |
4945 | - }, |
4946 | - { |
4947 | - "status": "Installed", |
4948 | - "desired": "Install", |
4949 | - "version": "1:3.4.1-0ubuntu2.2", |
4950 | - "name": "gnome-sudoku", |
4951 | - "description": "Sudoku puzzle game for GNOME" |
4952 | - }, |
4953 | - { |
4954 | - "status": "Installed", |
4955 | - "desired": "Install", |
4956 | - "version": "3.4.1-0ubuntu1", |
4957 | - "name": "gnome-system-log", |
4958 | - "description": "system log viewer for GNOME" |
4959 | - }, |
4960 | - { |
4961 | - "status": "Installed", |
4962 | - "desired": "Install", |
4963 | - "version": "3.4.1-0ubuntu1", |
4964 | - "name": "gnome-system-monitor", |
4965 | - "description": "Process viewer and system resource monitor for GNOME" |
4966 | - }, |
4967 | - { |
4968 | - "status": "Installed", |
4969 | - "desired": "Install", |
4970 | - "version": "3.0.0-2ubuntu1", |
4971 | - "name": "gnome-system-tools", |
4972 | - "description": "Cross-platform configuration utilities for GNOME" |
4973 | - }, |
4974 | - { |
4975 | - "status": "Installed", |
4976 | - "desired": "Install", |
4977 | - "version": "3.4.1.1-0ubuntu1", |
4978 | - "name": "gnome-terminal", |
4979 | - "description": "GNOME terminal emulator application" |
4980 | - }, |
4981 | - { |
4982 | - "status": "Installed", |
4983 | - "desired": "Install", |
4984 | - "version": "3.4.1.1-0ubuntu1", |
4985 | - "name": "gnome-terminal-data", |
4986 | - "description": "Data files for the GNOME terminal emulator" |
4987 | - }, |
4988 | - { |
4989 | - "status": "Installed", |
4990 | - "desired": "Install", |
4991 | - "version": "3.4.1-0ubuntu1.2", |
4992 | - "name": "gnome-themes-standard", |
4993 | - "description": "Standard gnome themes" |
4994 | - }, |
4995 | - { |
4996 | - "status": "Installed", |
4997 | - "desired": "Install", |
4998 | - "version": "3.3.4-0ubuntu1", |
4999 | - "name": "gnome-tweak-tool", |
5000 | - "description": "tool to adjust advanced configuration settings for GNOME" |
The diff has been truncated for viewing.
Epic work. Huge +1.
I admit, I didn't read every line of the diff :) The changes look appropriate. I also tested it with the corresponding branch for checkbox-ng. Works fine.
\o/