Merge lp:~barry/apport/lp1566975 into lp:~apport-hackers/apport/trunk

Proposed by Barry Warsaw
Status: Superseded
Proposed branch: lp:~barry/apport/lp1566975
Merge into: lp:~apport-hackers/apport/trunk
Diff against target: 11658 lines (+10789/-390)
65 files modified
.bzr-builddeb/default.conf (+2/-0)
.bzrignore (+1/-0)
apport/crashdb_impl/launchpad.py (+6/-1)
apport/hookutils.py (+4/-4)
apport/ui.py (+12/-1)
backends/packaging-apt-dpkg.py (+6/-0)
backends/packaging_rpm.py (+0/-272)
bin/apport-bug (+16/-1)
data/general-hooks/clickinfo.py (+44/-0)
data/general-hooks/cloud_archive.py (+34/-0)
data/general-hooks/powerpc.py (+105/-0)
data/general-hooks/ubuntu-gnome.py (+36/-0)
data/general-hooks/ubuntu.py (+507/-0)
data/general-hooks/wayland_session.py (+9/-0)
data/iwlwifi_error_dump (+1/-1)
data/package-hooks/source_debian-installer.py (+59/-0)
data/package-hooks/source_linux-nexus7.py (+25/-0)
data/package-hooks/source_linux.py (+134/-0)
data/package-hooks/source_ubiquity.py (+155/-0)
debhelper/apport.pm (+10/-0)
debhelper/dh_apport (+83/-0)
debian/apport-gtk.install (+2/-0)
debian/apport-kde.install (+9/-0)
debian/apport-noui.dirs (+1/-0)
debian/apport-noui.install (+1/-0)
debian/apport-noui.path (+9/-0)
debian/apport-noui.postinst (+7/-0)
debian/apport-noui.prerm (+9/-0)
debian/apport-noui.service (+7/-0)
debian/apport-noui.upstart (+13/-0)
debian/apport-retrace.install (+5/-0)
debian/apport-valgrind.install (+2/-0)
debian/apport.install (+36/-0)
debian/apport.links (+4/-0)
debian/apport.logrotate (+9/-0)
debian/apport.maintscript (+1/-0)
debian/apport.postinst (+10/-0)
debian/apport.upstart (+58/-0)
debian/changelog (+8967/-0)
debian/clean (+2/-0)
debian/compat (+1/-0)
debian/control (+242/-0)
debian/copyright (+15/-0)
debian/dh-apport.install (+2/-0)
debian/dh-apport.manpages (+1/-0)
debian/python-apport.install (+2/-0)
debian/python-problem-report.install (+1/-0)
debian/python3-apport.install (+2/-0)
debian/python3-problem-report.install (+1/-0)
debian/rules (+44/-0)
debian/source/format (+1/-0)
debian/tests/control (+19/-0)
debian/tests/upstream-system (+16/-0)
debian/watch (+2/-0)
do-release (+0/-33)
etc/apport/blacklist.d/apport (+1/-0)
etc/apport/crashdb.conf (+18/-14)
gtk/apport-gtk.desktop.in (+1/-0)
kde/apport-kde-mime.desktop.in (+1/-0)
kde/apport-kde.desktop.in (+1/-0)
problem_report.py (+2/-3)
test/test_backend_apt_dpkg.py (+3/-2)
test/test_backend_rpm.py (+0/-57)
test/test_problem_report.py (+10/-0)
test/test_ui_kde.py (+2/-1)
To merge this branch: bzr merge lp:~barry/apport/lp1566975
Reviewer Review Type Date Requested Status
Apport upstream developers Pending
Review via email: mp+291143@code.launchpad.net

This proposal has been superseded by a proposal from 2016-04-06.

Description of the change

This fixes the AssertionError by using a regular expression and adding : to the list of acceptable characters. It adds a test and prints the failing value when the assertion triggers.

To post a comment you must log in.

Unmerged revisions

2508. By Barry Warsaw

Fix LP: #1566975

2507. By Martin Pitt

releasing package apport version 2.20.1-0ubuntu1

2506. By Martin Pitt

new upstream release 2.20.1

2505. By Martin Pitt

releasing package apport version 2.20-0ubuntu3

2504. By Martin Pitt

Relax report.test_add_gdb_info gdb warning check, as this changed with gdb
7.10.90.

2503. By Martin Pitt

releasing package apport version 2.20-0ubuntu2

2502. By Martin Pitt

Fix signal_crashes.test_modify_after_start test when running as root.

2501. By Martin Pitt

releasing package apport version 2.20-0ubuntu1

2500. By Martin Pitt

Install new systemd units into apport package.

2499. By Martin Pitt

Add python3-systemd recommendation to apport, to make crash report
generation work in containers.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added directory '.bzr-builddeb'
2=== added file '.bzr-builddeb/default.conf'
3--- .bzr-builddeb/default.conf 1970-01-01 00:00:00 +0000
4+++ .bzr-builddeb/default.conf 2016-04-06 16:42:48 +0000
5@@ -0,0 +1,2 @@
6+[BUILDDEB]
7+merge = True
8
9=== modified file '.bzrignore'
10--- .bzrignore 2015-05-13 09:23:59 +0000
11+++ .bzrignore 2016-04-06 16:42:48 +0000
12@@ -1,4 +1,5 @@
13 apport/packaging_impl.py
14+debhelper/dh_apport.1
15 doc/*.aux
16 doc/*.log
17 doc/*.pdf
18
19=== modified file 'apport/crashdb_impl/launchpad.py'
20--- apport/crashdb_impl/launchpad.py 2015-12-08 08:43:49 +0000
21+++ apport/crashdb_impl/launchpad.py 2016-04-06 16:42:48 +0000
22@@ -134,7 +134,12 @@
23 return self.__launchpad
24
25 if Launchpad is None:
26- sys.stderr.write('ERROR: The launchpadlib Python %s module is not installed. This functionality is not available.\n' % sys.version[0])
27+ if _python2:
28+ sys.stderr.write('ERROR: The python-launchpadlib package is not installed. This functionality is not available.\n')
29+ else:
30+ # this is a bit strange here, but it is the main user-visible reason why we end up here
31+ sys.stderr.write('ERROR: You need to use apport-collect for updating an existing bug\n')
32+
33 sys.exit(1)
34
35 if self.options.get('launchpad_instance'):
36
37=== modified file 'apport/hookutils.py'
38--- apport/hookutils.py 2016-01-26 09:20:58 +0000
39+++ apport/hookutils.py 2016-04-06 16:42:48 +0000
40@@ -62,7 +62,7 @@
41 new key with '_' appended will be added instead.
42
43 If the contents is valid UTF-8, or force_unicode is True, then the value
44- will a string, otherwise it will be bytes.
45+ will be a string, otherwise it will be bytes.
46 '''
47 if not key:
48 key = path_to_key(path)
49@@ -365,7 +365,7 @@
50
51 def command_output(command, input=None, stderr=subprocess.STDOUT,
52 keep_locale=False, decode_utf8=True):
53- '''Try to execute given command (array) and return its stdout.
54+ '''Try to execute given command (list) and return its stdout.
55
56 In case of failure, a textual error gets returned. This function forces
57 LC_MESSAGES to C, to avoid translated output in bug reports.
58@@ -404,7 +404,7 @@
59
60
61 def root_command_output(command, input=None, stderr=subprocess.STDOUT, decode_utf8=True):
62- '''Try to execute given command (array) as root and return its stdout.
63+ '''Try to execute given command (list) as root and return its stdout.
64
65 This passes the command through pkexec, unless the caller is already root.
66
67@@ -715,7 +715,7 @@
68 if 'AuditLog' not in report and os.path.exists('/var/run/auditd.pid'):
69 attach_root_command_outputs(report, {'AuditLog': 'egrep "' + mac_regex + '" /var/log/audit/audit.log'})
70
71- attach_file(report, '/proc/version_signature', 'ProcVersionSignature')
72+ attach_file_if_exists(report, '/proc/version_signature', 'ProcVersionSignature')
73 attach_file(report, '/proc/cmdline', 'ProcCmdline')
74
75 for match in re.findall(aa_re, report.get('KernLog', '') + report.get('AuditLog', '')):
76
77=== modified file 'apport/ui.py'
78--- apport/ui.py 2016-03-31 14:13:13 +0000
79+++ apport/ui.py 2016-04-06 16:42:48 +0000
80@@ -296,7 +296,12 @@
81 if not response['report']:
82 return
83
84- apport.fileutils.mark_report_upload(report_file)
85+ # We don't want to send crashes to the crash database for binaries
86+ # that changed since the crash happened. See LP: #1039220 for
87+ # details.
88+ if '_MarkForUpload' in self.report and \
89+ self.report['_MarkForUpload'] != 'False':
90+ apport.fileutils.mark_report_upload(report_file)
91 # We check for duplicates and unreportable crashes here, rather
92 # than before we show the dialog, as we want to submit these to the
93 # crash database, but not Launchpad.
94@@ -948,6 +953,8 @@
95 If a symptom script is given, this will be run first (used by
96 run_symptom()).
97 '''
98+ self.report['_MarkForUpload'] = 'True'
99+
100 # check if we already ran (we might load a processed report), skip if so
101 if (self.report.get('ProblemType') == 'Crash' and 'Stacktrace' in self.report) or (self.report.get('ProblemType') != 'Crash' and 'Dependencies' in self.report):
102
103@@ -982,6 +989,7 @@
104 cur_time = int(os.stat(self.report['ExecutablePath']).st_mtime)
105
106 if orig_time != cur_time:
107+ self.report['_MarkForUpload'] = 'False'
108 self.report['UnreportableReason'] = (
109 _('The problem happened with the program %s which changed '
110 'since the crash occurred.') % self.report['ExecutablePath'])
111@@ -1032,12 +1040,15 @@
112 self.report['UnreportableReason'] = '%s\n\n%s' % (
113 _('This problem report is damaged and cannot be processed.'),
114 repr(e))
115+ self.report['_MarkForUpload'] = 'False'
116 except ValueError: # package does not exist
117 self.report['UnreportableReason'] = _('The report belongs to a package that is not installed.')
118+ self.report['_MarkForUpload'] = 'False'
119 except Exception as e:
120 apport.error(repr(e))
121 self.report['UnreportableReason'] = _('An error occurred while attempting to '
122 'process this problem report:') + '\n\n' + str(e)
123+ self.report['_MarkForUpload'] = 'False'
124
125 if 'UnreportableReason' in self.report or not self.check_report_crashdb():
126 self.ui_stop_info_collection_progress()
127
128=== modified file 'backends/packaging-apt-dpkg.py'
129--- backends/packaging-apt-dpkg.py 2015-11-06 20:53:37 +0000
130+++ backends/packaging-apt-dpkg.py 2016-04-06 16:42:48 +0000
131@@ -192,6 +192,12 @@
132 for o in pkg.candidate.origins:
133 if o.origin == distro_name:
134 return True
135+
136+ # on Ubuntu system-image we might not have any /var/lib/apt/lists
137+ if set([o.origin for o in pkg.candidate.origins]) == set(['']) and \
138+ os.path.exists('/etc/system-image/channel.ini'):
139+ return True
140+
141 return False
142
143 def is_native_origin_package(self, package):
144
145=== removed file 'backends/packaging_rpm.py'
146--- backends/packaging_rpm.py 2015-07-02 16:13:23 +0000
147+++ backends/packaging_rpm.py 1970-01-01 00:00:00 +0000
148@@ -1,272 +0,0 @@
149-'''A partial apport.PackageInfo class implementation for RPM.
150-
151-Used as a base class for Fedora, RHEL, openSUSE, SUSE Linux, and many other
152-distributions.
153-'''
154-
155-# Copyright (C) 2007 Red Hat Inc.
156-# Copyright (C) 2008 Nikolay Derkach
157-# Author: Will Woods <wwoods@redhat.com>, Nikolay Derkach <nderkach@gmail.com>
158-#
159-# This program is free software; you can redistribute it and/or modify it
160-# under the terms of the GNU General Public License as published by the
161-# Free Software Foundation; either version 2 of the License, or (at your
162-# option) any later version. See http://www.gnu.org/copyleft/gpl.html for
163-# the full text of the license.
164-
165-# N.B. There's some distro-specific bits in here (e.g. is_distro_package()).
166-# So this is actually an abstract base class (or a template, if you like) for
167-# RPM-based distributions.
168-# A proper implementation needs to (at least) set official_keylist to a list
169-# of GPG keyids used by official packages. You might have to extend
170-# is_distro_package() as well, if you don't sign all your official packages
171-# (cough cough Fedora rawhide cough)
172-
173-# It'd be convenient to use rpmUtils from yum, but I'm trying to keep this
174-# class distro-agnostic.
175-import rpm, hashlib, os, stat, subprocess
176-
177-
178-class RPMPackageInfo:
179- '''Partial apport.PackageInfo class implementation for RPM, as
180- found in Fedora, RHEL, CentOS, etc.'''
181-
182- # Empty keylist. Should contain a list of key ids (8 lowercase hex digits).
183- # e.g. official_keylist = ('30c9ecf8','4f2a6fd2','897da07a','1ac70ce6')
184- official_keylist = ()
185-
186- def __init__(self):
187- self.ts = rpm.TransactionSet() # connect to the rpmdb
188- self._mirror = None
189-
190- def get_version(self, package):
191- '''Return the installed version of a package.'''
192- hdr = self._get_header(package)
193- if hdr is None:
194- raise ValueError
195- # Note - "version" here seems to refer to the full EVR, so..
196- if not hdr['e']:
197- return hdr['v'] + '-' + hdr['r']
198- if not hdr['v'] or not hdr['r']:
199- return None
200- else:
201- return hdr['e'] + ':' + hdr['v'] + '-' + hdr['r']
202-
203- def get_available_version(self, package):
204- '''Return the latest available version of a package.'''
205- # used in report.py, which is used by the frontends
206- raise NotImplementedError('method must be implemented by distro-specific RPMPackageInfo subclass')
207-
208- def get_dependencies(self, package):
209- '''Return a list of packages a package depends on.'''
210- hdr = self._get_header(package)
211- # parse this package's Requires
212- reqs = []
213- for r in hdr['requires']:
214- if r.startswith('rpmlib') or r.startswith('uname('):
215- continue # we've got rpmlib, thanks
216- if r[0] == '/': # file requires
217- req_heads = self._get_headers_by_tag('basenames', r)
218- else: # other requires
219- req_heads = self._get_headers_by_tag('provides', r)
220- for rh in req_heads:
221- rh_envra = self._make_envra_from_header(rh)
222- if rh_envra not in reqs:
223- reqs.append(rh_envra)
224- return reqs
225-
226- def get_source(self, package):
227- '''Return the source package name for a package.'''
228- hdr = self._get_header(package)
229- return hdr['sourcerpm']
230-
231- def get_architecture(self, package):
232- '''Return the architecture of a package.
233-
234- This might differ on multiarch architectures (e. g. an i386 Firefox
235- package on a x86_64 system)'''
236- # Yeah, this is kind of redundant, as package is ENVRA, but I want
237- # to do this the right way (in case we change what 'package' is)
238- hdr = self._get_header(package)
239- return hdr['arch']
240-
241- def get_files(self, package):
242- '''Return list of files shipped by a package.'''
243- hdr = self._get_header(package)
244- files = []
245- for (f, mode) in zip(hdr['filenames'], hdr['filemodes']):
246- if not stat.S_ISDIR(mode):
247- files.append(f)
248- return files
249-
250- def get_modified_files(self, package):
251- '''Return list of all modified files of a package.'''
252- hdr = self._get_header(package)
253-
254- files = hdr['filenames']
255- mtimes = hdr['filemtimes']
256- md5s = hdr['filemd5s']
257-
258- modified = []
259- for i in xrange(len(files)):
260- # Skip files we're not tracking md5s for
261- if not md5s[i]:
262- continue
263- # Skip files we can't read
264- if not os.access(files[i], os.R_OK):
265- continue
266- # Skip things that aren't real files
267- s = os.stat(files[i])
268- if not stat.S_ISREG(s.st_mode):
269- continue
270- # Skip things that haven't been modified
271- if mtimes[i] == s.st_mtime:
272- continue
273- # Oh boy, an actual possibly-modified file. Check the md5sum!
274- if not self._checkmd5(files[i], md5s[i]):
275- modified.append(files[i])
276-
277- return modified
278-
279- def get_file_package(self, file, uninstalled=False, map_cachedir=None,
280- release=None, arch=None):
281- '''Return the package a file belongs to.
282-
283- Return None if the file is not shipped by any package.
284-
285- If uninstalled is True, this will also find files of uninstalled
286- packages; this is very expensive, though, and needs network access and
287- lots of CPU and I/O resources. In this case, map_cachedir can be set to
288- an existing directory which will be used to permanently store the
289- downloaded maps. If it is not set, a temporary directory will be used.
290- Also, release and arch can be set to a foreign release/architecture
291- instead of the one from the current system.
292- '''
293- # The policy for handling files which belong to multiple packages depends on the distro
294- raise NotImplementedError('method must be implemented by distro-specific RPMPackageInfo subclass')
295-
296- def get_system_architecture(self):
297- '''Return the architecture of the system, in the notation used by the
298- particular distribution.'''
299- rpmarch = subprocess.Popen(['rpm', '--eval', '%_target_cpu'],
300- stdout=subprocess.PIPE)
301- arch = rpmarch.communicate()[0].strip()
302- return arch
303-
304- def is_distro_package(self, package):
305- '''Check if a package is a genuine distro package (True) or comes from
306- a third-party source.'''
307- # This is a list of official keys, set by the concrete subclass
308- if not self.official_keylist:
309- raise Exception('Subclass the RPM implementation for your distro!')
310- hdr = self._get_header(package)
311- if not hdr:
312- return False
313- # Check the GPG sig and key ID to see if this package was signed
314- # with an official key.
315- if hdr['siggpg']:
316- # Package is signed
317- keyid = hdr['siggpg'][13:17].encode('hex')
318- if keyid in self.official_keylist:
319- return True
320- return False
321-
322- def set_mirror(self, url):
323- '''Explicitly set a distribution mirror URL for operations that need to
324- fetch distribution files/packages from the network.
325-
326- By default, the mirror will be read from the system configuration
327- files.'''
328- # FIXME C&P from apt-dpkg implementation, might move to subclass
329- self._mirror = url
330-
331- def get_source_tree(self, srcpackage, dir, version=None):
332- '''Download given source package and unpack it into dir (which should
333- be empty).
334-
335- This also has to care about applying patches etc., so that dir will
336- eventually contain the actually compiled source.
337-
338- If version is given, this particular version will be retrieved.
339- Otherwise this will fetch the latest available version.
340-
341- Return the directory that contains the actual source root directory
342- (which might be a subdirectory of dir). Return None if the source is
343- not available.'''
344- # Used only by apport-retrace.
345- raise NotImplementedError('method must be implemented by distro-specific RPMPackageInfo subclass')
346-
347- def compare_versions(self, ver1, ver2):
348- '''Compare two package versions.
349-
350- Return -1 for ver < ver2, 0 for ver1 == ver2, and 1 for ver1 > ver2.'''
351- # Used by crashdb.py (i.e. the frontends)
352- # I could duplicate stringToVersion/compareEVR from rpmUtils.misc,
353- # but I hate duplicating code. So if you don't want to require rpmUtils
354- # you can implement this function yourself. Probably you've got
355- # equivalent code in whatever your distro uses instead of yum anyway.
356- raise NotImplementedError('method must be implemented by distro-specific RPMPackageInfo subclass')
357-
358- def package_name_glob(self, glob):
359- '''Return known package names which match given glob.'''
360-
361- raise NotImplementedError('TODO')
362-
363- #
364- # Internal helper methods. These are only single-underscore, so you can use
365- # use them in extending/overriding the methods above in your subclasses
366- #
367-
368- def _get_headers_by_tag(self, tag, arg):
369- '''Get a list of RPM headers by doing dbMatch on the given tag and
370- argument.'''
371- matches = self.ts.dbMatch(tag, arg)
372- if matches.count() == 0:
373- raise ValueError('Could not find package with %s: %s' % (tag, arg))
374- return [m for m in matches]
375-
376- def _get_header(self, envra):
377- '''Get the RPM header that matches the given ENVRA.'''
378-
379- querystr = envra
380- qlen = len(envra)
381- while qlen > 0:
382- mi = impl.ts.dbMatch('name', querystr)
383- hdrs = [m for m in mi]
384- if len(hdrs) > 0:
385- # yay! we found something
386- # Unless there's some rpmdb breakage, you should have one header
387- # here. If you do manage to have two rpms with the same ENVRA,
388- # who cares which one you get?
389- h = hdrs[0]
390- break
391-
392- # remove the last char of querystr and retry the search
393- querystr = querystr[0:len(querystr) - 1]
394- qlen = qlen - 1
395-
396- if qlen == 0:
397- raise ValueError('No headers found for this envra: %s' % envra)
398- return h
399-
400- def _make_envra_from_header(self, h):
401- '''Generate an ENVRA string from an rpm header'''
402-
403- nvra = "%s-%s-%s.%s" % (h['n'], h['v'], h['r'], h['arch'])
404- if h['e']:
405- envra = "%s:%s" % (h['e'], nvra)
406- else:
407- envra = nvra
408- return envra
409-
410- def _checkmd5(self, filename, filemd5):
411- '''Internal function to check a file's md5sum'''
412-
413- m = hashlib.md5()
414- f = open(filename)
415- data = f.read()
416- f.close()
417- m.update(data)
418- return (filemd5 == m.hexdigest())
419-
420-impl = RPMPackageInfo()
421
422=== modified file 'bin/apport-bug'
423--- bin/apport-bug 2015-02-06 07:27:47 +0000
424+++ bin/apport-bug 2016-04-06 16:42:48 +0000
425@@ -11,11 +11,26 @@
426 # option) any later version. See http://www.gnu.org/copyleft/gpl.html for
427 # the full text of the license.
428
429+# Explicitly set the PATH to that of ENV_SUPATH in /etc/login.defs. We need do
430+# this so that confined applications using ubuntu-browsers.d/ubuntu-integration
431+# cannot abuse the environment to escape AppArmor confinement via this script
432+# (LP: #1045986). This can be removed once AppArmor supports environment
433+# filtering (LP: #1045985)
434+PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
435+
436+if [ "${0%-collect}" != "$0" ]; then
437+ prefix=python
438+ if ! python -c 'import apport' 2>/dev/null; then
439+ echo "You need to run 'sudo apt-get install python-apport' for apport-collect to work." >&2
440+ exit 1
441+ fi
442+fi
443+
444 # locate path of a particular program
445 find_program() {
446 for p in /usr/local/bin /usr/bin /usr/local/share/apport /usr/share/apport; do
447 if [ -x $p/$1 ]; then
448- RET="$p/$1"
449+ RET="$prefix $p/$1"
450 return
451 fi
452 done
453
454=== added file 'data/general-hooks/clickinfo.py'
455--- data/general-hooks/clickinfo.py 1970-01-01 00:00:00 +0000
456+++ data/general-hooks/clickinfo.py 2016-04-06 16:42:48 +0000
457@@ -0,0 +1,44 @@
458+'''
459+Determine rudimentary package and version information for click packages to
460+enable bucketing on the Error Tracker.
461+
462+Copyright (C) 2014 Canonical Ltd.
463+Author: Brian Murray <brian@canonical.com>
464+
465+This program is free software; you can redistribute it and/or modify it
466+under the terms of the GNU General Public License as published by the
467+Free Software Foundation; either version 2 of the License, or (at your
468+option) any later version. See http://www.gnu.org/copyleft/gpl.html for
469+the full text of the license.
470+'''
471+
472+import subprocess
473+
474+
475+def add_info(report, ui):
476+ exec_path = report.get('ExecutablePath')
477+ if not exec_path:
478+ return
479+ if not exec_path.startswith('/opt/click.ubuntu.com') and \
480+ not exec_path.startswith('/usr/share/click/preinstalled'):
481+ return
482+ # indicate that the crash is from a click package so the Error Tracker
483+ # will not ask for a core dump
484+ report['ClickPackage'] = "True"
485+ click_info = subprocess.Popen(['click', 'info', exec_path],
486+ stdout=subprocess.PIPE,
487+ universal_newlines=True)
488+ out = click_info.communicate()[0]
489+ for line in out.splitlines():
490+ if 'name' in line:
491+ package = line.strip(' ,').split(': ')[1]
492+ package = package.replace('"', '')
493+ if 'version' in line:
494+ version = line.strip(' ,').split(': ')[1]
495+ version = version.replace('"', '')
496+ if 'architecture' in line:
497+ pkg_arch = line.strip(' ,').split(': ')[1]
498+ pkg_arch = pkg_arch.replace('"', '')
499+ report['Package'] = '%s %s' % (package, version)
500+ report['SourcePackage'] = package
501+ report['PackageArchitecture'] = pkg_arch
502
503=== added file 'data/general-hooks/cloud_archive.py'
504--- data/general-hooks/cloud_archive.py 1970-01-01 00:00:00 +0000
505+++ data/general-hooks/cloud_archive.py 2016-04-06 16:42:48 +0000
506@@ -0,0 +1,34 @@
507+'''
508+Redirect reports on packages from the Ubuntu Cloud Archive to the
509+launchpad cloud-archive project.
510+
511+Copyright (C) 2013 Canonical Ltd.
512+Author: James Page <james.page@ubuntu.com>
513+
514+This program is free software; you can redistribute it and/or modify it
515+under the terms of the GNU General Public License as published by the
516+Free Software Foundation; either version 2 of the License, or (at your
517+option) any later version. See http://www.gnu.org/copyleft/gpl.html for
518+the full text of the license.
519+'''
520+from apport import packaging
521+
522+
523+def add_info(report, ui):
524+ package = report.get('Package')
525+ if not package:
526+ return
527+ package = package.split()[0]
528+ try:
529+ if '~cloud' in packaging.get_version(package) and \
530+ packaging.get_package_origin(package) == 'Canonical':
531+ report['CrashDB'] = '''{
532+ "impl": "launchpad",
533+ "project": "cloud-archive",
534+ "bug_pattern_url": "http://people.canonical.com/~ubuntu-archive/bugpatterns/bugpatterns.xml",
535+ }'''
536+ except ValueError as e:
537+ if 'does not exist' in str(e):
538+ return
539+ else:
540+ raise e
541
542=== added file 'data/general-hooks/powerpc.py'
543--- data/general-hooks/powerpc.py 1970-01-01 00:00:00 +0000
544+++ data/general-hooks/powerpc.py 2016-04-06 16:42:48 +0000
545@@ -0,0 +1,105 @@
546+# This hook collects logs for Power systems and more specific logs for Pseries,
547+# PowerNV platforms.
548+#
549+# Author: Thierry FAUCK <thierry@linux.vnet.ibm.com>
550+#
551+# This program is free software; you can redistribute it and/or modify
552+# it under the terms of the GNU General Public License as published by
553+# the Free Software Foundation; either version 2 of the License, or
554+# (at your option) any later version.
555+#
556+# This program is distributed in the hope that it will be useful,
557+# but WITHOUT ANY WARRANTY; without even the implied warranty of
558+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
559+# GNU General Public License for more details.
560+#
561+# You should have received a copy of the GNU General Public License
562+# along with this program; if not, write to the Free Software
563+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
564+
565+import os, os.path, platform, tempfile, subprocess
566+
567+from apport.hookutils import command_output, attach_root_command_outputs, attach_file, attach_file_if_exists, command_available
568+
569+'''IBM Power System related information'''
570+
571+
572+def add_tar(report, dir, key):
573+ (fd, f) = tempfile.mkstemp(prefix='apport.', suffix='.tar')
574+ os.close(fd)
575+ subprocess.call(['tar', 'chf', f, dir])
576+ if os.path.getsize(f) > 0:
577+ report[key] = (f, )
578+ # NB, don't cleanup the temp file, it'll get read later by the apport main
579+ # code
580+
581+
582+def add_info(report, ui):
583+ arch = platform.machine()
584+ if arch not in ['ppc64', 'ppc64le']:
585+ return
586+
587+ is_kernel = report['ProblemType'].startswith('Kernel') or 'linux' in report.get('Package')
588+
589+ try:
590+ with open('/proc/cpuinfo', 'r') as fp:
591+ contents = fp.read()
592+ ispSeries = 'pSeries' in contents
593+ isPowerNV = 'PowerNV' in contents
594+ isPowerKVM = 'emulated by qemu' in contents
595+ except IOError:
596+ ispSeries = False
597+ isPowerNV = False
598+ isPowerKVM = False
599+
600+ if ispSeries or isPowerNV:
601+ if is_kernel:
602+ add_tar(report, '/proc/device-tree/', 'DeviceTree.tar')
603+ attach_file(report, '/proc/misc', 'ProcMisc')
604+ attach_file(report, '/proc/locks', 'ProcLocks')
605+ attach_file(report, '/proc/loadavg', 'ProcLoadAvg')
606+ attach_file(report, '/proc/swaps', 'ProcSwaps')
607+ attach_file(report, '/proc/version', 'ProcVersion')
608+ report['cpu_smt'] = command_output(['ppc64_cpu', '--smt'])
609+ report['cpu_cores'] = command_output(['ppc64_cpu', '--cores-present'])
610+ report['cpu_coreson'] = command_output(['ppc64_cpu', '--cores-on'])
611+ # To be executed as root
612+ if is_kernel:
613+ attach_root_command_outputs(report, {
614+ 'cpu_runmode': 'ppc64_cpu --run-mode',
615+ 'cpu_freq': 'ppc64_cpu --frequency',
616+ 'cpu_dscr': 'ppc64_cpu --dscr',
617+ 'nvram': 'cat /dev/nvram',
618+ })
619+ attach_file_if_exists(report, '/var/log/platform')
620+
621+ if ispSeries and not isPowerKVM:
622+ attach_file(report, '/proc/ppc64/lparcfg', 'ProcLparCfg')
623+ attach_file(report, '/proc/ppc64/eeh', 'ProcEeh')
624+ attach_file(report, '/proc/ppc64/systemcfg', 'ProcSystemCfg')
625+ report['lscfg_vp'] = command_output(['lscfg', '-vp'])
626+ report['lsmcode'] = command_output(['lsmcode', '-A'])
627+ report['bootlist'] = command_output(['bootlist', '-m', 'both', '-r'])
628+ report['lparstat'] = command_output(['lparstat', '-i'])
629+ if command_available('lsvpd'):
630+ report['lsvpd'] = command_output(['lsvpd', '--debug'])
631+ if command_available('lsvio'):
632+ report['lsvio'] = command_output(['lsvio', '-des'])
633+ if command_available('servicelog'):
634+ report['servicelog_dump'] = command_output(['servicelog', '--dump'])
635+ if command_available('servicelog_notify'):
636+ report['servicelog_list'] = command_output(['servicelog_notify', '--list'])
637+ if command_available('usysattn'):
638+ report['usysattn'] = command_output(['usysattn'])
639+ if command_available('usysident'):
640+ report['usysident'] = command_output(['usysident'])
641+ if command_available('serv_config'):
642+ report['serv_config'] = command_output(['serv_config', '-l'])
643+
644+ if isPowerNV:
645+ add_tar(report, '/proc/ppc64/', 'ProcPpc64.tar')
646+ attach_file_if_exists(report, '/sys/firmware/opal/msglog')
647+ if os.path.exists('/var/log/dump'):
648+ report['VarLogDump_list'] = command_output(['ls', '-l', '/var/log/dump'])
649+ if is_kernel:
650+ add_tar(report, '/var/log/opal-elog', 'OpalElog.tar')
651
652=== added file 'data/general-hooks/ubuntu-gnome.py'
653--- data/general-hooks/ubuntu-gnome.py 1970-01-01 00:00:00 +0000
654+++ data/general-hooks/ubuntu-gnome.py 2016-04-06 16:42:48 +0000
655@@ -0,0 +1,36 @@
656+'''Bugs and crashes for the Ubuntu GNOME flavour.
657+
658+Copyright (C) 2013 Canonical Ltd.
659+Author: Martin Pitt <martin.pitt@ubuntu.com>
660+
661+This program is free software; you can redistribute it and/or modify it
662+under the terms of the GNU General Public License as published by the
663+Free Software Foundation; either version 2 of the License, or (at your
664+option) any later version. See http://www.gnu.org/copyleft/gpl.html for
665+the full text of the license.
666+'''
667+
668+
669+def add_info(report, ui):
670+ # redirect reports against PPA packages to ubuntu-gnome project
671+ if '[origin: LP-PPA-gnome3-team-gnome3' in report.get('Package', ''):
672+ report['CrashDB'] = '''{
673+ "impl": "launchpad",
674+ "project": "ubuntu-gnome",
675+ "bug_pattern_url": "http://people.canonical.com/~ubuntu-archive/bugpatterns/bugpatterns.xml",
676+ "dupdb_url": "http://phillw.net/ubuntu-gnome/apport_duplicates/",
677+ }'''
678+
679+ # using the staging PPA?
680+ if 'LP-PPA-gnome3-team-gnome3-staging' in report['Package']:
681+ report.setdefault('Tags', '')
682+ report['Tags'] += ' gnome3-staging'
683+
684+ # using the next PPA?
685+ if 'LP-PPA-gnome3-team-gnome3-next' in report['Package']:
686+ report.setdefault('Tags', '')
687+ report['Tags'] += ' gnome3-next'
688+
689+ if '[origin: LP-PPA-gnome3-team-gnome3' in report.get('Dependencies', ''):
690+ report.setdefault('Tags', '')
691+ report['Tags'] += ' gnome3-ppa'
692
693=== added file 'data/general-hooks/ubuntu.py'
694--- data/general-hooks/ubuntu.py 1970-01-01 00:00:00 +0000
695+++ data/general-hooks/ubuntu.py 2016-04-06 16:42:48 +0000
696@@ -0,0 +1,507 @@
697+'''Attach generally useful information, not specific to any package.
698+
699+Copyright (C) 2009 Canonical Ltd.
700+Authors: Matt Zimmerman <mdz@canonical.com>,
701+ Brian Murray <brian@ubuntu.com>
702+
703+This program is free software; you can redistribute it and/or modify it
704+under the terms of the GNU General Public License as published by the
705+Free Software Foundation; either version 2 of the License, or (at your
706+option) any later version. See http://www.gnu.org/copyleft/gpl.html for
707+the full text of the license.
708+'''
709+
710+import re, os, os.path, time, sys, subprocess
711+
712+import apport.packaging
713+import apport.hookutils
714+import problem_report
715+from apport import unicode_gettext as _
716+from glob import glob
717+
718+if sys.version < '3':
719+ from urlparse import urljoin
720+ from urllib2 import urlopen
721+ (urljoin, urlopen) # pyflakes
722+else:
723+ from urllib.parse import urljoin
724+ from urllib.request import urlopen
725+
726+
727+def add_info(report, ui):
728+ add_release_info(report)
729+
730+ add_kernel_info(report)
731+
732+ add_cloud_info(report)
733+
734+ add_proposed_info(report)
735+
736+ try:
737+ report['ApportVersion'] = apport.packaging.get_version('apport')
738+ except ValueError:
739+ # might happen on local installs
740+ pass
741+
742+ if report.get('ProblemType') == 'Package':
743+ # every error report regarding a package should have package manager
744+ # version information
745+ apport.hookutils.attach_related_packages(report, ['dpkg', 'apt'])
746+ check_for_disk_error(report)
747+ # check to see if the real root on a persistent media is full
748+ if 'LiveMediaBuild' in report:
749+ st = os.statvfs('/cdrom')
750+ free_mb = st.f_bavail * st.f_frsize / 1000000
751+ if free_mb < 10:
752+ report['UnreportableReason'] = 'Your system partition has less than \
753+%s MB of free space available, which leads to problems using applications \
754+and installing updates. Please free some space.' % (free_mb)
755+
756+ match_error_messages(report)
757+
758+ for attachment in ['DpkgTerminalLog', 'VarLogDistupgradeApttermlog']:
759+ if attachment in report:
760+ log_file = get_attachment_contents(report, attachment)
761+ untrimmed_dpkg_log = log_file
762+ check_attachment_for_errors(report, attachment)
763+ trimmed_log = get_attachment_contents(report, attachment)
764+ trimmed_log = trimmed_log.split('\n')
765+ lines = []
766+ for line in untrimmed_dpkg_log.splitlines():
767+ if line not in trimmed_log:
768+ lines.append(str(line))
769+ elif line in trimmed_log:
770+ trimmed_log.remove(line)
771+ dpkg_log_without_error = '\n'.join(lines)
772+
773+ # crash reports from live system installer often expose target mount
774+ for f in ('ExecutablePath', 'InterpreterPath'):
775+ if f in report and report[f].startswith('/target/'):
776+ report[f] = report[f][7:]
777+
778+ # Allow filing update-manager bugs with obsolete packages
779+ if report.get('Package', '').startswith('update-manager'):
780+ os.environ['APPORT_IGNORE_OBSOLETE_PACKAGES'] = '1'
781+
782+ # file bugs against OEM project for modified packages
783+ if 'Package' in report:
784+ v = report['Package'].split()[1]
785+ oem_project = get_oem_project(report)
786+ if oem_project and ('common' in v or oem_project in v):
787+ report['CrashDB'] = 'canonical-oem'
788+
789+ if 'Package' in report:
790+ package = report['Package'].split()[0]
791+ if package:
792+ apport.hookutils.attach_conffiles(report, package, ui=ui)
793+
794+ # do not file bugs against "upgrade-system" if it is not installed (LP#404727)
795+ if package == 'upgrade-system' and 'not installed' in report['Package']:
796+ report['UnreportableReason'] = 'You do not have the upgrade-system package installed. Please report package upgrade failures against the package that failed to install, or against upgrade-manager.'
797+
798+ if 'Package' in report:
799+ package = report['Package'].split()[0]
800+ if package:
801+ apport.hookutils.attach_upstart_overrides(report, package)
802+ apport.hookutils.attach_upstart_logs(report, package)
803+
804+ # build a duplicate signature tag for package reports
805+ if report.get('ProblemType') == 'Package':
806+
807+ if 'DpkgTerminalLog' in report:
808+ # this was previously trimmed in check_attachment_for_errors
809+ termlog = report['DpkgTerminalLog']
810+ elif 'VarLogDistupgradeApttermlog' in report:
811+ termlog = get_attachment_contents(report, 'VarLogDistupgradeApttermlog')
812+ else:
813+ termlog = None
814+ if termlog:
815+ # for packages that run update-grub include /etc/default/grub
816+ UPDATE_BOOT = ['friendly-recovery', 'linux', 'memtest86+',
817+ 'plymouth', 'ubuntu-meta', 'virtualbox-ose']
818+ ug_failure = r'/etc/kernel/post(inst|rm)\.d/zz-update-grub exited with return code [1-9]+'
819+ mkconfig_failure = r'/usr/sbin/grub-mkconfig.*/etc/default/grub: Syntax error'
820+ if re.search(ug_failure, termlog) or re.search(mkconfig_failure, termlog):
821+ if report['SourcePackage'] in UPDATE_BOOT:
822+ apport.hookutils.attach_default_grub(report, 'EtcDefaultGrub')
823+ dupe_sig = ''
824+ PKG_MSGS = ('Authenticating', 'De-configuring', 'Examining',
825+ 'Installing ', 'Preparing', 'Processing triggers', 'Purging',
826+ 'Removing', 'Replaced', 'Replacing', 'Setting up',
827+ 'Unpacking', 'Would remove')
828+ for line in termlog.split('\n'):
829+ if line.startswith(PKG_MSGS):
830+ dupe_sig = '%s\n' % line
831+ continue
832+ dupe_sig += '%s\n' % line
833+ if 'dpkg: error' in dupe_sig and line.startswith(' '):
834+ if 'trying to overwrite' in line:
835+ conflict_pkg = re.search('in package (.*) ', line)
836+ if conflict_pkg and not apport.packaging.is_distro_package(conflict_pkg.group(1)):
837+ report['UnreportableReason'] = _('An Ubuntu package has a file conflict with a package that is not a genuine Ubuntu package.')
838+ add_tag(report, 'package-conflict')
839+ if [d for d in PKG_MSGS if d in dupe_sig]:
840+ report['DuplicateSignature'] = dupe_sig
841+ # the duplicate signature should be the first failure
842+ break
843+ if dupe_sig:
844+ if dpkg_log_without_error.find(dupe_sig) != -1:
845+ report['UnreportableReason'] = _('You have already encountered this package installation failure.')
846+
847+
848+def match_error_messages(report):
849+ # There are enough of these now that it is probably worth refactoring...
850+ # -mdz
851+ if report.get('ProblemType') == 'Package':
852+ if 'failed to install/upgrade: corrupted filesystem tarfile' in report.get('Title', ''):
853+ report['UnreportableReason'] = 'This failure was caused by a corrupted package download or file system corruption.'
854+
855+ if 'is already installed and configured' in report.get('ErrorMessage', ''):
856+ report['SourcePackage'] = 'dpkg'
857+
858+
859+def check_attachment_for_errors(report, attachment):
860+ if report.get('ProblemType') == 'Package':
861+ wrong_grub_msg = _('''Your system was initially configured with grub version 2, but you have removed it from your system in favor of grub 1 without configuring it. To ensure your bootloader configuration is updated whenever a new kernel is available, open a terminal and run:
862+
863+ sudo apt-get install grub-pc
864+''')
865+
866+ trim_dpkg_log(report)
867+ log_file = get_attachment_contents(report, attachment)
868+
869+ if 'DpkgTerminalLog' in report \
870+ and re.search(r'^Not creating /boot/grub/menu.lst as you wish', report['DpkgTerminalLog'], re.MULTILINE):
871+ grub_hook_failure = True
872+ else:
873+ grub_hook_failure = False
874+
875+ if report['Package'] not in ['grub', 'grub2']:
876+ # linux-image postinst emits this when update-grub fails
877+ # https://wiki.ubuntu.com/KernelTeam/DebuggingUpdateErrors
878+ grub_errors = [r'^User postinst hook script \[.*update-grub\] exited with value',
879+ r'^run-parts: /etc/kernel/post(inst|rm).d/zz-update-grub exited with return code [1-9]+',
880+ r'^/usr/sbin/grub-probe: error']
881+
882+ for grub_error in grub_errors:
883+ if attachment in report and re.search(grub_error, log_file, re.MULTILINE):
884+ # File these reports on the grub package instead
885+ grub_package = apport.packaging.get_file_package('/usr/sbin/update-grub')
886+ if grub_package is None or grub_package == 'grub' and 'grub-probe' not in log_file:
887+ report['SourcePackage'] = 'grub'
888+ if os.path.exists('/boot/grub/grub.cfg') and grub_hook_failure:
889+ report['UnreportableReason'] = wrong_grub_msg
890+ else:
891+ report['SourcePackage'] = 'grub2'
892+
893+ if report['Package'] != 'initramfs-tools':
894+ # update-initramfs emits this when it fails, usually invoked from the linux-image postinst
895+ # https://wiki.ubuntu.com/KernelTeam/DebuggingUpdateErrors
896+ if attachment in report and re.search(r'^update-initramfs: failed for ', log_file, re.MULTILINE):
897+ # File these reports on the initramfs-tools package instead
898+ report['SourcePackage'] = 'initramfs-tools'
899+
900+ if report['Package'] in ['emacs22', 'emacs23', 'emacs-snapshot', 'xemacs21']:
901+ # emacs add-on packages trigger byte compilation, which might fail
902+ # we are very interested in reading the compilation log to determine
903+ # where to reassign this report to
904+ regex = r'^!! Byte-compilation for x?emacs\S+ failed!'
905+ if attachment in report and re.search(regex, log_file, re.MULTILINE):
906+ for line in log_file.split('\n'):
907+ m = re.search(r'^!! and attach the file (\S+)', line)
908+ if m:
909+ path = m.group(1)
910+ apport.hookutils.attach_file_if_exists(report, path)
911+
912+ if report['Package'].startswith('linux-image-') and attachment in report:
913+ # /etc/kernel/*.d failures from kernel package postinst
914+ m = re.search(r'^run-parts: (/etc/kernel/\S+\.d/\S+) exited with return code \d+', log_file, re.MULTILINE)
915+ if m:
916+ path = m.group(1)
917+ package = apport.packaging.get_file_package(path)
918+ if package:
919+ report['SourcePackage'] = package
920+ report['ErrorMessage'] = m.group(0)
921+ if package == 'grub-pc' and grub_hook_failure:
922+ report['UnreportableReason'] = wrong_grub_msg
923+ else:
924+ report['UnreportableReason'] = 'This failure was caused by a program which did not originate from Ubuntu'
925+
926+ error_message = report.get('ErrorMessage')
927+ corrupt_package = 'This failure was caused by a corrupted package download or file system corruption.'
928+ out_of_memory = 'This failure was caused by the system running out of memory.'
929+
930+ if 'failed to install/upgrade: corrupted filesystem tarfile' in report.get('Title', ''):
931+ report['UnreportableReason'] = corrupt_package
932+
933+ if 'dependency problems - leaving unconfigured' in error_message:
934+ report['UnreportableReason'] = 'This failure is a followup error from a previous package install failure.'
935+
936+ if 'failed to allocate memory' in error_message:
937+ report['UnreportableReason'] = out_of_memory
938+
939+ if 'cannot access archive' in error_message:
940+ report['UnreportableReason'] = corrupt_package
941+
942+ if re.search(r'(failed to read|failed in write|short read) on buffer copy', error_message):
943+ report['UnreportableReason'] = corrupt_package
944+
945+ if re.search(r'(failed to read|failed to write|failed to seek|unexpected end of file or stream)', error_message):
946+ report['UnreportableReason'] = corrupt_package
947+
948+ if re.search(r'(--fsys-tarfile|dpkg-deb --control) returned error exit status 2', error_message):
949+ report['UnreportableReason'] = corrupt_package
950+
951+ if attachment in report and re.search(r'dpkg-deb: error.*is not a debian format archive', log_file, re.MULTILINE):
952+ report['UnreportableReason'] = corrupt_package
953+
954+ if 'is already installed and configured' in report.get('ErrorMessage', ''):
955+ # there is insufficient information in the data currently gathered
956+ # so gather more data
957+ report['SourcePackage'] = 'dpkg'
958+ report['AptdaemonVersion'] = apport.packaging.get_version('aptdaemon')
959+ apport.hookutils.attach_file_if_exists(report, '/var/log/dpkg.log', 'DpkgLog')
960+ apport.hookutils.attach_file_if_exists(report, '/var/log/apt/term.log', 'AptTermLog')
961+ # gather filenames in /var/crash to see if there is one for dpkg
962+ reports = glob('/var/crash/*')
963+ if reports:
964+ report['CrashReports'] = apport.hookutils.command_output(
965+ ['stat', '-c', '%a:%u:%g:%s:%y:%x:%n'] + reports)
966+ add_tag(report, 'already-installed')
967+
968+
969+def check_for_disk_error(report):
970+ devs_to_check = []
971+ if 'Dmesg.txt' not in report and 'CurrentDmesg.txt' not in report:
972+ return
973+ if 'Df.txt' not in report:
974+ return
975+ df = report['Df.txt']
976+ device_error = False
977+ for line in df:
978+ line = line.strip('\n')
979+ if line.endswith('/') or line.endswith('/usr') or line.endswith('/var'):
980+ # without manipulation it'd look like /dev/sda1
981+ device = line.split(' ')[0].strip('0123456789')
982+ device = device.replace('/dev/', '')
983+ devs_to_check.append(device)
984+ dmesg = report.get('CurrentDmesg.txt', report['Dmesg.txt'])
985+ for line in dmesg:
986+ line = line.strip('\n')
987+ if 'I/O error' in line:
988+ # no device in this line
989+ if 'journal commit I/O error' in line:
990+ continue
991+ for dev in devs_to_check:
992+ if re.search(dev, line):
993+ error_device = dev
994+ device_error = True
995+ break
996+ if device_error:
997+ report['UnreportableReason'] = 'This failure was caused by a hardware error on /dev/%s' % error_device
998+
999+
1000+def add_kernel_info(report):
1001+ # This includes the Ubuntu packaged kernel version
1002+ apport.hookutils.attach_file_if_exists(report, '/proc/version_signature', 'ProcVersionSignature')
1003+
1004+
1005+def add_release_info(report):
1006+ # https://bugs.launchpad.net/bugs/364649
1007+ media = '/var/log/installer/media-info'
1008+ apport.hookutils.attach_file_if_exists(report, media, 'InstallationMedia')
1009+
1010+ # if we are running from a live system, add the build timestamp
1011+ apport.hookutils.attach_file_if_exists(
1012+ report, '/cdrom/.disk/info', 'LiveMediaBuild')
1013+ if os.path.exists('/cdrom/.disk/info'):
1014+ report['CasperVersion'] = apport.packaging.get_version('casper')
1015+
1016+ # https://wiki.ubuntu.com/FoundationsTeam/Specs/OemTrackingId
1017+ apport.hookutils.attach_file_if_exists(
1018+ report, '/var/lib/ubuntu_dist_channel', 'DistributionChannelDescriptor')
1019+
1020+ release_codename = apport.hookutils.command_output(['lsb_release', '-sc'], stderr=None)
1021+ if release_codename.startswith('Error'):
1022+ release_codename = None
1023+ else:
1024+ add_tag(report, release_codename)
1025+
1026+ if os.path.exists(media):
1027+ mtime = os.stat(media).st_mtime
1028+ human_mtime = time.strftime('%Y-%m-%d', time.gmtime(mtime))
1029+ delta = time.time() - mtime
1030+ report['InstallationDate'] = 'Installed on %s (%d days ago)' % (human_mtime, delta / 86400)
1031+
1032+ log = '/var/log/dist-upgrade/main.log'
1033+ if os.path.exists(log):
1034+ mtime = os.stat(log).st_mtime
1035+ human_mtime = time.strftime('%Y-%m-%d', time.gmtime(mtime))
1036+ delta = time.time() - mtime
1037+
1038+ # Would be nice if this also showed which release was originally installed
1039+ report['UpgradeStatus'] = 'Upgraded to %s on %s (%d days ago)' % (release_codename, human_mtime, delta / 86400)
1040+ else:
1041+ report['UpgradeStatus'] = 'No upgrade log present (probably fresh install)'
1042+
1043+ # check for system-image version on phablet builds
1044+ if apport.hookutils.command_available('system-image-cli'):
1045+ report['SystemImageInfo'] = '%s' % apport.hookutils.command_output(
1046+ ['system-image-cli', '-i'], stderr=None)
1047+
1048+
1049+def add_proposed_info(report):
1050+ '''Tag if package comes from -proposed'''
1051+
1052+ if 'Package' not in report:
1053+ return
1054+ try:
1055+ (package, version) = report['Package'].split()[:2]
1056+ except ValueError:
1057+ print('WARNING: malformed Package field: ' + report['Package'])
1058+ return
1059+
1060+ apt_cache = subprocess.Popen(['apt-cache', 'showpkg', package],
1061+ stdout=subprocess.PIPE,
1062+ universal_newlines=True)
1063+ out = apt_cache.communicate()[0]
1064+ if apt_cache.returncode != 0:
1065+ print('WARNING: apt-cache showpkg %s failed' % package)
1066+ return
1067+
1068+ found_proposed = False
1069+ found_updates = False
1070+ found_security = False
1071+ for line in out.splitlines():
1072+ if line.startswith(version + ' ('):
1073+ if '-proposed_' in line:
1074+ found_proposed = True
1075+ if '-updates_' in line:
1076+ found_updates = True
1077+ if '-security' in line:
1078+ found_security = True
1079+
1080+ if found_proposed and not found_updates and not found_security:
1081+ add_tag(report, 'package-from-proposed')
1082+
1083+
1084+def add_cloud_info(report):
1085+ # EC2 and Ubuntu Enterprise Cloud instances
1086+ ec2_instance = False
1087+ for pkg in ('ec2-init', 'cloud-init'):
1088+ try:
1089+ if apport.packaging.get_version(pkg):
1090+ ec2_instance = True
1091+ break
1092+ except ValueError:
1093+ pass
1094+ if ec2_instance:
1095+ metadata_url = 'http://169.254.169.254/latest/meta-data/'
1096+ ami_id_url = urljoin(metadata_url, 'ami-id')
1097+
1098+ try:
1099+ ami = urlopen(ami_id_url, timeout=5).read()
1100+ except:
1101+ ami = None
1102+
1103+ if ami and ami.startswith(b'ami'):
1104+ add_tag(report, 'ec2-images')
1105+ fields = {'Ec2AMIManifest': 'ami-manifest-path',
1106+ 'Ec2Kernel': 'kernel-id',
1107+ 'Ec2Ramdisk': 'ramdisk-id',
1108+ 'Ec2InstanceType': 'instance-type',
1109+ 'Ec2AvailabilityZone': 'placement/availability-zone'}
1110+
1111+ report['Ec2AMI'] = ami
1112+ for key, value in fields.items():
1113+ try:
1114+ report[key] = urlopen(urljoin(metadata_url, value), timeout=5).read()
1115+ except:
1116+ report[key] = 'unavailable'
1117+ else:
1118+ add_tag(report, 'uec-images')
1119+
1120+
1121+def add_tag(report, tag):
1122+ report.setdefault('Tags', '')
1123+ report['Tags'] += ' ' + tag
1124+
1125+
1126+def get_oem_project(report):
1127+ '''Determine OEM project name from Distribution Channel Descriptor
1128+
1129+ Return None if it cannot be determined or does not exist.
1130+ '''
1131+ dcd = report.get('DistributionChannelDescriptor', None)
1132+ if dcd and dcd.startswith('canonical-oem-'):
1133+ return dcd.split('-')[2]
1134+ return None
1135+
1136+
1137+def trim_dpkg_log(report):
1138+ '''Trim DpkgTerminalLog to the most recent installation session.'''
1139+
1140+ if 'DpkgTerminalLog' not in report:
1141+ return
1142+ if not report['DpkgTerminalLog'].strip():
1143+ report['UnreportableReason'] = '/var/log/apt/term.log does not contain any data'
1144+ return
1145+ lines = []
1146+ dpkg_log = report['DpkgTerminalLog']
1147+ if isinstance(dpkg_log, bytes):
1148+ trim_re = re.compile(b'^\(.* ... \d+ .*\)$')
1149+ start_re = re.compile(b'^Log started:')
1150+ else:
1151+ trim_re = re.compile('^\(.* ... \d+ .*\)$')
1152+ start_re = re.compile('^Log started:')
1153+ for line in dpkg_log.splitlines():
1154+ if start_re.match(line) or trim_re.match(line):
1155+ lines = []
1156+ continue
1157+ lines.append(line)
1158+ # If trimming the log file fails, return the whole log file.
1159+ if not lines:
1160+ return
1161+ if isinstance(lines[0], str):
1162+ report['DpkgTerminalLog'] = '\n'.join(lines)
1163+ else:
1164+ report['DpkgTerminalLog'] = '\n'.join([str(line.encode('utf-8')) for line in lines])
1165+
1166+
1167+def get_attachment_contents(report, attachment):
1168+ if isinstance(report[attachment], problem_report.CompressedValue):
1169+ contents = report[attachment].get_value().decode('UTF-8')
1170+ else:
1171+ contents = report[attachment]
1172+ return contents
1173+
1174+if __name__ == '__main__':
1175+ import sys
1176+
1177+ # for testing: update report file given on command line
1178+ if len(sys.argv) != 2:
1179+ sys.stderr.write('Usage for testing this hook: %s <report file>\n' % sys.argv[0])
1180+ sys.exit(1)
1181+
1182+ report_file = sys.argv[1]
1183+
1184+ report = apport.Report()
1185+ with open(report_file, 'rb') as f:
1186+ report.load(f)
1187+ report_keys = set(report.keys())
1188+
1189+ new_report = report.copy()
1190+ add_info(new_report, None)
1191+
1192+ new_report_keys = set(new_report.keys())
1193+
1194+ # Show differences
1195+ changed = 0
1196+ for key in sorted(report_keys | new_report_keys):
1197+ if key in new_report_keys and key not in report_keys:
1198+ print('+%s: %s' % (key, new_report[key]))
1199+ changed += 1
1200+ elif key in report_keys and key not in new_report_keys:
1201+ print('-%s: (deleted)' % key)
1202+ changed += 1
1203+ print('%d items changed' % changed)
1204
1205=== added file 'data/general-hooks/wayland_session.py'
1206--- data/general-hooks/wayland_session.py 1970-01-01 00:00:00 +0000
1207+++ data/general-hooks/wayland_session.py 2016-04-06 16:42:48 +0000
1208@@ -0,0 +1,9 @@
1209+'''Detect if the current session is running under wayland'''
1210+
1211+import os
1212+
1213+
1214+def add_info(report, ui):
1215+ if os.environ.get('WAYLAND_DISPLAY'):
1216+ report.setdefault('Tags', '')
1217+ report['Tags'] += ' wayland-session'
1218
1219=== modified file 'data/iwlwifi_error_dump'
1220--- data/iwlwifi_error_dump 2015-09-24 12:19:28 +0000
1221+++ data/iwlwifi_error_dump 2016-04-06 16:42:48 +0000
1222@@ -24,7 +24,7 @@
1223 sys.exit(1)
1224
1225 pr = apport.Report('KernelCrash')
1226-apport.add_package(apport.packaging.get_kernel_package())
1227+pr.add_package(apport.packaging.get_kernel_package())
1228 pr['Title'] = 'iwlwifi firmware error'
1229 pr.add_os_info()
1230
1231
1232=== added file 'data/package-hooks/source_debian-installer.py'
1233--- data/package-hooks/source_debian-installer.py 1970-01-01 00:00:00 +0000
1234+++ data/package-hooks/source_debian-installer.py 2016-04-06 16:42:48 +0000
1235@@ -0,0 +1,59 @@
1236+'''Apport package hook for the Debian installer.
1237+
1238+Copyright (C) 2011 Canonical Ltd.
1239+Authors: Colin Watson <cjwatson@ubuntu.com>,
1240+ Brian Murray <brian@ubuntu.com>'''
1241+
1242+import os
1243+from apport.hookutils import attach_hardware, command_available, command_output, attach_root_command_outputs
1244+
1245+
1246+def add_installation_log(report, ident, name):
1247+ if os.path.exists('/var/log/installer/%s' % name):
1248+ f = '/var/log/installer/%s' % name
1249+ elif os.path.exists('/var/log/%s' % name):
1250+ f = '/var/log/%s' % name
1251+ else:
1252+ return
1253+
1254+ if os.access(f, os.R_OK):
1255+ report[ident] = (f,)
1256+ else:
1257+ attach_root_command_outputs(report, {ident: "cat '%s'" % f})
1258+
1259+
1260+def add_info(report):
1261+ attach_hardware(report)
1262+
1263+ report['DiskUsage'] = command_output(['df'])
1264+ report['MemoryUsage'] = command_output(['free'])
1265+
1266+ if command_available('dmraid'):
1267+ attach_root_command_outputs(report, {'DmraidSets': 'dmraid -s',
1268+ 'DmraidDevices': 'dmraid -r'})
1269+ if command_available('dmsetup'):
1270+ attach_root_command_outputs(report, {'DeviceMapperTables': 'dmsetup table'})
1271+
1272+ try:
1273+ installer_version = open('/var/log/installer/version')
1274+ for line in installer_version:
1275+ if line.startswith('ubiquity '):
1276+ # File these reports on the ubiquity package instead
1277+ report['SourcePackage'] = 'ubiquity'
1278+ break
1279+ installer_version.close()
1280+ except IOError:
1281+ pass
1282+
1283+ add_installation_log(report, 'DIPartman', 'partman')
1284+ add_installation_log(report, 'DISyslog', 'syslog')
1285+
1286+
1287+if __name__ == '__main__':
1288+ report = {}
1289+ add_info(report)
1290+ for key in report:
1291+ if isinstance(report[key], type('')):
1292+ print('%s: %s' % (key, report[key].split('\n', 1)[0]))
1293+ else:
1294+ print('%s: %s' % (key, type(report[key])))
1295
1296=== added file 'data/package-hooks/source_linux-nexus7.py'
1297--- data/package-hooks/source_linux-nexus7.py 1970-01-01 00:00:00 +0000
1298+++ data/package-hooks/source_linux-nexus7.py 2016-04-06 16:42:48 +0000
1299@@ -0,0 +1,25 @@
1300+'''Apport package hook for the Linux nexus7 kernel.
1301+
1302+(c) 2012 Canonical Ltd.
1303+Author: Martin Pitt <martin.pitt@canonical.com>
1304+
1305+This program is free software; you can redistribute it and/or modify it
1306+under the terms of the GNU General Public License as published by the
1307+Free Software Foundation; either version 2 of the License, or (at your
1308+option) any later version. See http://www.gnu.org/copyleft/gpl.html for
1309+the full text of the license.
1310+'''
1311+
1312+
1313+def add_info(report, ui):
1314+ # direct bugs to the ubuntu-nexus7 project
1315+ report['CrashDB'] = '''{"impl": "launchpad",
1316+ "project": "ubuntu-nexus7",
1317+ "bug_pattern_url": "http://people.canonical.com/~ubuntu-archive/bugpatterns/bugpatterns.xml",
1318+ }'''
1319+
1320+ # collect information from original kernel hook
1321+ report.add_hooks_info(ui, srcpackage='linux')
1322+
1323+ # add additional tags
1324+ report['Tags'] += ' mobile nexus7'
1325
1326=== added file 'data/package-hooks/source_linux.py'
1327--- data/package-hooks/source_linux.py 1970-01-01 00:00:00 +0000
1328+++ data/package-hooks/source_linux.py 2016-04-06 16:42:48 +0000
1329@@ -0,0 +1,134 @@
1330+'''Apport package hook for the Linux kernel.
1331+
1332+(c) 2008 Canonical Ltd.
1333+Contributors:
1334+Matt Zimmerman <mdz@canonical.com>
1335+Martin Pitt <martin.pitt@canonical.com>
1336+Brian Murray <brian@canonical.com>
1337+
1338+This program is free software; you can redistribute it and/or modify it
1339+under the terms of the GNU General Public License as published by the
1340+Free Software Foundation; either version 2 of the License, or (at your
1341+option) any later version. See http://www.gnu.org/copyleft/gpl.html for
1342+the full text of the license.
1343+'''
1344+
1345+import os.path, re
1346+import apport
1347+import apport.hookutils
1348+
1349+SUBMIT_SCRIPT = "/usr/bin/kerneloops-submit"
1350+
1351+
1352+def add_info(report, ui):
1353+
1354+ # If running an upstream kernel, instruct reporter to file bug upstream
1355+ abi = re.search("-(.*?)-", report['Uname'])
1356+ if abi and (abi.group(1) == '999' or re.search("^0\d", abi.group(1))):
1357+ ui.information("It appears you are currently running a mainline kernel. It would be better to report this bug upstream at http://bugzilla.kernel.org/ so that the upstream kernel developers are aware of the issue. If you'd still like to file a bug against the Ubuntu kernel, please boot with an official Ubuntu kernel and re-file.")
1358+ report['UnreportableReason'] = 'The running kernel is not an Ubuntu kernel'
1359+ return
1360+
1361+ version_signature = report.get('ProcVersionSignature', '')
1362+ if not version_signature.startswith('Ubuntu ') and 'CrashDB' not in report:
1363+ report['UnreportableReason'] = 'The running kernel is not an Ubuntu kernel'
1364+ return
1365+
1366+ # Prevent reports against the linux-meta family, redirect to the main package.
1367+ if report['SourcePackage'].startswith('linux-meta'):
1368+ report['SourcePackage'] = report['SourcePackage'].replace('linux-meta', 'linux', 1)
1369+
1370+ report.setdefault('Tags', '')
1371+
1372+ # Tag up back ported kernel reports for easy identification
1373+ if report['SourcePackage'].startswith('linux-lts-'):
1374+ report['Tags'] += ' qa-kernel-lts-testing'
1375+
1376+ apport.hookutils.attach_hardware(report)
1377+ apport.hookutils.attach_alsa(report)
1378+ apport.hookutils.attach_wifi(report)
1379+ apport.hookutils.attach_file(report, '/proc/fb', 'ProcFB')
1380+
1381+ staging_drivers = re.findall("(\w+): module is from the staging directory",
1382+ report['CurrentDmesg'])
1383+ if staging_drivers:
1384+ staging_drivers = list(set(staging_drivers))
1385+ report['StagingDrivers'] = ' '.join(staging_drivers)
1386+ report['Tags'] += ' staging'
1387+ # Only if there is an existing title prepend '[STAGING]'.
1388+ # Changed to prevent bug titles with just '[STAGING] '.
1389+ if report.get('Title'):
1390+ report['Title'] = '[STAGING] ' + report.get('Title')
1391+
1392+ apport.hookutils.attach_file_if_exists(report, "/etc/initramfs-tools/conf.d/resume", key="HibernationDevice")
1393+
1394+ uname_release = os.uname()[2]
1395+ lrm_package_name = 'linux-restricted-modules-%s' % uname_release
1396+ lbm_package_name = 'linux-backports-modules-%s' % uname_release
1397+
1398+ apport.hookutils.attach_related_packages(report, [lrm_package_name, lbm_package_name, 'linux-firmware'])
1399+
1400+ if ('Failure' in report and report['Failure'] == 'oops' and
1401+ 'OopsText' in report and os.path.exists(SUBMIT_SCRIPT)):
1402+ # tag kerneloopses with the version of the kerneloops package
1403+ apport.hookutils.attach_related_packages(report, ['kerneloops-daemon'])
1404+ oopstext = report['OopsText']
1405+ dupe_sig1 = None
1406+ dupe_sig2 = None
1407+ for line in oopstext.splitlines():
1408+ if line.startswith('BUG:'):
1409+ bug = re.compile('at [0-9a-f]+$')
1410+ dupe_sig1 = bug.sub('at location', line)
1411+ rip = re.compile('^[RE]?IP:')
1412+ if re.search(rip, line):
1413+ loc = re.compile('\[<[0-9a-f]+>\]')
1414+ dupe_sig2 = loc.sub('location', line)
1415+ if dupe_sig1 and dupe_sig2:
1416+ report['DuplicateSignature'] = '%s %s' % (dupe_sig1, dupe_sig2)
1417+ # it's from kerneloops, ask the user whether to submit there as well
1418+ if ui:
1419+ # Some OopsText begin with "--- [ cut here ] ---", so remove it
1420+ oopstext = re.sub("---.*\n", "", oopstext)
1421+ first_line = re.match(".*\n", oopstext)
1422+ ip = re.search("(R|E)?IP\:.*\n", oopstext)
1423+ kernel_driver = re.search("(R|E)?IP(:| is at) .*\[(.*)\]\n", oopstext)
1424+ call_trace = re.search("Call Trace(.*\n){,10}", oopstext)
1425+ oops = ''
1426+ if first_line:
1427+ oops += first_line.group(0)
1428+ if ip:
1429+ oops += ip.group(0)
1430+ if call_trace:
1431+ oops += call_trace.group(0)
1432+ if kernel_driver:
1433+ report['Tags'] += ' kernel-driver-%s' % kernel_driver.group(3)
1434+ # 2012-01-13 - disable submission question as kerneloops.org is
1435+ # down
1436+ # if ui.yesno("This report may also be submitted to "
1437+ # "http://kerneloops.org/ in order to help collect aggregate "
1438+ # "information about kernel problems. This aids in identifying "
1439+ # "widespread issues and problematic areas. A condensed "
1440+ # "summary of the Oops is shown below. Would you like to submit "
1441+ # "information about this crash to kerneloops.org?"
1442+ # "\n\n%s" % oops):
1443+ # text = report['OopsText']
1444+ # proc = subprocess.Popen(SUBMIT_SCRIPT, stdin=subprocess.PIPE)
1445+ # proc.communicate(text)
1446+ elif 'Failure' in report and ('resume' in report['Failure'] or
1447+ 'suspend' in report['Failure']):
1448+ crash_signature = report.crash_signature()
1449+ if crash_signature:
1450+ report['DuplicateSignature'] = crash_signature
1451+
1452+ if report.get('ProblemType') == 'Package':
1453+ # in case there is a failure with a grub script
1454+ apport.hookutils.attach_related_packages(report, ['grub-pc'])
1455+
1456+if __name__ == '__main__':
1457+ r = apport.Report()
1458+ r.add_proc_info()
1459+ r.add_os_info()
1460+ r['ProcVersionSignature'] = 'Ubuntu 3.4.0'
1461+ add_info(r, None)
1462+ for k, v in r.items():
1463+ print('%s: %s' % (k, v))
1464
1465=== added file 'data/package-hooks/source_ubiquity.py'
1466--- data/package-hooks/source_ubiquity.py 1970-01-01 00:00:00 +0000
1467+++ data/package-hooks/source_ubiquity.py 2016-04-06 16:42:48 +0000
1468@@ -0,0 +1,155 @@
1469+'''Apport package hook for the ubiquity live CD installer.
1470+
1471+Copyright (C) 2009 Canonical Ltd.
1472+Authors: Colin Watson <cjwatson@ubuntu.com>,
1473+ Brian Murray <brian@ubuntu.com>'''
1474+
1475+import apport.hookutils
1476+import os.path
1477+import re
1478+
1479+
1480+def add_installation_log(report, ident, name):
1481+ f = False
1482+ for try_location in ('/var/log/installer/%s',
1483+ '/var/log/%s',
1484+ '/var/log/upstart/%s'):
1485+ if os.path.exists(try_location % name):
1486+ f = try_location % name
1487+ break
1488+ if not f:
1489+ return
1490+
1491+ if os.access(f, os.R_OK):
1492+ with open(f, 'rb') as f:
1493+ report[ident] = f.read().decode('UTF-8', 'replace')
1494+ elif os.path.exists(f):
1495+ apport.hookutils.attach_root_command_outputs(report, {ident: "cat '%s'" % f})
1496+
1497+
1498+def prepare_duplicate_signature(syslog, collect_grub, collect_trace):
1499+ collect = ''
1500+ for line in syslog.split('\n'):
1501+ if collect_grub:
1502+ if 'grub-installer:' in line and collect == "":
1503+ collect = ' '.join(line.split(' ')[4:]) + '\n'
1504+ continue
1505+ elif 'grub-installer:' in line and collect != "":
1506+ collect += ' '.join(line.split(' ')[4:]) + '\n'
1507+ continue
1508+ if not collect_trace and collect != '':
1509+ return collect
1510+ if 'Traceback (most recent call last):' in line and \
1511+ collect_grub:
1512+ collect += ' '.join(line.split(' ')[5:]) + '\n'
1513+ continue
1514+ if 'Traceback (most recent call last):' in line and \
1515+ not collect_grub:
1516+ collect = ' '.join(line.split(' ')[5:]) + '\n'
1517+ continue
1518+ if len(line.split(' ')[5:]) == 1 and 'Traceback' in collect:
1519+ if collect != '':
1520+ return collect
1521+ if 'Traceback' not in collect:
1522+ continue
1523+ collect += ' '.join(line.split(' ')[5:]) + '\n'
1524+
1525+
1526+def add_info(report, ui):
1527+ add_installation_log(report, 'UbiquitySyslog', 'syslog')
1528+ syslog = report['UbiquitySyslog']
1529+ if 'Buffer I/O error on device' in syslog:
1530+ if re.search('Attached .* CD-ROM (\w+)', syslog):
1531+ cd_drive = re.search('Attached .* CD-ROM (\w+)', syslog).group(1)
1532+ cd_error = re.search('Buffer I/O error on device %s' % cd_drive, syslog)
1533+ else:
1534+ cd_error = None
1535+ if cd_error:
1536+ ui.information("The system log from your installation contains an error. The specific error commonly occurs when there is an issue with the media from which you were installing. This can happen when your media is dirty or damaged or when you've burned the media at a high speed. Please try cleaning the media and or burning new media at a lower speed. In the event that you continue to encounter these errors it may be an issue with your CD / DVD drive.")
1537+ raise StopIteration
1538+ if 'I/O error, dev' in syslog:
1539+ # check for either usb stick (install media) or hard disk I/O errors
1540+ if re.search('I/O error, dev (\w+)', syslog):
1541+ error_disk = re.search('I/O error, dev (\w+)', syslog).group(1)
1542+ mount = apport.hookutils.command_output(['grep', '%s' % error_disk, '/proc/mounts'])
1543+ if 'target' in mount:
1544+ ui.information("The system log from your installation contains an error. The specific error commonly occurs when there is an issue with the disk to which you are trying to install Ubuntu. It is recommended that you back up important data on your disk and investigate the situation. Measures you might take include cehcking cable connections for your disks and using software tools to investigate the health of your hardware.")
1545+ raise StopIteration
1546+ if 'cdrom' in mount:
1547+ ui.information("The system log from your installation contains an error. The specific error commonly occurs when there is an issue with the media from which you were installing. Please try creating the USB stick you were installing from again or try installing from a different USB stick.")
1548+ raise StopIteration
1549+ if 'SQUASHFS error: Unable to read' in syslog:
1550+ ui.information("The system log from your installation contains an error. The specific error commonly occurs when there is an issue with the media from which you were installing. This can happen when your media is dirty or damaged or when you've burned the media at a high speed. Please try cleaning the media and or burning new media at a lower speed. In the event that you continue to encounter these errors it may be an issue with your CD / DVD drive.")
1551+ raise StopIteration
1552+
1553+ if 'Kernel command line' in syslog:
1554+ install_cmdline = re.search('Kernel command line: (.*)', syslog).group(1)
1555+ else:
1556+ install_cmdline = None
1557+ if install_cmdline:
1558+ report['InstallCmdLine'] = install_cmdline
1559+
1560+ if 'Traceback' not in report:
1561+ collect_grub = False
1562+ collect_trace = False
1563+ if 'grub-install ran successfully' not in syslog and 'grub-installer:' in syslog:
1564+ collect_grub = True
1565+ if 'Traceback' in syslog:
1566+ collect_trace = True
1567+ if report['ProblemType'] != 'Bug' and collect_grub or \
1568+ report['ProblemType'] != 'Bug' and collect_trace:
1569+ duplicate_signature = prepare_duplicate_signature(syslog, collect_grub, collect_trace)
1570+ if duplicate_signature:
1571+ report['DuplicateSignature'] = duplicate_signature
1572+ if collect_grub:
1573+ report['SourcePackage'] = 'grub-installer'
1574+
1575+ match = re.search('ubiquity.*Ubiquity (.*)\n', syslog)
1576+ if match:
1577+ match = match.group(1)
1578+ report.setdefault('Tags', '')
1579+ if match:
1580+ report['Tags'] += ' ubiquity-%s' % match.split()[0]
1581+
1582+ # tag bug reports where people choose to "upgrade" their install of Ubuntu
1583+ if re.search('UpgradeSystem\(\) was called with safe mode', syslog):
1584+ report['Tags'] += ' ubiquity-upgrade'
1585+
1586+ add_installation_log(report, 'UbiquityPartman', 'partman')
1587+
1588+ debug_log = '/var/log/installer/debug'
1589+ debug_mode = False
1590+ if os.path.exists(debug_log):
1591+ try:
1592+ fp = open(debug_log, 'r')
1593+ except (OSError, IOError):
1594+ pass
1595+ else:
1596+ with fp:
1597+ for line in fp:
1598+ if line.startswith('debconf (developer)'):
1599+ debug_mode = True
1600+ break
1601+ if debug_mode:
1602+ response = ui.yesno("The debug log file from your installation would help us a lot but includes the password you used for your user when installing Ubuntu. Do you want to include this log file?")
1603+ if response is None:
1604+ raise StopIteration
1605+ if response:
1606+ add_installation_log(report, 'UbiquityDebug', 'debug')
1607+ else:
1608+ add_installation_log(report, 'UbiquityDebug', 'debug')
1609+
1610+ add_installation_log(report, 'UbiquityDm', 'dm')
1611+ add_installation_log(report, 'UpstartUbiquity', 'ubiquity.log')
1612+
1613+ # add seed name as Tag so we know which image was used
1614+ with open('/proc/cmdline', 'r') as f:
1615+ cmdline = f.read()
1616+ match = re.search('([^/]+)\.seed', cmdline)
1617+ if match:
1618+ report['Tags'] += ' ' + match.group(1)
1619+
1620+ add_installation_log(report, 'Casper', 'casper.log')
1621+ add_installation_log(report, 'OemConfigLog', 'oem-config.log')
1622+ if 'OemConfigLog' in report:
1623+ report['Tags'] += ' oem-config'
1624
1625=== added directory 'debhelper'
1626=== added file 'debhelper/apport.pm'
1627--- debhelper/apport.pm 1970-01-01 00:00:00 +0000
1628+++ debhelper/apport.pm 2016-04-06 16:42:48 +0000
1629@@ -0,0 +1,10 @@
1630+#!/usr/bin/perl
1631+# debhelper sequence file for apport
1632+
1633+use warnings;
1634+use strict;
1635+use Debian::Debhelper::Dh_Lib;
1636+
1637+insert_after("dh_bugfiles", "dh_apport");
1638+
1639+1;
1640
1641=== added file 'debhelper/dh_apport'
1642--- debhelper/dh_apport 1970-01-01 00:00:00 +0000
1643+++ debhelper/dh_apport 2016-04-06 16:42:48 +0000
1644@@ -0,0 +1,83 @@
1645+#!/usr/bin/perl -w
1646+
1647+=head1 NAME
1648+
1649+dh_installapport - install apport package hooks
1650+
1651+=cut
1652+
1653+use strict;
1654+
1655+use Debian::Debhelper::Dh_Lib;
1656+
1657+=head1 SYNOPSIS
1658+
1659+B<dh_apport> [S<B<debhelper options>>]
1660+
1661+=head1 DESCRIPTION
1662+
1663+dh_apport is a debhelper program that installs apport package hooks into
1664+package build directories.
1665+
1666+=head1 FILES
1667+
1668+=over 4
1669+
1670+=item debian/I<package>.apport
1671+
1672+Installed into /usr/share/apport/package-hooks/I<package>.py in the package
1673+build directory. This file is used to control apport's bug filing for this
1674+package.
1675+
1676+=item debian/source.apport
1677+
1678+Installed into /usr/share/apport/package-hooks/source_I<src>.py (where
1679+I<src> is the current source package name) in the package build directory of
1680+the first package dh_apport is told to act on. By default, this is the first
1681+binary package in debian/control, but if you use -p, -i, or -a flags, it
1682+will be the first package specified by those flags. This file is used to
1683+control apport's bug filing for all binary packages built by this source
1684+package.
1685+
1686+=back
1687+
1688+=cut
1689+
1690+init();
1691+
1692+foreach my $package (@{$dh{DOPACKAGES}}) {
1693+ next if is_udeb($package);
1694+
1695+ my $tmp=tmpdir($package);
1696+ my $hooksdir="$tmp/usr/share/apport/package-hooks";
1697+ my $file=pkgfile($package,"apport");
1698+
1699+ if ($file ne '') {
1700+ if (! -d $hooksdir) {
1701+ doit("install","-d",$hooksdir);
1702+ }
1703+ doit("install","-p","-m644",$file,"$hooksdir/$package.py");
1704+ }
1705+
1706+ if (-e "debian/source.apport" && $package eq $dh{FIRSTPACKAGE}) {
1707+ if (! -d $hooksdir) {
1708+ doit("install","-d",$hooksdir);
1709+ }
1710+ my $src=sourcepackage();
1711+ doit("install","-p","-m644","debian/source.apport","$hooksdir/source_$src.py");
1712+ }
1713+}
1714+
1715+=head1 SEE ALSO
1716+
1717+L<debhelper(1)>
1718+
1719+This program is a part of apport.
1720+
1721+=head1 AUTHOR
1722+
1723+Colin Watson <cjwatson@ubuntu.com>
1724+
1725+Copyright (C) 2009 Canonical Ltd., licensed under the GNU GPL v2 or later.
1726+
1727+=cut
1728
1729=== added directory 'debian'
1730=== added file 'debian/apport-gtk.install'
1731--- debian/apport-gtk.install 1970-01-01 00:00:00 +0000
1732+++ debian/apport-gtk.install 2016-04-06 16:42:48 +0000
1733@@ -0,0 +1,2 @@
1734+usr/share/apport/*gtk*
1735+usr/share/applications/*gtk*
1736
1737=== added file 'debian/apport-kde.install'
1738--- debian/apport-kde.install 1970-01-01 00:00:00 +0000
1739+++ debian/apport-kde.install 2016-04-06 16:42:48 +0000
1740@@ -0,0 +1,9 @@
1741+usr/share/apport/*kde*
1742+usr/share/apport/progress.ui
1743+usr/share/apport/error.ui
1744+usr/share/apport/bugreport.ui
1745+usr/share/apport/choices.ui
1746+usr/share/apport/userpass.ui
1747+usr/share/apport/spinner.gif
1748+usr/share/applications/apport-kde-mime.desktop
1749+usr/share/applications/apport-kde-mimelnk.desktop usr/share/mimelnk/text
1750
1751=== added file 'debian/apport-noui.dirs'
1752--- debian/apport-noui.dirs 1970-01-01 00:00:00 +0000
1753+++ debian/apport-noui.dirs 2016-04-06 16:42:48 +0000
1754@@ -0,0 +1,1 @@
1755+/var/lib/apport
1756
1757=== added file 'debian/apport-noui.install'
1758--- debian/apport-noui.install 1970-01-01 00:00:00 +0000
1759+++ debian/apport-noui.install 2016-04-06 16:42:48 +0000
1760@@ -0,0 +1,1 @@
1761+debian/apport-noui.path /lib/systemd/system
1762
1763=== added file 'debian/apport-noui.path'
1764--- debian/apport-noui.path 1970-01-01 00:00:00 +0000
1765+++ debian/apport-noui.path 2016-04-06 16:42:48 +0000
1766@@ -0,0 +1,9 @@
1767+[Unit]
1768+Description=Process error reports when automatic reporting is enabled (file watch)
1769+ConditionPathExists=/var/lib/apport/autoreport
1770+
1771+[Path]
1772+PathExistsGlob=/var/crash/*.crash
1773+
1774+[Install]
1775+WantedBy=paths.target
1776
1777=== added file 'debian/apport-noui.postinst'
1778--- debian/apport-noui.postinst 1970-01-01 00:00:00 +0000
1779+++ debian/apport-noui.postinst 2016-04-06 16:42:48 +0000
1780@@ -0,0 +1,7 @@
1781+#!/bin/sh
1782+
1783+set -e
1784+
1785+touch /var/lib/apport/autoreport
1786+
1787+#DEBHELPER#
1788
1789=== added file 'debian/apport-noui.prerm'
1790--- debian/apport-noui.prerm 1970-01-01 00:00:00 +0000
1791+++ debian/apport-noui.prerm 2016-04-06 16:42:48 +0000
1792@@ -0,0 +1,9 @@
1793+#!/bin/sh
1794+
1795+set -e
1796+
1797+if [ "$1" = remove ]; then
1798+ rm -f /var/lib/apport/autoreport
1799+fi
1800+
1801+#DEBHELPER#
1802
1803=== added file 'debian/apport-noui.service'
1804--- debian/apport-noui.service 1970-01-01 00:00:00 +0000
1805+++ debian/apport-noui.service 2016-04-06 16:42:48 +0000
1806@@ -0,0 +1,7 @@
1807+[Unit]
1808+Description=Process error reports when automatic reporting is enabled
1809+ConditionPathExists=/var/lib/apport/autoreport
1810+
1811+[Service]
1812+Type=oneshot
1813+ExecStart=/usr/share/apport/whoopsie-upload-all
1814
1815=== added file 'debian/apport-noui.upstart'
1816--- debian/apport-noui.upstart 1970-01-01 00:00:00 +0000
1817+++ debian/apport-noui.upstart 2016-04-06 16:42:48 +0000
1818@@ -0,0 +1,13 @@
1819+description "Process error reports when automatic reporting is enabled"
1820+author "Evan Dandrea <evan.dandrea@canonical.com>"
1821+
1822+start on (
1823+ file FILE=/var/crash/*.crash EVENT=create
1824+)
1825+
1826+
1827+instance $MATCH
1828+script
1829+ [ -e /var/lib/apport/autoreport ] || exit 0
1830+ /lib/udev/watershed /usr/share/apport/whoopsie-upload-all
1831+end script
1832
1833=== added file 'debian/apport-retrace.install'
1834--- debian/apport-retrace.install 1970-01-01 00:00:00 +0000
1835+++ debian/apport-retrace.install 2016-04-06 16:42:48 +0000
1836@@ -0,0 +1,5 @@
1837+usr/bin/apport-retrace
1838+usr/bin/dupdb-admin
1839+usr/bin/crash-digger
1840+usr/share/man/man1/apport-retrace.1
1841+usr/share/man/man1/dupdb-admin.1
1842
1843=== added file 'debian/apport-valgrind.install'
1844--- debian/apport-valgrind.install 1970-01-01 00:00:00 +0000
1845+++ debian/apport-valgrind.install 2016-04-06 16:42:48 +0000
1846@@ -0,0 +1,2 @@
1847+usr/bin/apport-valgrind
1848+usr/share/man/man1/apport-valgrind.1
1849
1850=== added file 'debian/apport.install'
1851--- debian/apport.install 1970-01-01 00:00:00 +0000
1852+++ debian/apport.install 2016-04-06 16:42:48 +0000
1853@@ -0,0 +1,36 @@
1854+etc
1855+lib/udev/
1856+lib/systemd/
1857+usr/share/apport/apport
1858+usr/share/apport/apport-checkreports
1859+usr/share/apport/package_hook
1860+usr/share/apport/kernel_crashdump
1861+usr/share/apport/kernel_oops
1862+usr/share/apport/gcc_ice_hook
1863+usr/share/apport/apportcheckresume
1864+usr/share/apport/unkillable_shutdown
1865+usr/share/apport/dump_acpi_tables.py
1866+usr/share/apport/is-enabled
1867+usr/share/apport/java_uncaught_exception
1868+usr/share/apport/recoverable_problem
1869+usr/share/apport/root_info_wrapper
1870+usr/share/apport/whoopsie-upload-all
1871+usr/share/apport/iwlwifi_error_dump
1872+usr/share/doc/apport
1873+usr/share/locale
1874+usr/share/icons
1875+usr/share/mime
1876+usr/share/polkit-1
1877+usr/share/apport/package-hooks
1878+usr/share/apport/general-hooks
1879+usr/share/man/man1/apport-unpack.1
1880+usr/share/man/man1/apport-bug.1
1881+usr/share/man/man1/apport-cli.1
1882+usr/bin/apport-cli
1883+usr/bin/apport-unpack
1884+usr/bin/apport-bug
1885+usr/bin/apport-collect
1886+usr/lib/pm-utils
1887+../../java/apport.jar usr/share/apport/
1888+../../java/crash.jar usr/share/apport/testsuite/
1889+../../java/crash.class usr/share/apport/testsuite/
1890
1891=== added file 'debian/apport.links'
1892--- debian/apport.links 1970-01-01 00:00:00 +0000
1893+++ debian/apport.links 2016-04-06 16:42:48 +0000
1894@@ -0,0 +1,4 @@
1895+/usr/share/apport/package-hooks/source_linux.py /usr/share/apport/package-hooks/source_linux-meta.py
1896+/usr/bin/apport-bug /usr/bin/ubuntu-bug
1897+/usr/share/man/man1/apport-bug.1.gz /usr/share/man/man1/ubuntu-bug.1.gz
1898+/usr/share/man/man1/apport-bug.1.gz /usr/share/man/man1/apport-collect.1.gz
1899
1900=== added file 'debian/apport.logrotate'
1901--- debian/apport.logrotate 1970-01-01 00:00:00 +0000
1902+++ debian/apport.logrotate 2016-04-06 16:42:48 +0000
1903@@ -0,0 +1,9 @@
1904+/var/log/apport.log {
1905+ daily
1906+ rotate 7
1907+ delaycompress
1908+ compress
1909+ notifempty
1910+ missingok
1911+}
1912+
1913
1914=== added file 'debian/apport.maintscript'
1915--- debian/apport.maintscript 1970-01-01 00:00:00 +0000
1916+++ debian/apport.maintscript 2016-04-06 16:42:48 +0000
1917@@ -0,0 +1,1 @@
1918+rm_conffile /etc/apport/native-origins.d/lts-q-backports 2.5.1-0ubuntu8~
1919
1920=== added file 'debian/apport.postinst'
1921--- debian/apport.postinst 1970-01-01 00:00:00 +0000
1922+++ debian/apport.postinst 2016-04-06 16:42:48 +0000
1923@@ -0,0 +1,10 @@
1924+#!/bin/sh
1925+set -e
1926+
1927+if [ "$1" = configure ]; then
1928+ # directory is required for package failures even if apport is disabled and
1929+ # thus the upstart job does not run
1930+ mkdir -p -m 1777 /var/crash
1931+fi
1932+
1933+#DEBHELPER#
1934
1935=== added file 'debian/apport.upstart'
1936--- debian/apport.upstart 1970-01-01 00:00:00 +0000
1937+++ debian/apport.upstart 2016-04-06 16:42:48 +0000
1938@@ -0,0 +1,58 @@
1939+# apport - automatic crash report generation
1940+#
1941+# While this job is active, core dumps will captured by apport and
1942+# used to generate automatic crash reports.
1943+
1944+description "automatic crash report generation"
1945+
1946+start on runlevel [2345]
1947+stop on runlevel [!2345]
1948+
1949+env enabled=1
1950+
1951+pre-start script
1952+ # don't start in containers
1953+ systemd-detect-virt --quiet --container && exit 0 || true
1954+
1955+ . /etc/default/apport
1956+ [ "$enabled" = "1" ] || [ "$force_start" = "1" ] || exit 0
1957+
1958+ mkdir -p -m 1777 /var/crash
1959+
1960+ # check for kernel crash dump, convert it to apport report
1961+ if [ -e /var/crash/vmcore ] || [ -n "`ls /var/crash | egrep ^[0-9]{12}$`" ]
1962+ then
1963+ /usr/share/apport/kernel_crashdump || true
1964+ fi
1965+
1966+ # check for incomplete suspend/resume or hibernate
1967+ if [ -e /var/lib/pm-utils/status ]
1968+ then
1969+ /usr/share/apport/apportcheckresume || true
1970+ rm -f /var/lib/pm-utils/status
1971+ rm -f /var/lib/pm-utils/resume-hang.log
1972+ fi
1973+
1974+ echo "|/usr/share/apport/apport %p %s %c %P" > /proc/sys/kernel/core_pattern
1975+ echo 2 > /proc/sys/fs/suid_dumpable
1976+end script
1977+
1978+post-stop script
1979+ # don't stop in containers
1980+ systemd-detect-virt --quiet --container && exit 0 || true
1981+
1982+ # Check for a hung resume. If we find one try and grab everything
1983+ # we can to aid in its discovery
1984+ if [ -e /var/lib/pm-utils/status ]
1985+ then
1986+ ps -wwef > /var/lib/pm-utils/resume-hang.log
1987+ fi
1988+
1989+ if [ "`dd if=/proc/sys/kernel/core_pattern count=1 bs=1 2>/dev/null`" != "|" ]
1990+ then
1991+ exit 1
1992+ else
1993+ echo 0 > /proc/sys/fs/suid_dumpable
1994+ echo "core" > /proc/sys/kernel/core_pattern
1995+ fi
1996+end script
1997
1998=== added file 'debian/changelog'
1999--- debian/changelog 1970-01-01 00:00:00 +0000
2000+++ debian/changelog 2016-04-06 16:42:48 +0000
2001@@ -0,0 +1,8967 @@
2002+apport (2.20.1-0ubuntu1) xenial; urgency=medium
2003+
2004+ * New upstream release. Changes since our previous snapshot:
2005+ - crash-digger: Untag bugs which cannot be retraced instead of stopping
2006+ crash-digger. This led to too many pointless manual restarts on broken bug
2007+ reports.
2008+ * Disambiguate overly generic Python exceptions in duplicate signature
2009+ computation: dbus-glib's DBusException wraps a "real" server-side
2010+ exception, so add the class of that to disambiguate different crashes;
2011+ for OSError that is not a known subclass like FileNotFoundError, add the
2012+ errno. (LP: #989819)
2013+
2014+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 31 Mar 2016 16:16:37 +0200
2015+
2016+apport (2.20-0ubuntu3) xenial; urgency=medium
2017+
2018+ * Relax report.test_add_gdb_info gdb warning check, as this changed with gdb
2019+ 7.10.90.
2020+
2021+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 16 Feb 2016 08:41:10 +0100
2022+
2023+apport (2.20-0ubuntu2) xenial; urgency=medium
2024+
2025+ * Fix signal_crashes.test_modify_after_start test when running as root.
2026+
2027+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 15 Feb 2016 11:49:56 +0100
2028+
2029+apport (2.20-0ubuntu1) xenial; urgency=medium
2030+
2031+ * New upstream release.
2032+ - Reimplement forwarding crashes into a container, via activating the new
2033+ apport-forward.socket in the container and handing over the core dump
2034+ fd. This is a much safer way than the original implementation with
2035+ nsexec. Thanks Stéphane Graber! (LP: #1445064)
2036+ * Drop long-obsolete sysv-rc dependency.
2037+ * Add python3-systemd recommendation to apport, to make crash report
2038+ generation work in containers.
2039+ * Install new systemd units into apport package.
2040+
2041+ -- Martin Pitt <martin.pitt@ubuntu.com> Sun, 14 Feb 2016 13:41:36 +0100
2042+
2043+apport (2.19.4-0ubuntu2) xenial; urgency=medium
2044+
2045+ * debian/apport.upstart: Call systemd-detect-virt instead of the
2046+ Ubuntu specific running-in-container wrapper. (LP: #1539016)
2047+
2048+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 28 Jan 2016 14:58:06 +0100
2049+
2050+apport (2.19.4-0ubuntu1) xenial; urgency=medium
2051+
2052+ * New upstream bug fix release:
2053+ - Fix fileutils.test_find_package_desktopfile test for symlinks and other
2054+ unowned files in /usr/share/applications/.
2055+ - Fix ui.test_run_crash_anonymity test case to not fail if the base64
2056+ encoded core dump happens to contain the user name, as that's just by
2057+ chance. - Fix test_hooks.py for unreleased gcc versions which have a
2058+ different --version format.
2059+ - hookutils.py, attach_hardware(): Stop attaching /var/log/udev. This was
2060+ an upstart-ism, mostly redundant with the udev db and is not being
2061+ written under systemd. (LP: #1537211)
2062+ * etc/apport/crashdb.conf: Enable crash reports on Launchpad for xenial.
2063+
2064+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 26 Jan 2016 15:37:44 +0100
2065+
2066+apport (2.19.3-0ubuntu3) xenial; urgency=medium
2067+
2068+ * data/general-hooks/powerpc.py: Add support to collect more data on
2069+ PowerNV. (LP: #1499226) Thanks to Kamalesh Babulal for the patch.
2070+
2071+ -- Brian Murray <brian@ubuntu.com> Tue, 12 Jan 2016 17:06:29 -0800
2072+
2073+apport (2.19.3-0ubuntu2) xenial; urgency=medium
2074+
2075+ * Fix fileutils.test_find_package_desktopfile test for symlinks and other
2076+ unowned files in /usr/share/applications/. (Cherry-picked from trunk.)
2077+
2078+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 10 Dec 2015 10:31:19 +0100
2079+
2080+apport (2.19.3-0ubuntu1) xenial; urgency=medium
2081+
2082+ * New upstream microrelease:
2083+ - apt/dpkg: Fix source record lookup in install_packages. Thanks Brian
2084+ Murray!
2085+ - hookutils.py, attach_gsettings_schema(): Don't replace the schema
2086+ variable; fixes attaching relocatable schemas. Thanks Sébastien Bacher!
2087+ - generic hook: Limit JournalErrors to the 1.000 last lines. This avoids
2088+ long report load times when processes cause massive log spew.
2089+ (LP: #1516947)
2090+ - Add key filtering to ProblemReport.load().
2091+ - Don't read the entire report when determining the CrashCounter. This
2092+ avoids long delays for existing large reports.
2093+ - test_python_crashes.py: Be less sensitive to the precise names of
2094+ gvfs-metadata D-Bus service files.
2095+ - Move backend_apt_dpkg -dbgsym test cases to Ubuntu 15.10.
2096+ - Tests: Move to unittest's builtin "mock" module.
2097+
2098+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 08 Dec 2015 09:49:00 +0100
2099+
2100+apport (2.19.2-0ubuntu9) xenial; urgency=medium
2101+
2102+ * If trimming the DpkgTerminalLog file fails, keep the whole log file in the
2103+ report. (LP: #1522849)
2104+
2105+ -- Brian Murray <brian@ubuntu.com> Mon, 07 Dec 2015 09:19:37 -0800
2106+
2107+apport (2.19.2-0ubuntu8) xenial; urgency=medium
2108+
2109+ * No-change rebuild against fixed debhelper.
2110+
2111+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 25 Nov 2015 06:21:22 +0100
2112+
2113+apport (2.19.2-0ubuntu7) xenial; urgency=medium
2114+
2115+ * data/general-hooks/ubuntu.py: resolve Traceback when parsing
2116+ DpkgTerminalError and using python2.
2117+
2118+ -- Brian Murray <brian@ubuntu.com> Tue, 24 Nov 2015 11:35:10 -0800
2119+
2120+apport (2.19.2-0ubuntu6) xenial; urgency=medium
2121+
2122+ * Add Conflicts/Replaces/Provides: core-dump-handler, to ensure mutual
2123+ uninstallability with systemd-coredump and corekeeper.
2124+
2125+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 13 Nov 2015 11:20:31 +0100
2126+
2127+apport (2.19.2-0ubuntu5) xenial; urgency=medium
2128+
2129+ * data/general-hooks/ubuntu.py: ensure that dpkg_log_without_error is a
2130+ string.
2131+
2132+ -- Brian Murray <brian@ubuntu.com> Mon, 09 Nov 2015 09:12:03 -0800
2133+
2134+apport (2.19.2-0ubuntu4) xenial; urgency=medium
2135+
2136+ * data/general-hooks/ubuntu.py: For package installation failures, build a
2137+ DuplicateSignature from the dpkg terminal log as using the package,
2138+ version, and dpkg ErrorMessage ended up being too generic.
2139+
2140+ -- Brian Murray <brian@ubuntu.com> Fri, 06 Nov 2015 09:14:29 -0800
2141+
2142+apport (2.19.2-0ubuntu3) xenial; urgency=medium
2143+
2144+ * apport: Fix comparison against SIGQUIT to work for current Python
2145+ versions. (Cherry-picked from upstream).
2146+
2147+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 04 Nov 2015 14:06:22 -0600
2148+
2149+apport (2.19.2-0ubuntu2) xenial; urgency=medium
2150+
2151+ * apport/ui.py: set "_MarkForUpload" field to False for cases where the
2152+ apport report is damaged, about a not installed package, or when an
2153+ error occurred processing the report. (LP: #1512902)
2154+
2155+ -- Brian Murray <brian@ubuntu.com> Tue, 03 Nov 2015 15:44:18 -0800
2156+
2157+apport (2.19.2-0ubuntu1) xenial; urgency=medium
2158+
2159+ * New upstream release. Changes since previous snapshot:
2160+ - SECURITY FIX: When determining the path of a Python module for a program
2161+ like "python -m module_name", avoid actually importing and running the
2162+ module; this could lead to local root privilege escalation. Thanks to
2163+ Gabriel Campana for discovering this and the fix!
2164+ (CVE-2015-1341, LP: #1507480)
2165+ - test_backend_apt_dpkg.py: Reset internal apt caches between tests.
2166+ Avoids random test failures due to leaking paths from previous test
2167+ cases.
2168+ * debian/control: Adjust Vcs-Bzr: for xenial branch.
2169+ * debian/control: Drop obsolete XS-Testsuite: header.
2170+
2171+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 27 Oct 2015 14:33:28 +0100
2172+
2173+apport (2.19.1-0ubuntu3) wily; urgency=medium
2174+
2175+ * Disable Launchpad crash upload for final Ubuntu 15.10.
2176+ * Fix backend_apt_dpkg.test_install_packages_system for recent "Fall back to
2177+ direct Launchpad ddeb download" fix. coreutils-dbgsym should now always be
2178+ available independent of whether the local system has ddeb apt sources.
2179+ (Cherry-picked from trunk).
2180+
2181+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 19 Oct 2015 08:48:25 +0200
2182+
2183+apport (2.19.1-0ubuntu2) wily; urgency=medium
2184+
2185+ * apt/dpkg: Don't mark packages downloaded from Launchpad for installation
2186+ by apt. Thanks Brian Murray. (Cherry-picked from trunk.)
2187+
2188+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 08 Oct 2015 08:04:12 +0200
2189+
2190+apport (2.19.1-0ubuntu1) wily; urgency=medium
2191+
2192+ [ Martin Pitt ]
2193+ * New upstream release:
2194+ - Consistently intercept "report file already exists" errors in all writers
2195+ of report files (package_hook, kernel_crashdump, and similar) to avoid
2196+ unhandled exceptions on those. (LP: #1500450)
2197+ - apt/dpkg: Fall back to direct Launchpad ddeb download if we can't find it
2198+ in the apt cache. Thanks Brian Murray! (LP: #1500557)
2199+ - doc/data-format.tex: Clarify that key names are being treated as case
2200+ sensitive (unlike RFC822).
2201+
2202+ [ Brian Murray ]
2203+ * data/iwlwifi_error_dump: fix add_package call. (LP: #1496268)
2204+
2205+ [ Sebastien Bacher ]
2206+ * data/package-hooks/sources_ubiquity.py: Don't try decode() a str
2207+ (LP: #1501773).
2208+
2209+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 07 Oct 2015 10:58:13 +0200
2210+
2211+apport (2.19-0ubuntu1) wily; urgency=medium
2212+
2213+ * New upstream release:
2214+ - apport: Drop re-nicing. This might decrease the time a user has to wait
2215+ for apport to finish the core dump for a crashed/hanging foreground
2216+ process. (See LP #1278780)
2217+ - kernel_crashdump: Enforce that the log/dmesg files are not a symlink.
2218+ This prevents normal users from pre-creating a symlink to the
2219+ predictable .crash file, and thus triggering a "fill up disk" DoS attack
2220+ when the .crash report tries to include itself. Thanks to halfdog for
2221+ discovering this! (CVE-2015-1338, part of LP #1492570)
2222+ - SECURITY FIX: Fix all writers of report files (package_hook,
2223+ kernel_crashdump, and similar) to open the report file exclusively,
2224+ i. e. fail if they already exist. This prevents privilege escalation
2225+ through symlink attacks. Note that this will also prevent overwriting
2226+ previous reports with the same same. Thanks to halfdog for discovering
2227+ this! (CVE-2015-1338, LP: #1492570)
2228+ - apport: Ignore process restarts from systemd's watchdog. Their traces
2229+ are usually useless as they don't have any information about the actual
2230+ reasaon why processes hang (like VM suspends or kernel lockups with bad
2231+ hardware) (LP: #1433320)
2232+
2233+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 24 Sep 2015 14:41:54 +0200
2234+
2235+apport (2.18.1-0ubuntu1) wily; urgency=medium
2236+
2237+ * New upstream bug fix release. Changes since our previous snapshot:
2238+ - packaging.py: Only consider first word in /etc/os-release's NAME value.
2239+ This works around Debian's inconsistent value. (LP: #1408245)
2240+ - Unify and simplify Package: field generation in kernel_crashdump,
2241+ kernel_oops, and package_hook by using the new Report.add_package()
2242+ method. (LP: #1485787)
2243+ - sandboxutils.py, make_sandbox(): Make "Cannot find package which ships
2244+ Executable/InterpreterPath" fatal, to save some unnecessary package
2245+ unpack cycles. (LP: #1487174)
2246+ * etc/apport/crashdb.conf: Enable crash reports on Launchpad for wily.
2247+ Really late, sorry about that!
2248+
2249+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 10 Sep 2015 11:48:46 +0200
2250+
2251+apport (2.18-0ubuntu9) wily; urgency=medium
2252+
2253+ * Revert changes to data/package_hook to include the package version. This
2254+ just hides the problem that somewhere during whoopsie add_package_info()
2255+ is not called. (See LP #1485787)
2256+ * packaging-apt-dpkg.py, is_distro_package(): If there is no origin and
2257+ /etc/system-image/channel.ini exists, assume the package is from a
2258+ read-only system image and accept it as distro package. With this we don't
2259+ need /var/lib/apt/lists/ indexes any more just to confirm the origin.
2260+ (LP: #1489410)
2261+ * Merge fixes from trunk:
2262+ - whoopsie-upload-all: Intercept OSError too (e. g. "No space left on
2263+ device"). (LP: #1476258)
2264+ - apport-retrace: Only consider the file name of a source file, not its
2265+ path; the latter often contains parts like "../" or directories which are
2266+ specific to a build machine. This fixes most broken StacktraceSource
2267+ results. (LP: #1462491)
2268+
2269+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 31 Aug 2015 11:35:54 +0200
2270+
2271+apport (2.18-0ubuntu8) wily; urgency=medium
2272+
2273+ * data/package-hooks/source_ubiquity.py: resolve tracebacks parsing syslog
2274+ and adding the debug log file.
2275+
2276+ -- Brian Murray <brian@ubuntu.com> Fri, 28 Aug 2015 10:03:59 -0700
2277+
2278+apport (2.18-0ubuntu7) wily; urgency=medium
2279+
2280+ * data/package_hook: When creating a Package problem write the version of
2281+ the package to the report. (LP: #1485787)
2282+
2283+ -- Brian Murray <brian@ubuntu.com> Mon, 17 Aug 2015 15:40:39 -0700
2284+
2285+apport (2.18-0ubuntu6) wily; urgency=medium
2286+
2287+ * Drop apport-noui from test dependencies, as whoopsie interferes with the
2288+ test crashes while the test suite runs. (LP: #1478115)
2289+ * Restore whoopsie dependency of apport-noui.
2290+ * apport-noui.service: Add missing Type=oneshot, to fix restart limits with
2291+ crashes happening in rapid succession.
2292+ * Merge test fixes from trunk.
2293+ * data/package-hooks/source_linux.py: Fix PEP-8 error.
2294+
2295+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 10 Aug 2015 11:25:07 +0200
2296+
2297+apport (2.18-0ubuntu5) wily; urgency=medium
2298+
2299+ * apport-noui: Remove the dependency on whoopsie as it causes test failures.
2300+
2301+ -- Brian Murray <brian@ubuntu.com> Fri, 24 Jul 2015 13:23:03 -0700
2302+
2303+apport (2.18-0ubuntu4) wily; urgency=medium
2304+
2305+ * whoopsie-upload-all: restore import of apport.fileutils which seems to
2306+ resolve some test failures.
2307+
2308+ -- Brian Murray <brian@ubuntu.com> Thu, 23 Jul 2015 12:17:01 -0700
2309+
2310+apport (2.18-0ubuntu3) wily; urgency=medium
2311+
2312+ * apport-noui: Depend on watershed and whoopsie since whoopsie-upload-all
2313+ requires whoopsie to upload crashes.
2314+ * apport-noui.upstart: Utilize watershed to only launch one instance of
2315+ whoopsie-upload-all.
2316+ * apport-noui.paths: When monitoring /var/crash switch to PathExistsGlob
2317+ since PathChanged will cause whoopsie-upload-all to run more often e.g.
2318+ when .upload and .uploaded files are created.
2319+
2320+ -- Brian Murray <brian@ubuntu.com> Mon, 20 Jul 2015 14:09:23 -0700
2321+
2322+apport (2.18-0ubuntu2) wily; urgency=medium
2323+
2324+ * Fix PEP-8 error in test/test_backend_apt_dpkg.py.
2325+
2326+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 17 Jul 2015 11:43:37 +0200
2327+
2328+apport (2.18-0ubuntu1) wily; urgency=medium
2329+
2330+ * New upstream release. Changes since our last merge from trunk:
2331+ - apport-gtk: Use GtkWidget::valign property instead of GtkMisc::yalign
2332+ which is deprecated in GTK 3.16. Thanks Iain Lane.
2333+ - sandboxutils, make_sandbox(): Don't exit with 0 (success) if the
2334+ ExecutablePath does not exist. (LP: #1462469)
2335+ - sandboxutils, make_sandbox(): Fix second round of package installs to go
2336+ into permanent root dir as well.
2337+ - apt/dpkg install_packages(): If a requested package version is not
2338+ available from apt in the given archive, try to download it from
2339+ Launchpad. Thanks to Brian Murray!
2340+ - kerneloops: Fix crash when determining the version of a custom kernel.
2341+ Thanks Brian Murray. (LP: #1468154)
2342+ - apt/dpkg install_packages(): Ignore -dbg packages whose descriptions
2343+ contain "transitional". (LP: #1469635)
2344+ - Keep "[origin: ...]" information in Package: and Dependencies: fields
2345+ for native-origins.d/ origins, so that it's possible to retrace them.
2346+ Thanks Brian Murray! (LP: #1470572)
2347+ - Add support for retracing with discovering and enabling foreign
2348+ Launchpad PPA origins, as specified in reports' Package:/Dependencies:
2349+ fields. Thanks Brian Murray!
2350+ - hookutils.attach_wifi(): Shorten value of CRDA if iw isn't available on
2351+ the system. Thanks Brian Murray.
2352+ - Fix wrong assertion in crashdb.test_check_duplicate() which surfaces
2353+ under Python 3.5. (LP: #1474539)
2354+ * test/test_backend_apt_dpkg.py: Disable new test assertion for
2355+ unity-services-dbgsym, which doesn't currently work in the autopkgtest
2356+ (but works fine in trunk and on the retracers). To be investigated.
2357+
2358+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 17 Jul 2015 11:03:21 +0200
2359+
2360+apport (2.17.3-0ubuntu4) wily; urgency=medium
2361+
2362+ * apport-gtk.ui: Use "valign" to align the icon on the crash dialog.
2363+ "yalign" is deprecated with GTK 3.16 and the consequent warning causes a
2364+ testsuite failure. Cherry-pick from upstream MP.
2365+
2366+ -- Iain Lane <iain@orangesquash.org.uk> Fri, 05 Jun 2015 11:52:04 +0100
2367+
2368+apport (2.17.3-0ubuntu3) wily; urgency=medium
2369+
2370+ * Merge from trunk:
2371+ - Fix backend_apt_dpkg.test_install_packages_permanent_sandbox test to
2372+ restore proxy settings at the right time.
2373+
2374+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 28 May 2015 16:01:34 +0200
2375+
2376+apport (2.17.3-0ubuntu2) wily; urgency=medium
2377+
2378+ * Merge from trunk:
2379+ - Fix backend_apt_dpkg.test_install_packages_permanent_sandbox test to
2380+ more carefully restore the environment and apt config.
2381+ - Enable suid_dumpable in the init.d script to also get Apport reports
2382+ about suid, unreadable, and otherwise protected binaries. These will be
2383+ "system reports" owned and readable by root only.
2384+ - init.d script: Fix tab usage inconsistencies.
2385+
2386+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 28 May 2015 10:05:40 +0200
2387+
2388+apport (2.17.3-0ubuntu1) wily; urgency=medium
2389+
2390+ * New upstream release:
2391+ - SECURITY UPDATE: When /proc/sys/fs/suid_dumpable is enabled, crashing a
2392+ program that is suid root or not readable for the user would create
2393+ root-owned core files in the current directory of that program. Creating
2394+ specially crafted core files in /etc/logrotate.d or similar could then
2395+ lead to arbitrary code execution with root privileges.
2396+ Now core files do not get written for these kinds of programs, in
2397+ accordance with the intention of core(5).
2398+ Thanks to Sander Bos for discovering this issue!
2399+ (CVE-2015-1324, LP: #1452239)
2400+ - SECURITY UPDATE: When writing a core dump file for a crashed packaged
2401+ program, don't close and reopen the .crash report file but just rewind
2402+ and re-read it. This prevents the user from modifying the .crash report
2403+ file while "apport" is running to inject data and creating crafted core
2404+ dump files. In conjunction with the above vulnerability of writing core
2405+ dump files to arbitrary directories this could be exploited to gain root
2406+ privileges.
2407+ Thanks to Philip Pettersson for discovering this issue!
2408+ (CVE-2015-1325, LP: #1453900)
2409+ - apportcheckresume: Fix "occured" typo, thanks Matthew Paul Thomas.
2410+ (LP: #1448636)
2411+ - signal_crashes test: Fix test_crash_setuid_* to look at whether
2412+ suid_dumpable was enabled.
2413+ - test/run: Run UI tests under dbus-launch, newer GTK versions require this
2414+ now.
2415+
2416+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 20 May 2015 16:58:35 +0200
2417+
2418+apport (2.17.2-0ubuntu2) wily; urgency=medium
2419+
2420+ [ Brian Murray ]
2421+ * Update Vcs information in debian/control.
2422+ * general-hooks/ubuntu.py: update checks for corrupt packages.
2423+
2424+ [ Martin Pitt ]
2425+ * Disable KDE tests for the time being. apport-kde consistently crashes
2426+ in PyQT5 since vivid (LP #1442512), don't block package migration on this.
2427+
2428+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 18 May 2015 08:36:07 +0200
2429+
2430+apport (2.17.2-0ubuntu1) vivid; urgency=medium
2431+
2432+ * New upstream bug fix release:
2433+ - SECURITY UPDATE: Disable crash forwarding to containers. The previous
2434+ fix in 2.17.1 was not sufficient against all attack scenarios. By
2435+ binding to specially crafted sockes, a normal user program could forge
2436+ arbitrary entries in /proc/net/unix. We cannot currently rely on a
2437+ kernel-side solution for this; this feature will be re-enabled once it
2438+ gets re-done to be secure. (LP: #1444518)
2439+ - apport-kde: Fix crash when showing byte array values. Thanks Jonathan
2440+ Riddell. (LP: #1443659)
2441+ - Really create a better duplicate signature for recoverable problems,
2442+ using ExecutablePath. Thanks Brian Murray. (LP: #1316763)
2443+ * Disable Launchpad crash upload for final Ubuntu 15.04.
2444+
2445+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 16 Apr 2015 17:51:18 -0500
2446+
2447+apport (2.17.1-0ubuntu2) vivid; urgency=medium
2448+
2449+ * Fix crash in kde frontend LP: #1443659
2450+
2451+ -- Jonathan Riddell <jriddell@ubuntu.com> Wed, 15 Apr 2015 13:29:04 +0200
2452+
2453+apport (2.17.1-0ubuntu1) vivid; urgency=medium
2454+
2455+ * New upstream bug fix release:
2456+ - SECURITY UPDATE: Fix root privilege escalation through crash forwarding
2457+ to containers.
2458+ Version 2.13 introduced forwarding a crash to a container's apport. By
2459+ crafting a specific file system structure, entering it as a namespace
2460+ ("container"), and crashing something in it, a local user could access
2461+ arbitrary files on the host system with root privileges.
2462+ Thanks to Stéphane Graber for discovering and fixing this!
2463+ (CVE-2015-1318, LP: #1438758)
2464+ - apport-kde tests: Fix imports to make tests work again.
2465+ - Fix UnicodeDecodeError on parsing non-ASCII environment variables.
2466+ - apport: use the proper pid when calling apport in another PID namespace.
2467+ Thanks Brian Murray. (LP: #1300235)
2468+
2469+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 14 Apr 2015 09:10:17 -0500
2470+
2471+apport (2.17-0ubuntu2) vivid; urgency=medium
2472+
2473+ * Update apport-kde runtime dependencies. It requires pyqt5 not
2474+ pykde4 LP: #1439784
2475+
2476+ -- Harald Sitter <sitter@kde.org> Fri, 10 Apr 2015 10:52:34 +0200
2477+
2478+apport (2.17-0ubuntu1) vivid; urgency=medium
2479+
2480+ * New upstream release. Changes since our last snapshot:
2481+ - general-hooks/generic.py: Add systemd journal warnings and errors to the
2482+ new "JournalErrors" field.
2483+
2484+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 31 Mar 2015 09:25:40 +0200
2485+
2486+apport (2.16.2-0ubuntu5) vivid; urgency=medium
2487+
2488+ * KDE: Port Apport to Qt 5 LP: #1436328
2489+
2490+ -- Jonathan Riddell <jriddell@ubuntu.com> Fri, 27 Mar 2015 15:09:19 +0100
2491+
2492+apport (2.16.2-0ubuntu4) vivid; urgency=medium
2493+
2494+ * general-hooks/ubuntu.py: for reports where the ProblemType is Package
2495+ always include information about the apt and dpkg versions.
2496+
2497+ -- Brian Murray <brian@ubuntu.com> Fri, 20 Mar 2015 13:23:45 -0700
2498+
2499+apport (2.16.2-0ubuntu3) vivid; urgency=medium
2500+
2501+ * package-hooks/source_linux.py: Don't check BootDmesg for staging drivers
2502+ anymore since it is no longer included in the crash report. (LP: #1430168)
2503+
2504+ -- Brian Murray <brian@ubuntu.com> Wed, 11 Mar 2015 12:57:05 -0700
2505+
2506+apport (2.16.2-0ubuntu2) vivid; urgency=medium
2507+
2508+ * Merge from trunk:
2509+ - Adjust signal_crashes.test_crash_setuid_{keep,drop} for systemd.
2510+
2511+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 09 Mar 2015 11:32:18 +0100
2512+
2513+apport (2.16.2-0ubuntu1) vivid; urgency=medium
2514+
2515+ * New upstream bug fix release:
2516+ - ProblemReport: Set a timestamp of 0 in gzip compressed fields; they are
2517+ meaningless and cause unnecessary jitter in the output.
2518+ - launchpad backend: Fix unclosed file in upload().
2519+ - launchpad backend: Fix wrong use of filter() with Python 3.
2520+ - launchpad backend download(): Try to convert textual values from byte
2521+ arrays into into strings.
2522+ - ui.py, collect_info(): Fix crash on bug pattern checking with broken
2523+ gzipped values. (LP: #1345653)
2524+ - hookutils, attach_drm_info(): Avoid UnicodeDecodeErrors in Python 3 when
2525+ reading binary files. Thanks Chad Miller. (LP: #1425254)
2526+ - apport-gtk: Update legacy icon names to modern GTK ones, to fix icons
2527+ under GNOME. Thanks Scott Sanbar. (LP: #1422176)
2528+ - Move backend_apt_dpkg testsuite to use Ubuntu 14.04 LTS.
2529+ - hookutils, attach_dmesg(): Only attach dmesg as CurrentDmesg, drop
2530+ BootDmesg as /var/log/dmesg is upstart specific and thus not reliably
2531+ correct any more.
2532+ - hookutils, recent_syslog(): Read system logs from the journal when
2533+ running under systemd, and fall back to /var/log/syslog if not.
2534+ - hookutils, attach_mac_events(): Read kernel violation messages from
2535+ dmesg instead of /var/log/kern.log, as that's specific to rsyslog and
2536+ its configuration.
2537+
2538+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 02 Mar 2015 11:37:32 +0100
2539+
2540+apport (2.16.1-0ubuntu2) vivid; urgency=medium
2541+
2542+ * Merge from trunk:
2543+ - hookutils.in_session_of_problem(): Check $XDG_SESSION_ID and
2544+ /run/systemd/sessions instead of the cgroup, as the latter does not work
2545+ under cgmanager.
2546+
2547+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 10 Feb 2015 12:52:00 +0100
2548+
2549+apport (2.16.1-0ubuntu1) vivid; urgency=medium
2550+
2551+ * New upstream release:
2552+ - Set gettext translation domain in setup.cfg, so that tools like
2553+ dh_translations pick it up and show correct polkit translations.
2554+ Thanks to Aron Xu! (LP: #1306857)
2555+ - Report.get_logind_session(): Check $XDG_SESSION_ID and
2556+ /run/systemd/sessions instead of the cgroup, as the latter does not work
2557+ under cgmanager.
2558+
2559+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 10 Feb 2015 11:39:05 +0100
2560+
2561+apport (2.16-0ubuntu1) vivid; urgency=medium
2562+
2563+ * New upstream release:
2564+ - Add a new method ProblemReport.extract_keys() which writes binary keys
2565+ (which can be very large) directly to files without loading them all
2566+ into memory first. Use that in apport-unpack. Thanks Louis Bouchard!
2567+ (LP: #1307413)
2568+ - launchpad backend: Work with Python 3, now that launchpadlib exists for
2569+ Python 3. (LP: #1153671)
2570+ - apport-bug, apport-gtk: Also check for $WAYLAND_SESSION, to use
2571+ apport-gtk instead of apport-cli under Wayland. Thanks Tim Lunn.
2572+ (LP: #1418766)
2573+ - apport-gtk: When running under Wayland, avoid Gdk/Wnck operation for
2574+ setting crash window modal to the PID of the crashed window; these only
2575+ work under X11.
2576+ - Don't install the test suite any more, to save 1 MB of installed space.
2577+ It can be run out of trunk easily enough, and distributions can install
2578+ it from tests/ if they desire.
2579+ - hookutils, attach_root_command_outputs(): Fix UnicodeDecodeError crash
2580+ for non-textual values. (LP: #1370259)
2581+ - ui.py: Only provide a UI to hooks if the crash db will accept the
2582+ report. This avoids asking questions if the report is merely sent to
2583+ whoopsie for Ubuntu stable releases. Thanks Brian Murrary.
2584+ (LP: #1084979)
2585+ - whoopsie-upload-all: Add package information to the report before
2586+ calling package hooks. Thanks Brian Murray.
2587+ - Fix check for available terminal when checking whether to display the
2588+ "Examine locally" button.
2589+ * Add general hook for detecting Wayland sessions and tagging them with
2590+ "wayland-session". Thanks Timm Lunn! (LP: #1418262)
2591+ * debian/tests/upstream-system: Copy tests from source tree, as
2592+ /usr/share/apport/testsuite/ does not exist any more.
2593+
2594+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 06 Feb 2015 10:11:30 +0100
2595+
2596+apport (2.15.1-0ubuntu4) vivid; urgency=medium
2597+
2598+ * data/whoopsie-upload-all: need to add package information to the report
2599+ before we can add package specific information to it.
2600+
2601+ -- Brian Murray <brian@ubuntu.com> Mon, 26 Jan 2015 10:06:06 -0800
2602+
2603+apport (2.15.1-0ubuntu3) vivid; urgency=medium
2604+
2605+ * etc/apport/crashdb.conf: Enable crash reports on Launchpad for vivid.
2606+
2607+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 26 Jan 2015 17:57:03 +0100
2608+
2609+apport (2.15.1-0ubuntu2) vivid; urgency=medium
2610+
2611+ * Add systemd units for apport-noui.
2612+ * Merge from trunk:
2613+ - hookutils, attach_root_command_outputs(): Fix UnicodeDecodeError crash
2614+ for non-textual values. (LP: #1370259)
2615+
2616+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 08 Jan 2015 17:33:12 +0100
2617+
2618+apport (2.15.1-0ubuntu1) vivid; urgency=medium
2619+
2620+ * New upstream release. Changes since last snapshot:
2621+ - apt/dpkg _search_contents(): Check HTTP last-modified header to avoid
2622+ re-downloading Contents.gz every day unless it actually changed. Thanks
2623+ Brian Murray!
2624+ - apport-gtk: Drop properties which are deprecated in GTK 3.14.
2625+ * debian/tests/control: Wrap dependencies.
2626+ * debian/tests/control: Add gnome-icon-theme; fixes running tests with GTK
2627+ 3.14.
2628+
2629+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 19 Dec 2014 07:45:30 +0100
2630+
2631+apport (2.15-0ubuntu3) vivid; urgency=medium
2632+
2633+ * Merge further test robustification and translation updates from trunk.
2634+
2635+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 16 Dec 2014 11:01:20 +0100
2636+
2637+apport (2.15-0ubuntu2) vivid; urgency=medium
2638+
2639+ * Merge from trunk:
2640+ - Robustify report.test_get_timestamp test.
2641+ - Robustify signal_crashes.test_limit_size test.
2642+
2643+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 04 Dec 2014 09:19:29 +0100
2644+
2645+apport (2.15-0ubuntu1) vivid; urgency=medium
2646+
2647+ * New upstream release. Changes since our snapshot:
2648+ - recoverable_problem: Handle the parent process going away while we're
2649+ attempting to read from proc.
2650+ - apport-retrace: Stop considering a package download error as transient; it
2651+ can too easily lead to unnoticed eternal retry loops.
2652+ - whoopsie-upload-all: Refactor to behave more reliably in case of overlapping
2653+ crash processing. Thanks Steve Langasek and Brian Murray. (LP: #1354318)
2654+ - whoopsie-upload-all: Remove crash reports that have a core dump which is
2655+ broken and cannot be processed by gdb. Thanks Brian Murray. (LP: #1376374)
2656+ - When core size exceeds the limit (3/4 of available memory) and thus the core
2657+ dump is skipped, log this to /var/log/apport.log. (LP: #1387835)
2658+ - apport-gtk: Fix jump-to-top on first click of the details treeview. Thanks
2659+ Marius Gedminas. (LP: #1387328)
2660+ - apport-retrace: Fix location of cached Contents.gz when using --sandbox-dir.
2661+ (LP: #1394798)
2662+ - Fix backend_apt_dpkg.test_install_packages_permanent_sandbox test case with
2663+ proxy env variables with latest apt.
2664+ * Update Vcs-Bzr: for vivid branch.
2665+ * debian/tests: Drop obsolete workarounds, use allow-stderr.
2666+ * Bump Standards-Version to 3.9.6 (no changes necessary).
2667+
2668+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 02 Dec 2014 14:51:59 +0100
2669+
2670+apport (2.14.7-0ubuntu10) vivid; urgency=medium
2671+
2672+ * data/whoopsie-upload-all: confirm that the crash file exists before trying
2673+ to remove it. (LP: #1384358)
2674+
2675+ -- Brian Murray <brian@ubuntu.com> Mon, 03 Nov 2014 17:01:55 -0800
2676+
2677+apport (2.14.7-0ubuntu9) vivid; urgency=medium
2678+
2679+ * data/general_hooks/clickinfo.py: Created a hook to determine package
2680+ and version information for executables that are from click packages.
2681+
2682+ -- Brian Murray <brian@ubuntu.com> Fri, 31 Oct 2014 14:41:14 -0700
2683+
2684+apport (2.14.7-0ubuntu8) utopic; urgency=medium
2685+
2686+ * etc/init.d/apport: Stop setting $PATH in the init.d script. It breaks
2687+ assumptions from /lib/lsb/init-functions.d/ which might call other tools
2688+ which are not in /bin; also, we generally shouldn't meddle with $PATH in
2689+ individual scripts. (LP: #1372665)
2690+
2691+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 20 Oct 2014 14:51:41 -0400
2692+
2693+apport (2.14.7-0ubuntu7) utopic; urgency=medium
2694+
2695+ * Disable Launchpad crash upload for final Ubuntu 14.10.
2696+
2697+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 15 Oct 2014 15:37:02 +0200
2698+
2699+apport (2.14.7-0ubuntu6) utopic; urgency=medium
2700+
2701+ * data/recoverable_problem: Fix a Traceback with how the ValueError was
2702+ matched. (LP: #1345569)
2703+
2704+ -- Brian Murray <brian@ubuntu.com> Mon, 13 Oct 2014 10:02:21 -0700
2705+
2706+apport (2.14.7-0ubuntu5) utopic; urgency=medium
2707+
2708+ [ Evan Dandrea]
2709+ * data/recoverable_problem: Handle the parent process going away while
2710+ we're attempting to read from proc. (LP: #1345569)
2711+
2712+ -- Brian Murray <brian@ubuntu.com> Tue, 07 Oct 2014 15:26:30 -0700
2713+
2714+apport (2.14.7-0ubuntu4) utopic; urgency=medium
2715+
2716+ * data/whoopsie-upload-all: remove crash reports that have a core dump
2717+ which is broken and cannot be processed by gdb. (LP: #1376374)
2718+
2719+ -- Brian Murray <brian@ubuntu.com> Tue, 07 Oct 2014 14:48:28 -0700
2720+
2721+apport (2.14.7-0ubuntu3) utopic; urgency=medium
2722+
2723+ [ Steve Langasek ]
2724+ * Refactor apport-noui/whoopsie-upload-all to behave more reliably in
2725+ case of overlapping crash processing (LP: #1354318):
2726+ - debian/apport-noui.upstart: refactor to make this an 'instance' job
2727+ for each incoming .crash file, and drop the racy handling of non-root
2728+ .crash files (as well as the unnecessary 'env MATCH' line).
2729+ - data/whoopsie-upload-all: refactor report processing to ensure that
2730+ whoopsie-upload-all can be called multiple times in parallel without
2731+ causing any .crash file to be processed more than once.
2732+ - data/whoopsie-upload-all: handle setting ownership of files in
2733+ process_report() instead of relying on this script being called by a
2734+ particular user.
2735+ - data/whoopsie-upload-all: don't spin in wait_uploaded() watching for
2736+ .uploaded files if the corresponding .upload file has been removed out
2737+ from under us.
2738+ - data/whoopsie-upload-all: by default, return immediately instead of
2739+ waiting to see if whoopsie processes all of the crashes.
2740+
2741+ [ Brian Murray ]
2742+ * data/whoopsie-upload-all: indicate that all reports have been uploaded
2743+ even those that were marked for upload earlier.
2744+
2745+ -- Brian Murray <brian@ubuntu.com> Thu, 02 Oct 2014 08:33:49 -0700
2746+
2747+apport (2.14.7-0ubuntu2) utopic; urgency=medium
2748+
2749+ [ Brian Murray ]
2750+ * data/general-hooks/ubuntu.py: check to see if system-image-cli is
2751+ available rather than if /etc/system-image/client.ini exists.
2752+
2753+ [ Martin Pitt ]
2754+ * ui.py: Robustify check if apport-retrace is installed. This brings back
2755+ the "Examine locally" UI option. (LP: #1358734) (Cherry-picked from
2756+ trunk).
2757+
2758+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 04 Sep 2014 12:30:27 +0200
2759+
2760+apport (2.14.7-0ubuntu1) utopic; urgency=medium
2761+
2762+ * New upstream release:
2763+ - Fix interpretation of core dump ulimits: they are in bytes, not KiB.
2764+ (LP: #1346497)
2765+ - apport-retrace: Don't require specifying an operation; default to
2766+ updating the given .crash file. (LP: #1361242)
2767+ - Write report even on UnreportableReasons, so that whoopsie can still
2768+ upload them. (LP: #1360417)
2769+ - apt/dpkg install_packages(): Write a "packages.txt" into sandbox root
2770+ directory to keep track of installed packages and their versions.
2771+ Prerequisite for LP #1352591.
2772+ - apt/dpkg install_packages(): Avoid re-downloading/installing packages
2773+ which are already installed into a permanent sandbox. Prerequisite for
2774+ LP #1352591.
2775+ - sandboxutils.py, make_sandbox(): Drop check for already existing files
2776+ when dynamically resolving libraries and ExecutablePaths; with that,
2777+ these packages would never get updated in a permanent sandbox. The new
2778+ version tracking from above now takes care of that. (LP: #1352591)
2779+ - Fix report.test_add_proc_info test to stop assuming that pid 1 is named
2780+ "init", as one can specify a different one on the kernel command line.
2781+ - report.py, add_gdb_info(): Check for truncated core dumps, and set
2782+ UnreportableReason and raise an IOError on them. Handle this in
2783+ apport-retrace and whoopsie-upload-all to fail properly instead of
2784+ silently producing broken Stacktraces. (LP: #1354571)
2785+
2786+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 29 Aug 2014 12:38:54 +0200
2787+
2788+apport (2.14.6-0ubuntu2) utopic; urgency=medium
2789+
2790+ * Cherry-pick from trunk: Adjust backend_apt_dpkg.test_get_file_package()
2791+ test: newer util-linux versions do not provide /etc/blkid.tab any more.
2792+
2793+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 19 Aug 2014 10:38:44 +0200
2794+
2795+apport (2.14.6-0ubuntu1) utopic; urgency=medium
2796+
2797+ * New upstream bug fix release:
2798+ - general-hooks/generic.py: Fix hook crash if there are non-distro
2799+ libraries and no user interface.
2800+ - collect_info(): Don't assume that reports have a ProblemType. Fixes
2801+ crashes with apport-collect. (LP: #1325729)
2802+ - apport-retrace: Declare -s/-g/-o as mutually exclusive, to get proper
2803+ error messages instead of silent misbehaviour. (LP: #1352450)
2804+ - apport-gtk: Drop usage of deprecated GTK stock items. (LP: #1348116)
2805+
2806+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 18 Aug 2014 07:57:16 +0200
2807+
2808+apport (2.14.5-0ubuntu4) utopic; urgency=medium
2809+
2810+ [ Steve Langasek ]
2811+ * Fix invalid shebang lines for apport-noui maintainer scripts which I
2812+ somehow overlooked.
2813+
2814+ [ Martin Pitt ]
2815+ * Add data/general-hooks/powerpc.py: Collect some PowerPC[64] information.
2816+ Thanks to Thierry FAUCK! (LP: #1336462)
2817+
2818+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 08 Aug 2014 15:13:16 +0200
2819+
2820+apport (2.14.5-0ubuntu3) utopic; urgency=medium
2821+
2822+ * apport-noui: make the package installation automatically enable
2823+ autosubmission, which doesn't currently work on the phone without it;
2824+ and update the package description accordingly. LP: #1351137.
2825+
2826+ -- Steve Langasek <steve.langasek@ubuntu.com> Fri, 01 Aug 2014 15:06:49 -0700
2827+
2828+apport (2.14.5-0ubuntu2) utopic; urgency=medium
2829+
2830+ * data/general-hooks/ubuntu.py: Check for /etc/system-image/client.ini
2831+ instead of /var/log/system-image/client.log since the latter is only
2832+ readable by root.
2833+
2834+ -- Brian Murray <brian@ubuntu.com> Tue, 29 Jul 2014 13:20:54 -0700
2835+
2836+apport (2.14.5-0ubuntu1) utopic; urgency=medium
2837+
2838+ * New upstream bug fix release. Changes since last snapshot:
2839+ - apt/dpkg get_file_package(): If checking for uninstalled packages, don't
2840+ use package information from the host system, but always look it up in
2841+ the correct indexes. Otherwise this returns wrong results when files
2842+ move to a different package between releases. Thanks Brian Murray!
2843+ (LP: #1336062)
2844+ - apt/dpkg install_packages(): Disable fetching apt translation indexes,
2845+ to save some bandwidth.
2846+ - whoopsie-upload-all: Ignore crash reports with incomplete core dumps
2847+ instead of crashing on them. Thanks Brian Murray. (LP: #1329520)
2848+ - etc/default/apport: Fix comment to use "service" instead of calling the
2849+ init.d script directly.
2850+ - whoopsie-upload-all: Collect hooks information to gather ApportVersion,
2851+ NonfreeKernelModules, and SystemImageInfo. Do this before collecting
2852+ package data to minimize hook run time. (LP: #1349579)
2853+ - Adjust report.test_get_logind_session test to work with systemd >= 205.
2854+ - Fix report.test_check_interpreted_twistd test to skip instead of fail if
2855+ twisted is not installed.
2856+
2857+ * Drop automatix.py general hook. Automatix is long gone.
2858+ * etc/apport/blacklist.d/apport: Drop long obsolete npviewer/npplayer
2859+ entries.
2860+ * Drop unnecessary python-gi build dependency.
2861+ * Drop python-twisted-core build dependency. It's just used for one test,
2862+ and will still run in autopkgtest. (Avoids current twisted
2863+ uninstallability in main)
2864+
2865+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 29 Jul 2014 12:26:23 +0200
2866+
2867+apport (2.14.4-0ubuntu3) utopic; urgency=medium
2868+
2869+ * In apport-kde recommend gdb-minimal before gdb
2870+ LP: #1347565 "apport recommends gdb"
2871+
2872+ -- Jonathan Riddell <jriddell@ubuntu.com> Wed, 23 Jul 2014 12:35:16 +0200
2873+
2874+apport (2.14.4-0ubuntu2) utopic; urgency=medium
2875+
2876+ * Merge from trunk:
2877+ - apport-bug: Stop checking the autoreport flag and calling
2878+ whoopsie-upload-all; these two are different tasks, and that breaks bug
2879+ reporting. (LP: #1339663)
2880+
2881+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 10 Jul 2014 17:18:33 +0200
2882+
2883+apport (2.14.4-0ubuntu1) utopic; urgency=medium
2884+
2885+ * New upstream bug fix release:
2886+ - Adjust code to match latest pep8 checker.
2887+ - Report.crash_signature_addresses(): Drop kernel architecture from
2888+ StacktraceAddressSignature field. It isn't useful there (at most the ELF
2889+ architecture, but we don't really need that either). This makes it
2890+ easier to regenerate broken signatures from existing reports on
2891+ different architectures. (LP: #1336565)
2892+ * Fix PEP-8 errors in Ubuntu hooks.
2893+
2894+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 03 Jul 2014 06:50:06 +0200
2895+
2896+apport (2.14.3-0ubuntu2) utopic; urgency=medium
2897+
2898+ * Turn on Launchpad crash submission for the devel series.
2899+
2900+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 18 Jun 2014 15:40:26 +0200
2901+
2902+apport (2.14.3-0ubuntu1) utopic; urgency=medium
2903+
2904+ * New upstream bug fix release:
2905+ - Add kernel package version to the various kernel-related hooks. Thanks
2906+ Brian Murray. (LP: #1316845)
2907+ - Use package name in duplicate signature for recoverable problems. Thanks
2908+ Brian Murray. (LP: #1316763)
2909+ - Have whoopsie-upload-all upload recoverable problems. Thanks Brian
2910+ Murray. (LP: #1319099)
2911+
2912+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 30 May 2014 15:35:53 +0200
2913+
2914+apport (2.14.2-0ubuntu4) utopic; urgency=medium
2915+
2916+ * data/package-hooks/source_linux.py: create a duplicate signature for
2917+ suspend resume failures. (LP: #1316841)
2918+
2919+ -- Brian Murray <brian@ubuntu.com> Fri, 16 May 2014 09:46:51 -0700
2920+
2921+apport (2.14.2-0ubuntu3) utopic; urgency=medium
2922+
2923+ * debian/apport-noui.upstart: remove early exit (LP: #1235436)
2924+ * debian/apport-noui.dirs: create /var/lib/apport (LP: #1235436)
2925+
2926+ -- Brian Murray <brian@ubuntu.com> Wed, 14 May 2014 12:26:39 -0700
2927+
2928+apport (2.14.2-0ubuntu2) utopic; urgency=medium
2929+
2930+ * Merge "backend_apt_dpkg.test_install_packages_versioned: Fix namespacing
2931+ of ver" fix from trunk, to better debug the autopkgtest failure on i386.
2932+
2933+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 02 May 2014 17:30:39 +0200
2934+
2935+apport (2.14.2-0ubuntu1) utopic; urgency=medium
2936+
2937+ * New upstream release:
2938+ - Move error handling for invalid .crash files into collect_info(), so
2939+ that it also applies when using the "Show Details..." button in the UI.
2940+ Otherwise the UI just hangs eternally at this point when encountering
2941+ broken core dumps. (LP: #1282349)
2942+ - apt/dpkg install_packages(): Try to install the requested package
2943+ version instead of always picking the most recent one. This should
2944+ improve retracing results for older crash reports. Thanks to Brian
2945+ Murray for inspiring this.
2946+ - sandboxutils.py, make_sandbox(): When determining packages to install
2947+ from ProcMaps, look up and use the package versions from the reporter,
2948+ to improve retracing results. Thanks Brian Murray for the initial patch!
2949+ - iwlwifi_error_dump: Make reports private, and subscribe
2950+ canonical-kernel-team. Thanks Seth Forshee. (LP: #1313818)
2951+ - signal_crashes test: Time out after 5 seconds if the test process does
2952+ not terminate on the specified signal, to avoid eternal hangs.
2953+ - signal_crashes test: Ensure that we don't inherit an ignored SIGQUIT
2954+ from the caller.
2955+ * Switch Vcs-* to utopic branch.
2956+ * Add build-essential test dependency, some tests call gcc.
2957+ * Install iwl_wifi_error_dump and corresponding udev rules. (Second part of
2958+ LP: #1313818)
2959+
2960+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 30 Apr 2014 14:07:17 +0200
2961+
2962+apport (2.14.1-0ubuntu3) trusty; urgency=medium
2963+
2964+ * Cherry-pick from trunk: Delay the import of the glob and re modules in the
2965+ python apport hook, and only import them when needed. Speeds up
2966+ interpreter startup time by 50%. (LP: #1307684)
2967+
2968+ -- Matthias Klose <doko@ubuntu.com> Tue, 15 Apr 2014 08:42:00 +0200
2969+
2970+apport (2.14.1-0ubuntu2) trusty; urgency=medium
2971+
2972+ * etc/apport/crashdb.conf: Disable Launchpad crash/kernel reports for
2973+ the final release. Only report to http://errors.ubuntu.com from now on.
2974+
2975+ -- Brian Murray <brian@ubuntu.com> Thu, 10 Apr 2014 14:26:24 -0700
2976+
2977+apport (2.14.1-0ubuntu1) trusty; urgency=medium
2978+
2979+ * New upstream bug fix release:
2980+ - Fix FileNotFoundError from temporary launchpadlib cache dir cleanup.
2981+ (LP: #1300474)
2982+ - ui.py, open_url(): Skip any Python cleanup/atexit handlers in the forked
2983+ xdg-open child, to avoid calling them twice. (Side issue of LP #1300474
2984+ and #1282713)
2985+ - apport-kde: Work around crash in sip by skipping the destructors of SIP
2986+ objects. Thanks Rohan Garg! (LP: #1282713)
2987+
2988+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 04 Apr 2014 15:34:06 +0100
2989+
2990+apport (2.14-0ubuntu1) trusty; urgency=medium
2991+
2992+ * New upstream release:
2993+ - Add KernelCrash reports when iwlwifi encounters a firmware error (via
2994+ the "error_dump" uevent and the new iwlwifi_error_dump helper). Thanks
2995+ Seth Forshee!
2996+ - launchpad: Really use a temporary launchpadlib cache dir by default.
2997+ This avoids piling up gigabytes of useless cached data over time, which
2998+ also tends to break every now and then.
2999+ - Fix crash in logind session detection. Thanks Dimitri Ledkov!
3000+ (LP: #1296026)
3001+
3002+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 31 Mar 2014 11:47:19 +0200
3003+
3004+apport (2.13.3-0ubuntu1) trusty; urgency=medium
3005+
3006+ [ Martin Pitt ]
3007+ * New upstream release:
3008+ - etc/cron.daily/apport: Cleanup .drkonqi files after 7 days. Thanks Harald
3009+ Sitter.
3010+ - ui.py: Try to grab session D-BUS address from user's session when being
3011+ called through pkexec. (LP: #1287460)
3012+
3013+ [ Brian Murray ]
3014+ * data/package-hooks/source_linux.py: ensure dupe_sig1 and dupe_sig2 are
3015+ None if they are not found
3016+
3017+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 07 Mar 2014 16:34:45 +0100
3018+
3019+apport (2.13.2-0ubuntu5) trusty; urgency=medium
3020+
3021+ * data/package-hooks/source_linux.py: remove line feed from
3022+ DuplicateSignature as it causes issues on the error tracker
3023+
3024+ -- Brian Murray <brian@ubuntu.com> Tue, 18 Feb 2014 13:36:50 -0800
3025+
3026+apport (2.13.2-0ubuntu4) trusty; urgency=medium
3027+
3028+ * data/kernel_oops: include the package version in addition to the name
3029+
3030+ -- Brian Murray <brian@ubuntu.com> Fri, 14 Feb 2014 14:09:39 -0800
3031+
3032+apport (2.13.2-0ubuntu3) trusty; urgency=medium
3033+
3034+ * package-hooks/source_linux.py: create a DuplicateSignature for kernel
3035+ oops reports thereby allowing them to be bucketed and consolidated in
3036+ the Ubuntu error tracker
3037+
3038+ -- Brian Murray <brian@ubuntu.com> Thu, 13 Feb 2014 14:33:07 -0800
3039+
3040+apport (2.13.2-0ubuntu2) trusty; urgency=medium
3041+
3042+ * Merge from trunk:
3043+ - Fix backend_apt_dpkg.test_get_file_package_uninstalled test that got
3044+ broken in the previous release.
3045+
3046+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 27 Jan 2014 15:21:06 +0100
3047+
3048+apport (2.13.2-0ubuntu1) trusty; urgency=medium
3049+
3050+ * New upstream bug fix release:
3051+ - Fix crash if systemd cgroup is unreadable in /sys, such as in
3052+ containers. (LP: #1270783)
3053+ - apt/dpkg: Also consider Contents.gz from updates/security/proposed
3054+ pockets, so that e. g. apport-retrace works for crash reports with files
3055+ that are new in those. Thanks to Brian Murray for the initial patch.
3056+ (LP: #1271258)
3057+ - Only drop internal/private keys (starting with '_') from uploading to
3058+ the crash DB and from the UI report views, but not already when updating
3059+ the report. (LP: #1272505)
3060+ - data/apport: Fix stdout/stderr initialization of the error log, don't
3061+ close the original fd after dup2'ing as it is usually already fd 1. This
3062+ makes Apport work with Python 3.4. (LP: #1272355)
3063+ - Adjust report tests to work with Python 3.4 (LP: #1272355)
3064+
3065+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 27 Jan 2014 11:33:51 +0100
3066+
3067+apport (2.13.1-0ubuntu2) trusty; urgency=medium
3068+
3069+ * debian/apport.upstart: Use running-in-container instead of checking init's
3070+ environment.
3071+ * Re-enable Launchpad crash reports for Trusty. (LP: #1271887)
3072+
3073+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 24 Jan 2014 17:34:56 +0100
3074+
3075+apport (2.13.1-0ubuntu1) trusty; urgency=medium
3076+
3077+ * New upstream release:
3078+ - Fix report.test_get_timestamp test for running in other time zones.
3079+ - Fix erroneous "gdb-multiarch not installed" warnings in ui tests.
3080+ - Fix ui.test_run_crash_older_session test for running as root.
3081+ - Fix ui.test_run_crash_older_session for different file system file
3082+ orders.
3083+
3084+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 10 Jan 2014 10:58:54 +0100
3085+
3086+apport (2.13-0ubuntu1) trusty; urgency=medium
3087+
3088+ * New upstream release. Changes since our previous merge:
3089+ - Do not report keys starting with '_' to the crash database. This can be
3090+ used for keeping private keys in .crash files between crash and report
3091+ time, or to store data between hooks etc., without cluttering reports.
3092+ - UI: In "run all pending crashes" mode, skip reports that happened during
3093+ logout in a desktop (specifically, logind) session; they are
3094+ uninteresting and confusing to see at the next login. (LP: #1033932)
3095+ They can still be reported manually with running the .crash file
3096+ directly, but this sufficiently reduces the need to explicitly flag
3097+ whether the report concerns a logout crash. (LP: #1067646)
3098+ - Add support for PID namespaces (Linux containers): Crashes originating
3099+ from a container on a system running a >= 3.12 kernel will be
3100+ automatically redirected to apport inside the container, or ignored if
3101+ apport is not installed in the container. Thanks to Stéphane Graber!
3102+ - Print a warning when trying to retrace a report from a foreign
3103+ architecture and gdb-multiarch is not installed. (LP: #1239395)
3104+ - etc/init.d/apport: Don't change core_pattern when running in a
3105+ container, as this influences the host and other containers, too.
3106+ * apport/ui.py: Rename "MarkForUpload" whoopsie hack field to
3107+ "_MarkForUpload" and remove delta from launchpad.py. Fields starting with
3108+ '_' are now considered private.
3109+ * debian/apport.upstart: Add "%P" macro to core_pattern, to enable Linux
3110+ container handling with upstart.
3111+ * debian/apport.upstart: Don't change core_pattern when running in a
3112+ container, as this influences the host and other containers, too.
3113+ (LP: #1267728)
3114+
3115+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 10 Jan 2014 09:07:07 +0100
3116+
3117+apport (2.12.7-0ubuntu6) trusty; urgency=medium
3118+
3119+ * Merge from trunk:
3120+ - setup.py: Make updating of hashbangs work when building without Java,
3121+ and also apply it on bin/.
3122+ * Bump Standards-Version to 3.9.5, no changes necessary.
3123+
3124+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 07 Jan 2014 18:41:12 +0100
3125+
3126+apport (2.12.7-0ubuntu5) trusty; urgency=low
3127+
3128+ * Modify the location of apport/autoreport from /etc to /var/lib to be more
3129+ compatible with phablet images. Remove instance from apport-noui upstart
3130+ job. (LP: #1235436)
3131+
3132+ -- Brian Murray <brian@ubuntu.com> Mon, 06 Jan 2014 13:00:41 -0800
3133+
3134+apport (2.12.7-0ubuntu4) trusty; urgency=medium
3135+
3136+ * In python3 (unlike python2) file object does not have "splitlines()"
3137+ method, instead one iterate over the lines in the file directly. (LP:
3138+ #1265735)
3139+
3140+ -- Dimitri John Ledkov <xnox@ubuntu.com> Fri, 03 Jan 2014 08:36:55 +0000
3141+
3142+apport (2.12.7-0ubuntu3) trusty; urgency=medium
3143+
3144+ * Merge from trunk:
3145+ - test_signal_crashes: Clean up unexpected reports after every test, to
3146+ avoid breaking all subsequent tests.
3147+ - test_signal_crashes: Stop checking that gdb prints nothing on stderr, as
3148+ latest gdb 7.6.50 now almost always prints some about missing source
3149+ files.
3150+ * During package build, only run subset of tests that work on buildds, and
3151+ make any failure fail the build. The full test suite is run as
3152+ autopkgtest.
3153+
3154+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 19 Dec 2013 08:29:02 +0100
3155+
3156+apport (2.12.7-0ubuntu2) trusty; urgency=low
3157+
3158+ * data/package-hooks/source_ubiquity.py: only warn people about passwords in
3159+ the debug log file if they are running in debug mode (LP: #1257159)
3160+ * data/general-hooks/ubuntu.py: gather more information for dpkg already
3161+ installed and configured package install failures
3162+
3163+ -- Brian Murray <brian@ubuntu.com> Mon, 09 Dec 2013 14:20:12 -0800
3164+
3165+apport (2.12.7-0ubuntu1) trusty; urgency=low
3166+
3167+ [ Martin Pitt ]
3168+ * New upstream release:
3169+ - Properly fall back to lsb_release if /etc/os-release is invalid.
3170+ - report.py, add_proc_info(): Add "CurrentDesktop" field with the value of
3171+ $XDG_CURRENT_DESKTOP, if present. (LP: #1247904)
3172+ - fileutils.py, get_all_system_reports(): Filter out "guest..." users,
3173+ they might have a system UID. (LP: #1250679)
3174+ - apt/dpkg: Don't call dpkg-divert with full path, it moved in Ubuntu
3175+ 14.04. (LP: #1252305)
3176+ * launchpad.py: Ignore "MarkForUpload" field, it's just for internal
3177+ communication with whoopsie.
3178+
3179+ [ Andy Whitcroft ]
3180+ * package-hooks/source_linux.py: pull forward fix to generify linux-meta
3181+ to linux mapping. (LP: #1229611)
3182+ * package-hooks/source_linux.py: pull forward kernel tagging for
3183+ linux-lts- family kernels. (LP: #1229611)
3184+
3185+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 19 Nov 2013 09:11:53 +0100
3186+
3187+apport (2.12.6-0ubuntu1) trusty; urgency=low
3188+
3189+ * New upstream security/bug fix release:
3190+ - SECURITY FIX: For setuid programs which drop their privileges after
3191+ startup, make the report and core dumps owned by root, to avoid possible
3192+ data disclosure. Also, change core dump files to permissions "0600".
3193+ Thanks to Martin Carpenter for discovering this!
3194+ (CVE-2013-1067, LP: #1242435)
3195+ - sandboxutils.needed_runtime_packages(): Create cache directory for
3196+ Contents.gz if missing. (LP: #933199)
3197+ - apt/dpkg: Recognize options in apt sources.list. (LP: #1238620)
3198+ * Move Vcs-Bzr to trusty branch.
3199+
3200+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 25 Oct 2013 06:49:19 +0200
3201+
3202+apport (2.12.5-0ubuntu2) saucy; urgency=low
3203+
3204+ * etc/apport/crashdb.conf: Disable Launchpad crash/kernel reports for the
3205+ final release. Only report to http://errors.ubuntu.com from now on.
3206+
3207+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 11 Oct 2013 12:11:45 +0200
3208+
3209+apport (2.12.5-0ubuntu1) saucy; urgency=low
3210+
3211+ * New upstream bug fix release:
3212+ - Report.add_os_info(): Do not overwrite already existing data.
3213+ (LP: #1226776)
3214+ - kernel_oops hook: Collect uname at the time of invoking the hook,
3215+ instead of at data collection time. (LP: #1226776)
3216+ - Replace fixed size icons with PNGs, which are more efficient and avoid
3217+ rendering artifacts. (LP: #1231763)
3218+
3219+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 27 Sep 2013 05:56:30 +0200
3220+
3221+apport (2.12.4-0ubuntu1) saucy; urgency=low
3222+
3223+ * New upstream release:
3224+ - Update icons to new design from Vishnoo Charan Reddy, many thanks!
3225+ (LP: #1079639)
3226+
3227+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 19 Sep 2013 13:27:03 -0500
3228+
3229+apport (2.12.3-0ubuntu1) saucy; urgency=low
3230+
3231+ * New upstream bug fix release:
3232+ - ProblemReport.write_mime(): Adjust MIMEText handling to latest Python
3233+ 3.3 upstream changes which now don't tolerate passing bytes any more.
3234+ (LP: #1227381)
3235+ - apport-gtk: Don't use obsolete add_with_viewport() method any more.
3236+ - Fix ui_present_report_details() "modal_for" keyword for all UI
3237+ implementations, so that --hanging works for -cli and -kde, too.
3238+ (LP: #1213790)
3239+
3240+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 19 Sep 2013 10:36:06 -0500
3241+
3242+apport (2.12.2-0ubuntu1) saucy; urgency=low
3243+
3244+ * New upstream bug fix release. Changes since previous snapshot:
3245+ - crash-digger: Write pid into lock file. Thanks Steve Langasek.
3246+ - apport-gtk: When loading a Bug report from a file, properly set up for
3247+ bug reporting mode. (LP: #1226140)
3248+ - Move "program is not installed any more" check from report loading into
3249+ data collection, so that crash reports can be moved and reported on
3250+ machines without that program installed. (LP: #1226030)
3251+ * data/general-hooks/ubuntu.py: Add output of "system-image-info -i" to
3252+ reports as field "SystemImageInfo", to better identify phablet builds.
3253+ (LP: #1225113)
3254+ * Add gdb-minimal dependency to apport-noui, as for crashes we always need a
3255+ StacktraceAddressSignature at least. (part of LP #1226030)
3256+
3257+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 17 Sep 2013 16:25:55 -0500
3258+
3259+apport (2.12.1-0ubuntu4) saucy; urgency=low
3260+
3261+ * whoopsie-upload-all: Add a -t/--timeout option. In Jenkins we don't want
3262+ to block on upload for 30 mins, but it's still a reasonable timeout on
3263+ phones.
3264+
3265+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 12 Sep 2013 11:50:22 -0400
3266+
3267+apport (2.12.1-0ubuntu3) saucy; urgency=low
3268+
3269+ * data/general-hooks/ubuntu-gnome.py: Add tag when using the gnome3-next
3270+ PPA.
3271+ * data/general-hooks/cloud_archive.py: Fix IndexError if Package field does
3272+ not exist.
3273+ * Merge from trunk:
3274+ - fileutils.py, get_{new,all}_reports(): Don't consider reports which are
3275+ readable, but not writable. (LP: #1098844)
3276+ - test_ui_kde.py: Cleanly skip the test if PyQt/PyKDE are not installed,
3277+ instead of failing.
3278+
3279+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 30 Aug 2013 12:42:01 +0200
3280+
3281+apport (2.12.1-0ubuntu2) saucy; urgency=low
3282+
3283+ * Don't provide arguments to whoopsie-upload-all. It doesn't take any.
3284+ * Do not attempt to install the now dead apport-noui frontend.
3285+
3286+ -- Evan Dandrea <ev@ubuntu.com> Mon, 19 Aug 2013 15:25:05 +0100
3287+
3288+apport (2.12.1-0ubuntu1) saucy; urgency=low
3289+
3290+ [ Martin Pitt ]
3291+ * New upstream release. Changes since our previous snapshot:
3292+ - Drop apport-noui in favour of whoopsie-upload-all. We don't want to
3293+ process hooks when run noninteractively, since they may ask questions or
3294+ determine a report is not due to a bug in Ubuntu. whoopsie-upload-all
3295+ skips these hooks.
3296+ - apport/report.py: Gracefully handle being unable to get the source package
3297+ for a binary package, as when the latter does not exist in the cache.
3298+ (LP: #1097773)
3299+ * data/general-hooks/ubuntu-gnome.py: Switch to Tim Lunn's duplicate DB for
3300+ the Ubuntu GNOME PPA.
3301+
3302+ [ Evan Dandrea ]
3303+ * Call whoopsie-upload-all from the apport-noui upstart job instead of
3304+ the now-dead apport-noui frontend.
3305+
3306+ -- Evan Dandrea <ev@ubuntu.com> Mon, 19 Aug 2013 14:42:26 +0100
3307+
3308+apport (2.12-0ubuntu3) saucy; urgency=low
3309+
3310+ * Add an upstart job and package to handle automatic error reporting.
3311+
3312+ -- Evan Dandrea <ev@ubuntu.com> Tue, 06 Aug 2013 11:17:48 +0100
3313+
3314+apport (2.12-0ubuntu2) saucy; urgency=low
3315+
3316+ * Merge from trunk:
3317+ - sandboxutils.py, make_sandbox(): Install packages from Package: and
3318+ Dependencies: fields also if we have a ProcMaps: field and there are any
3319+ third-party packages. This fixes retracing crashes that use PPAs (as they
3320+ don't have Contents.gz).
3321+ - Robustify "progress bar visible" GTK and KDE UI checks for the faster
3322+ collection due to dropping lsb_release.
3323+
3324+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 02 Aug 2013 16:03:43 +0200
3325+
3326+apport (2.12-0ubuntu1) saucy; urgency=low
3327+
3328+ * New upstream release:
3329+ - recoverable_problem: Can take the PID as an argument.
3330+ - Add data/whoopsie-upload-all: Process all pending crashes and mark them
3331+ for whoopsie upload, but do not upload them to any other crash database.
3332+ Wait until whoopsie is done uploading.
3333+ - Eliminate multiple calls to lsb_release by caching the result. On
3334+ systems which provide /etc/os-release, use that instead of lsb_release.
3335+ (LP: #1164742)
3336+ - launchpad.py: Show the Python major version in the error message about
3337+ missing launchpadlib.
3338+ - ui.py: Check if options for updating and reporting a new bug get used
3339+ together, and give a proper error message in this case. (LP: #1071905)
3340+ - apport: Fix "Exectuable" typo, leading to reports not being synced on
3341+ upstart crashes. Thanks James Hunt. (LP: #1203744)
3342+ - Rename apport-gtk-mime.desktop to apport-gtk.desktop and drop the
3343+ old apport-gtk.desktop that wasn't even being installed. With that, the
3344+ window will be shown as "Report a problem..." instead of "Apport-gtk" in
3345+ GNOME shell and other DEs. Thanks Jeremy Bicha. (LP: #1207496)
3346+ - report.py, add_gdb_info(): Fix crash if gdb cannot load the symbol map.
3347+ (LP: #1171484)
3348+ - apport-retrace: Fix crash when using --sandbox without --cache.
3349+ (LP: #1197034)
3350+ - Fix error message when PID is inaccessible. (LP: #1204718)
3351+ - doc/data-format.tex: Drop unused "OS" and "OSRelease" fields, replace
3352+ with "DistroRelease" which is actually being used. (LP: #1018387)
3353+ * debian/apport-gtk.install: Adjust for desktop file rename.
3354+ * debian/apport.install: Install whoopsie-upload-all.
3355+ * launchpad.py: Show package name in 'launchpadlib not installed' error
3356+ message, and give a more direct error message when trying to use this
3357+ through Python 3. (LP: #1071905)
3358+
3359+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 02 Aug 2013 11:30:12 +0200
3360+
3361+apport (2.11-0ubuntu1) saucy; urgency=low
3362+
3363+ * New upstream release:
3364+ - data/apport-noui: A noninteractive frontend for automatic error
3365+ reporting. apport-bug will use this if the /etc/apport/autoreport flag
3366+ file exists.
3367+ - hookutils.py, attach_upstart_logs(): Also attach
3368+ ~/.cache/upstart/application-<desktopname>.log for any *.desktop file
3369+ shipped by a package.
3370+ * debian/apport.install: Ship the new apport-noui frontend.
3371+
3372+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 17 Jul 2013 09:48:42 +0200
3373+
3374+apport (2.10.2-0ubuntu4) saucy; urgency=low
3375+
3376+ [ Brian Murray ]
3377+ * Avoid a crash when handling dpkg terminal log files with unicode data in
3378+ them
3379+
3380+ [ Evan Dandrea ]
3381+ * Fix the order of suid_dumpable and core_pattern. Thanks Seth Arnold
3382+ (LP: #1194541).
3383+
3384+ -- Evan Dandrea <ev@ubuntu.com> Mon, 08 Jul 2013 15:50:49 +0100
3385+
3386+apport (2.10.2-0ubuntu3) saucy; urgency=low
3387+
3388+ * Enable suid_dumpable (core dumps of setuid binaries). This has
3389+ always been safe for us, as we set a core pipe handler, but the
3390+ kernel now protects against one not being set:
3391+ http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-
3392+ raring.git;a=blob;f=Documentation/sysctl/fs.txt;h=88152f214f48cb69c6
3393+ 43d4bf2ff2ac9a61ad2eb0;hb=HEAD
3394+
3395+ -- Evan Dandrea <ev@ubuntu.com> Tue, 25 Jun 2013 15:37:01 +0100
3396+
3397+apport (2.10.2-0ubuntu2) saucy; urgency=low
3398+
3399+ [ Brian Murray ]
3400+ * data/general-hooks/ubuntu.py:
3401+ - Resolve crash in duplicate signature calculation when the package is not
3402+ installed (LP: #1184121)
3403+ - Remove unusable check for previous package install failures
3404+ - Fix indentation of package-conflict check
3405+
3406+ [ Martin Pitt ]
3407+ * Raise python-apport's "Suggests: python launchpadlib" to Depends:, as the
3408+ only reason why to install this package is for apport-collect these days.
3409+ (LP: #1192330)
3410+ * Merge from trunk:
3411+ - hookutils.py, attach_conffiles(): Fix check for inaccessible or modified
3412+ conffiles. (LP: #1192899)
3413+ - Updated translations from LP.
3414+ * etc/apport/crashdb.conf: Enable crash reports on Launchpad for saucy.
3415+
3416+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 21 Jun 2013 07:16:00 +0200
3417+
3418+apport (2.10.2-0ubuntu1) saucy; urgency=low
3419+
3420+ * New upstream bug fix release:
3421+ - Resolve symlinks in file references in Python crash signatures.
3422+ (LP: #1179979)
3423+ - Fix endless loop of EOFErrors with broken core dumps. (LP: #1168849)
3424+ - report.py, add_gdb_info(): Fix crash if gdb did not determine an
3425+ assertion message. (LP: #1171484)
3426+ - apt/dpkg: Fix get_file_package()'s "release" field to actually mean
3427+ DistroRelease:, not a distro code name. This now requires a previous
3428+ call to install_packages() with a configdir, which needs to have a file
3429+ <configdir>/<release>/codename with the release's code name in it.
3430+ - sandboxutils.py: Call get_file_package() with the report's release, so
3431+ that we actually get files from the target release, not the host
3432+ release.
3433+ - test_hookutils.py: Don't assume that /etc/motd exists.
3434+ * Move to dh compat level 9.
3435+
3436+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 22 May 2013 12:39:21 +0200
3437+
3438+apport (2.10.1-0ubuntu1) saucy; urgency=low
3439+
3440+ * New upstream bug fix release:
3441+ - Fix ui.test_run_crash_anonymity_escaping test when running as root.
3442+ - launchpad.py: Fix crash when trying to adjust a distro-only bug task if
3443+ the bug also already has a distropackage task.
3444+ - apt/dpkg: When there is no -dbg package, install all -dbg packages of
3445+ the corresponding source package, and only then fall back to -dbgsym.
3446+ (LP: #1003234)
3447+ * data/general-hooks/ubuntu.py: Fix PEP8 error, to make test suite run
3448+ again.
3449+
3450+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 14 May 2013 16:43:09 +0200
3451+
3452+apport (2.10-0ubuntu3) saucy; urgency=low
3453+
3454+ * data/general-hooks/cloud_archive.py: deal with the case where a bug is
3455+ being reported about a package that is not installed (LP: #1173240)
3456+
3457+ -- Brian Murray <brian@ubuntu.com> Mon, 06 May 2013 08:29:51 -0700
3458+
3459+apport (2.10-0ubuntu2) saucy; urgency=low
3460+
3461+ * data/general-hooks/ubuntu.py: For package installation failures, build a
3462+ DuplicateSignature from the package, version, and dpkg ErrorMessage,
3463+ instead of using the whole dpkg terminal log.
3464+
3465+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 02 May 2013 15:21:23 -0700
3466+
3467+apport (2.10-0ubuntu1) saucy; urgency=low
3468+
3469+ [ Martin Pitt ]
3470+ * New upstream release. Changes since our previous snapshot:
3471+ - Support retracing foreign powerpc reports, thanks Steve Langasek.
3472+ - apport/report.py: Generate a crash signature for suspend/resume failures.
3473+ - hookutils.py: Add attach_upstart_logs(), thanks Steve Langasek.
3474+ - hookutils.py, in_session_of_problem(): Port from ConsoleKit to logind.
3475+ - apport/report.py: Handle the case where the user has been removed from
3476+ the system, but one of its still-running binaries crashes (LP: #1163453).
3477+ - Fix anonymization of user/GECOS fields with regexp control characters
3478+ like '+'. (LP: #985049)
3479+ - Run tests under LC_CTYPE=C and unset LANG as well, to discover
3480+ assumptions about UTF-8 locales. Fix the two failing tests.
3481+ - Fix UnicodeDecodeError when apport encounters non-ASCII environment
3482+ variables. (LP: #1172638)
3483+ * debian/control: Update Vcs-* for saucy branch.
3484+ * data/general-hooks/cloud_archive.py: Fix PEP-8 error.
3485+
3486+ [ Steve Langasek ]
3487+ * data/general-hooks/ubuntu.py: Call attach_upstart_logs(), to attach the
3488+ logs for any upstart user jobs shipped by the binary package.
3489+
3490+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 30 Apr 2013 14:49:42 -0700
3491+
3492+apport (2.9.2-0ubuntu8) raring; urgency=low
3493+
3494+ * data/package-hooks/source_ubiquity.py: use an untranslated string to
3495+ determine if the grub install was successful (LP: #1168126)
3496+
3497+ -- Brian Murray <brian@ubuntu.com> Thu, 11 Apr 2013 12:51:43 -0700
3498+
3499+apport (2.9.2-0ubuntu7) raring; urgency=low
3500+
3501+ * data/general-hooks/cloud_archive.py: Send reports for packages from
3502+ the Ubuntu Cloud Archive to the cloud-archive project on Launchpad.
3503+
3504+ -- James Page <james.page@ubuntu.com> Thu, 11 Apr 2013 16:07:39 +0100
3505+
3506+apport (2.9.2-0ubuntu6) raring; urgency=low
3507+
3508+ * etc/apport/crashdb.conf: Disable Launchpad crash/kernel reports for the
3509+ raring release. Only report to http://errors.ubuntu.com from now on.
3510+
3511+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 11 Apr 2013 12:42:27 +0200
3512+
3513+apport (2.9.2-0ubuntu5) raring; urgency=low
3514+
3515+ * data/package-hooks/source_ubiquity.py: Fix crash on non-UTF-8 data in log
3516+ files.
3517+ * Merge from trunk:
3518+ - data/gcc_ice_hook: Fix crash with source files that have non-UTF8 data.
3519+ (LP: #1045283)
3520+
3521+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 27 Mar 2013 09:01:58 +0100
3522+
3523+apport (2.9.2-0ubuntu4) raring; urgency=low
3524+
3525+ * data/general-hooks/ubuntu-gnome.py: Add "gnome3-ppa" tag if any dependency
3526+ is from the gnome3 PPA.
3527+ * Merge from trunk:
3528+ - hookutils.attach_conffiles(): Fix IOError crash on inaccessible
3529+ conffiles; mark them as '[inaccessible: <reason>]' instead.
3530+ (LP: #1154536)
3531+ - hookutils.in_session_of_problem(): Fix crash when the current locale is
3532+ invalid. (LP: #1154896)
3533+
3534+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 25 Mar 2013 15:34:02 +0100
3535+
3536+apport (2.9.2-0ubuntu3) raring; urgency=low
3537+
3538+ [ Martin Pitt ]
3539+ * Add data/general-hooks/ubuntu-gnome.py: Send reports for packages from the
3540+ gnome3 PPAs to the ubuntu-gnome Launchpad project. (LP: #1158119)
3541+
3542+ [ Philip Muškovac ]
3543+ * Add the seed name as bug tag in the ubiquity hook so it's possible to
3544+ filter the bugs by the image that was used. (LP: #1154302)
3545+
3546+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 25 Mar 2013 11:17:49 +0100
3547+
3548+apport (2.9.2-0ubuntu2) raring; urgency=low
3549+
3550+ * Include ubiquity.log generated by upstart for the ubiquity.conf
3551+ upstart job.
3552+
3553+ -- Dmitrijs Ledkovs <dmitrij.ledkov@ubuntu.com> Wed, 13 Mar 2013 18:52:21 +0000
3554+
3555+apport (2.9.2-0ubuntu1) raring; urgency=low
3556+
3557+ * New upstream release:
3558+ - report.py, add_package_info(): Add "[origin: unknown]" tag to
3559+ Package/Dependencies fields for non-distro package whose origin cannot
3560+ be determined. (LP: #1148116)
3561+ - Adjust kernel_crashdump to the format kdump-tools produces. Thanks Louis
3562+ Bouchard.
3563+ - Write core dumps on SIGQUIT if ulimit allows. Thanks Graeme Hewson.
3564+ (LP: #1153662)
3565+ * debian/apport.upstart: Also check for kdump-tools-style kernel crash
3566+ reports for calling kernel_crashdump. Thanks Louis Bouchard.
3567+
3568+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 19 Mar 2013 11:48:27 +0100
3569+
3570+apport (2.9.1-0ubuntu1) raring; urgency=low
3571+
3572+ * New upstream release:
3573+ - launchpad.py: Add support for filing bugs as private. Document this in
3574+ doc/crashdb-conf.txt. (LP: #1144647)
3575+ - Fix crash in error() and warning() if there is no sys.stderr.
3576+ (LP: #1012445)
3577+ - Fix Turkish translation to add missing keyboard accelerator.
3578+ (LP: #648750)
3579+ - fileutils.py, find_package_desktopfile(): Restrict to autostart and
3580+ application .desktop files. (LP: #1147528)
3581+ - apt/dpkg get_modified_files(): Fix crash when encountering non-ASCII
3582+ file names in an ASCII locale. (LP: #1044014)
3583+ * Bump Standards-Version to 3.9.4 (no changes necessary).
3584+
3585+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 07 Mar 2013 16:04:35 +0100
3586+
3587+apport (2.9-0ubuntu2) raring; urgency=low
3588+
3589+ * Merge from trunk:
3590+ - test_signal_crashes.py: Fix test_crash_apport() when being run under
3591+ LD_PRELOAD.
3592+
3593+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 01 Mar 2013 13:35:21 +0100
3594+
3595+apport (2.9-0ubuntu1) raring; urgency=low
3596+
3597+ [ Martin Pitt ]
3598+ * New upstream release. Changes since previous trunk merge:
3599+ - fileutils.py, shared_libraries(): Return a "name → path" dict instead of
3600+ just a set of names. Thanks Kyle Nitzsche.
3601+ - sandboxutils.py: Support unpackaged executables, i. e. reports which do
3602+ not have "Package" and "Dependencies" fields. For those, get required
3603+ libraries from "ProcMaps". Thanks Kyle Nitzsche.
3604+ - apport/report.py: report if LD_PRELOAD and LD_LIBRARY_PATH are set.
3605+ Thanks James Hunt.
3606+ - apport-valgrind: Cleanly exit on keyboard interrupts. Thanks Kyle
3607+ Nitzsche.
3608+ - debian.py: Fix "string payload expected" crash when building the report.
3609+ Thanks Dmitry Shachnev. (Debian #698010)
3610+ - Move shared_libraries() and links_with_shared_library() from hookutils
3611+ into fileutils, so that we can use it from apport-valgrind. Thanks to
3612+ Kyle Nitzsche for the initial patch.
3613+ - fileutils.shared_libraries(): Filter out virtual "linux-vdso" from
3614+ result. Thanks Kyle Nitzsche.
3615+ - apport-valgrind: Fix path to debug symbols in the sandbox.
3616+ - ui.py, get_desktop_entry(): Fix for Python 2.
3617+
3618+ [ Brian Murray ]
3619+ * data/general-hooks/ubuntu.py: remove adding of running-unity tag to bug
3620+ reports as the majority of users are now using unity so this is the more
3621+ common case.
3622+ * data/package-hooks/source_ubiquity.py: set a default value for cd_error
3623+
3624+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 01 Mar 2013 09:17:34 +0100
3625+
3626+apport (2.8-0ubuntu4) raring; urgency=low
3627+
3628+ * ui.py: Check $PKEXEC_UID in addition to $SUDO_UID for opening a browser.
3629+ (Backported from trunk).
3630+
3631+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 01 Feb 2013 11:26:39 +0100
3632+
3633+apport (2.8-0ubuntu3) raring; urgency=low
3634+
3635+ * Backport polkit action for running apport-gtk through pkexec to access
3636+ system crash reports from upstream r2578
3637+
3638+ -- Brian Murray <brian@ubuntu.com> Wed, 30 Jan 2013 08:13:01 -0800
3639+
3640+apport (2.8-0ubuntu2) raring; urgency=low
3641+
3642+ [ Martin Pitt ]
3643+ * debian/control: Add alternative libc-dbg dependencies.
3644+
3645+ [ Brian Murray ]
3646+ * data/package-hooks/source_linux.py: modify check for whether or not the
3647+ kernel is an upstream one (LP: #1100198)
3648+
3649+ -- Brian Murray <brian@ubuntu.com> Thu, 17 Jan 2013 09:04:19 -0800
3650+
3651+apport (2.8-0ubuntu1) raring; urgency=low
3652+
3653+ * New upstream release:
3654+ - Factor out sandbox management functions from apport-retrace into
3655+ apport/sandboxutils.py, so that other programs can re-use the API
3656+ easily. Thanks to Kyle Nitzsche for the initial work on this.
3657+ - Generate a crash signature for kernel OOPSes.
3658+ - Add "apport-valgrind" tool to produce valgrind reports in a temporary
3659+ sandbox with debug symbols (similar to apport-retrace). Thanks Alex
3660+ Chiang and Kyle Nitzsche!
3661+ - Fix StacktraceAddressSignature generation on ARM. (LP: #1089778)
3662+ - debian.py: Fix TypeError crash in payload generation. Thanks Ritesh Raj
3663+ Sarraf.
3664+ - apport_python_hook.py: Update "ExecutableTimestamp" field when mangling
3665+ "ExecutablePath". (LP: #1077253)
3666+ * Add new apport-valgrind binary package.
3667+ * Re-enable Launchpad crash reports for raring.
3668+
3669+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 08 Jan 2013 08:39:35 +0100
3670+
3671+apport (2.7-0ubuntu2) raring; urgency=low
3672+
3673+ * Cherry-pick from trunk:
3674+ - Fix StacktraceAddressSignature generation on ARM. (LP: #1089778)
3675+
3676+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 13 Dec 2012 08:56:47 +0100
3677+
3678+apport (2.7-0ubuntu1) raring; urgency=low
3679+
3680+ * New upstream release:
3681+ - packaging.py, get_file_package(): Add optional "release" and "arch"
3682+ arguments for getting a file's package for a foreign release or
3683+ architecture. Implement this for apt/dpkg backend.
3684+ - packaging.py, install_packages(): Add optional "architecture" argument
3685+ for creating a sandbox for a foreign architecture. Implement this for
3686+ apt/dpkg backend.
3687+ - When a report's architecture does not match the system architecture, try
3688+ to use gdb-multiarch (if available, as packaged on Debian/Ubuntu), and
3689+ set architecture and gnutarget accordingly in gdb. This supports x86,
3690+ x86_64, and ARM for now, so that reports from all these architectures
3691+ can be retraced on an x86_84 machine. (LP: #1044437)
3692+ - launchpad.py: Add "architecture" option to process reports for a foreign
3693+ architecture.
3694+ - Add exceptions from package hooks to new HookError_<filename> report
3695+ field, to make them more visible. Until now they were only written to
3696+ stderr. (LP: #1086309)
3697+ - apport-cli: Fix showing of prompt. Thanks Dmitry Shachnev!
3698+ - fileutils.py, mark_report_upload(): Do not try to remove the .uploaded
3699+ file, as this is not owned by the user.
3700+ - backends/packaging-apt-dpkg.py, install_packages(): Set mirror to the
3701+ one in the sandbox config.
3702+ - apportcheckresume: Fix crash if state file does not exist.
3703+ * debian/control: Add "gdb-multiarch" suggests to apport-retrace, and update
3704+ package description for justification.
3705+
3706+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 10 Dec 2012 14:07:04 +0100
3707+
3708+apport (2.6.3-0ubuntu4) raring; urgency=low
3709+
3710+ * Merge from trunk: Consistently use ignore file without $HOME. Fixes
3711+ running as root, and autopkgtests.
3712+
3713+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 05 Dec 2012 23:28:09 +0000
3714+
3715+apport (2.6.3-0ubuntu3) raring; urgency=low
3716+
3717+ * Fix OSError crash in mark_report_upload(); regression from
3718+ 2.6.3-0ubuntu2.
3719+
3720+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 05 Dec 2012 10:55:55 +0000
3721+
3722+apport (2.6.3-0ubuntu2) raring; urgency=low
3723+
3724+ * debian/control: Add libglib2.0-dev and libnih-dev build dependencies, for
3725+ the tests that run during build time.
3726+ * debian/tests/control: Add missing test dependencies: libnih-dev for
3727+ test_add_gdb_info_abort_libnih.
3728+ * Merge from trunk:
3729+ - Fix test_find_package_desktopfile test to not consider packages with
3730+ only one "NoDisplay=true" .desktop file for the "has one desktop file"
3731+ test.
3732+ - report.py, mark_ignore(): Use home directory of actual effective user,
3733+ not of $HOME. Fixes ignore file when using through sudo.
3734+
3735+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 30 Nov 2012 21:51:33 +0100
3736+
3737+apport (2.6.3-0ubuntu1) raring; urgency=low
3738+
3739+ * New upstream release. Changes since our previous snapshot:
3740+ - debian.py: Only reject reports with useless stack traces if the report
3741+ actually has a stack trace at all.
3742+ - debian.py: Fix UTF-8 string handling. Thanks Ritesh Raj Sarraf.
3743+ - debian.py: Fix crash on broken "Package" fields, as generated by current
3744+ Debian/Ubuntu dkms package.
3745+ - data/apport: Call fsync when writing upstart crash reports.
3746+ - report.py, add_gdb_info(): Handle libnih's assertion messages.
3747+ (LP: #997359)
3748+ - apport-gtk, apport-kde: Don't provide an option to restart a crashed
3749+ application when the crash occurred in a thread (LP: #1033902).
3750+ - apport-retrace: Disallow option -C without option -S. Thanks Kyle
3751+ Nitzsche.
3752+ - fileutils.py, mark_report_upload(): Refresh the .upload stamps if a
3753+ previous version of the report was already uploaded, but another
3754+ instance of the problem happened since then. Thanks Brian Murray. (LP:
3755+ #1084296)
3756+ - Ignore implausibly low addresses when computing
3757+ StacktraceAddressSignature. These are usually artifacts from gdb when
3758+ not having debug symbols, and having too many of them prevents proper
3759+ client-side duplicate detection and proper bucketing in daisy.
3760+ (LP: #1084996)
3761+ - fileutils.py: Ignore .desktop files with NoDisplay=true. (LP: #1048524)
3762+ * debian/tests/control: Run tests as root, just like before switching our
3763+ autopkgtests to run as user "ubuntu" by default. This enables a couple of
3764+ extra tests, and avoids some confusion because the distro and the user
3765+ name are identical.
3766+ * data/package-hooks/source_linux-nexus7.py: Fix PEP-8 error.
3767+
3768+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 30 Nov 2012 18:00:01 +0100
3769+
3770+apport (2.6.2-0ubuntu5) raring; urgency=low
3771+
3772+ * data/general-hooks/ubuntu.py: Deal with dpkg_log file being a string
3773+ instead of bytes (LP: #1080915)
3774+
3775+ -- Brian Murray <brian@ubuntu.com> Mon, 19 Nov 2012 17:03:54 -0800
3776+
3777+apport (2.6.2-0ubuntu4) raring; urgency=low
3778+
3779+ * data/package-hooks/source_linux.py: Do not abort with "not an Ubuntu
3780+ kernel" if the report has a CrashDB set, i. e. reports go to a different
3781+ project.
3782+ * Add data/package-hooks/source_linux-nexus7.py: Package hook for our nexus7
3783+ package which currently lives in a PPA: (LP: #1076082)
3784+ - Report bugs against the "ubuntu-nexus7" project.
3785+ - Collect information from the "linux" source package hook.
3786+ - Add "mobile" and "nexus7" tags.
3787+
3788+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 19 Nov 2012 09:24:12 +0100
3789+
3790+apport (2.6.2-0ubuntu3) raring; urgency=low
3791+
3792+ * debian/tests/control: Add missing libglib2.0-0-dbg test dependency for the
3793+ report.test_add_gdb_info_abort_glib() check.
3794+
3795+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 09 Nov 2012 10:49:30 +0100
3796+
3797+apport (2.6.2-0ubuntu2) raring; urgency=low
3798+
3799+ * debian/tests/control: Add libglib2.0-dev dependency for the new "glib
3800+ assertion message" test case.
3801+ * Merge from trunk:
3802+ - test_signal_crashes.py: Fix incompatibility with Python 3.3.
3803+ - test_signal_crashes.py: Allow XDG_RUNTIME_DIR environment variable, as
3804+ it only shows whether or not it is set. (Test regression from 2.6)
3805+
3806+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 07 Nov 2012 10:24:28 +0100
3807+
3808+apport (2.6.2-0ubuntu1) raring; urgency=low
3809+
3810+ * New upstream release:
3811+ - problem_report.py: Fix UnicodeDecodeError crash under Python 2 when the
3812+ report has an unicode field with an unprintable ASCII character < 20.
3813+ - debian.py: Fix calling of parent accepts() method and return value.
3814+ Thanks Ritesh Raj Sarraf.
3815+ - bin/apport-retrace: Fix crash when not using --sandbox mode.
3816+ - report.py, add_proc_info(): Throw correct exception if the executable
3817+ path does not exist, to provide a more appropriate error message.
3818+ (LP: #1065129)
3819+ - report.py, add_gdb_info(): Check __glib_assert_msg for assertion
3820+ messages, too.
3821+ - REThread.py: Fix for Python 3.3.
3822+ * debian/control: Update Vcs-Bzr: for raring branch.
3823+
3824+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 06 Nov 2012 16:18:56 +0100
3825+
3826+apport (2.6.1-0ubuntu6) quantal-proposed; urgency=low
3827+
3828+ * Do not refer to the current release in the InstallationDate field
3829+ (LP: #1070400). We have the installed release version in the
3830+ InstallationMedia field.
3831+
3832+ -- Evan Dandrea <ev@ubuntu.com> Wed, 24 Oct 2012 14:31:10 +0100
3833+
3834+apport (2.6.1-0ubuntu5) quantal-proposed; urgency=low
3835+
3836+ * Include the date that Ubuntu was installed with each report
3837+ (LP: #1070400).
3838+
3839+ -- Evan Dandrea <ev@ubuntu.com> Wed, 24 Oct 2012 11:29:18 +0100
3840+
3841+apport (2.6.1-0ubuntu4) quantal-proposed; urgency=low
3842+
3843+ * apport/ui.py: create a MarkForUpload field and set that to false for
3844+ binaries that changed since the crash happened thereby preventing uploads
3845+ to the crash database (LP: #1039220)
3846+
3847+ -- Brian Murray <brian@ubuntu.com> Tue, 16 Oct 2012 13:31:24 -0700
3848+
3849+apport (2.6.1-0ubuntu3) quantal; urgency=low
3850+
3851+ * etc/apport/crashdb.conf: Disable Launchpad crash/kernel reports for the
3852+ final release. Only report to http://errors.ubuntu.com from now on.
3853+
3854+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 09 Oct 2012 17:19:32 +0200
3855+
3856+apport (2.6.1-0ubuntu2) quantal; urgency=low
3857+
3858+ * apport-kde; do not run mainloop as well as dialogues, prevents
3859+ crash on reporting a bug
3860+
3861+ -- Jonathan Riddell <jriddell@ubuntu.com> Tue, 09 Oct 2012 13:14:38 +0100
3862+
3863+apport (2.6.1-0ubuntu1) quantal; urgency=low
3864+
3865+ * New upstream release:
3866+ - setup.py: Build java module with "-target 1.5" option, so that you can run
3867+ it with OpenJDK 6 even if you build with OpenJDK 7.
3868+ - report.py, add_proc_info(): Show if $XDG_RUNTIME_DIR is set.
3869+ - Add apport/crashdb_impl/debian.py: Initial crash database implementation for
3870+ the Debian BTS. Add configuration for it to etc/apport/crashdb.conf. Thanks
3871+ Ritesh Raj Sarraf!
3872+ Note that in the Ubuntu packaging branch crashdb.conf is not changed, as
3873+ we do not need the Debian BTS and this would otherwise be Feature Freeze
3874+ matter.
3875+ - test_python_crashes.py: Robustify "$PYTHONPATH in ProcEnviron" check.
3876+ - Updated translations from Launchpad.
3877+ * data/package-hooks/source_linux.py: Stop collecting ACPI data, not
3878+ needed/desired for most bug reports according to Colin King.
3879+ * debian/tests/control: Add at-spi2-core dependency, otherwise the GTK test
3880+ will fail to connect to org.a11y.Bus.
3881+
3882+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 01 Oct 2012 12:27:00 +0200
3883+
3884+apport (2.5.3-0ubuntu1) quantal; urgency=low
3885+
3886+ * New upstream release. Changes since our previous snapshot:
3887+ - report.py, search_bug_patterns(): Fix bug patterns containing non-ASCII
3888+ characters.
3889+ - apport_python_hook.py: Capture $PYTHONPATH and $PYTHONHOME environment
3890+ variables for Python crashes.
3891+ - Translation updates.
3892+
3893+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 28 Sep 2012 12:59:11 +0200
3894+
3895+apport (2.5.2-0ubuntu4) quantal; urgency=low
3896+
3897+ * Merge from trunk:
3898+ - hookutils.py, attach_root_command_outputs(): Ignore IOError crash about
3899+ nonexisting files, which can happen if the user dismisses authorization.
3900+ (LP: #1051222)
3901+ - launchpad.py: Fix tag filtering for Python 3. (LP: #1052754)
3902+
3903+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 20 Sep 2012 08:07:01 +0200
3904+
3905+apport (2.5.2-0ubuntu3) quantal; urgency=low
3906+
3907+ * data/general-hooks/ubuntu.py: Fix PEP-8 errors.
3908+ * Merge from trunk:
3909+ - apport/ui.py: Update expected exception after r2486.
3910+
3911+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 19 Sep 2012 10:41:09 +0200
3912+
3913+apport (2.5.2-0ubuntu2) quantal; urgency=low
3914+
3915+ * data/general-hooks/ubuntu.py: Add "package-from-proposed" tag if the
3916+ installed package version is available from -proposed, but not from
3917+ -security and -updates. (LP: #1050853)
3918+ * Merge fixes from trunk:
3919+ - data/apportcheckresume: Open report file in binary mode. (LP: #1040353)
3920+ - packaging-apt-dpkg.py: When throwing ValueErrors, show the non-existing
3921+ package name. This makes it easier to debug such crashes.
3922+ - launchpad.py: Replace characters from tags which are not allowed by
3923+ Launchpad with '.' (LP: #1029479)
3924+
3925+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 18 Sep 2012 14:51:08 +0200
3926+
3927+apport (2.5.2-0ubuntu1) quantal; urgency=low
3928+
3929+ * New upstream release:
3930+ - Fix crash on broken .desktop files. (LP: #1039889)
3931+ - apport-gtk: For console program crashes, say "stopped" instead of
3932+ "closed". Add a subtitle label with a hint about hanging programs.
3933+ Thanks Matt Price and Matthew Paul Thomas!
3934+ - report.py: Fix crash on determination of Python module path when
3935+ examining a crash of "python -m ...".
3936+ - apport-kde: Fix crash with undefined QString under Python 3. Thanks
3937+ Jonathan Riddell! (LP: #1028984)
3938+ - launchpad.py: Add missing "Pre-release Freeze" status. Thanks Brian
3939+ Murray!
3940+ - report.py, _check_bug_pattern(): Fix bug pattern matching against binary
3941+ values. Thanks Brian Murray for the original patch. (LP: #1016380)
3942+ * debian/control: Move x-terminal-emulator dependency from apport-retrace to
3943+ -gtk and -kde. It's those which actually spawn an X terminal for
3944+ apport-retrace to run in, and this lessens the dependencies for
3945+ apport-retrace on server type systems.
3946+ * Add debian/apport.maintscript: Clean up obsolete precise conffile
3947+ /etc/apport/native-origins.d/lts-q-backports on upgrades. (LP: #1049058)
3948+ * data/general-hooks/ubuntu.py: Fix PEP-8 errors.
3949+
3950+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 17 Sep 2012 14:15:41 +0200
3951+
3952+apport (2.5.1-0ubuntu7) quantal-proposed; urgency=low
3953+
3954+ * bin/apport-bug: Explicitly set the PATH to that of ENV_SUPATH in
3955+ /etc/login.defs. We need do this so that confined applications using
3956+ ubuntu-browsers.d/ubuntu-integration cannot abuse the environment to
3957+ escape AppArmor confinement via this script (LP: #1045986). This can be
3958+ removed once AppArmor supports environment filtering (LP: 1045985)
3959+
3960+ -- Jamie Strandboge <jamie@ubuntu.com> Tue, 04 Sep 2012 21:23:16 -0500
3961+
3962+apport (2.5.1-0ubuntu6) quantal; urgency=low
3963+
3964+ * data/general/ubuntu.py: handle the case where a log file is compressed
3965+ when reviewing package installation failures (LP: #917903)
3966+
3967+ -- Brian Murray <brian@ubuntu.com> Tue, 04 Sep 2012 15:35:50 -0700
3968+
3969+apport (2.5.1-0ubuntu5) quantal; urgency=low
3970+
3971+ * Use Python string rather than QString, LP: #1028984
3972+
3973+ -- Jonathan Riddell <jriddell@ubuntu.com> Tue, 04 Sep 2012 16:13:14 +0100
3974+
3975+apport (2.5.1-0ubuntu4) quantal; urgency=low
3976+
3977+ * do not stack trace when ec2 metadata is available (LP: #1018552)
3978+
3979+ -- Scott Moser <smoser@ubuntu.com> Thu, 30 Aug 2012 17:15:02 -0400
3980+
3981+apport (2.5.1-0ubuntu3) quantal; urgency=low
3982+
3983+ * data/general/ubuntu.py: when creating a duplicate signature search the
3984+ terminal log for more messages indicating the start of a failure thereby
3985+ creating a duplicate signature in more cases
3986+
3987+ -- Brian Murray <brian@ubuntu.com> Tue, 28 Aug 2012 09:56:30 -0700
3988+
3989+apport (2.5.1-0ubuntu2) quantal; urgency=low
3990+
3991+ * Merge from trunk:
3992+ - test/run: Ignore root_info_wrapper with pyflakes.
3993+ - packaging-apt-dpkg.py: Add recommended packages to "Dependencies:"
3994+ field. (LP: #1014428)
3995+ - test_hookutils.py, test_in_session_of_problem(): Use year 2038 for a
3996+ future date instead of 2211, as current Python 3.2 now crashes with an
3997+ OverflowError on 32 bit machines with later years.
3998+
3999+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 24 Aug 2012 07:50:15 +0200
4000+
4001+apport (2.5.1-0ubuntu1) quantal; urgency=low
4002+
4003+ * New upstream release:
4004+ - test_recoverable_problem.py: Fix test for calling test runner with
4005+ absolute path.
4006+ - packaging-apt-dpkg.py: Fix crash on writing virtual_mapping.db when
4007+ running with --sandbox-dir and -S system or giving no --cache.
4008+ - REThread.py: Fix re-raising of exceptions in Python 3. Thanks Martin
4009+ Packman! (LP: #1024836)
4010+ - apport-retrace: Keep compressed CoreDump from .crash files instead of
4011+ uncompressing them into memory. This dramatically reduces memory usage.
4012+ (LP: #981155)
4013+ - Add an apport.memdbg() function which prints out current memory usage if
4014+ APPORT_MEMDEBUG is set. Annotate apport-retrace with it.
4015+ - hookutils.py: Allow specifying a list of profile names when using
4016+ attach_mac_events(). Thanks Marc Deslauriers.
4017+ - hookutils.py, attach_root_command_outputs() and root_command_output():
4018+ Drop usage of sudo, kdesudo, and gksu, and replace with pkexec. For
4019+ attach_root_command_outputs(), use a wrapper and proper .policy file
4020+ which explains the action and works under every environment; thus
4021+ attach_root_command_outputs() is preferred over root_command_output()
4022+ now, as it provides a better user experience.
4023+ - Package hooks which want to send the report to a different crash
4024+ database than "default" can now also give the database specification
4025+ itself in the "CrashDB" field, not just the DB name. With this, packages
4026+ do not need to ship a separate /etc/apport/crashdb.conf.d/ file. Please
4027+ see doc/package-hooks.txt for details. (LP: #551330)
4028+ - report.py, add_hooks_info(): If reporting against a package/program in
4029+ /opt, also search for package hooks in the corresponding /opt directory.
4030+ This allows such hooks to define a custom crash database and thus report
4031+ bugs against their own project instead of against the distribution.
4032+ (LP: #1020503)
4033+ * debian/rules: Call dh_install with --list-missing, and ignore .pyc and
4034+ .egg-info files.
4035+ * debian/apport.install: Install new polkit .policy and root_info_wrapper
4036+ files, and add policykit-1 Recommends.
4037+ * debian/apport.install: Ship is-enabled script.
4038+ * debian/apport-kde.install: Ship userpass.ui file.
4039+ * Drop debian/apport-retrace.manpages and debian/apport.manpages and install
4040+ the man pages from *.install instead. This works better with
4041+ --list-missing.
4042+ * debian/apport.install: Install 000record-status pm-utils script, to
4043+ unbreak suspend failure detection.
4044+
4045+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 22 Aug 2012 11:58:45 +0200
4046+
4047+apport (2.4-0ubuntu9) quantal; urgency=low
4048+
4049+ * apport/ui.py: revert the change to when the .upload file is created as the
4050+ fix was incomplete and requires more investigation
4051+
4052+ -- Brian Murray <brian@ubuntu.com> Tue, 21 Aug 2012 10:23:35 -0700
4053+
4054+apport (2.4-0ubuntu8) quantal; urgency=low
4055+
4056+ * hookutils.py: Allow specifying a list of profile names when using
4057+ attach_mac_events()
4058+
4059+ -- Marc Deslauriers <marc.deslauriers@ubuntu.com> Wed, 15 Aug 2012 22:47:33 -0400
4060+
4061+apport (2.4-0ubuntu7) quantal; urgency=low
4062+
4063+ * apport/ui.py: only create the .upload file after collect_info is complete
4064+ that way whoopsie will upload crash files with all the information it
4065+ needs (LP: #1020994)
4066+
4067+ -- Brian Murray <brian@ubuntu.com> Wed, 15 Aug 2012 16:07:34 -0700
4068+
4069+apport (2.4-0ubuntu6) quantal; urgency=low
4070+
4071+ * debian/control:
4072+ - Drop python3-pykde4 from Build-Depends. The dep8 tests will pull
4073+ it in as needed. The non-fatal build tests will continue to fail the
4074+ KDE test anyway because it requires X. This way, we don't require
4075+ python3-pykde4 to be in main.
4076+
4077+ -- Michael Terry <mterry@ubuntu.com> Wed, 25 Jul 2012 13:20:42 -0400
4078+
4079+apport (2.4-0ubuntu5) quantal; urgency=low
4080+
4081+ * Merge from trunk:
4082+ - test_recoverable_problem.py: Fix test for calling test runner with
4083+ absolute path.
4084+
4085+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 23 Jul 2012 07:06:40 +0200
4086+
4087+apport (2.4-0ubuntu4) quantal; urgency=low
4088+
4089+ * data/general/ubuntu.py: check to see if a package installation duplicate
4090+ signature has been encountered previously and if so prevent bug reporting
4091+ (LP: #1007637)
4092+ * data/general/ubuntu.py: properly decode DpkgTerminalLog lines
4093+
4094+ -- Brian Murray <brian@ubuntu.com> Fri, 20 Jul 2012 11:39:06 -0700
4095+
4096+apport (2.4-0ubuntu3) quantal; urgency=low
4097+
4098+ * data/general/ubuntu.py: modify regualr expressions for determining which
4099+ package installation failures to gather /etc/default/grub for
4100+ (LP: #1006633)
4101+
4102+ -- Brian Murray <brian@ubuntu.com> Wed, 18 Jul 2012 15:48:49 -0700
4103+
4104+apport (2.4-0ubuntu2) quantal; urgency=low
4105+
4106+ * debian/apport.install: Ship the new recoverable_problem script.
4107+
4108+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 18 Jul 2012 16:33:56 +0200
4109+
4110+apport (2.4-0ubuntu1) quantal; urgency=low
4111+
4112+ [ Brian Murray ]
4113+ * data/general/ubuntu.py: in trim_log deal with the fact that
4114+ DpkgTerminalLog is a bytes object and convert it to a string object
4115+
4116+ [ Martin Pitt ]
4117+ * New upstream release. Changes since our previous snapshot:
4118+ - Add new "RecoverableProblem" report type for problems which the
4119+ application can handle, but still wishes to notify the user and send a
4120+ problem report about. As an example, the application may wish to notify
4121+ the user because handling the error resulted in degraded functionality.
4122+ The user interface may fail to load items, or the action just performed
4123+ may not return any data. Applications call
4124+ /usr/share/apport/recoverable_problem with a string of arbitrary
4125+ NUL-separated key/value pairs that are added to the report. Thanks Evan
4126+ Dandrea!
4127+ - launchpad.py: Fix setting of 'Medium' importance on duplicate checking.
4128+ - apport-retrace: Fix StacktraceSource generation for relative --cache
4129+ paths.
4130+ - crashdb.py, check_duplicate(): Do not try to mark a bug as duplicate of
4131+ itself. This can happen when re-processing a previously retraced bug.
4132+ - apport-retrace: Fix UnicodeDecodeError when encountering a non-ASCII
4133+ source code file and running under a non-UTF-8 locale.
4134+ * debian/control: Add libc6-dbg build dependency, to ensure that the
4135+ report.test_add_gdb_info_abort test case can succeed (otherwise gdb cannot
4136+ decipher the __abort_msg structure).
4137+
4138+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 18 Jul 2012 12:31:50 +0200
4139+
4140+apport (2.3-0ubuntu4) quantal; urgency=low
4141+
4142+ * debian/control: Add gir1.2-wnck-3.0 dependency for apport-gtk, needed by
4143+ the new --hanging feature.
4144+ * Merge from trunk:
4145+ - test_python_crashes.py: Fix race condition in timeout test.
4146+
4147+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 10 Jul 2012 18:35:15 +0200
4148+
4149+apport (2.3-0ubuntu3) quantal; urgency=low
4150+
4151+ * Merge from trunk:
4152+ - apport_python_hook.py: For org.freedesktop.DBus.Error.ServiceUnknown
4153+ exceptions, add a 'DbusErrorAnalysis' field to the report which points
4154+ out whether any .service file provides the service it tried to talk to,
4155+ and whether the processes for those are running. This helps to determine
4156+ the root cause for such errors (missing dependencies, broken .service
4157+ files, talking to the wrong bus, etc.) (LP: #1020572)
4158+ - hookutils.py, attach_alsa(): Use alsa-info.sh when available. Thanks
4159+ David Henningson.
4160+ - ui tests, test_wait_for_pid(): Fix eternal hang when running as root.
4161+ - testsuite: Fix ResourceWarnings when running with Python 3.
4162+ * debian/control, debian/tests/control: Add gvfs-daemons as build/test
4163+ dependency, as test_python_crashes uses it as an example for handling
4164+ python-dbus exceptions.
4165+
4166+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 10 Jul 2012 14:58:45 +0200
4167+
4168+apport (2.3-0ubuntu2) quantal; urgency=low
4169+
4170+ * Fix PEP-8 violations in Ubuntu specific hooks, picked up by latest pep8
4171+ checker.
4172+
4173+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 09 Jul 2012 11:30:29 +0200
4174+
4175+apport (2.3-0ubuntu1) quantal; urgency=low
4176+
4177+ * New upstream release:
4178+ - launchpad.py: Rework test suite to not use Launchpad's +storeblob
4179+ facility at all any more. It almost never works on staging and is
4180+ horribly slow. Fake the bug creation from a blob by manually creating
4181+ the comment and attachments ourselves, and just assume that storeblob
4182+ works on production. Also change the structure to allow running every
4183+ test individually.
4184+ - crash-digger: Add --crash-db option to specify a non-default crash
4185+ database name. (LP: #1003506)
4186+ - apport-gtk: Add --hanging option to specify the process ID of a hanging
4187+ application. If the user chooses to report this error, apport will
4188+ terminate the pid with SIGABRT, otherwise it will send SIGKILL. The
4189+ normal core pipe handler will be used to process the resulting report
4190+ file, with a .hanging file in /var/crash to separate these from regular
4191+ crashes.
4192+ - apport: Also treat a binary as modified if the /proc/pid/exe symlink
4193+ does not point to an existing file any more. (LP: #984944)
4194+ - Fix PEP-8 violations picked up by latest pep8 checker.
4195+ - ui.py: Do not ignore certain exceptions during upload which are not
4196+ likely to be a network error.
4197+ - launchpad.py: Recongize Launchpad projects for bug query and marking
4198+ operations. (LP: #1003506)
4199+ - packaging-apt-dpkg.py: Fix get_source_tree() to work with apt sandboxes.
4200+ - apport-retrace: Turn StacktraceSource generation back on, now that it
4201+ works with the current sandboxing.
4202+ - launchpad.py: Ensure that upload chunk size does not underrun.
4203+ (LP: #1013334)
4204+ - apport_python_hook: Fix UnicodeEncodeError crash with Python 2 for
4205+ exceptions with non-ASCII characters. (LP: #972436)
4206+ - test_ui_kde.py: Fix occasional test failure in test_1_crash_details if
4207+ the application ends before the "is progress bar visible" check is done.
4208+
4209+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 09 Jul 2012 08:14:30 +0200
4210+
4211+apport (2.2.5-0ubuntu2) quantal; urgency=low
4212+
4213+ * data/general/ubuntu.py: fix an issue with a regular expression for
4214+ finding a package install failure due to a corrupt package
4215+
4216+ -- Brian Murray <brian@ubuntu.com> Mon, 02 Jul 2012 13:24:00 -0700
4217+
4218+apport (2.2.5-0ubuntu1) quantal; urgency=low
4219+
4220+ * New upstream bug fix release:
4221+ - launchpad.py: Fix str vs. bytes crash for already known bugs, take 2.
4222+ (LP: #1015788)
4223+ - apport/ui.py, get_desktop_entry(): Disable interpolation, to correctly
4224+ read desktop files with % signs. (LP: #1014341)
4225+ - apport/ui.py: Fix rare crash if a report is already being updated in the
4226+ background when the UI tries to update a previous version. (LP: #949196)
4227+ - GTK and KDE UI tests: Avoid eternal hangs due to "this is not a distro
4228+ package" error messages.
4229+
4230+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 21 Jun 2012 16:15:20 +0200
4231+
4232+apport (2.2.4-0ubuntu1) quantal; urgency=low
4233+
4234+ * debian/tests/control: Simplify Depends: line by using "@" and dropping
4235+ packages which are already dependencies of apport's packages.
4236+ * debian/tests/control: Drop undefined "no-build-needed" feature.
4237+ * New upstream bug fix release. Changes since our previous trunk snapshot:
4238+ - apport-cli: Unbreak "keep" option. (LP: #1007826)
4239+ - launchpad.py: Fix str vs. bytes crash for already known bugs.
4240+ (LP: #1015788)
4241+
4242+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 21 Jun 2012 09:13:56 +0200
4243+
4244+apport (2.2.3-0ubuntu6) quantal; urgency=low
4245+
4246+ * Merge from trunk:
4247+ - test/run: Wait for a previous xvfb server to finish before trying to
4248+ start one. This fixes a race condition in the KDE UI tests which often
4249+ failed to start up xvfb.
4250+
4251+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 20 Jun 2012 07:59:33 +0200
4252+
4253+apport (2.2.3-0ubuntu5) quantal; urgency=low
4254+
4255+ [ Brian Murray ]
4256+ * data/general-hooks/ubuntu.py: do not report 'dpkg-deb --control returned
4257+ error exit status 2' package install failures
4258+
4259+ [ Martin Pitt ]
4260+ * debian/tests/upstream-system: Show number of failed tests on stdout, not
4261+ stderr.
4262+ * debian/tests/control: Add python3-mock and xvfb dependencies.
4263+ * Merge from trunk:
4264+ - test_crash_digger.py: Do not write crash reports of crash-digger into
4265+ system /var/crash, use a temporary directory.
4266+ * debian/control: Add XS-Testsuite header, as per current DEP-8.
4267+
4268+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 19 Jun 2012 08:51:18 +0200
4269+
4270+apport (2.2.3-0ubuntu4) quantal; urgency=low
4271+
4272+ * debian/tests/upstream-system: Clean up old crash reports.
4273+ * debian/tests/upstream-system: Show number of failed tests.
4274+ * Merge from trunk:
4275+ - test_signal_crashes.py: Show crash reports in /var/crash/.
4276+
4277+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 18 Jun 2012 09:30:10 +0200
4278+
4279+apport (2.2.3-0ubuntu3) quantal; urgency=low
4280+
4281+ * Merge from trunk:
4282+ - test_apport_unpack.py: Fix test_unpack_python() test when running the
4283+ system-installed tests.
4284+ - data/java_uncaught_exception: Fix for Python 3.
4285+ * debian/tests/control: Add apport-retrace dependency, as the tests cover
4286+ it.
4287+
4288+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 15 Jun 2012 12:57:19 +0200
4289+
4290+apport (2.2.3-0ubuntu2) quantal; urgency=low
4291+
4292+ * debian/rules: Disable the xvfb tests during package build for now, as they
4293+ currently cause the buildds to hang indefinitely. They are still run in
4294+ the jenkins autopkgtests.
4295+
4296+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 15 Jun 2012 10:17:17 +0200
4297+
4298+apport (2.2.3-0ubuntu1) quantal; urgency=low
4299+
4300+ [ Martin Pitt ]
4301+ * New upstream bug fix release:
4302+ - test/run: Do not run pep8 and pyflakes when running against the sytem
4303+ installed Apport.
4304+ - test_backend_apt_dpkg.py: For the "are we online" check, verify that we can
4305+ download from http://ddebs.ubuntu.com/, not just whether we have a default
4306+ route. The latter is not sufficient for e. g. buildd environments which are
4307+ online, but are restricted by proxies or firewalls.
4308+ - test_report.py: Call "sync" after test script write core dumps, to ensure
4309+ that subsequent operations have a complete one.
4310+ - test_signal_crashes.py: Drop the broken and obsolete test_local_python()
4311+ test. Instead, add two tests which check proper logging.
4312+ - launchpad.py: Fix urlopen() for Python3. Thanks Steve Langasek.
4313+ - test/run: Run the tests under LC_MESSAGES=C, to avoid failing tests on
4314+ translated strings.
4315+ * debian/control: Add libc6-dbg | libc6-dbgsym dependency to apport-retrace,
4316+ to ensure gdb can decipher the abort_msg_s struct and thus read assertion
4317+ messages. Also add libc6-dbg to debian/tests/control so that
4318+ report.test_add_gdb_info_abort can succeed in autopkgtest.
4319+ * debian/control, debian/tests/control: apport-retrace needs a terminal
4320+ emulator, so add an x-terminal-emulator dependency. Add xterm as build and
4321+ autopkgtest dependency, so that the tests have one available.
4322+ * debian/control: Drop python-launchpadlib from Depends to Suggests for
4323+ python-apport, too.
4324+
4325+ [ Steve Langasek ]
4326+ * debian/rules: call dh_python3 with --skip-private, to avoid incorrect
4327+ generation of a .rtupdate script for /usr/share/apport. LP: #1013171.
4328+
4329+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 15 Jun 2012 08:27:17 +0200
4330+
4331+apport (2.2.2-0ubuntu2) quantal; urgency=low
4332+
4333+ * debian/control: Add python3-pykde4 build dependency for the test suite.
4334+ * debian/rules: Unset $TMPDIR during the tests, to work around LP #972324.
4335+ * Merge from trunk:
4336+ - test/test_signal_crashes.py: More verbose tests.
4337+ * debian/tests/upstream-system: Do not run in the source tree, as we want to
4338+ check the system-installed Apport.
4339+ * debian/tests/control: Explicitly depend on apport-kde and apport-gtk.
4340+
4341+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 13 Jun 2012 17:55:35 +0200
4342+
4343+apport (2.2.2-0ubuntu1) quantal; urgency=low
4344+
4345+ * debian/control: Add alternative gdb-minimal dependencies to
4346+ apport-{gtk,kde}. (LP: #1012405)
4347+ * debian/control: apport-kde: depend on python3-pykde4.
4348+ * debian/tests/control: Add missing python3 dependencies for the GUI tests.
4349+ * New upstream release:
4350+ - testsuite: Run with Python 3 by default. To test with Python 2, run
4351+ "PYTHON=python2 test/run".
4352+ - apport: Redefine sys.std{out,err} when redirecting output, as they are
4353+ None in Python 3 when being called from the kernel.
4354+ - test/test_signal_crashes.py: Clean up unexpected core dumps on failed
4355+ test cases.
4356+ - apport-gtk: Fix crash when closing the crash dialog while the
4357+ information is being collected.
4358+ - hookutils.py, xsession_errors(): Fix crash when running under a non-UTF8
4359+ locale.
4360+ - data/apport: Do not use sys.stdin.fileno(), it is invalid when being
4361+ called from the kernel with Python 3.
4362+ - data/apport: When core dumps are enabled, read them from the written
4363+ report instead of directly from stdin (and then reading the written core
4364+ file into the .crash report). If the core file size is limited, we
4365+ otherwise stop reading the core dump from the kernel in the middle and
4366+ have no (or a broken) core dump to be put into the report.
4367+ - data/apport: Properly close the written crash report before changing its
4368+ permissions to be readable. This prevents having crash reporting UI from
4369+ looking at incomplete .crash files.
4370+ * debian/rules: drop explicit setting of $PYTHON, test suite is now run
4371+ with python3 by default.
4372+
4373+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 13 Jun 2012 13:08:51 +0200
4374+
4375+apport (2.2.1-0ubuntu2) quantal; urgency=low
4376+
4377+ * debian/control: Add back the Python 2 build dependencies, as we
4378+ are also doing a Python 2 build.
4379+ * debian/control: Add pyflakes build dependency, so that it can run during
4380+ the build.
4381+
4382+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 12 Jun 2012 06:38:26 +0200
4383+
4384+apport (2.2.1-0ubuntu1) quantal; urgency=low
4385+
4386+ * New upstream release:
4387+ - Clean up module imports.
4388+ - test/run: Run pyflakes, if available.
4389+ - package_hook: Add --tags option. Thanks to Brian Murray.
4390+ - launchpad.py: Drop the external multipartpost_handler.py (which is not
4391+ portable to Python 3) and replace it with using the standard email
4392+ module.
4393+ - launchpad.py: Also work with Python 3. Deal gracefully with a missing
4394+ "launchpadlib" module; this is not yet available for Python 3, but not
4395+ required for client-side reporting.
4396+ - apport-kde: Port to work with Python 3.
4397+ - apport-retrace: Fix crash when using the --procmaps option.
4398+ - setup.py: Update hashbang lines of installed scripts in data directory
4399+ to the python executable setup.py was run with, similar to what already
4400+ happens to scripts installed to ../bin/.
4401+ - apport-cli: Port to work with Python 3.
4402+ - setup.py: When fixing hashbang lines of installed scripts, only include
4403+ the major Python version.
4404+ - hookutils.py, read_file, attach_file(), attach_file_if_exists(): Convert
4405+ file contents to unicode if the contents is UTF-8, or the newly added
4406+ force_unicode argument is True.
4407+ - hooktuils, command_output(): Convert output to unicode by default, and
4408+ add a "decode_utf8" parameter to disable this.
4409+ - hookutils.py, recent_logfile(): Fix fd leak.
4410+ - data/apport: Do not assume that sys.stdout and sys.stderr always have a
4411+ name; they can be None in Python 3.
4412+ - data/dump_acpi_tables.py: Fix for Python 3.
4413+ * data/package-hooks/source_debian-installer.py: Port to work with Python 3.
4414+ * Move to Python 3, except for the parts that need python-launchpadlib
4415+ (which is not yet available for Python 3):
4416+ - debian/control: Add python3-problem-report and python3-apport packages.
4417+ - debian/control: Switch build and binary dependencies to Python 3
4418+ equivalents, except for apport-retrace.
4419+ - debian/rules: Override dh_auto_* to also handle python3-* packages (see
4420+ Debian #597105).
4421+ - debian/rules: Run test suite with Python 3.
4422+ - debian/rules: Switch hashbang line of apport-retrace back to Python 2.
4423+ - Move /etc/apport/crashdb.conf from python-apport to apport, and
4424+ recommend apport from both python{,3}-apport.
4425+ * bin/apport-bug: Force running with python 2 when being invoked as
4426+ apport-collect, and add a check/error message that you need to install
4427+ python-apport to use this.
4428+ * test/test_hookutils.py: Drop duplicate definition of _get_mem_usage(), now
4429+ identical again to trunk.
4430+ * ./test/test_ui_gtk.py: Drop duplicate definition of
4431+ test_immediate_close(), now identical again to trunk.
4432+ * data/general-hooks/ubuntu.py: Do not decode result of command_output(),
4433+ this is done by default now.
4434+ * data/package-hooks/source_linux.py: Add a __main__ for debugging. Stop
4435+ importing hookutils into the global namespace.
4436+ * data/package-hooks/source_ubiquity.py: Fix undefined command_output().
4437+ * data/general-hooks/ubuntu.py: Move definition of wrong_grub_msg and
4438+ grub_hook_failure to the correct place, so that this actually works.
4439+ * data/general-hooks/ubuntu.py: Drop definition of unused "cloud" variable.
4440+ * data/general-hooks/ubuntu.py: Do not import hookutils symbols into global
4441+ namespace.
4442+
4443+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 11 Jun 2012 12:23:53 +0200
4444+
4445+apport (2.1.1-0ubuntu2) quantal; urgency=low
4446+
4447+ [ Martin Pitt ]
4448+ * data/general-hooks/automatix.py: Fix whitespace according to PEP-8.
4449+ * data/general-hooks/ubuntu.py: Fix whitespace according to PEP-8.
4450+ * data/package-hooks/source_{linux,ubiquity}.py: Fix whitespace according to
4451+ PEP-8.
4452+ * debian/control: Add pep8 build dependency, to ensure folks test-build with
4453+ that.
4454+ * etc/apport/crashdb.conf: Re-enable Launchpad crash reporting again.
4455+
4456+ [ Brian Murray ]
4457+ * data/general-hooks/ubuntu.py: collect /etc/default/grub on systems where a
4458+ package failed to install during update-grub (LP: #1006633)
4459+
4460+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 01 Jun 2012 15:44:54 +0200
4461+
4462+apport (2.1.1-0ubuntu1) quantal; urgency=low
4463+
4464+ [ Martin Pitt ]
4465+ * debian/control: Update Vcs-Bzr: for quantal branch.
4466+ * data/general-hooks/ubuntu.py: Do not assume that all reports have a
4467+ ProblemType field. This will not be the case for updating a bug with
4468+ "apport-collect". (LP: #1004029)
4469+ * New upstream release:
4470+ - launchpad.py: When closing a bug as a duplicate, copy some well-known
4471+ tags to the master bug. Thanks Brian Murray.
4472+ - launchpad.py: Set importance of Python crash reports to "Medium" by
4473+ default, similar to signal crashes. Thanks Brian Murray.
4474+ - hookutils.py: Add attach_default_grub() convenience function from the
4475+ grub2 package hook so it can be used by other packages. Thanks Brian
4476+ Murray.
4477+ - launchpad.py: Make Launchpad bug subscription user/team configurable:
4478+ The initial subscriber after filing a bug can be set with the
4479+ "initial_subscriber" crashdb option, and the team which gets subscribed
4480+ after retracing with "triaging_team". (LP: #980726)
4481+ - report.py: Do not change the SourcePackage: field if the binary package
4482+ is not installed and does not exist. This fixes source package hooks to
4483+ actually work in some cases where source and binary package names
4484+ overlap. (part of LP: #993810)
4485+ - apport-gtk, apport-kde: Avoid collecting information twice in "bug
4486+ update" mode. This caused a crash in cases where the source package in a
4487+ bug report does not correspond to an installed binary package.
4488+ (LP: #993810)
4489+
4490+ [ Brian Murray ]
4491+ * data/general-hooks/ubuntu.py: block reporting of package install failures
4492+ with error regarding 'not a debian format archive'
4493+
4494+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 30 May 2012 09:06:49 +0200
4495+
4496+apport (2.1-0ubuntu1) quantal; urgency=low
4497+
4498+ * New upstream release:
4499+ - packaging.py, install_packages(): Add permanent_rootdir flag and if set,
4500+ only unpack newly downloaded packages. Implement it for the apt/dpkg
4501+ backend. Thanks Evan Dandrea.
4502+ - apport-retrace: Add --sandbox-dir option for keeping a permanent sandbox
4503+ (unpacked packages). This provides a considerable speedup. Thanks Evan
4504+ Dandrea.
4505+ - crash-digger: Add --sandbox-dir option and pass it to apport-retrace.
4506+ - Fix the whole code to be PEP-8 compatible, and enforce this in test/run
4507+ by running the "pep8" tool.
4508+ - GTK UI tests: Ensure that there are no GLib/GTK warnings or criticals.
4509+ - Support Python 3. Everything except the launchpad crashdb backend now
4510+ works with both Python 2 and 3. An important change is that the load(),
4511+ write(), and write_mime() methods of a ProblemReport and apport.Report
4512+ object now require the file stream to be opened in binary mode.
4513+ - data/apport: Ignore a crash if the executable was modified after the
4514+ process started. This often happens if the package is upgraded and a
4515+ long-running process is not stopped before. (LP: #984944)
4516+ - Add test cases for apport-unpack.
4517+ - apport-retrace: Add information about outdated packages to the
4518+ "RetraceOutdatedPackages" field.
4519+ - ui.py: Drop python-xdg dependency, use ConfigParser to read the .desktop
4520+ files.
4521+ - apport-gtk: Work around GTK crash when trying to set pixmap on an
4522+ already destroyed parent window. (LP: #938090)
4523+ - data/dump_acpi_tables.py: Fix crash on undefined variable with
4524+ non-standard tables. (LP: #982267)
4525+ - backends/packaging-apt-dpkg.py: Fix crash if a package is installed, but
4526+ has no candidates in apt. (LP: #980094)
4527+ - data/general-hooks/generic.py: Bump minimum free space requirement from
4528+ 10 to 50 MB. 10 is not nearly enough particularly for /tmp. (LP: #979928)
4529+ - hookutils.py, recent_logfile(): Use a default limit of 10000 lines and
4530+ call "tail" instead of reading the whole file. This protects against
4531+ using up all memory when there are massive repeated log messages.
4532+ (LP: #984256)
4533+ - apport-gtk: Do not assume that an icon requested for size 42 actually
4534+ delivers size 42; some themes do not have this available and deliver a
4535+ smaller one instead, causing overflows. Also, copy the image as
4536+ gtk_icon_theme_load_icon() returns a readonly result which we must not
4537+ modify. (LP: #937249)
4538+ - ui.py: Don't show the duplicate warning when the crash database does not
4539+ accept the problem type, and they are just being sent to whoopsie.
4540+ Thanks Evan Dandrea. (LP: #989779)
4541+ - report.py: Correctly escape the file path passed to gdb.
4542+ - apport-gtk, apport-kde: Do not show the information collection progress
4543+ dialog if the crash database does not accept this kind of report. In that
4544+ case whoopsie will upload it in the background and the dialog is not
4545+ necessary. (LP: #989698)
4546+ * data/general-hooks/ubuntu.py, data/general-hooks/automatix.py: Support
4547+ Python 3.
4548+
4549+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 18 May 2012 16:33:53 +0200
4550+
4551+apport (2.0.1-0ubuntu7) precise-proposed; urgency=low
4552+
4553+ * Fix (LP: #989779). Don't show the duplicate warning when we're just
4554+ reporting to daisy.ubuntu.com.
4555+
4556+ -- Evan Dandrea <ev@ubuntu.com> Fri, 27 Apr 2012 16:53:11 +0100
4557+
4558+apport (2.0.1-0ubuntu6) precise-proposed; urgency=low
4559+
4560+ * Cherry-pick from trunk:
4561+ - hookutils.py, recent_logfile(): Use a default limit of 10000 lines and
4562+ call "tail" instead of reading the whole file. This protects against
4563+ using up all memory when there are massive repeated log messages.
4564+ (LP: #984256)
4565+ - apport-gtk: Do not assume that an icon requested for size 42 actually
4566+ delivers size 42; some themes do not have this available and deliver a
4567+ smaller one instead, causing overflows. Also, copy the image as
4568+ gtk_icon_theme_load_icon() returns a readonly result which we must not
4569+ modify. Fixes crashes when using themes other than the standard Ubuntu
4570+ ones. (LP: #937249)
4571+
4572+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 20 Apr 2012 18:53:24 +0200
4573+
4574+apport (2.0.1-0ubuntu5) precise-proposed; urgency=low
4575+
4576+ * etc/apport/crashdb.conf: Disable Launchpad crash/kernel reports for the
4577+ final release. Leave Apport running for whoopsie, though, so use the new
4578+ mechanism for selective problem types.
4579+ * Cherry-pick from trunk:
4580+ - data/general-hooks/generic.py: Bump minimum free space requirement from
4581+ 10 to 50 MB. 10 is not nearly enough particularly for /tmp.
4582+ (LP: #979928)
4583+
4584+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 18 Apr 2012 10:08:28 +0200
4585+
4586+apport (2.0.1-0ubuntu4) precise; urgency=low
4587+
4588+ * Cherry-pick from trunk:
4589+ - data/dump_acpi_tables.py: Fix crash on undefined variable with
4590+ non-standard tables. (LP: #982267)
4591+ - backends/packaging-apt-dpkg.py: Fix crash if a package is installed, but
4592+ has no candidates in apt. (LP: #980094)
4593+ - Launchpad automatic translations update.
4594+ * debian/control: Drop duplicated python-gi build dependency, thanks
4595+ lintian.
4596+
4597+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 16 Apr 2012 16:29:04 +0200
4598+
4599+apport (2.0.1-0ubuntu3) precise; urgency=low
4600+
4601+ * Cherry-pick from trunk:
4602+ - GTK UI tests: Ensure that there are no GLib/GTK warnings or criticals.
4603+ - apport-gtk: Work around GTK crash when trying to set pixmap on an
4604+ already destroyed parent window. (LP: #938090)
4605+
4606+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 13 Apr 2012 19:42:02 +0200
4607+
4608+apport (2.0.1-0ubuntu2) precise; urgency=low
4609+
4610+ * debian/general-hooks/ubuntu.py: if the package installation failure is
4611+ from live media check to see that /cdrom, the real root filesystem, has
4612+ enough free space
4613+
4614+ -- Brian Murray <brian@ubuntu.com> Wed, 11 Apr 2012 15:41:01 -0700
4615+
4616+apport (2.0.1-0ubuntu1) precise; urgency=low
4617+
4618+ * New upstream bug fix release. Changes since our previous snapshot:
4619+ - problem_report.py, write_mime(): Fix regression from version 1.95: Add a
4620+ value as attachment if it is bigger than 1000 bytes, not if it is bigger
4621+ than 100. (LP: #977882)
4622+ - packaging-apt-dpkg.py: Avoid constructing and updating the apt.Cache()
4623+ objects multiple times, to speed up retracing. Thanks Evan Dandrea.
4624+ (LP: #973494)
4625+
4626+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 10 Apr 2012 15:38:11 +0200
4627+
4628+apport (2.0-0ubuntu5) precise; urgency=low
4629+
4630+ * Merge from trunk:
4631+ - generic package hook: Also check /tmp for enough space. Thanks Brian
4632+ Murray. (LP: #972933)
4633+ - Automatic Launchpad translation updates.
4634+
4635+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 10 Apr 2012 07:34:08 +0200
4636+
4637+apport (2.0-0ubuntu4) precise; urgency=low
4638+
4639+ * debian/tests/upstream-system: Drop dead code.
4640+ * debian/tests/upstream-system: Work around LP #972324 by unsetting TMPDIR
4641+ for the tests.
4642+ * Merge test fixes from trunk:
4643+ - test_backend_apt_dpkg.py: Fix checks for the installation of -dbgsym
4644+ packages. This should always happen, as the sandboxes have a ddeb apt
4645+ source. Only make it conditional on the system apt sources in the "use
4646+ system config" test.
4647+ - test_report.py: Sleep a bit after calling our test crash script, to
4648+ ensure the kernel has time to finish writing the core file.
4649+
4650+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 03 Apr 2012 14:17:38 +0200
4651+
4652+apport (2.0-0ubuntu3) precise; urgency=low
4653+
4654+ [ Martin Pitt ]
4655+ * data/general-hooks/ubuntu.py: Do not capture stderr of lsb_release.
4656+ (LP: #955111)
4657+
4658+ [ Scott Moser ]
4659+ * data/general-hooks/ubuntu.py: timeout on attempts to contact ec2 metadata
4660+ service (LP: #855651)
4661+
4662+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 03 Apr 2012 06:58:07 +0200
4663+
4664+apport (2.0-0ubuntu2) precise; urgency=low
4665+
4666+ * debian/control: Make dh-apport Multi-Arch: foreign, so that it can
4667+ satisfy cross-build-dependencies.
4668+
4669+ -- Colin Watson <cjwatson@ubuntu.com> Sat, 31 Mar 2012 02:29:55 +0100
4670+
4671+apport (2.0-0ubuntu1) precise; urgency=low
4672+
4673+ * New upstream release: This is the final 2.0 release, featuring the
4674+ overhauled and simplified GUI, support for whoopsie-daemon, and
4675+ client-side duplicate checking.
4676+ - report.py, anonymize(): Only replace whole words, not substrings.
4677+ (LP: #966562)
4678+ - apport_python_hook.py: Fix filtering of
4679+ org.freedesktop.DBus.Error.NoReply exceptions. (LP: #958575)
4680+ - crashdb.py: When publishing the crash database, cut hash file names
4681+ after quoting, to avoid that the quoting causes them to become too long.
4682+ (LP: #968070) This also uncovered that known() did not actually find any
4683+ signature which contained an URL-quoted character, therefore breaking
4684+ client-side duplicate checking in a lot of cases. Double-quote the file
4685+ name now, as urlopen() unquotes it.
4686+ - Add a new crash database option "problem_types" and a CrashDatabase
4687+ method "accepts(report)". This can be used to stop uploading particular
4688+ problem report types to that database. E. g. a distribution might decide
4689+ to not get "Crash" reports any more after release. Document the new
4690+ option in doc/crashdb-conf.txt.
4691+ - ui.py: Do not upload a report if the crash database does not accept the
4692+ report's type. This behaviour is not really correct, but necessary as
4693+ long as we only support a single crashdb and have whoopsie hardcoded.
4694+ Once we have multiple crash dbs, we need to not even present the data if
4695+ none of the DBs wants the report. See LP #957177 for details.
4696+ (LP: #968121)
4697+ - ui.py: Do not short-circuit information collection if report already has
4698+ a "DistroRelease" field, as the GUIs add that in some cases. Check for
4699+ "Dependencies" instead. This fixes information collection for kernel
4700+ problems (which now has a full GTK GUI test case). (LP: #968488)
4701+ * Merge from trunk:
4702+ - test_ui_gtk.py: Disable package hooks for the tests, as they might ask
4703+ for sudo passwords and other interactive bits, and thus make the tests
4704+ hang.
4705+
4706+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 30 Mar 2012 12:38:02 +0200
4707+
4708+apport (1.95-0ubuntu1) precise; urgency=low
4709+
4710+ [ Martin Pitt ]
4711+ * New upstream release:
4712+ - apport-gtk, apport-kde: When reporting a "system crash", don't say "...
4713+ of this program version", but "...of this type", as we don't show a
4714+ program version in the initial dialog
4715+ (https://wiki.ubuntu.com/ErrorTracker#error) (LP: #961065)
4716+ - problem_report.py, write_mime(): Do not put a key inline if it is bigger
4717+ than 1 kB, to guard against very long lines. (LP: #957326)
4718+ - etc/cron.daily/apport: Do not remove whoopsie's *.upload* stamps every
4719+ day, only if they are older than a week. whoopsie comes with its own
4720+ cron job which deals with them. Thanks Steve Langasek. (LP: #957102)
4721+ - report.py, mark_ignore(): Fix crash if executable went away underneath
4722+ us. (LP: #961410)
4723+ - apport-gtk: Do not compare current continue button label against a
4724+ translated string. Instead just remember whether or not we can restart
4725+ the application. (LP: #960439)
4726+ - hookutils.py, command_output(): Add option to keep the locale instead of
4727+ disabling it.
4728+ - hookutils.py, command_output(): Actually make the "input" parameter
4729+ work, instead of causing an eternal hang. Add tests for all possible
4730+ modes of operation.
4731+ - hooktuils.py: Change root_command_output() and
4732+ attach_root_command_outputs() to disable translated messages
4733+ (LC_MESSAGES=C) only as part of the command to be run, not already for
4734+ the root prefix command. This will keep the latter (gksu, kdesudo, etc.)
4735+ translated. (LP: #961659)
4736+ - apport-gtk: Cut off text values after 4000 characters, as Gtk's TreeView
4737+ does not get along well with huge values. KDE's copes fine, so continue
4738+ to display the complete value there. (LP: #957062)
4739+ - apport-gtk: Make details window resizable in bug reporting mode.
4740+ - crashdb.py, known(): Check the address signature duplicate database if
4741+ the symbolic signature exists, but did not find any result. (LP: #103083)
4742+ - ui.py: Run anonymization after checking for duplicates, to prevent host
4743+ or user names which look like hex numbers to corrupt the stack trace.
4744+ (LP: #953104)
4745+ - apport-gtk: Require an application to both have TERM and SHELL in its
4746+ environment to consider it a command line application that was started
4747+ by the user. (LP: #962130)
4748+ - backends/packaging-apt-dpkg.py, _check_files_md5(): Fix double encoding,
4749+ which caused UnicodeDecodeErrors on non-ASCII characters in an md5sum
4750+ file. (LP: #953682)
4751+ - apport-kde, apport-gtk: Only show "Relaunch" if the report has a
4752+ ProcCmdline, otherwise we cannot restart it. (LP: #956173)
4753+ - apport-gtk, apport-kde: Show the ExecutablePath while we're collecting
4754+ data for the crash report. Thanks Evan Dandrea. (LP: #938707).
4755+ * debian/copyright: Change to copyright format 1.0.
4756+ * debian/control: Bump Standards-Version to 3.9.3.
4757+
4758+ [ Brian Murray ]
4759+ * data/general-hooks/ubuntu.py: use main.log to determine UpgradeStatus not
4760+ apt.log (LP: #886111)
4761+
4762+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 22 Mar 2012 18:55:17 +0100
4763+
4764+apport (1.94.1-0ubuntu2) precise; urgency=low
4765+
4766+ * Merge from trunk:
4767+ - ui.py: Ensure that the report file is readable by the crash reporting
4768+ daemon after running through collect_info(). Thanks Evan Dandrea.
4769+ - apport-gtk, apport-kde: Set the window title to the distribution name, as
4770+ per http://wiki.ubuntu.com/ErrorTracker#error . Thanks Evan Dandrea.
4771+ (LP: #948015)
4772+ - test/run: Ignore obsolete packages on the system, to avoid breaking the
4773+ GUI tests due to them.
4774+ - hookutils.py, attach_alsa(): Add the full "pacmd list" output instead of
4775+ just sinks and sources. Thanks David Henningsson.
4776+ - apport-gtk: Fix handling of non-ASCII strings in message dialogs.
4777+ (LP: #865394)
4778+
4779+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 09 Mar 2012 16:52:53 +0100
4780+
4781+apport (1.94.1-0ubuntu1) precise; urgency=low
4782+
4783+ * New upstream bug fix release. Changes since our previous snapshot:
4784+ - apport-cli: Consistently handle unicode vs. byte arrays. (LP: #946207)
4785+ - report.py, anonymize(): Fix crash when the hostname or user name contain
4786+ non-ASCII characters. (LP: #945230)
4787+ - packaging-apt-dpkg.py: Fix UnicodeDecodeError on unexpected md5sum output.
4788+ (LP: #921037)
4789+ - apport-gtk: Fix handling of non-ASCII strings in message dialogs.
4790+ (LP: #865394)
4791+
4792+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 07 Mar 2012 14:47:31 +0100
4793+
4794+apport (1.94-0ubuntu2) precise; urgency=low
4795+
4796+ * Merge from trunk:
4797+ - collect_info(): Do not assume that reports have a "ProblemType" field.
4798+ This is not the case when updating a bug. (LP: #947519)
4799+ - Re-enable inadvertently disabled "bug report for uninstalled package"
4800+ test.
4801+ - Update translations from Launchpad.
4802+
4803+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 06 Mar 2012 11:37:17 +0100
4804+
4805+apport (1.94-0ubuntu1) precise; urgency=low
4806+
4807+ [ Martin Pitt ]
4808+ * New upstream release:
4809+ - apport: Set the group of written reports to "whoopsie" if that group
4810+ exists.
4811+ - Fix tests to run properly against the system-installed modules and
4812+ binaries.
4813+ - test/run: Run under LC_MESSAGES=C to avoid test failures due to
4814+ translated strings.
4815+ - general-hooks/generic.py: Also attach xsession-errors for programs that
4816+ link to libgtk-3.
4817+ - launchpad.py: Properly handle "Expired" status, to avoid marking new
4818+ bugs as duplicates of expired ones. (LP: #941854)
4819+ - apport: Fix crash if the "whoopsie" group does not exist. (LP: #942326)
4820+ - report.py, crash_signature(): Do not put "<module>" frames into Python
4821+ crash signatures that happen outside of function/method calls. Fall back
4822+ to the file/line number as a frame description instead. This will do a
4823+ much better job at disambiguating e. g. different ImportError crashes.
4824+ (LP: #920403)
4825+ - Make "binary changed since the time of the crash" error message more
4826+ comprehensible, thanks Paolo Rotolo. (LP: #942830)
4827+ - crashdb.py, check_duplicate(): It can happen that a bug gets identified
4828+ as being a duplicate of bug S by symbolic signatures and a duplicate of
4829+ bug A by address signatures. Empirical evidence shows that this is due
4830+ to the unavoidable jitter in stack traces (A and S not being identified
4831+ as duplicates as their signatures differ slightly) and not a logic
4832+ error. So instead of erroring out, duplicate all three bugs and keep the
4833+ lowest number as the master ID. (LP: #943117)
4834+ - Revert the usage of multiple nested threads during data collection, and
4835+ switch back to only using one UI thread. The UI implementations can, and
4836+ now do, decide between showing a spinner and showing a progress dialog
4837+ in the ui_*_info_collection_progress() methods. This fixes libX11
4838+ crashes when multiple UI threads do changes concurrently (LP: #901675),
4839+ and also avoids multi-thread induced crashes in Pango (LP: #943661). The
4840+ removal of the collect() method also fixes the new crashes in it.
4841+ (LP: #942098, #939803)
4842+ - ui.py, get_desktop_entry(): Fix crash on uninstalled package.
4843+ (LP: #940984)
4844+ - data/unkillable_shutdown: Fix crash on race condition when PID goes away
4845+ while the report is created. (LP: #546369)
4846+ - apport/hookutils.py, pci_devices(): Fix crash on unexpected lines from
4847+ lspci. (LP: #904489)
4848+ - Drop hardcoded "Ubuntu" words again which crept in with the whoopsie
4849+ support merge. Use the DistroRelease: field.
4850+ - apport-kde: Fix Home page URL in KApplication metadata.
4851+ - apport-gtk: Fix resizability and size after hiding details.
4852+ (LP: #405418)
4853+ - test/run: Drop "local" argument. This now tests against the source tree
4854+ when run in the source tree root, and against the system
4855+ libraries/programs when run from anywhere else.
4856+ - test/run: Consider command line arguments as test names and only run
4857+ those when given. Also support just running a single test.
4858+ - testsuite: Force the skipping of online tests when $SKIP_ONLINE_TESTS is
4859+ set.
4860+ - hookutils.py, xsession_errors(): Add a reasonable default pattern which
4861+ matches glib-style warnings, errors, criticals etc. and X window errors.
4862+ In data/general-hooks/generic.py, call it with that default instead of
4863+ the rather incomplete custom pattern. (LP: #932660)
4864+ - packaging.py: Add get_package_origin() method, and implement it for
4865+ apt-dpkg.
4866+ - report.py, add_package_info(): Add "[origin: ...]" tag to "Package" and
4867+ "Dependencies" fields for any package which is not native to the
4868+ distribution. If any such package is present, tag the report with
4869+ "third-party-packages" in data/general-hooks/generic.py. (LP: #927912)
4870+ - apport/packaging.py: Add get_uninstalled_package() method as a helper
4871+ method for the test suite. Use it instead of a hardcoded Debian/Ubuntu
4872+ specific name in test/test_hooks.py.
4873+ - test/test_ui_{gtk,kde}.py: Add test cases for complete UI workflow runs
4874+ for reporting a bug against an installed/uninstalled package, and
4875+ reporting a crash with and without showing details. This reproduces the
4876+ recent crashes like LP #901675 or LP #943661.
4877+ - test_ui.py: Add a test case for reporting a complete report on
4878+ uninstalled package. This happens when reporting a problem from a
4879+ different machine through copying a .crash file.
4880+ - test/run: Add a test that there are no hardcoded "Ubuntu" words in the
4881+ source. The code should use the DistroRelease: field or lsb_release.
4882+ * debian/apport-retrace.install: Ship crash-digger. There is no reason any
4883+ more not to, as it's now very easy to set up a retracer bot environment.
4884+ * debian/apport.install: Install crash.{class,jar} into test suite
4885+ directory, so that the test_java_crashes.py test can run.
4886+ * debian/control: Tighten dependencies to ensure that we don't run a newer
4887+ UI package against an older python-apport, which would cause crashes due
4888+ to API mismatches. (LP: #939702)
4889+ * Drop test/test_backend_rpm.py, as we also drop the RPM backend in the
4890+ Ubuntu branch.
4891+ * debian/rules: Update test suite invocation, the "local" argument is
4892+ obsolete.
4893+
4894+ [ Brian Murray ]
4895+ * data/package-hooks/source_linux.py: add in ProcFB
4896+
4897+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 02 Mar 2012 15:32:07 +0100
4898+
4899+apport (1.93-0ubuntu2) precise; urgency=low
4900+
4901+ [ Martin Pitt ]
4902+ * debian/control: Add python-launchpadlib and psmisc build dependencies for
4903+ the test suite.
4904+ * Merge from trunk:
4905+ - apport: Set the group of written reports to "whoopsie" if that group
4906+ exists.
4907+
4908+ [ Brian Murray ]
4909+ * data/package-hooks/source_ubiquity.py: prevent reporting of bugs where
4910+ there was an I/O error with the disk being installed to or from
4911+ (LP: #874727)
4912+
4913+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 23 Feb 2012 17:54:54 +0100
4914+
4915+apport (1.93-0ubuntu1) precise; urgency=low
4916+
4917+ * New upstream bug fix release:
4918+ - apport-gtk: Fix crash on nonexisting icon. Thanks Evan Dandrea.
4919+ (LP: #937354)
4920+ - ui.py, open_url(): Revert back to calling sudo instead of dropping
4921+ privileges ourselves; with the latter, calling firefox as the sudo'ing
4922+ user fails. (LP: #916810, #938128)
4923+ - ui.py: Fix aborting with "AssertionError" if the report is already
4924+ known, but without an URL. (LP: #938778)
4925+ - launchpad.py: If a bug is already known, but the report is private, do
4926+ not send the report. There is little sense piling up lots of duplicates.
4927+ (LP: #938700)
4928+ - test/crash: Fix regression of test_crash_apport(), consider $TERM a
4929+ non-sensitive variable.
4930+ - ui.py: Fix test failures for data collection progress, they are not
4931+ expected to happen for "ProblemType: Crash" any more (happens in the
4932+ background during sending, or if user clicks on "Show Details").
4933+ - test/hooks: Use a package from Debian/Ubuntu main, so that this works
4934+ better during package builds on build servers.
4935+ - test/python: Do not assume that /var/crash/ exists. Use /var/tmp/ for
4936+ the fake binaries instead.
4937+ - data/general-hooks/parse_segv.py: Fix test case name.
4938+ - ui.py: Fix crash on invalid core dumps. (LP: #937215)
4939+ - launchpad.py: Fix crash on unicode report titles. (LP: #896626)
4940+ - apport-gtk: Show the most interesting fields first in the details view.
4941+ - do-release: Call pyflakes and abort on errors other than unused imports.
4942+ - Move all test suites out of the code modules into test/test_<module>.py.
4943+ This avoids having to load it every time the program runs, and also
4944+ allows running the tests against the installed version of Apport.
4945+ - Clean up the other executable test script in test/* and change them to
4946+ the same structure as the module tests.
4947+ * debian/control: Add python-mock and GTK gir build dependencies for the
4948+ gtk/kde tests.
4949+ * debian/control: Add procps dependency to avoid a "command not found" error
4950+ for killall in the ubuntu.py general hook during the test suite.
4951+ * debian/control: Add missing python-gi dependency to apport-gtk.
4952+
4953+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 23 Feb 2012 16:22:37 +0100
4954+
4955+apport (1.92-0ubuntu1) precise; urgency=low
4956+
4957+ [ Martin Pitt ]
4958+ * New upstream release:
4959+ - man/apport-bug.1: Mention where crash files are stored. Thanks David
4960+ Kastrup.
4961+ - hookutils.py, attach_hardware(): Sort ProcModules, thanks Brian Murray.
4962+ - launchpad.py: Keep "Dependencies" attachment in duplicates. Thanks Brian
4963+ Murray.
4964+ - Reorganize the GNOME and KDE user interface to do the crash
4965+ notifications and detail browser in a single dialog. Add test/gtk and
4966+ test/kde tests to check expected dialog layout for different cases.
4967+ Thanks Evan Dandrea!
4968+ - Add support for the whoopsie-daisy crash reporting daemon by creating
4969+ zero-byte .upload file stamps for crash reports. Thanks Evan Dandrea!
4970+ - ui.py: Fix wrong creation of "~" folder instead of expanding it to home
4971+ directory when using "Examine locally". Thanks Jason Conti!
4972+ (LP: #909149)
4973+ - Replace file() calls with open() for Python 3 compatibility. Thanks
4974+ Colin Watson!
4975+ - launchpad.py: Avoid sending tag names with upper case. (LP: #924181)
4976+ - report.py, crash_signature_addresses(): Fix crash if report does not
4977+ have "Signal".
4978+ - apport-gtk: Fix resize handling of expander in details window. Thanks
4979+ Thomas Bechtold! (LP: #930562)
4980+ - Clean up unnecessary imports. Thanks Evan Dandrea!
4981+ * debian/apport-kde.install: Ship new spinner.gif.
4982+
4983+ [ Brian Murray ]
4984+ * data/package-hooks/source_ubiquity.py: include kernel command line from
4985+ ubiquity syslog in the report as InstallCmdLine
4986+ * data/package-hooks/source_ubiquity.py: move apport-bug failures due to
4987+ grub-installer to that package (LP: #878335)
4988+ * debian/control: Add xvfb dependency so that the test suite can run the GUI
4989+ tests.
4990+
4991+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 20 Feb 2012 16:55:29 +0100
4992+
4993+apport (1.91-0ubuntu1) precise; urgency=low
4994+
4995+ * New upstream release:
4996+ - crashdb.py, check_duplicate(): If a crash has a signature but no
4997+ existing duplicate in the DB, also check for an existing address
4998+ signature duplicate in the DB.
4999+ - apport-retrace: Use DistroRelease specific subdirectory of the cache dir
5000+ for mapping a file to a package, as these maps are release specific.
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches