Merge lp:~echidnaman/apport/packagefix into lp:~apport-hackers/apport/trunk

Proposed by Jonathan Thomas
Status: Rejected
Rejected by: Martin Pitt
Proposed branch: lp:~echidnaman/apport/packagefix
Merge into: lp:~apport-hackers/apport/trunk
Diff against target: 6652 lines (+6059/-348)
40 files modified
.bzr-builddeb/default.conf (+2/-0)
TODO (+9/-0)
apport/hookutils.py (+39/-0)
backends/packaging_rpm.py (+0/-311)
bin/apport-bug (+8/-0)
data/general-hooks/automatix.py (+26/-0)
data/general-hooks/ubuntu.py (+146/-0)
data/package-hooks/source_debian-installer.py (+35/-0)
data/package-hooks/source_linux.py (+122/-0)
debian/apport-gtk.install (+2/-0)
debian/apport-kde.install (+7/-0)
debian/apport-retrace.install (+3/-0)
debian/apport-retrace.manpages (+3/-0)
debian/apport.install (+20/-0)
debian/apport.links (+4/-0)
debian/apport.logrotate (+9/-0)
debian/apport.manpages (+3/-0)
debian/apport.upstart (+50/-0)
debian/changelog (+4573/-0)
debian/compat (+1/-0)
debian/control (+124/-0)
debian/copyright (+24/-0)
debian/local/apport-chroot (+347/-0)
debian/local/apport-chroot.1 (+305/-0)
debian/local/setup-apport-retracer (+115/-0)
debian/local/ubuntu-fat-chroot (+34/-0)
debian/pycompat (+1/-0)
debian/python-apport.install (+3/-0)
debian/python-problem-report.install (+1/-0)
debian/pyversions (+1/-0)
debian/rules (+25/-0)
debian/watch (+2/-0)
do-release (+0/-33)
etc/apport/crashdb.conf (+1/-1)
etc/default/apport (+1/-1)
gtk/apport-gtk-mime.desktop.in (+1/-0)
gtk/apport-gtk.desktop.in (+1/-0)
kde/apport-kde-mime.desktop.in (+1/-0)
kde/apport-kde.desktop.in (+1/-0)
man/apport-bug.1 (+9/-2)
To merge this branch: bzr merge lp:~echidnaman/apport/packagefix
Reviewer Review Type Date Requested Status
Martin Pitt (community) Disapprove
Review via email: mp+18356@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Jonathan Thomas (echidnaman) wrote :

Would be nice to get this in for alpha3 to help with the live cd space issues. Having two notifiers isn't very nice either. :)

Revision history for this message
Jonathan Thomas (echidnaman) wrote :

Erm, I guess this is the wrong branch to propose a merge to... The patch needs to be applied to the packaging branch, obviously.

Revision history for this message
Martin Pitt (pitti) wrote :

This was already merged into the packaging branch in lucid. As this targets the wrong branch, I'm closing this. Thanks!

review: Disapprove

Unmerged revisions

1620. By Jonathan Thomas

  * Make apport-kde recommend the new kubuntu-notification-helper package
    rather than update-notifier-kde to prevent the latter, depreciated tool
    from getting on the Live CD

1619. By Martin Pitt

Add X-Ubuntu-Gettext-Domain: to desktop files, thanks Sebastien Bacher for
spotting this.

1618. By Reinhard Tartler

data/general-hooks/ubuntu.py: also attach byte compilation logs for
xemacs21

1617. By Martin Pitt

releasing version 1.12-0ubuntu2

1616. By Martin Pitt

launchpad.py: Do not keep escalating bugs, just escalate at the 10th
duplicate. (Merged from trunk)

1615. By Martin Pitt

releasing version 1.12-0ubuntu1

1614. By Martin Pitt

* New upstream release:
  - launchpad.py: Add options 'escalation_subscription' and 'escalation_tag'
    for handling bugs with more than 10 duplicates.
  - crashdb.conf: For Ubuntu, escalate bugs with >= 10 duplicates to
    "ubuntu-bugcontrol" and tag them with "bugpattern-needed".
    (LP: #487900)
  - general-hooks/generic.py: Filter out crashes on missing GLX
    (LP: #327673)
  - Add bash completion script. Thanks to Philip Muškovac. (LP: #218933)
  - launchpad.py: Drop APPORT_FILES whitelist for download() and instead
    just filter out file extensions that we know about (*.txt and *.gz).
    (LP: #444975)
  - launchpad.py: Do not put the Tags: field into the bug description, since
    they are already proper tags. In download(), convert the real tags back
    to the Tags: field. (LP: #505671)
  - test/crash: Update expected core dump flags for changed rlimit behaviour
    in Linux 2.6.32.
  - launchpad.py: Fix marking of 'checked for duplicate' for bugs with
    upstream tasks.
  - launchpad.py, get_fixed_version(): Do not consider a bug as invalid just
    because it has any invalid distro package task.

1613. By Thierry Carrez

ubuntu.py: Avoid errors when running on ramdiskless EC2 images, by only
attaching available EC2 information. Patch from Scott Moser (LP: #494615)

1612. By Martin Pitt

debian/local/setup-apport-retracer: do not install ddeb lucid pockets, not existing yet

1611. By Martin Pitt

debian/local/setup-apport-retracer: Don't add the retracer PPA for now,
everything we need is in lucid.

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 2010-02-01 01:11:11 +0000
5@@ -0,0 +1,2 @@
6+[BUILDDEB]
7+merge = True
8
9=== modified file 'TODO'
10--- TODO 2010-01-29 18:13:31 +0000
11+++ TODO 2010-02-01 01:11:11 +0000
12@@ -10,3 +10,12 @@
13
14 hooks:
15 - add hooks which run during program crash, to collect more runtime data
16+
17+retracers:
18+ - cache Contents.gz
19+
20+hookutils:
21+- run hooks for related packages in attach_related_packages
22+
23+apt-dpkg backend:
24+- use python-apt's Version.get_source() instead of apt-get source
25
26=== modified file 'apport/hookutils.py'
27--- apport/hookutils.py 2009-12-23 11:01:21 +0000
28+++ apport/hookutils.py 2010-02-01 01:11:11 +0000
29@@ -62,6 +62,45 @@
30
31 report[key] = read_file(path)
32
33+def attach_conffiles(report, package, conffiles=None):
34+ '''Attach information about any modified or deleted conffiles'''
35+
36+ try:
37+ dpkg = subprocess.Popen(['dpkg-query','-W','--showformat=${Conffiles}',
38+ package], stdout=subprocess.PIPE, close_fds=True)
39+ except OSError, e:
40+ return 'Error: ' + str(e)
41+
42+ out = dpkg.communicate()[0]
43+ if dpkg.returncode != 0:
44+ return
45+
46+ for line in out.splitlines():
47+ if not line:
48+ continue
49+ # just take the first two fields, to not stumble over obsolete
50+ # conffiles
51+ path, default_md5sum = line.strip().split()[:2]
52+
53+ if conffiles and path not in conffiles: continue
54+
55+ key = 'modified.conffile.' + path_to_key(path)
56+
57+ if os.path.exists(path):
58+ contents = open(path).read()
59+ m = hashlib.md5()
60+ m.update(contents)
61+ calculated_md5sum = m.hexdigest()
62+
63+ if calculated_md5sum != default_md5sum:
64+ report[key] = contents
65+ statinfo = os.stat(path)
66+ mtime = datetime.datetime.fromtimestamp(statinfo.st_mtime)
67+ mtime_key = 'mtime.conffile.' + path_to_key(path)
68+ report[mtime_key] = mtime.isoformat()
69+ else:
70+ report[key] = '[deleted]'
71+
72 def attach_dmesg(report):
73 '''Attach information from the kernel ring buffer (dmesg).'''
74
75
76=== removed file 'backends/packaging_rpm.py'
77--- backends/packaging_rpm.py 2009-12-23 11:01:21 +0000
78+++ backends/packaging_rpm.py 1970-01-01 00:00:00 +0000
79@@ -1,311 +0,0 @@
80-'''A partial apport.PackageInfo class implementation for RPM.
81-
82-Used as a base class for Fedora, RHEL, openSUSE, SUSE Linux, and many other
83-distributions.
84-'''
85-
86-# Copyright (C) 2007 Red Hat Inc.
87-# Copyright (C) 2008 Nikolay Derkach
88-# Author: Will Woods <wwoods@redhat.com>, Nikolay Derkach <nderkach@gmail.com>
89-#
90-# This program is free software; you can redistribute it and/or modify it
91-# under the terms of the GNU General Public License as published by the
92-# Free Software Foundation; either version 2 of the License, or (at your
93-# option) any later version. See http://www.gnu.org/copyleft/gpl.html for
94-# the full text of the license.
95-
96-# N.B. There's some distro-specific bits in here (e.g. is_distro_package()).
97-# So this is actually an abstract base class (or a template, if you like) for
98-# RPM-based distributions.
99-# A proper implementation needs to (at least) set official_keylist to a list
100-# of GPG keyids used by official packages. You might have to extend
101-# is_distro_package() as well, if you don't sign all your official packages
102-# (cough cough Fedora rawhide cough)
103-
104-# It'd be convenient to use rpmUtils from yum, but I'm trying to keep this
105-# class distro-agnostic.
106-import rpm, hashlib, os, stat, subprocess
107-
108-class RPMPackageInfo:
109- '''Partial apport.PackageInfo class implementation for RPM, as
110- found in Fedora, RHEL, CentOS, etc.'''
111-
112- # Empty keylist. Should contain a list of key ids (8 lowercase hex digits).
113- # e.g. official_keylist = ('30c9ecf8','4f2a6fd2','897da07a','1ac70ce6')
114- official_keylist = ()
115-
116- def __init__(self):
117- self.ts = rpm.TransactionSet() # connect to the rpmdb
118- self._mirror = None
119-
120- def get_version(self, package):
121- '''Return the installed version of a package.'''
122- hdr = self._get_header(package)
123- if hdr == None:
124- raise ValueError
125- # Note - "version" here seems to refer to the full EVR, so..
126- if not hdr['e']:
127- return hdr['v'] + '-' + hdr['r']
128- if not hdr['v'] or not hdr['r']:
129- return None
130- else:
131- return hdr['e'] + ':' + hdr['v'] + '-' + hdr['r']
132-
133- def get_available_version(self, package):
134- '''Return the latest available version of a package.'''
135- # used in report.py, which is used by the frontends
136- raise NotImplementedError, 'method must be implemented by distro-specific RPMPackageInfo subclass'
137-
138- def get_dependencies(self, package):
139- '''Return a list of packages a package depends on.'''
140- hdr = self._get_header(package)
141- # parse this package's Requires
142- reqs=[]
143- for r in hdr['requires']:
144- if r.startswith('rpmlib') or r.startswith('uname('):
145- continue # we've got rpmlib, thanks
146- if r[0] == '/': # file requires
147- req_heads = self._get_headers_by_tag('basenames',r)
148- else: # other requires
149- req_heads = self._get_headers_by_tag('provides',r)
150- for rh in req_heads:
151- rh_envra = self._make_envra_from_header(rh)
152- if rh_envra not in reqs:
153- reqs.append(rh_envra)
154- return reqs
155-
156- def get_source(self, package):
157- '''Return the source package name for a package.'''
158- hdr = self._get_header(package)
159- return hdr['sourcerpm']
160-
161- def get_architecture(self, package):
162- '''Return the architecture of a package.
163-
164- This might differ on multiarch architectures (e. g. an i386 Firefox
165- package on a x86_64 system)'''
166- # Yeah, this is kind of redundant, as package is ENVRA, but I want
167- # to do this the right way (in case we change what 'package' is)
168- hdr = self._get_header(package)
169- return hdr['arch']
170-
171- def get_files(self, package):
172- '''Return list of files shipped by a package.'''
173- hdr = self._get_header(package)
174- files = []
175- for (f, mode) in zip(hdr['filenames'],hdr['filemodes']):
176- if not stat.S_ISDIR(mode):
177- files.append(f)
178- return files
179-
180- def get_modified_files(self, package):
181- '''Return list of all modified files of a package.'''
182- hdr = self._get_header(package)
183-
184- files = hdr['filenames']
185- mtimes = hdr['filemtimes']
186- md5s = hdr['filemd5s']
187-
188- modified = []
189- for i in xrange(len(files)):
190- # Skip files we're not tracking md5s for
191- if not md5s[i]: continue
192- # Skip files we can't read
193- if not os.access(files[i],os.R_OK): continue
194- # Skip things that aren't real files
195- s = os.stat(files[i])
196- if not stat.S_ISREG(s.st_mode): continue
197- # Skip things that haven't been modified
198- if mtimes[i] == s.st_mtime: continue
199- # Oh boy, an actual possibly-modified file. Check the md5sum!
200- if not self._checkmd5(files[i],md5s[i]):
201- modified.append(files[i])
202-
203- return modified
204-
205- def get_file_package(self, file):
206- '''Return the package a file belongs to, or None if the file is not
207- shipped by any package.
208-
209- Under normal use, the 'file' argument will always be the executable
210- that crashed.
211- '''
212- # The policy for handling files which belong to multiple packages depends on the distro
213- raise NotImplementedError, 'method must be implemented by distro-specific RPMPackageInfo subclass'
214-
215- def get_system_architecture(self):
216- '''Return the architecture of the system, in the notation used by the
217- particular distribution.'''
218- rpmarch = subprocess.Popen(['rpm', '--eval', '%_target_cpu'],
219- stdout=subprocess.PIPE)
220- arch = rpmarch.communicate()[0].strip()
221- return arch
222-
223- def is_distro_package(self, package):
224- '''Check if a package is a genuine distro package (True) or comes from
225- a third-party source.'''
226- # This is a list of official keys, set by the concrete subclass
227- if not self.official_keylist:
228- raise Exception, 'Subclass the RPM implementation for your distro!'
229- hdr = self._get_header(package)
230- if not hdr:
231- return False
232- # Check the GPG sig and key ID to see if this package was signed
233- # with an official key.
234- if hdr['siggpg']:
235- # Package is signed
236- keyid = hdr['siggpg'][13:17].encode('hex')
237- if keyid in self.official_keylist:
238- return True
239- return False
240-
241- def set_mirror(self, url):
242- '''Explicitly set a distribution mirror URL for operations that need to
243- fetch distribution files/packages from the network.
244-
245- By default, the mirror will be read from the system configuration
246- files.'''
247- # FIXME C&P from apt-dpkg implementation, might move to subclass
248- self._mirror = url
249-
250- def get_source_tree(self, srcpackage, dir, version=None):
251- '''Download given source package and unpack it into dir (which should
252- be empty).
253-
254- This also has to care about applying patches etc., so that dir will
255- eventually contain the actually compiled source.
256-
257- If version is given, this particular version will be retrieved.
258- Otherwise this will fetch the latest available version.
259-
260- Return the directory that contains the actual source root directory
261- (which might be a subdirectory of dir). Return None if the source is
262- not available.'''
263- # Used only by apport-retrace.
264- raise NotImplementedError, 'method must be implemented by distro-specific RPMPackageInfo subclass'
265-
266- def compare_versions(self, ver1, ver2):
267- '''Compare two package versions.
268-
269- Return -1 for ver < ver2, 0 for ver1 == ver2, and 1 for ver1 > ver2.'''
270- # Used by crashdb.py (i.e. the frontends)
271- # I could duplicate stringToVersion/compareEVR from rpmUtils.misc,
272- # but I hate duplicating code. So if you don't want to require rpmUtils
273- # you can implement this function yourself. Probably you've got
274- # equivalent code in whatever your distro uses instead of yum anyway.
275- raise NotImplementedError, 'method must be implemented by distro-specific RPMPackageInfo subclass'
276-
277- def package_name_glob(self, glob):
278- '''Return known package names which match given glob.'''
279-
280- raise NotImplementedError, 'TODO'
281-
282- #
283- # Internal helper methods. These are only single-underscore, so you can use
284- # use them in extending/overriding the methods above in your subclasses
285- #
286-
287- def _get_headers_by_tag(self,tag,arg):
288- '''Get a list of RPM headers by doing dbMatch on the given tag and
289- argument.'''
290- matches = self.ts.dbMatch(tag,arg)
291- if matches.count() == 0:
292- raise ValueError, 'Could not find package with %s: %s' % (tag,arg)
293- return [m for m in matches]
294-
295- def _get_header(self,envra):
296- '''Get the RPM header that matches the given ENVRA.'''
297-
298- querystr = envra
299- qlen = len(envra)
300- while qlen > 0:
301- mi = impl.ts.dbMatch('name', querystr)
302- hdrs = [m for m in mi]
303- if len(hdrs) > 0:
304- # yay! we found something
305- # Unless there's some rpmdb breakage, you should have one header
306- # here. If you do manage to have two rpms with the same ENVRA,
307- # who cares which one you get?
308- h = hdrs[0]
309- break
310-
311- # remove the last char of querystr and retry the search
312- querystr = querystr[0:len(querystr)-1]
313- qlen = qlen - 1
314-
315- if qlen == 0:
316- raise ValueError, 'No headers found for this envra: %s' % envra
317- return h
318-
319- def _make_envra_from_header(self,h):
320- '''Generate an ENVRA string from an rpm header'''
321- nvra="%s-%s-%s.%s" % (h['n'],h['v'],h['r'],h['arch'])
322- if h['e']:
323- envra = "%s:%s" % (h['e'],nvra)
324- else:
325- envra = nvra
326- return envra
327-
328- def _checkmd5(self,filename,filemd5):
329- '''Internal function to check a file's md5sum'''
330- m = hashlib.md5()
331- f = open(filename)
332- data = f.read()
333- f.close()
334- m.update(data)
335- return (filemd5 == m.hexdigest())
336-
337-impl = RPMPackageInfo()
338-
339-#
340-# Unit test
341-#
342-
343-if __name__ == '__main__':
344- import unittest
345-
346- class _T(unittest.TestCase):
347-
348- def test_get_dependencies(self):
349- '''get_dependencies().'''
350-
351- deps = impl.get_dependencies('bash')
352- self.assertNotEqual(deps, [])
353-
354- def test_get_header(self):
355- '''_get_header().'''
356-
357- hdr = impl._get_header('alsa-utils')
358- self.assertEqual(hdr['n'], 'alsa-utils')
359-
360- def test_get_headers_by_tag(self):
361- '''_get_headers_by_tag().'''
362-
363- headersByTag = impl._get_headers_by_tag('basenames','/bin/bash')
364- self.assertEqual(len(headersByTag), 1)
365- self.assert_(headersByTag[0]['n'].startswith('bash'))
366-
367- def test_get_system_architecture(self):
368- '''get_system_architecture().'''
369-
370- arch = impl.get_system_architecture()
371- # must be nonempty without line breaks
372- self.assertNotEqual(arch, '')
373- self.assert_('\n' not in arch)
374-
375- def test_get_version(self):
376- '''get_version().'''
377-
378- ver = impl.get_version('bash')
379- self.assertNotEqual(ver, None)
380- ver = impl.get_version('alsa-utils')
381- self.assertNotEqual(ver, None)
382-
383-
384- # only execute if rpm is available
385- try:
386- if subprocess.call(['rpm', '--help'], stdout=subprocess.PIPE,
387- stderr=subprocess.PIPE) == 0:
388- unittest.main()
389- except OSError:
390- pass
391
392=== modified file 'bin/apport-bug'
393--- bin/apport-bug 2009-12-23 10:55:52 +0000
394+++ bin/apport-bug 2010-02-01 01:11:11 +0000
395@@ -38,6 +38,14 @@
396 # main
397 #
398
399+# keep backwards compatibility with old documentation which says to use
400+# ubuntu-bug -p packagename
401+if [ $# = 2 ] && [ "$1" = '-p' -o "$1" = '-P' ]; then
402+ shift
403+ # Show warning about deprecated options.
404+ echo "Warning: The options -p/-P are deprecated, please do not use them. See $0 --help"
405+fi
406+
407 find_programs
408
409 export APPORT_INVOKED_AS="$0"
410
411=== added file 'data/general-hooks/automatix.py'
412--- data/general-hooks/automatix.py 1970-01-01 00:00:00 +0000
413+++ data/general-hooks/automatix.py 2010-02-01 01:11:11 +0000
414@@ -0,0 +1,26 @@
415+'''Do not send any crashes when automatix is or was installed, since it usually
416+causes a mess in the system and causes a lot of package installation failures.
417+
418+Copyright (C) 2007 Canonical Ltd.
419+Author: Martin Pitt <martin.pitt@ubuntu.com>
420+
421+This program is free software; you can redistribute it and/or modify it
422+under the terms of the GNU General Public License as published by the
423+Free Software Foundation; either version 2 of the License, or (at your
424+option) any later version. See http://www.gnu.org/copyleft/gpl.html for
425+the full text of the license.
426+'''
427+
428+import apport.packaging
429+
430+def add_info(report):
431+ try:
432+ if apport.packaging.get_version('automatix') or \
433+ apport.packaging.get_version('automatix2') or \
434+ apport.packaging.get_version('ultamatix'):
435+ report['UnreportableReason'] = 'You have installed automatix or ultamatix on your \
436+system. This is known to cause a lot of instability, thus problem reports \
437+will not be sent to the %s developers.' % report.get('DistroRelease',
438+ 'distribution').split()[0]
439+ except ValueError, e:
440+ return
441
442=== added file 'data/general-hooks/ubuntu.py'
443--- data/general-hooks/ubuntu.py 1970-01-01 00:00:00 +0000
444+++ data/general-hooks/ubuntu.py 2010-02-01 01:11:11 +0000
445@@ -0,0 +1,146 @@
446+'''Attach generally useful information, not specific to any package.
447+
448+Copyright (C) 2009 Canonical Ltd.
449+Author: Matt Zimmerman <mdz@canonical.com>
450+
451+This program is free software; you can redistribute it and/or modify it
452+under the terms of the GNU General Public License as published by the
453+Free Software Foundation; either version 2 of the License, or (at your
454+option) any later version. See http://www.gnu.org/copyleft/gpl.html for
455+the full text of the license.
456+'''
457+
458+import apport.packaging
459+import re
460+from urlparse import urljoin
461+from urllib2 import urlopen
462+from apport.hookutils import *
463+
464+def add_info(report):
465+ add_tags = []
466+
467+ # crash reports from live system installer often expose target mount
468+ for f in ('ExecutablePath', 'InterpreterPath'):
469+ if f in report and report[f].startswith('/target/'):
470+ report[f] = report[f][7:]
471+
472+ # if we are running from a live system, add the build timestamp
473+ attach_file_if_exists(report, '/cdrom/.disk/info', 'LiveMediaBuild')
474+
475+ # This includes the Ubuntu packaged kernel version
476+ attach_file_if_exists(report, '/proc/version_signature', 'ProcVersionSignature')
477+
478+ # https://wiki.ubuntu.com/FoundationsTeam/Specs/OemTrackingId
479+ attach_file_if_exists(report, '/var/lib/ubuntu_dist_channel',
480+ 'DistributionChannelDescriptor')
481+
482+ # https://bugs.launchpad.net/bugs/364649
483+ attach_file_if_exists(report, '/var/log/installer/media-info',
484+ 'InstallationMedia')
485+
486+ release_codename = apport.hookutils.command_output(['lsb_release', '-sc'])
487+ if not release_codename.startswith('Error'):
488+ add_tags.append(release_codename)
489+
490+ # There are enough of these now that it is probably worth refactoring...
491+ # -mdz
492+ if report['ProblemType'] == 'Package':
493+ if report['Package'] not in ['grub', 'grub2']:
494+ # linux-image postinst emits this when update-grub fails
495+ # https://wiki.ubuntu.com/KernelTeam/DebuggingUpdateErrors
496+ if 'DpkgTerminalLog' in report and re.search(r'^User postinst hook script \[.*update-grub\] exited with value', report['DpkgTerminalLog'], re.MULTILINE):
497+ # File these reports on the grub package instead
498+ grub_package = apport.packaging.get_file_package('/usr/sbin/update-grub')
499+ if grub_package is None or grub_package == 'grub':
500+ report['SourcePackage'] = 'grub'
501+ else:
502+ report['SourcePackage'] = 'grub2'
503+
504+ if report['Package'] != 'initramfs-tools':
505+ # update-initramfs emits this when it fails, usually invoked from the linux-image postinst
506+ # https://wiki.ubuntu.com/KernelTeam/DebuggingUpdateErrors
507+ if 'DpkgTerminalLog' in report and re.search(r'^update-initramfs: failed for ', report['DpkgTerminalLog'], re.MULTILINE):
508+ # File these reports on the initramfs-tools package instead
509+ report['SourcePackage'] = 'initramfs-tools'
510+
511+ if report['Package'] in ['emacs22', 'emacs23', 'emacs-snapshot', 'xemacs21']:
512+ # emacs add-on packages trigger byte compilation, which might fail
513+ # we are very interested in reading the compilation log to determine
514+ # where to reassign this report to
515+ regex = r'^!! Byte-compilation for x?emacs\S+ failed!'
516+ if 'DpkgTerminalLog' in report and re.search(regex, report['DpkgTerminalLog'], re.MULTILINE):
517+ for line in report['DpkgTerminalLog'].split('\n'):
518+ m = re.search(r'^!! and attach the file (\S+)', line)
519+ if m:
520+ path = m.group(1)
521+ attach_file_if_exists(report, path)
522+
523+ if report['Package'].startswith('linux-image-') and 'DpkgTerminalLog' in report:
524+ # /etc/kernel/*.d failures from kernel package postinst
525+ m = re.search(r'^run-parts: (/etc/kernel/\S+\.d/\S+) exited with return code \d+', report['DpkgTerminalLog'], re.MULTILINE)
526+ if m:
527+ path = m.group(1)
528+ package = apport.packaging.get_file_package(path)
529+ if package:
530+ report['SourcePackage'] = package
531+ report['ErrorMessage'] = m.group(0)
532+ else:
533+ report['UnreportableReason'] = 'This failure was caused by a program which did not originate from Ubuntu'
534+
535+ if 'failed to install/upgrade: corrupted filesystem tarfile' in report.get('Title', ''):
536+ report['UnreportableReason'] = 'This failure was caused by a corrupted package download or file system corruption.'
537+
538+ if 'is already installed and configured' in report.get('ErrorMessage', ''):
539+ report['SourcePackage'] = 'dpkg'
540+
541+ if 'Package' in report:
542+ package = report['Package'].split()[0]
543+ if package and 'attach_conffiles' in dir():
544+ attach_conffiles(report, package)
545+
546+ # do not file bugs against "upgrade-system" if it is not installed (LP#404727)
547+ if package == 'upgrade-system' and 'not installed' in report['Package']:
548+ 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.'
549+
550+ # EC2 and Ubuntu Enterprise Cloud instances
551+ ec2_instance = False
552+ try:
553+ if apport.packaging.get_version('ec2-init'):
554+ ec2_instance = True
555+ except ValueError:
556+ pass
557+ if ec2_instance:
558+ metadata_url = 'http://169.254.169.254/latest/meta-data/'
559+ ami_id_url = urljoin(metadata_url, 'ami-id')
560+
561+ try:
562+ ami = urlopen(ami_id_url).read()
563+ except:
564+ ami = None
565+
566+ if ami is None:
567+ cloud = None
568+ elif ami.startswith('ami'):
569+ cloud = 'ec2'
570+ add_tags.append('ec2-images')
571+ fields = { 'Ec2AMIManifest':'ami-manifest-path',
572+ 'Ec2Kernel':'kernel-id',
573+ 'Ec2Ramdisk':'ramdisk-id',
574+ 'Ec2InstanceType':'instance-type',
575+ 'Ec2AvailabilityZone':'placement/availability-zone' }
576+
577+ report['Ec2AMI'] = ami
578+ for key,value in fields.items():
579+ try:
580+ report[key]=urlopen(urljoin(metadata_url, value)).read()
581+ except:
582+ report[key]='unavailable'
583+ else:
584+ cloud = 'uec'
585+ add_tags.append('uec-images')
586+
587+ if add_tags:
588+ if 'Tags' in report:
589+ report['Tags'] += ' ' + ' '.join(add_tags)
590+ else:
591+ report['Tags'] = ' '.join(add_tags)
592
593=== added file 'data/package-hooks/source_debian-installer.py'
594--- data/package-hooks/source_debian-installer.py 1970-01-01 00:00:00 +0000
595+++ data/package-hooks/source_debian-installer.py 2010-02-01 01:11:11 +0000
596@@ -0,0 +1,35 @@
597+'''Apport package hook for the Debian installer.
598+
599+Copyright (C) 2009 Canonical Ltd.
600+Author: Colin Watson <cjwatson@ubuntu.com>'''
601+
602+from apport.hookutils import attach_hardware, command_available, command_output
603+
604+def add_info(report):
605+ attach_hardware(report)
606+
607+ report['DiskUsage'] = command_output(['df'])
608+ report['MemoryUsage'] = command_output(['free'])
609+
610+ if command_available('dmraid'):
611+ report['DmraidSets'] = command_output(['dmraid', '-s'])
612+ report['DmraidDevices'] = command_output(['dmraid', '-r'])
613+ if command_available('dmsetup'):
614+ report['DeviceMapperTables'] = command_output(['dmsetup', 'table'])
615+
616+ try:
617+ installer_version = open('/var/log/installer/version')
618+ for line in installer_version:
619+ if line.startswith('ubiquity '):
620+ # File these reports on the ubiquity package instead
621+ report['SourcePackage'] = 'ubiquity'
622+ break
623+ installer_version.close()
624+ except IOError:
625+ pass
626+
627+if __name__ == '__main__':
628+ report = {}
629+ add_info(report)
630+ for key in report:
631+ print '%s: %s' % (key, report[key].split('\n', 1)[0])
632
633=== added file 'data/package-hooks/source_linux.py'
634--- data/package-hooks/source_linux.py 1970-01-01 00:00:00 +0000
635+++ data/package-hooks/source_linux.py 2010-02-01 01:11:11 +0000
636@@ -0,0 +1,122 @@
637+'''Apport package hook for the Linux kernel.
638+
639+(c) 2008 Canonical Ltd.
640+Contributors:
641+Matt Zimmerman <mdz@canonical.com>
642+Martin Pitt <martin.pitt@canonical.com>
643+
644+This program is free software; you can redistribute it and/or modify it
645+under the terms of the GNU General Public License as published by the
646+Free Software Foundation; either version 2 of the License, or (at your
647+option) any later version. See http://www.gnu.org/copyleft/gpl.html for
648+the full text of the license.
649+'''
650+
651+import os
652+import subprocess
653+from apport.hookutils import *
654+
655+SUBMIT_SCRIPT = "/usr/bin/kerneloops-submit"
656+
657+def add_info(report, ui):
658+
659+ tags = []
660+
661+ ui.information("As part of the bug reporting process, you'll be asked a series of questions to help provide a more descriptive bug report. Please answer the following questions to the best of your ability. Afterwards, a browser will be opened to finish filing this as a bug in the Launchpad bug tracking system.")
662+
663+ response = ui.yesno("Has this issue been confirmed to exist with the upstream kernel?")
664+ if response == None: #user cancelled
665+ raise StopIteration
666+
667+ if response == False:
668+ report['TestedUpstream'] = "No"
669+ tags.append("needs-upstream-testing")
670+ testupstream = ui.yesno("Testing the upstream kernel can help isolate issues in Ubuntu kernel patches, discover a bug is fixed upstream, or confirm the issue exists upstream. Would you like to test the upstream kernel first before reporting this bug?")
671+ if testupstream == True:
672+ ui.information("For information on testing the upstream kernel, refer to https://wiki.ubuntu.com/KernelTeam/MainlineBuilds")
673+ raise StopIteration
674+
675+ elif response == True:
676+ report['TestedUpstream'] = "Yes"
677+ ui.information("It can also be beneficial to report this bug upstream at http://bugzilla.kernel.org/ so that the upstream kernel developers are also aware of the issue.")
678+
679+ response = ui.yesno("A bug is considered a regression if the issue did not exist on a previous kernel. Is this a regression?")
680+ if response == None: #user cancelled
681+ raise StopIteration
682+
683+ report['Regression'] = "No"
684+ if response == True:
685+ report['Regression'] = "Yes"
686+ regression_tags = ["regression-release", "regression-potential",
687+ "regression-update", "regression-proposed",
688+ "regression-potential"]
689+
690+ # add code to check if running dev release; if so, tag regression-potential and move on.
691+ regression = ui.choice("How would you describe the regression?",
692+ ["regression-release - A regression in a new stable release.",
693+ "regression-potential - A bug discovered in the development release that was not present in the stable release.",
694+ "regression-update - A regression introduced by an updated package in the stable release.",
695+ "regression-proposed - A regression introduced by a package in -proposed .",
696+ "I don't know."], False)
697+
698+ #Don't Know response defaults to regression-potential
699+ tags.append(regression_tags[regression[0]])
700+ ui.information("If possible, when filling out your bug report later on, please note the most recent kernel version where this was not an issue.")
701+
702+ response = ui.yesno("Can you recreate this bug with a specific series of steps?")
703+
704+ if response == None: #user cancelled
705+ raise StopIteration
706+
707+ if response == True:
708+ report['Reproducible'] = "Yes"
709+ ui.information("After apport finishes collection debug information, please document your steps to reproduce the issue when filling out the bug report.")
710+ elif response == False:
711+ report['Reproducible'] = "No"
712+ frequency_options = ["Once a day.",
713+ "Once every few days.",
714+ "Once a week.",
715+ "Once every few weeks.",
716+ "Once a month.",
717+ "Once every few months.",
718+ "This has only happened once."]
719+
720+ frequency = ui.choice("How often does this issue appear?",
721+ frequency_options)
722+ report['Frequency'] = frequency_options[frequency[0]]
723+
724+ report.setdefault('Tags', '')
725+ report['Tags'] += ' ' + ' '.join(tags)
726+
727+ attach_hardware(report)
728+ attach_alsa(report)
729+ attach_wifi(report)
730+
731+ attach_file_if_exists(report, "/etc/initramfs-tools/conf.d/resume",
732+ key="HibernationDevice")
733+
734+ version_signature = report.get('ProcVersionSignature', '')
735+ if not version_signature.startswith('Ubuntu '):
736+ report['UnreportableReason'] = _('The running kernel is not an Ubuntu kernel')
737+ return
738+
739+ uname_release = os.uname()[2]
740+ lrm_package_name = 'linux-restricted-modules-%s' % uname_release
741+ lbm_package_name = 'linux-backports-modules-%s' % uname_release
742+
743+ attach_related_packages(report, [lrm_package_name, lbm_package_name, 'linux-firmware'])
744+
745+ if ('Failure' in report and report['Failure'] == 'oops'
746+ and 'OopsText' in report and os.path.exists(SUBMIT_SCRIPT)):
747+ #it's from kerneloops, ask the user whether to submit there as well
748+ if ui is not None:
749+ if ui.yesno("This report may also be submitted to "
750+ "http://kerneloops.org/ in order to help collect aggregate "
751+ "information about kernel problems. This aids in identifying "
752+ "widespread issues and problematic areas. Would you like to "
753+ "submit information about this crash there?"):
754+ text = report['OopsText']
755+ proc = subprocess.Popen(SUBMIT_SCRIPT,
756+ stdin=subprocess.PIPE)
757+ proc.communicate(text)
758+
759
760=== added directory 'debian'
761=== added file 'debian/apport-gtk.install'
762--- debian/apport-gtk.install 1970-01-01 00:00:00 +0000
763+++ debian/apport-gtk.install 2010-02-01 01:11:11 +0000
764@@ -0,0 +1,2 @@
765+usr/share/apport/*gtk*
766+usr/share/applications/*gtk-mime*
767
768=== added file 'debian/apport-kde.install'
769--- debian/apport-kde.install 1970-01-01 00:00:00 +0000
770+++ debian/apport-kde.install 2010-02-01 01:11:11 +0000
771@@ -0,0 +1,7 @@
772+usr/share/apport/*kde*
773+usr/share/apport/progress.ui
774+usr/share/apport/error.ui
775+usr/share/apport/bugreport.ui
776+usr/share/apport/choices.ui
777+usr/share/applications/apport-kde-mime.desktop
778+usr/share/applications/apport-kde-mimelnk.desktop usr/share/mimelnk/text
779
780=== added file 'debian/apport-retrace.install'
781--- debian/apport-retrace.install 1970-01-01 00:00:00 +0000
782+++ debian/apport-retrace.install 2010-02-01 01:11:11 +0000
783@@ -0,0 +1,3 @@
784+usr/bin/apport-retrace
785+usr/bin/dupdb-admin
786+../local/apport-chroot usr/bin
787
788=== added file 'debian/apport-retrace.manpages'
789--- debian/apport-retrace.manpages 1970-01-01 00:00:00 +0000
790+++ debian/apport-retrace.manpages 2010-02-01 01:11:11 +0000
791@@ -0,0 +1,3 @@
792+man/apport-retrace.1
793+man/dupdb-admin.1
794+debian/local/apport-chroot.1
795
796=== added file 'debian/apport.install'
797--- debian/apport.install 1970-01-01 00:00:00 +0000
798+++ debian/apport.install 2010-02-01 01:11:11 +0000
799@@ -0,0 +1,20 @@
800+etc/default
801+etc/cron.daily
802+usr/share/apport/apport
803+usr/share/apport/apport-checkreports
804+usr/share/apport/package_hook
805+usr/share/apport/kernel_crashdump
806+usr/share/apport/kernel_oops
807+usr/share/apport/gcc_ice_hook
808+usr/share/apport/apportcheckresume
809+usr/share/apport/testsuite/
810+usr/share/doc/apport
811+usr/share/locale
812+usr/share/icons
813+usr/share/mime
814+usr/share/apport/package-hooks
815+usr/share/apport/general-hooks
816+usr/bin/apport-cli
817+usr/bin/apport-unpack
818+usr/bin/apport-bug
819+usr/bin/apport-collect
820
821=== added file 'debian/apport.links'
822--- debian/apport.links 1970-01-01 00:00:00 +0000
823+++ debian/apport.links 2010-02-01 01:11:11 +0000
824@@ -0,0 +1,4 @@
825+/usr/share/apport/package-hooks/source_linux.py /usr/share/apport/package-hooks/source_linux-meta.py
826+/usr/bin/apport-bug /usr/bin/ubuntu-bug
827+/usr/share/man/man1/apport-bug.1.gz /usr/share/man/man1/ubuntu-bug.1.gz
828+/usr/share/man/man1/apport-bug.1.gz /usr/share/man/man1/apport-collect.1.gz
829
830=== added file 'debian/apport.logrotate'
831--- debian/apport.logrotate 1970-01-01 00:00:00 +0000
832+++ debian/apport.logrotate 2010-02-01 01:11:11 +0000
833@@ -0,0 +1,9 @@
834+/var/log/apport.log {
835+ daily
836+ rotate 7
837+ delaycompress
838+ compress
839+ notifempty
840+ missingok
841+}
842+
843
844=== added file 'debian/apport.manpages'
845--- debian/apport.manpages 1970-01-01 00:00:00 +0000
846+++ debian/apport.manpages 2010-02-01 01:11:11 +0000
847@@ -0,0 +1,3 @@
848+man/apport-unpack.1
849+man/apport-cli.1
850+man/apport-bug.1
851
852=== added file 'debian/apport.upstart'
853--- debian/apport.upstart 1970-01-01 00:00:00 +0000
854+++ debian/apport.upstart 2010-02-01 01:11:11 +0000
855@@ -0,0 +1,50 @@
856+# apport - automatic crash report generation
857+#
858+# While this job is active, core dumps will captured by apport and
859+# used to generate automatic crash reports.
860+
861+description "automatic crash report generation"
862+
863+start on runlevel [2345]
864+stop on runlevel [!2345]
865+
866+env enabled=1
867+
868+pre-start script
869+ . /etc/default/apport
870+ [ "$enabled" = "1" ] || [ "$force_start" = "1" ]
871+
872+ mkdir -p -m 1777 /var/crash
873+
874+ # check for kernel crash dump, convert it to apport report
875+ if [ -e /var/crash/vmcore ]
876+ then
877+ /usr/share/apport/kernel_crashdump || true
878+ fi
879+
880+ # check for incomplete suspend/resume or hibernate
881+ if [ -e /var/lib/pm-utils/status ]
882+ then
883+ /usr/share/apport/apportcheckresume || true
884+ rm -f /var/lib/pm-utils/status
885+ rm -f /var/lib/pm-utils/resume-hang.log
886+ fi
887+
888+ echo "|/usr/share/apport/apport %p %s %c" > /proc/sys/kernel/core_pattern
889+end script
890+
891+post-stop script
892+ # Check for a hung resume. If we find one try and grab everything
893+ # we can to aid in its discovery
894+ if [ -e /var/lib/pm-utils/status ]
895+ then
896+ ps -wwef > /var/lib/pm-utils/resume-hang.log
897+ fi
898+
899+ if [ "`dd if=/proc/sys/kernel/core_pattern count=1 bs=1 2>/dev/null`" != "|" ]
900+ then
901+ exit 1
902+ else
903+ echo "core" > /proc/sys/kernel/core_pattern
904+ fi
905+end script
906
907=== added file 'debian/changelog'
908--- debian/changelog 1970-01-01 00:00:00 +0000
909+++ debian/changelog 2010-02-01 01:11:11 +0000
910@@ -0,0 +1,4573 @@
911+apport (1.12-0ubuntu4) UNRELEASED; urgency=low
912+
913+ [ Martin Pitt ]
914+ * Add X-Ubuntu-Gettext-Domain: to desktop files, thanks Sebastien Bacher for
915+ spotting this.
916+
917+ [ Jonathan Thomas ]
918+ * Make apport-kde recommend the new kubuntu-notification-helper package
919+ rather than update-notifier-kde to prevent the latter, depreciated tool
920+ from getting on the Live CD
921+
922+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 28 Jan 2010 14:29:28 +0100
923+
924+apport (1.12-0ubuntu3) lucid; urgency=low
925+
926+ * data/general-hooks/ubuntu.py: also attach byte compilation logs for
927+ xemacs21
928+
929+ -- Reinhard Tartler <siretart@tauware.de> Sun, 24 Jan 2010 19:51:04 +0100
930+
931+apport (1.12-0ubuntu2) lucid; urgency=low
932+
933+ * launchpad.py: Do not keep escalating bugs, just escalate at the 10th
934+ duplicate. (Merged from trunk)
935+
936+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 22 Jan 2010 16:51:35 +0100
937+
938+apport (1.12-0ubuntu1) lucid; urgency=low
939+
940+ * New upstream release:
941+ - launchpad.py: Add options 'escalation_subscription' and 'escalation_tag'
942+ for handling bugs with more than 10 duplicates.
943+ - crashdb.conf: For Ubuntu, escalate bugs with >= 10 duplicates to
944+ "ubuntu-bugcontrol" and tag them with "bugpattern-needed".
945+ (LP: #487900)
946+ - general-hooks/generic.py: Filter out crashes on missing GLX
947+ (LP: #327673)
948+ - Add bash completion script. Thanks to Philip Muškovac. (LP: #218933)
949+ - launchpad.py: Drop APPORT_FILES whitelist for download() and instead
950+ just filter out file extensions that we know about (*.txt and *.gz).
951+ (LP: #444975)
952+ - launchpad.py: Do not put the Tags: field into the bug description, since
953+ they are already proper tags. In download(), convert the real tags back
954+ to the Tags: field. (LP: #505671)
955+ - test/crash: Update expected core dump flags for changed rlimit behaviour
956+ in Linux 2.6.32.
957+ - launchpad.py: Fix marking of 'checked for duplicate' for bugs with
958+ upstream tasks.
959+ - launchpad.py, get_fixed_version(): Do not consider a bug as invalid just
960+ because it has any invalid distro package task.
961+ * debian/local/setup-apport-retracer: Switch to lucid.
962+ * debian/local/setup-apport-retracer: Do not locally install python-apt and
963+ friends, users can run apt-get install in DC dchroots now.
964+ * debian/local/setup-apport-retracer: Don't add the retracer PPA for now,
965+ everything we need is in lucid.
966+
967+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 20 Jan 2010 13:51:15 +0100
968+
969+apport (1.11-0ubuntu5) lucid; urgency=low
970+
971+ * ubuntu.py: Avoid errors when running on ramdiskless EC2 images, by only
972+ attaching available EC2 information. Patch from Scott Moser (LP: #494615)
973+
974+ -- Thierry Carrez <thierry.carrez@ubuntu.com> Tue, 12 Jan 2010 12:19:32 +0100
975+
976+apport (1.11-0ubuntu4) lucid; urgency=low
977+
978+ * Merge from trunk:
979+ - launchpad.py: Add options 'escalation_subscription' and 'escalation_tag'
980+ for handling bugs with more than 10 duplicates.
981+ - crashdb.conf: For Ubuntu, escalate bugs with >= 10 duplicates to
982+ "ubuntu-bugcontrol" and tag them with "bugpattern-needed". (LP: #487900)
983+ - launchpad.py: Drop APPORT_FILES whitelist for download() and instead
984+ just filter out file extensions that we know about (*.txt and *.gz).
985+ (LP: #444975)
986+
987+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 11 Jan 2010 23:53:10 +0100
988+
989+apport (1.11-0ubuntu3) lucid; urgency=low
990+
991+ * Attach emacs compilation logs in order to assist bug triaging.
992+ LP: #413110
993+
994+ -- Reinhard Tartler <siretart@tauware.de> Thu, 07 Jan 2010 22:14:45 +0100
995+
996+apport (1.11-0ubuntu2) lucid; urgency=low
997+
998+ * launchpad.py: Remove a snippet of redundant code.
999+ * Merge bug fixes from trunk:
1000+ - launchpad.py: Drop APPORT_FILES whitelist for download() and instead
1001+ just filter out file extensions that we know about (*.txt and *.gz).
1002+ (LP: #444975)
1003+ * Enable Apport by default again.
1004+
1005+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 05 Jan 2010 18:30:19 +0100
1006+
1007+apport (1.11-0ubuntu1) lucid; urgency=low
1008+
1009+ * New upstream release:
1010+ - Add "--save" UI option to store the collected information into an
1011+ .apport file instead of sending it right away. The file can then later
1012+ be sent through apport-bug. Update manpages accordingly.
1013+ - Update all copyright and description headers and consistently format
1014+ them.
1015+ - Rename all TestCase classes to "_T", which makes it much easier to run
1016+ individual tests from the command line.
1017+ - Testsuite: Verify that report details are/are not shown. This uncovered
1018+ that details about package installation failures were not shown before
1019+ sending them, which is fixed now.
1020+ - test/hooks: Do not try to add hook information to kernel_crashdump test
1021+ case, since we do not have an UI here. This test case broke when the
1022+ system had an interactive package hook for the kernel.
1023+ - When reporting a bug from a saved .apport file, let the user
1024+ review/confirm the content before sending.
1025+
1026+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 23 Dec 2009 13:09:55 +0100
1027+
1028+apport (1.10.1-0ubuntu1) lucid; urgency=low
1029+
1030+ * New upstream release:
1031+ - Install apport-collect symlink.
1032+ - Update translations from Launchpad.
1033+ - Move all remaining option/argument parsing from apport-bug into ui.py.
1034+ This allows the user to add options to apport-bug/apport-collect, and
1035+ also avoids unwieldy dissection of options/arguments in shell.
1036+ * debian/apport.links: Do not create apport-collect symlink, now done by
1037+ upstream build system. Install that in debian/apport.install.
1038+ * debian/local/setup-apport-retracer: Set up lazr.restfulclient.
1039+ * debian/control: Bump python-distutils-extra build dependency to >= 2.14 to
1040+ ensure correct symlink handling.
1041+
1042+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 23 Dec 2009 00:54:37 +0100
1043+
1044+apport (1.10-0ubuntu1) lucid; urgency=low
1045+
1046+ * New upstream release:
1047+ - Add a mode for updating an existing problem report to ui.py
1048+ (-u/--update). This is similar to the Ubuntu specific "apport-collect"
1049+ tool, but implemented the right way now: In particular, this has access
1050+ to the UI and thus can use interactive hooks (LP: #385811) and show you
1051+ what is being sent for confirmation/cancelling (LP: #371827)
1052+
1053+ - apport-bug: If invoked as "apport-collect" or "apport-update-bug" (i. e.
1054+ through a symlink), run apport in update mode (-u <number>). This
1055+ provides a convenient no-options command line program. Please note that
1056+ setup.py does not currently install such a symlink. Update the
1057+ apport-bug manpage accordingly.
1058+
1059+ - launchpad.py: Use new login_with() to clean up code, and specify allowed
1060+ access levels (WRITE_PRIVATE is the only sensible one anyway).
1061+ (LP: #410205)
1062+
1063+ - New hookutils functions:
1064+ + xsession_errors (match lines from ~/.xsession-errors)
1065+ + shared_libraries (determine which libraries a binary links with)
1066+ + links_with_shared_library (test if a binary links with a particular
1067+ library)
1068+
1069+ - New CrashDatabase API: get_affected_packages(), can_update(), is_reporter()
1070+
1071+ - Rename CrashDatabase.update() to update_traces().
1072+
1073+ - Add CrashDatabase.update() for adding all new fields of a report. This is
1074+ primarily useful for collecting local standard and package hook data for an
1075+ already existing bug report which was not filed through Apport. This checks
1076+ can_update()/is_reporter() if the user is eligible for updating that
1077+ particular bug. (LP: #485880)
1078+
1079+ - Ignore SIGXCPU and SIGXFSZ; thanks to Kees Cook. (LP: #498074)
1080+
1081+ - launchpad.py: Do not mark non-Ubuntu bugs as needs-retrace, since there is
1082+ no retracer right now. (LP: #489794)
1083+
1084+ - packaging-apt-dpkg.py, install_retracing_packages(): Do not crash on
1085+ malformed Dependencies.txt lines. (LP: #441709)
1086+
1087+ - use-local: Fix for new source tree location of "apport" binary.
1088+
1089+ * Drop debian/local/apport-collect{,.1} and install symlinks for apport-bug
1090+ instead.
1091+ * data/general-hooks/ubuntu.py: Do not report "corrupted filesystem tarfile"
1092+ package errors. (LP: #320743)
1093+ * data/general-hooks/ubuntu.py: Report "package ... is already installed and
1094+ configured" errors against dpkg, not the package that failed. (LP: #467688)
1095+
1096+ -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 19 Dec 2009 16:48:48 +0100
1097+
1098+apport (1.9.6-0ubuntu2) lucid; urgency=low
1099+
1100+ * Bump python-launchpadlib dependency to ensure that we have login_with()
1101+ with credentials_file argument.
1102+ * debian/local/apport-collect: Add short infos to description if the calling
1103+ person is the bug reporter. (LP: #348948)
1104+ * debian/local/apport-collect: Intercept lazr.restfulclient.errors.HTTPError
1105+ as well, and also cover the login process.
1106+ * debian/local/apport-collect: Improve error messages.
1107+ * debian/local/ubuntu-fat-chroot: Disable update-alternatives, it causes too
1108+ much breakage with fakechroot.
1109+
1110+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 18 Dec 2009 13:09:26 +0100
1111+
1112+apport (1.9.6-0ubuntu1) lucid; urgency=low
1113+
1114+ [ Brian Murray ]
1115+ * debian/local/apport-collect: Strongly encourage collectors who are not
1116+ the bug reporter to file a new bug report.
1117+
1118+ [ Marco Rodrigues ]
1119+ * debian/control: Fix lintian warnings. Move python-distutils-extra
1120+ to b-d-i and add misc:Depends to apport-qt.
1121+
1122+ [ Martin Pitt ]
1123+ * New upstream version 1.9.5 and 1.9.6:
1124+ - apport-retrace: Fix crash if InterpreterPath/ExecutablePath do not
1125+ exist.
1126+ - hookutils.py, attach_alsa(): Attach /proc/cpuinfo too, for CPU flags.
1127+ - Fix crash if InterpreterPath does not exist any more at the time of
1128+ reporting. (LP: #428289)
1129+ - apport-gtk: Connect signals properly, to repair cancel/window close
1130+ buttons. (LP: #427814)
1131+ - Update German translations and fix "konnre" typo. (LP: #484119)
1132+ - launchpad.py: Ensure that text attachments on initial bug filing are
1133+ valid UTF-8. (LP: #453203)
1134+ - man/apport-retrace.1: Document -R option.
1135+ - Add pm-utils hook to record current operation, so that apportcheckresume
1136+ can check it. Before this was kept in Ubuntu's pm-utils package.
1137+ - general-hooks/generic.py: Check if using ecryptfs, and which directory.
1138+ (LP: #444656)
1139+ * data/general-hooks/ubuntu.py: Add distro release codename tag.
1140+ (LP: #404250)
1141+ * debian/local/apport-chroot: Fix last occurrence of "--no-dpkg" to be
1142+ "--no-pkg". (LP: #487056)
1143+ * debian/local/apport-collect: Use "apport-collect data" as comment for the
1144+ apport-collect attachments to enable bug mail filtering. Thanks to Bryce
1145+ Harrington for the suggestion.
1146+
1147+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 02 Dec 2009 00:01:06 +0100
1148+
1149+apport (1.9.4-0ubuntu1) lucid; urgency=low
1150+
1151+ [ Marco Rodrigues ]
1152+ * etc/default/apport: Replace the old init.d force_start command by
1153+ the Upstart one.
1154+ * debian/apport.upstart: If $force_start=1 is given then run the job.
1155+ * debian/local/apport-collect: Don't collect information if bug is a
1156+ duplicate. (LP: #471429)
1157+
1158+ [ Martin Pitt ]
1159+ * New upstream bug fix release:
1160+ - Fix crash when ExecutablePath isn't part of a package. (LP: #424965)
1161+ - hookutils.py, attach_hardware(): Anonymize disk labels. Thanks to Marco
1162+ Rodrigues. (LP: #394411)
1163+ - hookutils.py, attach_wifi(): Anonymize encryption key (which appeared in
1164+ hex when being called as root). Thanks to Marco Rodrigues. (LP: #446299)
1165+ - launchpad.py: If unset, set bug task source package also for interpreter
1166+ crashes.
1167+ - apport-gtk: Give details window a minimize/maximize button, which were
1168+ missing in some window managers. Thanks to Marien Zwart. (LP: #447749)
1169+ - apport-kde: Properly terminate program after closing the last dialog.
1170+ (LP: #458662)
1171+ - hookutils.py, attach_alsa(): Attach /proc/asound/version. (LP: #467233)
1172+ - general-hooks/generic.py: Only collect ~/.xsession-errors bits when we
1173+ have an ExecutablePath linked to libgtk.
1174+ * debian/control: Update Vcs-Bzr: for lucid branch.
1175+ * data/package-hooks/source_linux.py: Add interactive questionaire, thanks
1176+ Leann Ogasawara! (LP: #444672)
1177+
1178+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 06 Nov 2009 14:06:52 +0100
1179+
1180+apport (1.9.3-0ubuntu4) karmic; urgency=low
1181+
1182+ * etc/default/apport: Disable Apport for final Karmic.
1183+
1184+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 22 Oct 2009 22:41:34 +0200
1185+
1186+apport (1.9.3-0ubuntu3) karmic; urgency=low
1187+
1188+ * apport/crash_db/launchpad.py: Increase the number of files available
1189+ for searching with bug patterns.
1190+
1191+ -- Brian Murray <brian@ubuntu.com> Sun, 18 Oct 2009 12:38:38 +0200
1192+
1193+apport (1.9.3-0ubuntu2) karmic; urgency=low
1194+
1195+ * debian/local/apport-collect: Instantiate Launchpad crash database with
1196+ "distro = ubuntu", to satisfy an assertion introduced in the previous
1197+ release. (LP: #451838)
1198+
1199+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 15 Oct 2009 21:12:21 +0200
1200+
1201+apport (1.9.3-0ubuntu1) karmic; urgency=low
1202+
1203+ * New upstream bug fix release:
1204+ - hookutils.py: Fix error codes from "comm", thanks to Brian Murray.
1205+ (LP: #414194)
1206+ - general-hooks/generic.py: Catch xkbcomp error messages. (LP: #431807)
1207+ - launchpad.py: Assert that we have exactly one of "distro" or "project"
1208+ option.
1209+ - doc/crashdb-conf.txt: Improve documentation of crash database options.
1210+ - apport-gtk: Make Cancel/Send buttons focusable. Thanks to Marco
1211+ Rodrigues. (LP: #447780)
1212+ - Drop handling of the APPORT_REPORT_THIRDPARTY environment variable and
1213+ "thirdparty" configuration file option. This has never been documented,
1214+ and conceptually does not work. There is a proper mechanism for this in
1215+ place now, e. g. launchpad.py's "project" option.
1216+ * bin/apport-bug: Show deprecation warning for -p/-P. (LP: #431942)
1217+
1218+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 14 Oct 2009 23:28:24 +0200
1219+
1220+apport (1.9.2-0ubuntu2) karmic; urgency=low
1221+
1222+ [ Matt Zimmerman ]
1223+ * general-hooks/ubuntu.py: Include in Ubuntu bug reports the version number
1224+ of the installation media used to install the system, via
1225+ /var/log/installer/media-info (cf. #364649)
1226+
1227+ [ Martin Pitt ]
1228+ * debian/local/apport-collect.1: Clarify that the launchpad.credentials
1229+ files needs to be removed in order to ask for privileges again.
1230+ * Merge bug fixes from trunk:
1231+ - general-hooks/generic.py: Catch xkbcomp error messages, too. (LP: #431807)
1232+ - apport-bug: Consider -h as "output help", too. (Marco Rodrigues)
1233+
1234+ [ Brian Murray ]
1235+ * debian/local/apport-collect:
1236+ - Resolve bug with specifying package for adding information.
1237+ - Let collector know if bug was not reported by them.
1238+ - Clarify potential failure causes.
1239+
1240+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 08 Oct 2009 09:37:35 +0200
1241+
1242+apport (1.9.2-0ubuntu1) karmic; urgency=low
1243+
1244+ * New upstream bug fix release:
1245+ - apport-cli: Print the URL and ask whether to open a browser. In many
1246+ situations (such as usage on a server through ssh), it's preferable to not
1247+ open the browser on the reporting computer. Thanks to Matt Zimmerman for the
1248+ initial patch! (LP: #286415)
1249+ - general-hooks/generic.py: Collect important glib errors/assertions (which
1250+ should not have private data) from ~/.xsession-errors (LP: #431807)
1251+ - launchpad.py: Link hardware data submission key if it exists. (LP: #424382)
1252+ - apport-cli: Fix crash with non-ASCII characters in prompts.
1253+ - Fix "apport-bug symptomname" to actually work.
1254+ - launchpad.py: Fix crash on invalid credentials file. Thanks to Marco
1255+ Rodrigues for the initial patch! (LP: #414055)
1256+ * man/apport-bug.1: Document APPORT_IGNORE_OBSOLETE_PACKAGES (cherrypicked
1257+ from trunk), and APPORT_STAGING (Ubuntu specific change, since it's a
1258+ launchpad backend specific variable).
1259+ * bin/apport-bug: Ignore -p option when giving two arguments, to keep
1260+ compatibility with current bug filing instructions. (LP: #356755)
1261+ * debian/copyright: Update copyright year and fix GPL link, thanks Marco
1262+ Rodrigues!
1263+
1264+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 02 Oct 2009 13:25:58 +0200
1265+
1266+apport (1.9.1-0ubuntu3) karmic; urgency=low
1267+
1268+ * Merge bug fixes from trunk:
1269+ - apport-cli: Print the URL and ask whether to open a browser. This makes
1270+ ubuntu-bug work much better for servers, now that ubuntu-bug is by and
1271+ large mandatory. (LP: #286415)
1272+ - launchpad.py: Consistently respect $APPORT_STAGING, so that it works
1273+ for bug filing as well. (LP: #435112)
1274+
1275+ [ Matt Zimmerman ]
1276+ * data/general-hooks/ubuntu.py: Add metadata and tags for bugs reported from
1277+ EC2 and UEC instances.
1278+
1279+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 25 Sep 2009 18:51:44 +0200
1280+
1281+apport (1.9.1-0ubuntu2) karmic; urgency=low
1282+
1283+ * kde/bugreport.ui: Select "complete report" option by default, to actually
1284+ be able to file bugs if the options are not shown. Thanks to Yuriy Kozlov!
1285+ Fix cherrypicked from trunk. (LP: #405378)
1286+
1287+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 23 Sep 2009 10:18:28 +0200
1288+
1289+apport (1.9.1-0ubuntu1) karmic; urgency=low
1290+
1291+ [ Martin Pitt ]
1292+ * New upstream bug fix release:
1293+ - hookutils.py, attach_hardware(): Do not attach empty Pccardctl*.
1294+ - apport/report.py, add_gdb_info(): Do not throw away stderr from gdb.
1295+ - data/general-hooks/parse_segv.py:
1296+ + Handle arithmetic wrapping correctly.
1297+ + Handle empty base, scale, or index registers in disassembly.
1298+ + Handle in/out ioport faults.
1299+ - Various improvements to user-visible strings, thanks to Marco Rodrigues!
1300+ (LP: #178507)
1301+ - Various apport-retrace robustifications.
1302+ - setup.py: Fix DistUtilsExtra version check. (LP: #428337)
1303+ - hookutils.py, attach_gconf(): Do not overwrite previous values from
1304+ other packages, thanks Loïc Minier!
1305+ - hookutils.py, attach_gconf(): Fix crash with nonexisting <applyto> tags.
1306+
1307+ [ Loïc Minier ]
1308+ * Upstream source is at https://launchpad.net/apport/+download not
1309+ archive.ubuntu.com.
1310+
1311+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 22 Sep 2009 12:51:38 +0200
1312+
1313+apport (1.9-0ubuntu6) karmic; urgency=low
1314+
1315+ * debian/apport.upstart:
1316+ - Use "exit" in Upstart script rather than "return".
1317+ - Fix post-stop script to write to the correct file. LP: #430895.
1318+
1319+ -- Scott James Remnant <scott@ubuntu.com> Wed, 16 Sep 2009 20:33:49 +0100
1320+
1321+apport (1.9-0ubuntu5) karmic; urgency=low
1322+
1323+ * Merge bug fixes from trunk:
1324+ - hookutils.py, attach_hardware(): Do not attach empty Pccardctl*.
1325+ - apport/ui.py: Show a better message when failed connection to crash
1326+ database. Thanks to Marco Rodrigues! (LP: #178507)
1327+ - Do not throw away stderr from gdb.
1328+ - data/general-hooks/parse_segv.py: Handle arithmetic wrapping correctly.
1329+ - backends/packaging-apt-dpkg.py: More robust of missing ExecutablePath
1330+ due to outdated packages.
1331+ - setup.py: Fix DistUtilsExtra version check. (LP: #428337)
1332+ * data/general-hooks/ubuntu.py: Add distribution channel descriptor, as per
1333+ https://wiki.ubuntu.com/FoundationsTeam/Specs/OemTrackingId .
1334+ * data/general-hooks/ubuntu.py: Do not allow users to file bugs against
1335+ upgrade-system if the package isn't actually installed. Way too many
1336+ upgrade failures get wrongly reported against this. (LP: #404727)
1337+ * debian/rules: Entirely drop obsolete dh_installinit call.
1338+
1339+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 15 Sep 2009 17:31:26 +0200
1340+
1341+apport (1.9-0ubuntu4) karmic; urgency=low
1342+
1343+ FFE LP: #427356.
1344+
1345+ * Replace init script with Upstart job.
1346+ * debian/control:
1347+ - Bump build-dependency on debhelper for Upstart-aware dh_installinit
1348+
1349+ -- Scott James Remnant <scott@ubuntu.com> Tue, 15 Sep 2009 03:33:57 +0100
1350+
1351+apport (1.9-0ubuntu3) karmic; urgency=low
1352+
1353+ * apport/report.py: add upstream bzr commit 1591:
1354+ - include stderr in gdb command output
1355+
1356+ -- Kees Cook <kees@ubuntu.com> Wed, 09 Sep 2009 19:32:05 -0700
1357+
1358+apport (1.9-0ubuntu2) karmic; urgency=low
1359+
1360+ * Add missing python-apt build dependency.
1361+
1362+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 08 Sep 2009 17:41:04 +0200
1363+
1364+apport (1.9-0ubuntu1) karmic; urgency=low
1365+
1366+ * New upstream release:
1367+ - Add "do what I mean" mode to command line argument parsing (applies to
1368+ all interfaces: -cli, -gtk, -kde). When giving a single argument and no
1369+ options, determine the most likely mode, like reporting a bug against a
1370+ symptom, package, executable name, or PID.
1371+ - Add program "apport-bug" which determines the most appropriate user
1372+ interface (GTK, KDE, CLI) and files a bug through it, using the single
1373+ argument "do what I mean" mode. This is an improved version of Ubuntu's
1374+ "ubuntu-bug" script.
1375+ - Update apport-cli manpage to current set of options and behaviour. Also
1376+ point out that apport-gtk and apport-kde share the same CLI.
1377+ - setup.py now installs apport-{gtk,kde} into $prefix/share/apport/, they
1378+ are not supposed to be called directly. This also reflects the path
1379+ which the .desktop files expect.
1380+ - setup.py now installs the internal helper scripts like
1381+ "kernel_crashdump", "apport", or "apportcheckresume" into
1382+ $prefix/share/apport instead of $prefix/bin.
1383+ - Update usage of gettext to work around Python bug of gettext() not
1384+ returning unicodes, but str. Fixes UnicodeDecodeErrors on translated
1385+ --help output.
1386+ - Add missing gettext wrapping for user-visible strings in
1387+ apport-{retrace,unpack} and ui.py; thanks to Marco Rodrigues!
1388+ - backends/packaging-apt-dpkg.py: Robustify get_{source,architecture} for
1389+ uninstalled packages
1390+ - ui.py: Add --version option. Thanks Marco Rodrigues! (LP: #383694)
1391+ * debian/local/apport-collect: Fix KeyError crash on nonexisting LP bug
1392+ number. Thanks Marco Rodrigues! (LP: #424273)
1393+ * debian/control: Bump Standards-Version to 3.8.3 (no changes necessary).
1394+ * debian/local/apport-collect: Point out that you need to select "Change
1395+ anything" privileges. (LP: #373700)
1396+ * debian/control: Drop obsolete texlive-latex-recommended build dependency.
1397+ * debian/rules: Drop --install-scripts, upstream now installs the files and
1398+ binaries into the right place. Adapt debian/*.install accordingly.
1399+ * Drop debian/local/ubuntu-bug{,.1} and replace them with symlinks to
1400+ apport-bug{,.1}, which is a more robust version of ubuntu-bug.
1401+
1402+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 08 Sep 2009 15:53:33 +0200
1403+
1404+apport (1.8.2-0ubuntu1) karmic; urgency=low
1405+
1406+ [ Martin Pitt ]
1407+ * New upstream bug fix release:
1408+ - crashdb.py: Fix handling of non-ASCII crash signatures
1409+ - packaging-apt-dpkg.py: Run ExecutablePath/InterpreterPath check later,
1410+ so that it does not always have to be done
1411+ - crashdb.py: Never mark a bug as a duplicate of itself.
1412+ - launchpad.py, close_duplicate(): Add duplicate assertion
1413+ - Update Ubuntu bug pattern URL
1414+ - launchpad.py: Add "cache_dir" option and $APPORT_LAUNCHPAD_CACHE
1415+ environment variable to specify a non-temporary cache directory.
1416+ (LP: #416804)
1417+ - packaging-apt-dpkg.py, get_architecture(): Only use installed
1418+ architecture if package is actually installed
1419+ - launchpad.py: Drop explicit temporary cache dir, launchpadlib does that
1420+ automatically now. Thanks to Marco Rodriguez!
1421+
1422+ [ Marco Rodrigues ]
1423+ * debian/local/setup-apport-retracer: Switch to karmic.
1424+
1425+ -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 05 Sep 2009 13:04:16 +0200
1426+
1427+apport (1.8.1-0ubuntu1) karmic; urgency=low
1428+
1429+ * New upstream bug fix release:
1430+ - data/general-hooks/generic.py: Check $HOME, not /home for enough space.
1431+ (LP: #422658)
1432+ - launchpad.py: Intercept httplib2.ServerNotFoundError as well, to avoid
1433+ crashes when being offline. (LP: #396276)
1434+ - apport-cli: Save reports with .apport extension instead of .txt. Thanks
1435+ to Steve Beattie! (LP: #401983)
1436+ - fileutils.py, likely_packaged(): Ignored crashes in /var, packages don't
1437+ ship executables there, and it creates false positives. (LP: #414368)
1438+ - packaging-apt-dpkg.py, get_modified_files(): Fix crash with empty lines.
1439+ (LP: #408280)
1440+ - packaging-apt-dpkg.py: Use installed version instead of candidate
1441+ version where appropriate. This also fixes a crash where an obsolete
1442+ package is not available any more. (LP: #423511)
1443+ - hookutils.py, attach_gconf(): Fix crash with keys which do not have a
1444+ schema default. (LP: #422277)
1445+ - launchpad.py: Remove LP #353805 workaround, seems fixed now.
1446+ - launchpad.py: Talk to staging if $APPORT_STAGING is set.
1447+ - launchpad.py: Explicitly supply content_type for addAttachment, current
1448+ wadllib requires it now.
1449+ - apport_python_hook.py: Paper over inexplicable import error.
1450+ (LP: #348250)
1451+ - apport_python_hook.py: Protect against nonexisting sys.argv.
1452+ (LP: #418051)
1453+ - apport/ui.py, load_report(): Check that report has ProblemType field.
1454+ (LP: #198543)
1455+ - ui.py: Fix handling of complete vs. reduced report size. (LP: #92653).
1456+ This also fixes a race condition crash with os.path.getsize().
1457+ (LP: #348137)
1458+ - fi.po: Fix mistranslation of "&Cancel". (LP: #355303)
1459+ - apport-{gtk,kde}: Check for having $DISPLAY at startup to avoid crashes.
1460+ (LP: #411276)
1461+ - report.py, add_gdb_info(): Fix race condition in unlink_core, thanks to
1462+ Tommi Komulainen! (LP: #397945)
1463+ - ui.py, load_report(): Robustify check whether program is still
1464+ installed. (LP: #329184)
1465+ - packaging-apt-dpkg.py, install_retracing_packages(): Install package for
1466+ ExecutablePath/InterpreterPath if missing; this can happen with package
1467+ hooks which reassing package
1468+ - launchpad.py: Add a comment when marking a bug as a duplicate.
1469+ (LP: #418871)
1470+ * Move gdb dependency from apport to GUI packages to avoid pulling in gdb on
1471+ Ubuntu server. Thanks to Steve Beattie! (LP: #354172)
1472+ * ubuntu-bug: Fix handling of .crash file arguments, thanks to Marco
1473+ Rodrigues for pointing this out! (LP: #422881)
1474+ * debian/local/apport-collect: Set content_type and description, wadllib
1475+ requires them now. (LP: #423512) Also drop the ASCII reencoding
1476+ workaround, this doesn't seem to be necessary any more.
1477+ * apport/hookutils.py, attach_conffiles(): Fix crash with obsolete
1478+ conffiles. (LP: #412132)
1479+ * debian/local/apport-collect: Do not upload data if the affected package
1480+ isn't installed and there is no source package hook available either.
1481+ (LP: #417277)
1482+ * debian/local/ubuntu-bug: Accept .apport extension, too; thanks to Steve
1483+ Beattie! (LP: #401983)
1484+ * debian/local/apport-collect: Drop $APPORT_STAGING check, it's done by
1485+ launchpad.py itself now.
1486+
1487+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 03 Sep 2009 21:08:31 +0200
1488+
1489+apport (1.8-0ubuntu2) karmic; urgency=low
1490+
1491+ * apport/report.py: add upstream bzr 1538 commit:
1492+ - change to upstream glibc's __abort_msg variable name.
1493+ - filter out memory addresses when matching assert-bug duplicates.
1494+
1495+ -- Kees Cook <kees@ubuntu.com> Fri, 28 Aug 2009 12:47:14 -0700
1496+
1497+apport (1.8-0ubuntu1) karmic; urgency=low
1498+
1499+ * New upstream release:
1500+ - Do not generally ignore SIGABRT any more. Try to extract the assertion
1501+ message from the core dump, and add it as "AssertionMessage" field. Mark
1502+ reports as unreportable if they do not have an assertion message and crashed
1503+ with SIGABRT. This implements UbuntuSpec:security-karmic-apport-abort.
1504+ - report.py, add_hooks_info(): Add optional package/srcpackage argument. Hooks
1505+ can use that to change the affected package or call hooks from different
1506+ packages.
1507+ - KDE frontend implementation of ui_question_userpass(), for crash databases
1508+ which need to ask for credentials.
1509+ - hookutils.py: New funtion attach_wifi() to add wireless network related
1510+ information to reports.
1511+ - Fix the test suite on current kernels; test/crash previously often failed
1512+ with python segfaults, since it killed the test processes too early.
1513+
1514+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 26 Aug 2009 13:19:51 +0200
1515+
1516+apport (1.7-0ubuntu4) karmic; urgency=low
1517+
1518+ [ Colin Watson ]
1519+ * data/package-hooks/source_debian-installer.py: Report Ubiquity bugs
1520+ against the ubiquity source package, rather than rejecting them.
1521+
1522+ [ James Westby ]
1523+ * data/package-hooks/source_linux.py: submit oopses back if the user
1524+ accepts. Use the new kerneloops-submit to do it.
1525+ * bin/kernel_oops: kerneloops will now pass the checksum, so if it does
1526+ then base the report path on that to uniquify the reports.
1527+ * apport/fileutils.py: allow uid to be a string so that we can use
1528+ the checksum in place of the uid.
1529+
1530+ -- James Westby <james.westby@ubuntu.com> Tue, 25 Aug 2009 21:15:24 +0100
1531+
1532+apport (1.7-0ubuntu3) karmic; urgency=low
1533+
1534+ [ Colin Watson ]
1535+ * data/general-hooks/ubuntu.py: File update-grub bugs on grub2 instead of
1536+ grub if appropriate.
1537+ * apport/hookutils.py: Add command_available method, and use it to add
1538+ prtconf and pccardctl output if those commands are available.
1539+ * data/package-hooks/source_debian-installer.py: New hook, providing
1540+ roughly the same information as is provided by the 'report-hw' tool in
1541+ installation-report.
1542+
1543+ [ Matt Zimmerman ]
1544+ * apport/hookutils.py: Include modem-manager syslog messages in WifiSyslog
1545+ * data/general-hooks/ubuntu.py: Exclude bugs already aimed at grub2 from the
1546+ update-grub test (in support of Colin's change above)
1547+ * data/general-hooks/ubuntu.py: Redirect failures in /etc/kernel/*.d to the
1548+ package owning the file which failed
1549+ * Make sure that kernel crash dumps are marked as private in Launchpad
1550+ (LP: #417059)
1551+
1552+ -- Kees Cook <kees@ubuntu.com> Fri, 21 Aug 2009 11:32:06 -0700
1553+
1554+apport (1.7-0ubuntu2) karmic; urgency=low
1555+
1556+ [ Matt Zimmerman ]
1557+ * data/general-hooks/ubuntu.py: Detect when a kernel upgrade failure is
1558+ caused by update-grub failing, and file the bug on grub instead of linux
1559+ * data/general-hooks/ubuntu.py: Detect when a kernel upgrade failure is
1560+ caused by update-initramfs failing, and file the bug on initramfs-tools
1561+ instead of linux
1562+ * data/package-hooks/source_linux.py: Per discussion with ogasawara, attach
1563+ ALSA details on kernel bug reports by default. About 9% of sampled kernel
1564+ bugs are audio-related.
1565+ * data/package-hooks/source_linux.py: Add linux-firmware version to kernel
1566+ bug reports
1567+ * apport/hookutils.py: Add attach_wifi function with wifi-related debug info
1568+ * data/package-hooks/source_linux.py: Attach wifi info by default to kernel
1569+ bugs
1570+
1571+ [ Martin Pitt ]
1572+ * Merge trunk:
1573+ - report.py, add_hooks_info(): Add optional package/srcpackage argument.
1574+ - Implemented ui_question_userpass [Caio Romão].
1575+
1576+ -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 08 Aug 2009 12:20:39 +0200
1577+
1578+apport (1.7-0ubuntu1) karmic; urgency=low
1579+
1580+ * New upstream release:
1581+ - Add support for symptoms.
1582+ * debian/control: Recommend apport-symptoms.
1583+ * debian/local/ubuntu-bug: When called without arguments, run in "show
1584+ available symptoms" mode.
1585+
1586+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 05 Aug 2009 19:32:39 +0100
1587+
1588+apport (1.6-0ubuntu3) karmic; urgency=low
1589+
1590+ * Merge trunk:
1591+ - apport-gtk: Fix ordering of choices
1592+ - bin/package_hook: Fix crash for subdirectories in log dir. (LP: #332350)
1593+ - doc/package-hooks.txt: Document allowed chars in report keys.
1594+ - Show precise error message for damaged reports.
1595+ * ubuntu-bug: Call apport-kde instead of apport-qt.
1596+
1597+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 04 Aug 2009 18:50:26 +0100
1598+
1599+apport (1.6-0ubuntu2) karmic; urgency=low
1600+
1601+ * Re-enable Apport by default, for the alpha-3 release.
1602+
1603+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 21 Jul 2009 00:44:50 +0200
1604+
1605+apport (1.6-0ubuntu1) karmic; urgency=low
1606+
1607+ * New upstream release:
1608+ - Add support for kernel crashes, thanks to Michael Vogt!
1609+ - apport/ui.py, run_crash(): Do not re-collect information if we already
1610+ have a Dependencies field. This happens when calling apport on an already
1611+ pre-processed .crash file with -c. (LP: #394497)
1612+ - apport/hookutils.py, pci_devices(): Deliver all matching devices, not
1613+ just the last one. (LP: #398906)
1614+ - hookutils.py, _get_module_license(): Return "invalid" if modinfo fails,
1615+ so that they do not count as "free". (LP: #341720)
1616+ - packaging-apt-dpkg.py: Support additional custom native origins in
1617+ /etc/apport/native-origins.d/ . (LP: #386052)
1618+ - packaging-apt-dpkg.py: Drop PPA origin hack, launchpad behaves properly
1619+ now
1620+ - apport-gtk: Avoid focus stealing when being called without arguments (i.
1621+ e. auto-launched). LP: #396243)
1622+ - apport-kde: Use standard gettext again
1623+ - Fix handling of PC lacking disassembly due to invalid memory location.
1624+ * debian/local/apport-collect: Tag bugs with "apport-collected" on success.
1625+ (LP: #391392)
1626+
1627+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 15 Jul 2009 18:02:59 +0200
1628+
1629+apport (1.5-0ubuntu2) karmic; urgency=low
1630+
1631+ * Merge fixes from trunk:
1632+ - packaging-apt-dpkg.py: Fix install_retracing_packages() for pre-0.7.9
1633+ python-apt API.
1634+ - Sort the list of dependencies so it's easier to scan (LP: #391021)
1635+
1636+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 30 Jun 2009 22:39:18 +0200
1637+
1638+apport (1.5-0ubuntu1) karmic; urgency=low
1639+
1640+ * New upstream release:
1641+ - Drop all Makefiles, po/POTFILES.in, and most code from setup.py, and use
1642+ DistUtilsExtras.auto which "just does the right thing" for most build
1643+ system tasks. This requires python-distutils-extra >= 2.2, see
1644+ https://launchpad.net/python-distutils-extra
1645+ - Move all test scripts into test/, to unclutter source tree.
1646+ - setup.py now auto-detects the required packaging backend if
1647+ apport/packaging_impl.py is not manually installed.
1648+ * debian/control: Add python-distutils-extra build dependency.
1649+ * debian/rules: Drop stuff which is now properly done by the upstream build
1650+ system.
1651+ * Drop debian/apport.examples, preloadlib died long ago.
1652+ * Adapt debian/apport-{gtk,kde}.install to new upstream build system, which
1653+ now installs the .desktop files itself.
1654+
1655+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 29 Jun 2009 12:00:21 +0200
1656+
1657+apport (1.4-0ubuntu1) karmic; urgency=low
1658+
1659+ * New upstream release. Compared to our previous snapshot, this changes:
1660+ - Replace Qt4 frontend with KDE frontend, thanks to Richard Johnson!
1661+ - apport/ui.py, run_report_bug(): Clean up PID information collection.
1662+ - gtk/apport-gtk.ui: Drop invalid icon reference. (LP: #389064)
1663+ - ui.py: Do not reject non-distro package reports if report sets CrashDB
1664+ (for third-party destination). (LP: #391015)
1665+ - bin/kernel_crashdump: Use packaging API properly.
1666+ - apport-gtk.ui: Drop erroneous translatable flag from stock buttons.
1667+ - Update German translations.
1668+ * debian/*: qt → kde, add transitional package for apport-qt.
1669+ * Drop backends/packaging_rpm.py. We don't use it in the Ubuntu package at
1670+ all, and it's still in trunk.
1671+ * debian/rules: Drop some deprecated dh_* calls, cdbs's debhelper.mk has
1672+ done them for a long time.
1673+ * debian/control: Bump Standards-Version to 3.8.2 (no changes necessary).
1674+ * debian/control: Replace URLs in descriptions with proper Homepage: field.
1675+
1676+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 26 Jun 2009 10:44:54 +0200
1677+
1678+apport (1.3-0ubuntu2) karmic; urgency=low
1679+
1680+ * debian/local/apport-collect: Pass None as HookUI object. This will crash
1681+ with interactive hooks, but is a good enough immediate bandaid.
1682+ (LP: #385811)
1683+ * Merge fixes from trunk:
1684+ - packaging-apt-dpkg.py: Add backwards compatibility code for python-apt <
1685+ 0.7.9 to not break backportability.
1686+ - hookutils.py, command_output(): Force LC_MESSAGES=C, to avoid translated
1687+ output in bug reports. (LP: #383230)
1688+ - apport-gtk.ui: Make details window resizable, and lower default size, so
1689+ that it will fit on small screens. (LP: #365517)
1690+
1691+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 12 Jun 2009 12:47:59 +0200
1692+
1693+apport (1.3-0ubuntu1) karmic; urgency=low
1694+
1695+ * New upstream release. Compared to our bzr snapshot, this has:
1696+ - Interactive package hooks:
1697+ + Add apport.ui.HookUI class which provides GUI functionality such as
1698+ yes/no
1699+ questions or file dialogs to hooks.
1700+ + add_info() in package hooks now can (optionally) take a second argument
1701+ which is the HookUI instance.
1702+ + See doc/package-hooks.txt for details.
1703+ + See UbuntuSpec:desktop-karmic-symptom-based-bug-reporting
1704+ - New function apport.hookutils.root_command_output() to run a command as root,
1705+ through gksu/kdesudo/sudo, depending on the desktop environment.
1706+
1707+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 10 Jun 2009 16:49:13 +0200
1708+
1709+apport (1.2.1-0ubuntu3) karmic; urgency=low
1710+
1711+ * debian/control: Bump Standards-Version to 3.8.1 (no changes necessary).
1712+ * debian/control: Bump debhelper dependency for dh_icons, to satisfy
1713+ lintian.
1714+ * general-hooks/ubuntu.py: Fix IndexError crash if report does not have a
1715+ Package field. Check whether we actually have attach_conffiles() (which is
1716+ not the case when running the upstream version).
1717+ * Merge trunk:
1718+ - launchpad.py: Fix crash for unset titles.
1719+ - Add segfault analysis hook for quick segv reviews. Thanks to Kees Cook!
1720+ - run-tests: Replace hardcoded Python path with dynamically detected path.
1721+
1722+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 03 Jun 2009 09:52:03 +0200
1723+
1724+apport (1.2.1-0ubuntu2) karmic; urgency=low
1725+
1726+ * debian/control: Update Vcs-Bzr: for new location (moved from project
1727+ branch to package branch).
1728+ * Merge bug fixes from trunk:
1729+ - apport-cli: Fix report saving in "bug report" mode. (LP: #353253)
1730+ - Drop "UnsupportableReason" field, it is too similar to
1731+ UnreportableReason and just confusing.
1732+ - ui.py: Check UnreportableReason for run_report_bug() as well.
1733+ (LP: #361359)
1734+ - general-hooks/generic.py: Do not report problems with low free space on
1735+ / or /home. (LP: #381047)
1736+ - launchpad.py: Do not overwrite report['Title'].
1737+ - launchpad.py: Repair support for extra tags.
1738+ - New function apport.hookutils.root_command_output() to run a command as
1739+ root, through gksu/kdesudo/sudo, depending on the desktop environment.
1740+ (Part of UbuntuSpec:desktop-karmic-symptom-based-bug-reporting)
1741+ - launchpad.py: Fetch DpkgTerminalLog. (LP: #382589)
1742+ - launchpad.py: More robust download(), fixes other part of (LP: #382589)
1743+ - problem_report.py: Allow dashes and underscores in key names. Update
1744+ doc/data-format.tex accordingly. (LP: #380811)
1745+
1746+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 02 Jun 2009 11:59:41 +0200
1747+
1748+apport (1.2.1-0ubuntu1) karmic; urgency=low
1749+
1750+ * New upstream release:
1751+ - Moving away from deprecated APIs:
1752+ + packaging-apt-dpkg.py: Use python-apt >= 0.7.9 official API and drop
1753+ usage of internal symbols.
1754+ + hookutils.py: Drop hal related functions and queries, replace with
1755+ udev database, udev log file, and DMI information from sysfs.
1756+ + gtk UI: Convert from libglade to gtk.Builder.
1757+ - Bug fixes:
1758+ + hookutils.py: Drop /proc/version_signature collection, it is Ubuntu
1759+ specific.
1760+ + apportcheckresume: Fix log collection from pm-utils.
1761+ + Fix various crashes and report properties for reporting against
1762+ uninstalled packages.
1763+ * debian/control: Drop python-glade2 dependency, bump python-gtk2 dependency
1764+ to ensure availability of gtk.Builder.
1765+ * hookutils, attach_conffiles(): Remove leftover debugging spew.
1766+ * debian/apport-qt.install: Install the individual Qt .ui files instead of
1767+ *.ui, since GTK's are now also called *.ui.
1768+
1769+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 15 May 2009 11:28:34 +0200
1770+
1771+apport (1.1.1-0ubuntu2) karmic; urgency=low
1772+
1773+ [ Martin Pitt ]
1774+ * hookutils.py: Do not attach /proc/version_signature, it's Ubuntu specific.
1775+ (Merged from trunk). Instead, attach it in general-hooks/ubuntu.py.
1776+ * general-hooks/ubuntu.py: Attach package conffile information.
1777+ * debian/local/apport-collect: Add workaround for launchpadlib bug
1778+ LP#353805, to avoid crashing with non-UTF8 attachments. (LP: #368004)
1779+ * debian/local/apport-collect: Fix import of launchpadlib's HTTPError.
1780+ * apport/hookutils.py, attach_conffiles(): Ignore empty lines from
1781+ dpkg-query output.
1782+ * general-hooks/ubuntu.py: Strip off '/target' prefix from ExecutablePath
1783+ and InterpreterPath, to correctly process crash reports from the live
1784+ system installer.
1785+ * apport/hookutils.py, attach_conffiles(): Do not use command_output(),
1786+ since that causes error messages to get parsed as conffiles. Use
1787+ subprocess properly.
1788+ * backends/packaging-apt-dpkg.py: Replace deprecated python-apt properties
1789+ with current ones (merged from trunk). Update python-apt dependency to
1790+ >= 0.7.9.
1791+ * packaging-apt-dpkg.py, get_modified_files(): Do not show package list file
1792+ as modified if the package is not installed (merged from trunk).
1793+ (LP: #364533)
1794+ * backends/packaging-apt-dpkg.py, install_retracing_packages(): Fix syntax
1795+ error which broke the retracers.
1796+
1797+ [ Andy Whitcroft ]
1798+ * bin/apportcheckresume: the suspend _and_ hibernate logs are both in
1799+ pm-suspend.log.
1800+ * bin/apportcheckresume: remove redunant check for file before attaching
1801+ stress log.
1802+
1803+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 13 May 2009 15:22:53 +0200
1804+
1805+apport (1.1.1-0ubuntu1) karmic; urgency=low
1806+
1807+ [ Martin Pitt ]
1808+ * New upstream security update:
1809+ - etc/cron.daily/apport: Only attempt to remove files and symlinks, do not
1810+ descend into subdirectories of /var/crash/. Doing so might be exploited by
1811+ a race condition between find traversing a huge directory tree, changing
1812+ an existing subdir into a symlink to e. g. /etc/, and finally getting
1813+ that piped to rm. This also changes the find command to not use GNU
1814+ extensions. Thanks to Stephane Chazelas for discovering this!
1815+ (LP: #357024, CVE-2009-1295)
1816+ - Other fixes were already cherrypicked in the previous upload.
1817+
1818+ [ Matt Zimmerman ]
1819+ * package-hooks/source_linux.py: Attach info for linux-restricted-modules
1820+ and linux-backports-modules
1821+
1822+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 30 Apr 2009 09:08:29 +0200
1823+
1824+apport (1.1-0ubuntu1) karmic; urgency=low
1825+
1826+ * New upstream release:
1827+ - Drop some remaining distro specific pieces of code from non-backends.
1828+ - Add hookutils methods for attaching relevant packages, greatly improve
1829+ attach_alsa() for sound problem debugging.
1830+ - Move launchpad crash database implementation from ever-breaking
1831+ python-launchpad-bugs (screenscraping) to launchpadlib (official and
1832+ stable Launchpad API). (LP: #353879)
1833+ - Add new field Report.pid which gets set on add_proc_info() and can be
1834+ used by hooks.
1835+ - setup.py: Properly clean up all generated files, install missing
1836+ mimetypes/text-x-apport.svg icon symlink.
1837+ - Add README file.
1838+ - Add translations from Launchpad.
1839+ - Remove preloadlib/*; it's undermaintained, and not really useful any
1840+ more these days.
1841+ - Various bug fixes; most visible being the misnamed
1842+ etc/default/apport.default file (which should just be
1843+ etc/default/apport).
1844+ * Merge some bug fixes from trunk:
1845+ - launchpad.py: Send and read Date: field again, reverting r1128; it is
1846+ useful after all. (LP: #349139)
1847+ - report.py, add_proc_info(): Only add ProcAttrCurrent if it is not
1848+ "unconfined".
1849+ - ui.py: Detect invalid PIDs (such as for kernel processes) and give a
1850+ friendly error message. (LP: #360608)
1851+ - report.py, add_hooks_info(): Always run common hooks, and run source
1852+ package hooks if we do not have a binary package name. (LP: #350131)
1853+ - launchpad.py: Consider socket errors when connecting as transient, so
1854+ that crash-digger doesn't stop completely on them.
1855+ * Drop debian/apport.README.Debian, superseded by upstream README.
1856+ * Drop debian/apport.links, done by upstream setup.py now.
1857+ * debian/rules, debian/apport.preinst: Drop upgrade fix for misnamed default
1858+ file again, was only necessary for intra-Jaunty upgrades.
1859+ * debian/control: python-launchpad-bugs → python-launchpadlib dependencies.
1860+ * debian/local/apport-collect: Drop launchpadlib login code, just use the
1861+ CrashDatabase implementation from apport/crashdb_impl/launchpad.py.
1862+ * Make package backportable to hardy and intrepid:
1863+ - debian/control: Relax python-central buil-dependency to 0.5.6.
1864+ - debian/rules: Determine DH_PYCENTRAL value ("include-links" vs.
1865+ "nomove") based on the installed pycentral version.
1866+ - debian/rules: Only supply --install-layout=deb when Python version is
1867+ 2.6.
1868+ * apport/hookutils.py: Add docstring for attach_hardware, thanks Matt
1869+ Zimmerman! (Merged from lp:~mdz/apport/hookutils)
1870+ * apport/crashdb_impl/launchpad.py: Support older wadllib API
1871+ where bug.date_created was a string instead of a datetime object.
1872+ (Cherrypicked from trunk).
1873+ * debian/control: Drop apport dependency to python-xdg, it's not required.
1874+ (LP: #354172)
1875+ * debian/control: Drop gdb from Depends: to Recommends:. (LP: #354172)
1876+ * debian/local/apport-collect: Print a friendly error message instead of
1877+ crashing if the bug number is not an integer. (LP: #351050)
1878+ * debian/local/apport-collect: Change incomplete tasks back to "New" after
1879+ data collection. (LP: #363126)
1880+ * debian/apport.links: source_linux-meta.py -> source_linux.py package hook,
1881+ so that apport-collect works on "linux" source bug tasks. These get
1882+ opportunistically translated into binary packages, but the binary "linux"
1883+ is built by the source "linux-meta". (LP: #350131)
1884+ * debian/local/setup-apport-retracer:
1885+ - Use ports.ubuntu.com for non-{i386,amd64,lpia}.
1886+ - Set up Jaunty by default.
1887+ - Fix test for being in local unpackaged apport source tree.
1888+ - Drop installation of python-launchpad-bugs.
1889+ - Install bzr branches/packages necessary for launchpad, in a shared
1890+ ~/launchpadlib/ tree: launchpadlib, wadllib, oauth, lazr.uri, httplib2,
1891+ simplejson.
1892+ - Clean up apport-chroot calling for extra packages.
1893+
1894+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 28 Apr 2009 10:50:49 +0200
1895+
1896+apport (1.0-0ubuntu5) jaunty; urgency=low
1897+
1898+ [ Martin Pitt ]
1899+ * Rename etc/default/apport.default to etc/default/apport (brown paperbag),
1900+ and add debian/apport.preinst to remove the apport.default file on
1901+ upgrades. (LP: #361543)
1902+ * debian/rules: Call dh_installinit with --onlyscripts, so that the package
1903+ calls update-rc.d again. This fixes the calling of init script again,
1904+ which got broken in 1.0-0ubuntu1. (LP: #361579)
1905+
1906+ [ Matt Zimmerman ]
1907+ * package-hooks/source_linux.py: Attach /etc/initramfs-tools/conf.d/resume to
1908+ show the resume device for hibernation
1909+
1910+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 15 Apr 2009 22:36:33 +0200
1911+
1912+apport (1.0-0ubuntu4) jaunty; urgency=low
1913+
1914+ * etc/default/apport.default: Disable Apport by default for the final
1915+ release.
1916+
1917+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 14 Apr 2009 11:47:29 +0200
1918+
1919+apport (1.0-0ubuntu3) jaunty; urgency=low
1920+
1921+ * apport/hookutils.py: Factor out package_versions() to generate a simple
1922+ text listing of relevant package versions and use it in attach_printing()
1923+ * apport/hookutils.py: Add new function attach_relevant_packages() to attach
1924+ version information (and perhaps eventually run hooks?) for related
1925+ packages
1926+ * apport/hookutils.py: Add glob matching to package_versions()
1927+ * apport/hookutils.py: Add fuser info and dmesg to attach_alsa
1928+ * apport/hookutils.py: Add codec info to attach_alsa
1929+
1930+ -- Matt Zimmerman <mdz@ubuntu.com> Thu, 09 Apr 2009 07:36:45 -0700
1931+
1932+apport (1.0-0ubuntu2) jaunty; urgency=low
1933+
1934+ * backends/packaging-apt-dpkg.py: Add missing shutil import.
1935+ * debian/local/ubuntu-bug: Filter out -p and -P, for backwards calling
1936+ compatibility. (LP: #356755)
1937+
1938+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 06 Apr 2009 23:04:39 -0700
1939+
1940+apport (1.0-0ubuntu1) jaunty; urgency=low
1941+
1942+ * Apport has a proper upstream trunk now (lp:apport) and made an 1.0
1943+ upstream release. Use this as an orig.tar.gz. This does not change any
1944+ code for Jaunty, just removes the Fedora/OpenSUSE specific .spec and init
1945+ scripts.
1946+ * Add bzr-builddeb configuration (merge mode).
1947+ * Add debian/watch for upstream releases on Launchpad.
1948+ * Drop debian/python-apport.postinst, obsolete for a long time.
1949+
1950+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 06 Apr 2009 17:37:48 -0700
1951+
1952+apport (0.149) jaunty; urgency=low
1953+
1954+ Do some internal cleanup of distribution specific stuff:
1955+
1956+ * problem_report.py, man/apport-unpack.1: Fix description of .crash file
1957+ syntax (RFC822, not "Debian control").
1958+ * Move cron.daily, init script, and default file from debian/ to etc/, and
1959+ install them in setup.py. These files are appropriate for upstream
1960+ installation.
1961+ * Move crashdb.conf and doc/README.blacklist to etc/, to simplify setup.py.
1962+ * setup.py: Move *.mo generation/installation into my_install_data class,
1963+ for cleanliness.
1964+ * Move installation of missing packages for retracing from
1965+ bin/apport-retrace to new abstract interface apport/packaging.py,
1966+ install_retracing_packages() and remove_packages(), and move the apt/dpkg
1967+ code to backends/packaging-apt-dpkg.py. This removes a major piece of
1968+ apt/dpkg specific code from non-backends.
1969+ * bin/apport-retrace: Rename option --no-dpkg to --no-pkg and update
1970+ bin/apport-chroot accordingly.
1971+ * Move bin/apport-chroot and man/apport-chroot.1 to debian/local, since they
1972+ are totally Debian/Ubuntu specific.
1973+ * debian/local/setup-apport-retracer: Update apport-chroot and crashdb.conf
1974+ paths for above changes.
1975+ * apport/hookutils.py, files_in_package(): Replace dpkg-query call with
1976+ packaging.get_files(), to avoid Debianism.
1977+ * man/apport-retrace.1: Drop reference to "apt", simply talk about package
1978+ installation.
1979+
1980+ Bug fixes:
1981+
1982+ * setup.py: Fix homepage URL.
1983+ * debian/local/apport-chroot: If multiple distro IDs point to the same
1984+ chroot, do not upgrade them more than once with "upgrade all".
1985+
1986+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 06 Apr 2009 16:06:33 -0700
1987+
1988+apport (0.148) jaunty; urgency=low
1989+
1990+ [ Matt Zimmerman ]
1991+ * apport/hookutils.py: add attach_media_build to include information about
1992+ the build of installation media in use (i.e. in a casper live CD
1993+ environment)
1994+ * general-hooks/ubuntu.py: use attach_media_build (LP: #351781)
1995+ * bin/apportcheckresume: Use attach_file_if_exists rather than attach_file to
1996+ avoid spurious error messages about non-existent log files (LP: #351973)
1997+
1998+ [ Martin Pitt ]
1999+ * debian/local/ubuntu-bug: Drop generic passthrough of apport-{cli,gtk,kde}
2000+ options since this leads to too much confusion. Instead just support a
2001+ single argument and check whether it is a pid, a package name, a .crash
2002+ file, or a program path. This does the right thing when calling it with a
2003+ .crash file (LP: #347392) and fixes the help output (LP: #344923) Update
2004+ manpage accordingly.
2005+ * apport/hookutils.py: Move attach_media_build() to
2006+ general-hooks/ubuntu.py, since it is Ubuntu specific.
2007+ * bin/apport-retrace: Fix KeyError crash on bugs with an ExecutablePath
2008+ which does not exist any more. Close the bug as invalid instead.
2009+ (LP: #352331)
2010+ * bin/kernel_oops: Add "kernel-oops" tag. Since both bin/kernel_oops and
2011+ bin/apportcheckresume use the "kerneloops" bug class, it previously was
2012+ hard to filter out the bug reports which were real oopses. (LP: #349621)
2013+
2014+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 01 Apr 2009 18:10:01 +0200
2015+
2016+apport (0.147) jaunty; urgency=low
2017+
2018+ * bin/apportcheckresume: report the pm-suspend.log/pm-hibernate.log
2019+ from /var/lib.
2020+ * bin/apportcheckresume: only attempt to attach the stress log if its is
2021+ present.
2022+ * bin/apportcheckresume, debian/apport.init: add detection for late
2023+ resume hangs, those where the user thinks the system was working.
2024+ (LP: #335323)
2025+
2026+ -- Andy Whitcroft <apw@canonical.com> Mon, 30 Mar 2009 09:47:28 +0200
2027+
2028+apport (0.146) jaunty; urgency=low
2029+
2030+ * apport/report.py, _generate_sigsegv_report(): Turn into a class method, so
2031+ that it can be used by test cases in other modules as well. Also add
2032+ missing Signal field.
2033+ * apport/crashdb_impl/launchpad.py: Fully enable operation with
2034+ staging.launchpad.net.
2035+ * apport/crashdb_impl/launchpad.py: Add initial test suite, performing data
2036+ upload, Python and SEGV bug reporting, report download, report updating,
2037+ tag and duplicate handling. This happens on staging.launchpad.net.
2038+ * apport/crashdb.py: Add new interface duplicate_of(id) to return the master
2039+ bug of a duplicate. Also document that close_duplicate() with "None"
2040+ master bug will un-duplicate the bug.
2041+ * apport/crashdb_impl/{launchpad,memory}.py: Implement duplicate_of() and
2042+ add test cases. The Launchpad test case reproduces the
2043+ "duplicate-of-a-duplicate" regression, which now got fixed in
2044+ python-launchpad-bugs bzr head.
2045+ * apport/ui.py, open_url(): Also consider a sesssion as "GNOME" if gconfd-2
2046+ is running; some variants such as UNR do not have gnome-panel; this fixes
2047+ using the preferred browser for them. (LP: #322386)
2048+ * debian/local/apport-collect: Add new option -p to explicitly specify a
2049+ (binary) package name instead of guesstimating it from the bug's source
2050+ package tasks. Document new option in debian/local/apport-collect.1.
2051+ (LP: #333875)
2052+ * apport/crashdb.py, duplicate_db_consolidate(): Add logging about removing
2053+ invalidated bugs from the duplicate database, now that this actually
2054+ works.
2055+ * debian/local/ubuntu-bug.1: Update for the possibility to specify a package
2056+ name or PID without any options. Also document the "ubuntu-bug linux"
2057+ special case. (LP: #348985)
2058+ * debian/local/ubuntu-bug.1: Add missing documentation of the case of
2059+ specifying a path name.
2060+ * backends/packaging-apt-dpkg.py: When unpacking source trees, try
2061+ "debian/rules setup" last, since it is the least common variant.
2062+ * debian/local/ubuntu-fat-chroot: Divert away
2063+ /usr/lib/xulrunner-1.9.1b3/xulrunner-bin. It is called on debian/rules
2064+ patch in xulrunner-1.9.1 and hangs eternally in the fakechroots. This is
2065+ only a temporary kludge, though, until the next xulrunner version lands.
2066+ * apport/crashdb_impl/launchpad.py: Add test case: Update a bug report which
2067+ got marked as a duplicate during processing. This reproduces #349407.
2068+ * apport/crashdb_impl/launchpad.py, update(): Intercept and ignore IOErrors
2069+ when changing the bug priority. This happens if a bug gets duplicated
2070+ underneath us. (LP: #349407)
2071+ * apport/crashdb.py, get_crashdb(): Print syntax errors from parsing
2072+ conf.d/*.conf to stderr.
2073+ * apport/crashdb_impl/launchpad.py: Support new CrashDB option "project"
2074+ which can be set to a LP project name to file bugs against that project
2075+ instead of the distribution. Add test case for filing crash bug against a
2076+ project, updating it, duplicating/unduplicating it, and determining fixed
2077+ version. (LP: #338835)
2078+ * bin/crash-digger: If apport-retrace exits with 99, consider it a transient
2079+ error and just stop the retracer, but don't leave the lock file behind.
2080+ Add appropriate test case to test-crash-digger.
2081+ * bin/apport-retrace: If apt update fails due to a "hash sum mismatch", exit
2082+ with a "transient error" code, to stop (but not break) the retracing
2083+ cycle.
2084+
2085+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 27 Mar 2009 17:01:08 +0100
2086+
2087+apport (0.145) jaunty; urgency=low
2088+
2089+ * apport/crashdb_impl/launchpad.py: Fix typo in previous upload.
2090+ * debian/local/apport-collect: Do not crash on
2091+ launchpadlib.errors.HTTPError, but give a proper error message and point
2092+ out that this script needs "change anything" privileges. (LP: #338201)
2093+ * apport_python_hook.py: Fix crash for already existing reports, and make
2094+ behaviour equivalent to bin/apport: Silently exit for existing unseen
2095+ crash report, and overwrite existing seen crash report. Add test cases.
2096+ (LP: #323714)
2097+ * general-hooks/automatix.py: Refuse to send bug reports when ultamatix is
2098+ installed.
2099+
2100+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 10 Mar 2009 18:45:34 +0100
2101+
2102+apport (0.144) jaunty; urgency=low
2103+
2104+ * apport/crashdb_impl/launchpad.py, mark_retrace_failed(): If report is
2105+ invalid, remove CoreDump.gz and other attachments.
2106+ * bin/apport-retrace: If we didn't find the ExecutablePath on the system
2107+ because the package is out of date, don't crash, but close the bug as
2108+ invalid.
2109+
2110+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 10 Mar 2009 10:45:56 +0100
2111+
2112+apport (0.143) jaunty; urgency=low
2113+
2114+ * debian/apport.README.Debian: Document how to temporarily and permanently
2115+ enable crash interception.
2116+ * backends/packaging-apt-dpkg.py, is_distro_package(): Do not consider a
2117+ package a native distro one if installed version is "None". This happens
2118+ with some PPA packages. (LP: #252734)
2119+ * apport/report.py, anonymize(): Move user name anonymization into the
2120+ "non-root" case as well; fixes uninitialized variable. (LP: #338847)
2121+
2122+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 09 Mar 2009 12:16:49 +0100
2123+
2124+apport (0.142) jaunty; urgency=low
2125+
2126+ * apport/report.py: Do not include lsb_release's stderr in the
2127+ DistroRelease: output.
2128+ * apport/hookutils.py: Fix attach_printing():
2129+ - Correct spelling or "error_log".
2130+ - Do not call fgrep with no file names (if /etc/cups/ppd/ is empty), since
2131+ that hangs forever.
2132+ * apport/report.py, _gen_stacktrace_top(): Fix parsing of stacktraces
2133+ with some addresses missing. Add test cases. (LP: #269133)
2134+ * apport/ui.py, run_report_bug(): Show details of collected information and
2135+ give the user a chance to cancel. Previously, collected data was sent
2136+ directly to Launchpad. Nowadays lots of packages have hooks, so we cannot
2137+ guarantee any more that bug reports only have non-sensitive information.
2138+ (LP: #195514) This also allows the user to cancel if (s)he inadvertedly
2139+ clicked on "Report a problem". (LP: #279033)
2140+ * apport/ui.py: Fix crash in get_complete_size() for reports that are
2141+ constructed on the fly instead of loaded from a file (i. e. for bug
2142+ reports). Fixes displaying of report in apport-cli.
2143+ * apport/report.py: Slight robustification of test_add_gdb_info_script()
2144+ test case.
2145+ * debian/local/ubuntu-bug: Fix invocation with "--help". (LP: #305841)
2146+ * apport/ui.py, load_report(): Clearer error message if report file does not
2147+ exist. (LP: #204198)
2148+ * Remove redundant verbiage from test suite docstrings.
2149+ * apport/report.py, anonymize(): Fix crash when processing root-owned
2150+ reports. (LP: #338033)
2151+ * apport/report.py, anonymize(): Do not anonymize single-character user and
2152+ host names, since they create an utter mess in bug reports, and also are
2153+ very low-sensitive.
2154+ * debian/apport.init: Also start apport if force_start=1 is given. This
2155+ provides a convenient method of starting apport just for a session without
2156+ changing the default file. Add a comment to debian/apport.default about
2157+ this possibility. Thanks to Milan for the suggestion and the initial
2158+ patch! (LP: #320467)
2159+ * backends/packaging-apt-dpkg.py, _get_mirror(): Only consider http://
2160+ mirrors for fetching Contents.gz. (LP: #315797)
2161+
2162+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 05 Mar 2009 17:01:05 +0100
2163+
2164+apport (0.141) jaunty; urgency=low
2165+
2166+ * apport/hookutils.py: Add cups error log to attach_printing()
2167+
2168+ -- Brian Murray <brian@ubuntu.com> Mon, 02 Mar 2009 10:55:53 -0800
2169+
2170+apport (0.140) jaunty; urgency=low
2171+
2172+ * debian/python-{apport,problem-report}.install: Fix site-packages →
2173+ *-packages.
2174+ * run-tests: Only check for local packaging_impl.py if running local tests.
2175+ This unbreaks running tests from /usr/share/apport/testsuite/.
2176+
2177+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 02 Mar 2009 11:56:59 +0100
2178+
2179+apport (0.139) jaunty; urgency=low
2180+
2181+ * apport/report.py, anonymize(): Do not anonymize "root". (Side
2182+ issue in LP #333542)
2183+ * debian/rules: Supply --install-layout=deb to setup.py.
2184+ * debian/local/apport-collect: Attach new info to
2185+ staging.launchpad.net if $APPORT_STAGING is defined. This makes
2186+ testing easier. Describe in debian/local/apport-collect.1.
2187+ * debian/local/apport-collect: Ignore ValueErrors from
2188+ add_package_info(), which happens if the bug has a source package
2189+ task which does not have an identically named binary package name.
2190+ Slightly ugly, but it's nontrivial to do that in a sensible
2191+ manner; let's just fix the crash for now, since the focus of this
2192+ tool is to collect information from hooks. (LP: #334823)
2193+ * apport/hookutils.py, hal_dump_udi(): Filter out serial numbers.
2194+ (Mentioned in LP #107103)
2195+
2196+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 02 Mar 2009 11:36:18 +0100
2197+
2198+apport (0.138) jaunty; urgency=low
2199+
2200+ * apport/crashdb_impl/launchpad.py: Consider an useful stack trace
2201+ sufficient for automatically removing the core dump, it doesn't
2202+ need to be perfect. This is in accordance with not setting the
2203+ apport-failed-retrace tag for useful, but non-perfect retraces any
2204+ more.
2205+ * apport/hookutils.py, backends/packaging_rpm.py: Convert usage of
2206+ md5 module (which is deprecated in 2.6) to hashlib.
2207+ * Replace all instances of using an exception's .message attribute
2208+ with str(exception), since message is deprecated in Python 2.6.
2209+ * apport/hookutils.py: Add attach_printing(). Thanks to Brian Murray
2210+ for the initial patch! (LP: #333582)
2211+
2212+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 24 Feb 2009 22:24:31 +0100
2213+
2214+apport (0.137) jaunty; urgency=low
2215+
2216+ * Set python-version to all, include symlinks in the package.
2217+
2218+ -- Matthias Klose <doko@ubuntu.com> Tue, 24 Feb 2009 21:22:36 +0100
2219+
2220+apport (0.136) jaunty; urgency=low
2221+
2222+ [ Andy Whitcroft ]
2223+ * bin/apportcheckresume: remove originator in suspend/hibernate/resume
2224+ reporting. This was intended for debugging only and is now redundant.
2225+ * bin/apportcheckresume, apport/report.py: when collecting resume failures
2226+ in very early boot hal may not be running and we thus unable to obtain
2227+ the machine type information. Move title generation to the reporting
2228+ engine.
2229+
2230+ [ Martin Pitt ]
2231+ * debian/local/apport-collect: Add user environment information, too
2232+ (LANG, PATH, SHELL). (LP: #332578)
2233+
2234+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 24 Feb 2009 14:25:21 +0100
2235+
2236+apport (0.135) jaunty; urgency=low
2237+
2238+ * problem_report.py, test_write_mime_text(): Add test cases for
2239+ single-line and two-line UTF-8 values, single-line and two-line
2240+ Unicode values and a single-line LF-terminated value. Fix handling
2241+ of the latter two.
2242+ * problem_report.py, test_write(): Add test cases for single-line
2243+ and two-line UTF-8 and Unicode values, and fix handling of these
2244+ in write().
2245+ * debian/local/apport-collect: Collect package, OS, and user
2246+ information as well. (LP: #332578)
2247+ * package-hooks/source_apport.py: Robustify by using hookutils, and
2248+ avoid stat errors if /var/crash/* does not exist.
2249+ * test-hooks: Update dodgy test for uninstalled package,
2250+ libdb4.3-tcl is not available in Jaunty any more.
2251+
2252+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 23 Feb 2009 13:14:24 +0100
2253+
2254+apport (0.134) jaunty; urgency=low
2255+
2256+ * debian/local/apport-collect: Do not collect information for closed
2257+ tasks. Thanks for Brian Murray for the initial patch! (LP: #331839)
2258+ * apport/crashdb_impl/launchpad.py, download(): Download
2259+ DpkgTerminalLog.txt attachment as well.
2260+ * apport/report.py: If downloading a nonexisting bug pattern file
2261+ name succeeds and returns a HTML snippet with "404 Not Found",
2262+ consider this as failure. This repairs falling back to source
2263+ package names. (LP: #328751)
2264+ * apport/hookutils.py: Replace tabs with spaces.
2265+
2266+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 20 Feb 2009 11:22:15 +0100
2267+
2268+apport (0.133) jaunty; urgency=low
2269+
2270+ [ Andy Whitcroft ]
2271+ * apport/hookutils.py: define and include a machine type from the hardware
2272+ information in the report, using HAL information where available.
2273+ * bin/apportcheckresume: include the machine type in the suspend/hibernate
2274+ report title. They are generally machine specific.
2275+
2276+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 19 Feb 2009 17:49:03 +0100
2277+
2278+apport (0.132) jaunty; urgency=low
2279+
2280+ [ Martin Pitt ]
2281+ * Add debian/local/apport-collect: Download a Launchpad bug report,
2282+ get its source package, check if it has apport hooks, and if so,
2283+ run and upload them. Add manpage, too. (LP: #124338)
2284+ * debian/control: Add Suggests: python-launchpadlib; this is only
2285+ needed by apport-collect, thus we don't need to pull that into
2286+ every default installation; if it's not installed apport-collect
2287+ will detect and point this out.
2288+ * debian/control: Add ${misc:Depends} dependencies.
2289+
2290+ [ Jonathan Riddell ]
2291+ * Set window icon in apport-qt
2292+
2293+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 19 Feb 2009 13:50:34 +0100
2294+
2295+apport (0.131) jaunty; urgency=low
2296+
2297+ [ Andy Whitcroft ]
2298+ * bin/apportcheckresume, bin/kernel_oops, cli/apport-cli, gtk/apport-gtk,
2299+ gtk/apport-gtk.glade, qt4/apport-qt: generalised the KernelOops
2300+ dialog and handling to allow suspend and hibernate failures present
2301+ more accurate reasons for the report. Also commonises all messages
2302+ in the three implementations to simplify internationalisation.
2303+
2304+ [ Martin Pitt ]
2305+ * po/Makefile: Fix merge-po rule to actually work again.
2306+ * cli/apport-cli, qt4/apport-qt: Unify string with apport-gtk.
2307+ * apport/ui.py: Drop some bogus translatable strings.
2308+ * Update German translations.
2309+
2310+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 16 Feb 2009 19:31:41 +0100
2311+
2312+apport (0.130) jaunty; urgency=low
2313+
2314+ [ Martin Pitt ]
2315+ * bin/kernel_crashdump: Don't crash if vmcore.log does not exist.
2316+ * crashdb_impl/launchpad.py: Tag bugs with the architecture they are
2317+ being reported on.
2318+ * bin/crash-digger: Revert catching "database is locked" errors
2319+ during consolidation, since it just hides more fundamental errors.
2320+ * apport/crashdb_impl/memory.py: Improve docstrings of test suite.
2321+ * bin/apport-retrace: Do not try to install -dbgsym packages with
2322+ nonmatching versions, unless --unpack-only is used. Thanks to
2323+ hggdh for the initial patch! (LP: #309208)
2324+
2325+ [ Andy Whitcroft ]
2326+ * bin/apportcheckresume: modify the oops title and thereby the launchpad
2327+ bug title to say suspend or hibernate.
2328+ * bin/apportcheckresume: modify the tags to bin/apportcheckresume:
2329+ modify the oops title and thereby the launchpad be resume+suspend or
2330+ resume+hibernate as appropriate.
2331+ * bin/apportcheckresume: include any non-free modules in the bug title.
2332+
2333+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 12 Feb 2009 22:09:35 +0100
2334+
2335+apport (0.129) jaunty; urgency=low
2336+
2337+ * bin/apport-retrace: Log broken reports.
2338+ * bin/apport-retrace: Do not mark bugs as invalid after they are
2339+ already marked as a duplicate, since that does not work in
2340+ Launchpad.
2341+ * debian/local/ubuntu-fat-chroot: Symlink /target -> /, to work
2342+ for crashes which appear in /target during installation.
2343+ * bin/apport: Move argv length/usage help before lock check, so that
2344+ it works if the user cannot lock /var/crash/.lock. Thanks to Kees
2345+ Cook!
2346+ * doc/package-hooks.txt: Point out apport.hookutils.
2347+ * apport/ui.py: Check environment variable APPORT_REPORT_THIRDPARTY
2348+ in addition to the 'thirdparty' configuration file option for
2349+ overriding the "genuine distro package" check. Thanks to Oumar
2350+ Aziz OUATTARA!
2351+ * apport/crashdb_impl/launchpad.py: In third-party mode, report bugs
2352+ against Launchpad projects. Thanks to Oumar
2353+ Aziz OUATTARA for his branch! (LP: #213454)
2354+ * bin/apportcheckresume: Include /var/lib/pm-utils/stress.log, too.
2355+ Thanks to Andy Whitcroft for the initial patch, rewrote to use
2356+ apport.hookutils.
2357+ * apport/crashdb.py, init_duplicate_db(): Run an integrity check and
2358+ raise exception if it fails, to avoid running the retracers on a
2359+ corrupt duplicate db. Add test case to
2360+ apport/crashdb_impl/memory.py.
2361+ * bin/crash-digger: Create a backup of the duplicates database right
2362+ after initializing it (which verifies integrity).
2363+ * dupdb-admin: Add new command "consolidate".
2364+ * apport/crashdb_impl/launchpad.py: Request bug lists with batch
2365+ size 300, for slight speedup of consolidation.
2366+ * apport/crashdb.py, duplicate_db_consolidate(): Warn about a bug
2367+ which is not yet fixed, but does not appear in get_unfixed(). In
2368+ Launchpad, this means that the bug does not have the
2369+ 'apport-crash' tag any more; if there are many, those would be a
2370+ huge time/bandwidth waste.
2371+
2372+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 26 Jan 2009 16:04:16 +0100
2373+
2374+apport (0.128) jaunty; urgency=low
2375+
2376+ * apport/ui.py: Introduce new configuration option "thirdparty" and
2377+ ignore the is_distro_package() check if it is set to true.
2378+ * bin/apport-retrace: Call Cache.open() after Cache.update().
2379+ * bin/apport-retrace: If downloading a report fails (e. g. the
2380+ description was invalidly modified), mark the bug as invalid with
2381+ a proper explanation instead of crashing, unless we are in
2382+ "stdout" or "output file" mode.
2383+ * apport/crashdb_impl/launchpad.py: Apply some heuristics to attempt
2384+ recovering broken descriptions as in LP #315728 (intermediate
2385+ blank lines, and non-apport data append).
2386+
2387+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 19 Jan 2009 17:49:55 +0100
2388+
2389+apport (0.127) jaunty; urgency=low
2390+
2391+ * bin/apportcheckresume, debian/apport.init: integrate with pm-utils to
2392+ detect suspend/resume failures. Thanks to Steve Conklin and Andy
2393+ Whitcroft. LP: #316419.
2394+
2395+ -- Steve Langasek <steve.langasek@ubuntu.com> Tue, 13 Jan 2009 12:54:12 -0800
2396+
2397+apport (0.126) jaunty; urgency=low
2398+
2399+ * bin/apport-chroot: If --auth is specified in "login" mode, symlink
2400+ the file into /tmp/auth in the fakechroot. This makes it much
2401+ easier to interactively debug retracing.
2402+ * bin/apport-retrace: Exit with zero for bugs which do not have a
2403+ core dump, so that it does not completely stop the retracers.
2404+
2405+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 09 Jan 2009 22:49:48 +0100
2406+
2407+apport (0.125) jaunty; urgency=low
2408+
2409+ * bin/apport-chroot: Exit with apport-retraces' exit status, to
2410+ propagate errors upwards to crash-digger.
2411+ * bin/apport-retrace: Do not put outdated -dbgsym comments into the
2412+ bug comments.
2413+ * Rewrite bin/crash-digger to become much more robust and easier for
2414+ retracer maintainers:
2415+ - Now designed around cron-based maintenance: start, process all
2416+ pending bugs, exit. This makes memory leaks irrelevant, and gets
2417+ rid of all the logging, daemonizing, and looping code.
2418+ - Adapt stdout/stderr reporting to be suitable for cron and
2419+ redirecting stdout to a log file.
2420+ - Use lock files to avoid overlapping instances and avoid damaging
2421+ bugs with broken retracers after crash-digger failed.
2422+ - Handle chroot upgrading, so that this does not need separate
2423+ cronjobs any more.
2424+ - Drop old -i option, replace with -D/--dupcheck which is a mode
2425+ which *only* checks duplicates of Python crashes (no fakechroot
2426+ handling).
2427+ - Mark bug as retraced after apport-chroot retrace finished
2428+ successfully; the process is robust enough now to avoid enless
2429+ loops even if retracing fails.
2430+ - Adapt test-crash-digger accordingly.
2431+ - UbuntuSpec:apport-retracer-maintenance
2432+
2433+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 09 Jan 2009 12:14:44 +0100
2434+
2435+apport (0.124) jaunty; urgency=low
2436+
2437+ * debian/local/ubuntu-fat-chroot: Divert touch to touch.real and
2438+ wrap it into a shell wrapper which ignores failures. Some packages
2439+ use "touch -m" which fails with EPERM on directories under
2440+ fakechroot. Also disable gconf-schemas and polkit-auth, since they
2441+ do not work in fakechroots.
2442+ * apport/crashdb_impl/launchpad.py: Allow using staging for testing.
2443+ * apport/crashdb.py, mark_retrace_failed(): Add new optional
2444+ argument "invalid_msg", intended for crashes which cannot be
2445+ retraced properly (e. g. due to outdated packages). Implement this
2446+ in apport/crashdb_impl/launchpad.py.
2447+ * bin/apport-retrace: If we do not have an usable stack trace, and
2448+ encounter outdated package versions in the crash, close the report
2449+ as invalid with an appropriate comment. (LP: #308917)
2450+ * bin/apport-retrace: Update the apt cache before looking for, and
2451+ installing packages. (Part of UbuntuSpec:apport-retracer-maintenance)
2452+ * debian/apport.default: Enable by default again for Jaunty. Let the
2453+ flood begin!
2454+
2455+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 08 Jan 2009 14:05:07 +0100
2456+
2457+apport (0.123) jaunty; urgency=low
2458+
2459+ * bin/apport: Do not write the report into the log file if opening
2460+ the report file failed; just log the error.
2461+ * bin/apport: Remove a previously seen report file, so that the
2462+ following creation with O_EXCL actually works.
2463+ * apport/report.py, add_proc_info(): Only try to attach
2464+ /proc/pid/attr/current if we are root. This works around Python
2465+ segfaulting regression when encountering EPERM on read() (see
2466+ LP #314065).
2467+ * apport/report.py testsuite: Use "isofs" for module license check
2468+ testing instead of "usbcore", since the latter is more likely to
2469+ get built into the kernel.
2470+ * apport/report.py, add_proc_environ(): Use "PATH=(...)" instead of
2471+ "PATH: ..." notation, to be consistent with other environment
2472+ variables. Unbreaks the apport test suite.
2473+
2474+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 05 Jan 2009 18:05:38 +0100
2475+
2476+apport (0.122) jaunty; urgency=low
2477+
2478+ * apport/crashdb_impl/launchpad.py: Support extra tags in the
2479+ report's "Tags:" field, and set them in the Launchpad bug.
2480+ Document this in doc/data-format.tex. Thanks to Steve Conklin for
2481+ the patch!
2482+
2483+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 05 Jan 2009 10:06:49 +0100
2484+
2485+apport (0.121) jaunty; urgency=low
2486+
2487+ * debian/apport.init: Drop long obsolete setting of
2488+ /proc/sys/kernel/crashdump-size.
2489+ * debian/apport.init: Make restart actually work if the default file was
2490+ changed. (LP: #292402)
2491+ * apport/report.py, add_proc_environ(): Do not include verbatim $PATH, only
2492+ classify it as "default" (does not appear at all then), "custom,
2493+ user" (/home or /tmp in $PATH), or "custom, no user". Add appropriate test
2494+ case. Update the data format documentation accordingly. (LP: #245263)
2495+
2496+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 08 Dec 2008 19:37:53 -0800
2497+
2498+apport (0.120) jaunty; urgency=low
2499+
2500+ * man/apport-cli.1: Fix "sytem" typo. (LP: #288977)
2501+ * apport/fileutils.py: Add new function get_options() to read
2502+ ~/.config/apport/settings. In the future, the apport-ignore.xml file will
2503+ move to this directory, too. Based on idea and initial patch from Nikolay
2504+ Derkach.
2505+ * bin/apport: Check config option "unpackaged", and if it is set to True,
2506+ create a crash dump for unpackaged programs, too. Bump apport package
2507+ dependency to python-apport for this.
2508+ * apport/ui.py: Fix regression introduced in in 0.115 for checking
2509+ successful package name determination.
2510+ * apport/report.py: Some distro portability fixes in the test suite, thanks
2511+ to Nikolay Derkach!
2512+ * Add OpenSUSE spec file, init script, and RPM packaging backend. Thanks to
2513+ Nikolay Derkach!
2514+ * apport_python_hook.py, bin/apport: Create files in a race free way to
2515+ avoid symlink attacks. Thanks to Sebastian Kramer <krahmer@novell.com> for
2516+ finding them!
2517+ * problem_report.py test suite: Create debugging leftover which left /tmp/r
2518+ behind.
2519+ * apport/crashdb_impl/memory.py: Use example.com, not bug.net, since the
2520+ latter actually exists now.
2521+ * apport/hookutils.py: Add attach_network(), attach_alsa(), and
2522+ attach_hardware(), and add proper docstrings. Thanks to Matt Zimmerman for
2523+ the branch!
2524+ * source_linux.py hook: Use above tool functions, which greatly simplifies
2525+ the hook.
2526+ * apport/report.py: Also print exceptions from binary and source package
2527+ hooks, not just from common ones.
2528+ * apport/report.py, add_hooks_info(): Do not print an error if a source
2529+ package hook does not exist.
2530+ * apport/hookutils.py, _parse_gconf_schema(): Correctly handle bool values.
2531+
2532+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 26 Nov 2008 19:24:23 +0100
2533+
2534+apport (0.119) intrepid; urgency=low
2535+
2536+ * debian/apport.default: Disable Apport by default for the final release.
2537+
2538+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 23 Oct 2008 09:34:41 +0200
2539+
2540+apport (0.118) intrepid; urgency=low
2541+
2542+ * apport/hookutils.py: add attach_gconf() function to add non-default gconf
2543+ settings to a report
2544+
2545+ -- Matt Zimmerman <mdz@ubuntu.com> Mon, 13 Oct 2008 20:10:33 +0100
2546+
2547+apport (0.117) intrepid; urgency=low
2548+
2549+ * backends/packaging-apt-dpkg.py, is_distro_package(): Fix crash if
2550+ apt.Cache()[pkg].origins is None. (LP: #279353)
2551+ * bin/apport: Log that we are ignoring SIGABRT, since it is a common cause
2552+ of confusion.
2553+ * test-apport, create_test_process(): Fix race condition: wait until the
2554+ child process has fully execve()ed, to avoid coredumping it while it is
2555+ still running as test-apport process.
2556+ * apport/crashdb_impl/launchpad.py, update(): Set source package of a bug if
2557+ the reporter removed it and the task is against 'Ubuntu'. (LP: #269045)
2558+
2559+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 07 Oct 2008 16:38:06 +0200
2560+
2561+apport (0.116) intrepid; urgency=low
2562+
2563+ * Update AUTHORS and debian/copyright, Michael and Troy released their
2564+ copyright to Canonical. Properly attribute them as authors in the
2565+ respective files.
2566+ * debian/local/ubuntu-bug: Fix quoting of the command line arguments, so
2567+ that several options do not end up as one big argument when being passed
2568+ to apport-{cli,gtk,qt}. This also repairs launchpad-integration.
2569+ (LP: #260242)
2570+
2571+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 26 Sep 2008 10:32:45 +0200
2572+
2573+apport (0.115) intrepid; urgency=low
2574+
2575+ [ Matt Zimmerman ]
2576+ * Add apport/hookutils.py with some convenience functions for writing hook
2577+ scripts (work in progress)
2578+ * Extend ubuntu-bug to accept a path as an argument and look up the package
2579+ name
2580+ * Rename kernel_hook to kernel_crashdump (there are other kernel hooks)
2581+ * Change kernel crash report type to KernelCrash
2582+ * Fix automatix.py to not crash when automatix isn't installed (LP: #267004)
2583+ * Add bin/kernel_oops hook to capture a kernel oops (eg. via kerneloops)
2584+
2585+ [ Martin Pitt ]
2586+ * Add AUTHORS file for collecting the list of major contributors and
2587+ copyright holders.
2588+ * apport/report.py: If we do not find a bug pattern file for the binary
2589+ package, fall back to looking for one with the source package name.
2590+ * run-tests: Provide a better error message if apport/packaging_impl.py does
2591+ not exist.
2592+
2593+ [ Brian Murray ]
2594+ * apport/crashdb_impl/launchpad.py: Add regression-retracer tag to bugs
2595+ which seem to be a regression (duplicate, and crash happens in a later
2596+ version than the fix). (LP: #271876)
2597+
2598+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 18 Sep 2008 18:18:03 -0700
2599+
2600+apport (0.114) intrepid; urgency=low
2601+
2602+ [ Fabien Tassin ]
2603+ * apport/ui.py: Use preferred browser when it's recognized as a
2604+ Mozilla browser (firefox, seamonkey, flock) or Epiphany (LP: #131350)
2605+
2606+ [ Oumar Aziz OUATTARA ]
2607+ * apport/crashdb.py: Add support for /etc/apport/crashdb.conf.d/*.conf crash
2608+ database configuration files. Document it in doc/crashdb-conf.txt.
2609+ * apport/ui.py: Support a new field "CrashDB" in apport reports which select
2610+ a non-default crash database. Document this in doc/package-hooks.txt.
2611+
2612+ [ Martin Pitt ]
2613+ * apport/report.py: If a hook crashes with an exception, print it to
2614+ stderr, for easier debugging of hooks.
2615+ * apport/crashdb_impl/launchpad.py: If PackageArchitecture is 'all', fall
2616+ back to looking at Architecture instead of not adding a
2617+ needs-$ARCH-retrace tag at all. This prevented signal crashes originating
2618+ from e. g. Python packages from being automatically retraced.
2619+
2620+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 04 Sep 2008 10:51:24 +0200
2621+
2622+apport (0.113) intrepid; urgency=low
2623+
2624+ * apport-qt recommends update-notifier-kde instead of adept-notifier
2625+
2626+ -- Anthony Mercatante <tonio@ubuntu.com> Thu, 28 Aug 2008 15:02:20 +0200
2627+
2628+apport (0.112) intrepid; urgency=low
2629+
2630+ * apport/crashdb_impl/launchpad.py: Update attachment handling to current
2631+ python-launchpad-bugs API, thanks Markus Korn!
2632+ * apport/ui.py: Use gnome-panel as indicator for a running GNOME session;
2633+ 'gnome-session' now calls itself x-session-manager, which isn't useful
2634+ to tell apart session types.
2635+
2636+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 07 Aug 2008 17:09:49 +0200
2637+
2638+apport (0.111) intrepid; urgency=low
2639+
2640+ The "(Kernel) OOPS, I dumped it again!" release.
2641+
2642+ * apport/ui.py: Fix test_run_report_bug_unpackaged_pid() to work with the
2643+ installed run-tests from the package as well.
2644+ * apport/crashdb_impl/launchpad.py: Ignore broken LP bug tasks instead of
2645+ crashing on them.
2646+ * apport/report.py, add_proc_info(): Report the AppArmor or SELinux context
2647+ in a new ProcAttrCurrent field, read from /proc/pid/attr/current.
2648+ Document it in doc/data-format.tex. The field will not be added if the
2649+ proc attribute cannot be read or isn't present. Thanks to Steve Beattie
2650+ for the patch and the suggestion!
2651+ * debian/local/setup-apport-retracer: Switch to intrepid.
2652+ * debian/local/setup-apport-retracer: Fix installation of python-apt. Also
2653+ install apt, to avoid library version mismatches to python-apt.
2654+ * debian/apport.default: Enable apport by default again, now that we have
2655+ working retracers.
2656+ * apport/report.py, test_add_gdb_info_script(): Use bash, not dash as test
2657+ program for core dumping; stack trace is awkwardly bad with dash, so that
2658+ the test case cannot really work any more.
2659+ * Add package-hooks/source_linux.py: Package hook for collecting kernel
2660+ related information. By Matt Zimmerman, thank you! (LP: #251441)
2661+ * debian/local/ubuntu-bug.1: Fix documentation of -p, it specifies the
2662+ binary package name, not the source.
2663+ * apport/packaging.py: Add get_kernel_package() to return the actual Linux
2664+ kernel package name; useful if the user reports a bug against just
2665+ "linux". Implement it in backends/packaging-apt-dpkg.py.
2666+ * apport/ui.py: "Do what I mean" when filing a bug against "linux" and
2667+ report it against the actual kernel package.
2668+ * debian/local/ubuntu-bug: If just one argument is given, infer -p/-P from
2669+ the type of the argument.
2670+ * apport/ui.py: Drop the PackageArchitecture field for the uploaded report
2671+ if it is equal to Architecture. Adapt apport/crashdb_impl/launchpad.py to
2672+ fall back to Architecture, and mention the change in doc/data-format.tex.
2673+ * problem_report.py, write_mime(): Add new "skip_keys" argument to filter
2674+ out keys. Add test cases.
2675+ * apport/crashdb_impl/launchpad.py: Do not write the "Date:" field on
2676+ upload(), and fetch it from the bug metadata in download().
2677+ * apport/crashdb_impl/launchpad.py, download(): Support reading bugs with
2678+ the "--- " separator instead of "ProblemType: ". Launchpad doesn't create
2679+ bugs that way ATM, but at least we have the reading part implemented now.
2680+ * package-hooks/source_linux.py: Drop Uname, ProcVersion, and
2681+ RunningKernelVersion fields, since they are all subsumed in the
2682+ ProcVersionSignature field.
2683+ * apport/ui.py, run_report_bug(): Strip spaces from package argument.
2684+ * apport/ui.py, add_hooks_info(): Collect OS info first, then call the
2685+ package hooks, so that the linux hook actually has a chance to delete the
2686+ Uname field.
2687+ * bin/kernel_hook, test-hooks: Throw away the original kernel hook which
2688+ we never used (and got superseded by the proper source_linux.py package
2689+ hook now). Replace it with the new logic of looking for
2690+ /var/crash/vmcore{,.log} and turning that into an apport report.
2691+ * debian/apport.init: Call kernel_hook if /var/crash/vmcore exists.
2692+ (LP: #241322)
2693+ * apport/ui.py: Collect information for "ProblemType: Kernel" as well, so
2694+ that we run the package hook. Adapt test suite to cover this.
2695+ * debian/control: Bump Standards-Version (no required changes).
2696+ * gtk/apport-gtk.glade, qt4/apport-qt: Generalize notification of kernel
2697+ crash, since it now happens after a boot, not right after the BUG/OOPS.
2698+ But in the future we want to cover both cases.
2699+
2700+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 05 Aug 2008 18:13:24 +0200
2701+
2702+apport (0.110) intrepid; urgency=low
2703+
2704+ * apport/chroot.py: In the test suite, copy some system binaries/libraries
2705+ into a fakechroot and exercise a lot of standard shell commands (cp, ln
2706+ -s, rm, rm -r, mkdir, echo, chmod, chown, etc.) with absolute/relative
2707+ paths. This reproduces the total breakage of rm'ing, chmod'ing, and
2708+ chown'ing absolute paths in hardy fakechroots.
2709+ * bin/crash-digger: Intercept exceptions when downloading crash reports for
2710+ duplicate checking, so that the retracer does not crash on malformed bug
2711+ reports. (LP: #205178)
2712+ * apport/packaging.py: Introduce a new function enabled() which reports
2713+ whether Apport should create crash reports. Signal crashes are controlled
2714+ by /proc/sys/kernel/core_pattern, but we need that to control whether
2715+ reports for Python, package, or kernel crashes are generated.
2716+ * backends/packaging-apt-dpkg.py: Provide implementation for
2717+ PackageInfo.enabled() for Debian/Ubuntu by evaluating /etc/default/apport.
2718+ Add various test cases for different configuration files and absent files.
2719+ * apport_python_hook.py: Do not create reports if Apport is disabled (in
2720+ /etc/default/apport). (LP: #222260)
2721+
2722+ -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 17 May 2008 12:44:21 +0200
2723+
2724+apport (0.109) intrepid; urgency=low
2725+
2726+ [ Martin Pitt ]
2727+ * debian/local/setup-apport-retracer: Update for some changes in Hardy.
2728+
2729+ [ Loic Minier ]
2730+ * apport/report.py, add_proc_info(): also strip pathnames starting with
2731+ 'cow', 'squashmnt', and 'persistmnt' to allow apport to locate the
2732+ executable pathname, additionally to 'rofs' added in 0.75. This fixes
2733+ apport for packages installed on the read-write part of the unionfs mounts
2734+ and under UME which uses different names for the mount points. Proper fix
2735+ is to rewrite the pathnames in the kernel. (LP: #224168)
2736+
2737+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 23 Apr 2008 14:30:03 +0200
2738+
2739+apport (0.108) hardy; urgency=low
2740+
2741+ [ Martin Pitt ]
2742+ * apport-{gtk,qt,cli}: Fix handling of file references added by package
2743+ hooks. (LP: #205163)
2744+ * backends/packaging_rpm.py: Fix dependency resolution of uname(*) in the
2745+ RPM backend. Thanks to Patryk Zawadzki! (LP: #213018)
2746+ * backends/packaging_rpm.py: Fix RPM platform parsing, thanks to Patryk
2747+ Zawadzki! (LP: #213015)
2748+ * po/de.po: Fix typo (missing space).
2749+ * debian/apport.default: Disable Apport for the final Hardy release, since
2750+ it is less useful in stable releases, and drains a lot of CPU and I/O
2751+ power on crashes. Disabling it here instead of in update-notifier/adept is
2752+ more discoverable and more centralized.
2753+
2754+ [ Daniel Hahler ]
2755+ * bin/apport-retrace: catch the same exceptions from Report.load() like
2756+ ui.load_report() does (LP: #211899)
2757+ * Fix uncaught exceptions in apport itself (LP: #215929):
2758+ - apport/REThread.py: check if "sys" exists in the except block of
2759+ REThread.run()
2760+ - apport_python_hook.py: check if "sys" exists in the finally block of
2761+ apport_excepthook
2762+ * cli/apport-cli: Fix UnboundLocalError in ui_present_crash, which rendered
2763+ apport-cli useless (for reporting crashes) (LP: #216151)
2764+
2765+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 16 Apr 2008 12:24:32 +0200
2766+
2767+apport (0.107) hardy; urgency=low
2768+
2769+ * cli/apport-cli: Add translator comment for difficult string. (LP: #210948)
2770+ * Update German translations.
2771+ * po/Make{vars,file}: Remove the --language=python option again, since it
2772+ breaks extracting strings from the glade. intltool-update currently does
2773+ not seem to have a way to tag a file as "language python", so add an ugly
2774+ workaround: Create temporary .py symlinks for gtk/apport-gtk & friends,
2775+ and have intltool extract them.
2776+ * apport/ui.py: Disallow filing a bug without specifying a package or a PID.
2777+ Update debian/local/ubuntu-bug.1 accordingly (apport-cli manpage was
2778+ already correct). (LP: #210348)
2779+
2780+ -- Martin Pitt <martin.pitt@ubuntu.com> Sun, 06 Apr 2008 11:44:38 -0600
2781+
2782+apport (0.106) hardy; urgency=low
2783+
2784+ [ Martin Pitt ]
2785+ * apport/crashdb_impl/launchpad.py: Fix spelling mistake in p-lp-bugs API
2786+ (now corrected there).
2787+ * apport_python_hook.py: Catch IndexError for invalid sys.argv[0], too.
2788+ (LP: #204940)
2789+ * apport/ui.py: Add test_run_report_bug_unpackaged_pid() test case which
2790+ reports a bug against a pid which belongs to an unpackaged program. This
2791+ reproduces LP #203764.
2792+ * apport/report.py: Drop add_hooks_info() assertion on nonexisting Package
2793+ field, return silently instead. This conforms to the behaviour of the
2794+ other add_*_info() functions and avoids nasty error handling.
2795+ * apport/ui.py: Generate proper error message when calling with -f -p PID
2796+ and PID belongs to an unpackaged program. (LP: #203764).
2797+
2798+ [ Sebastien Bacher ]
2799+ * po/Makevars: add the --language=python xgettext option so the translations
2800+ template is correctly updated on build since cdbs is using intltool-update
2801+ directly and not the corresponding makefile target
2802+
2803+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 01 Apr 2008 16:02:46 +0200
2804+
2805+apport (0.105) hardy; urgency=low
2806+
2807+ * apport/crashdb_impl/launchpad.py: Ignore ValueErrors when subscribing a
2808+ team, since these are usually due to the team already being subscribed.
2809+ * apport/report.py, anonymize(): Be robust against empty user names and only
2810+ anonymize fields which can potentially contain user specific data.
2811+ (LP: #195706)
2812+ * backends/packaging-apt-dpkg.py, get_architecture(): Return 'unknown'
2813+ instead of None if package architecture cannot be determined.
2814+ (LP: #198548)
2815+ * apport/ui.py, run_crash(): Intercept other IOErrors, too (such as EISDIR)
2816+ and print out proper error message instead of crashing. (LP: #201819)
2817+ * apport_python_hook.py: If the Python script has mutilated sys.argv so that
2818+ even sys.argv[0] does not exist any more, fall back into readlink()ing
2819+ /proc/pid/exe and gracefully handle the failure of that, instead of
2820+ crashing in the crash handler (ugh). Add test case. (LP: #198183)
2821+
2822+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 18 Mar 2008 23:04:57 +0100
2823+
2824+apport (0.104) hardy; urgency=low
2825+
2826+ [ Martin Pitt ]
2827+ * apport/crashdb_impl/launchpad.py, get_source_version(): re-escape the
2828+ package name so that it doesn't stumble over '+' and similar characters.
2829+ * apport/ui.py tests: assert that ProcEnviron is also included into bug
2830+ reports where we do not have a PID, since having the local information is
2831+ interesting and important (and acceptable in terms of personal
2832+ information).
2833+ * apport/report.py: Split out method add_proc_environ() for getting
2834+ ProcEnviron, so that we can call it separately.
2835+ * apport/ui.py, run_report_bug(): Add ProcEnviron if we do not have a pid to
2836+ file a bug against. This way, bugs filed against packages or distro also
2837+ get locale information. (LP: #198514)
2838+ * apport/fileutils.py, mark_report_seen(): Do not crash if the file does not
2839+ exist any more, because it was removed underneath us. (LP: #199932)
2840+ * apport/ui.py, test_collect_info_exepath(): Add a tuple argument and a
2841+ CompressedValue to the test report. This reproduces LP #199349.
2842+ * apport/report.py, anonymize(): Only work on string values. (LP: #199349)
2843+ * apport/ui.py: If a report has a field "Ignore", entirely ignore the report
2844+ without even presenting an explanatory error dialog (as
2845+ "UnsupportableReason" does). Document this in doc/package-hooks.txt.
2846+ (LP: #198863)
2847+ * debian/control: Bump Standards-Version (no changes necessary).
2848+ * debian/control: Fix wrongly spelt project names (Python and GTK+). Thanks
2849+ to lintian's scrutiny.
2850+ * gtk/apport-gtk-mime.desktop.in, qt4/apport-qt-mime.desktop.in: Add a main
2851+ category.
2852+
2853+ [ Kees Cook ]
2854+ * apport/report.py: fix module license checking logic (LP: #199927).
2855+ - nonfree_modules: being unable to find a module should not mean the
2856+ module is non-free.
2857+ - test_module_license_evaluation: check modinfo reporting.
2858+ * problem_report.py: Skip atime test case if file system is mounted noatime.
2859+
2860+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 13 Mar 2008 14:01:30 +0100
2861+
2862+apport (0.103) hardy; urgency=low
2863+
2864+ * bin/apport-unpack: Print error messages instead of crashing for problems
2865+ like nonexisting file names passed as arguments. (LP: #185273)
2866+ * backends/packaging-apt-dpkg.py, is_distro_package(): Explicitly check site
2867+ for "ppa", so that we do not automatically file bugs for PPA packages.
2868+ This works around Soyuz bug LP #140412 for the time being.
2869+ * apport/report.py: Add standard_title() test cases for Python crashes with
2870+ a custom message, and a custom message with newlines. The latter
2871+ reproduces LP #190947.
2872+ * apport/report.py, standard_title(): Do not rely on a fixed position of the
2873+ topmost function; use iteration and regular expression matching instead.
2874+ (LP: #190947)
2875+ * apport/ui.py, parse_argv(): Specify that --pid/-P argument must be an
2876+ integer, to avoid exceptions when it's not. (LP: #193494)
2877+ * apport/report.py: Use uname -srm, not -a, to hide the hostname. (part of
2878+ LP #192786); also use os.uname() instead of calling the system program.
2879+ * problem_report.py(): Make write() work for reports with CompressedValues.
2880+ Add test case.
2881+ * apport/ui.py: Add test case test_run_crash_anonymity() which asserts that
2882+ the crash dump does not contain strings which can identify the user, such
2883+ as the user name, login name, host name, and current directory.
2884+ * apport/report.py: Add method anonymize() which replaces user specific
2885+ strings with generic ones.
2886+ * apport/ui.py, thread_collect_info(): Call anonymize() on the report.
2887+ (LP: #192786)
2888+ * bin/apport-retrace: Only update a bug report with new attachments if it is
2889+ not a duplicate. (LP: #172792)
2890+ * bin/apport-retrace: Print out proper error message instead of an exception
2891+ if trying to do write operations to the bug tracker without specifying
2892+ a cookie file. (LP: #146423)
2893+
2894+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 25 Feb 2008 17:47:13 +0100
2895+
2896+apport (0.102) hardy; urgency=low
2897+
2898+ [ Martin Pitt ]
2899+ * problem_report.py: Support reading reports with legacy zlib
2900+ compression in 'retain compressed values' mode (as used nowadays by
2901+ apport when reporting a crash). Add a test case, too. (LP: #129616)
2902+ * debian/control, debian/rules: Switch from python-support to
2903+ python-central, and use 'nomove' option so that apport works during
2904+ upgrades, too. (LP: #121341)
2905+ * debian/rules: Use dh_icons instead of dh_iconcache.
2906+ * debian/apport.init: Do not stop apport in any runlevel (LSB header).
2907+ * apport/ui.py, run_crash(): Catch zlib.error on invalidly compressed core
2908+ dumps. (LP: #176977)
2909+ * apport/ui.py: Give a meaningful error message instead of crashing if the
2910+ package for a crash report is not installed any more. (LP: #149739)
2911+ * apport/ui.py: Do not include ProcCmdline in bug reports, since these are
2912+ not ack'ed by the user and might contain sensitive data. (LP: #132800)
2913+ * apport/ui.py: Add various test cases for crash reports whose packages have
2914+ been uninstalled between the crash and the report. This reproduces
2915+ LP #186684.
2916+ * apport/ui.py, load_report(): Produce proper error message if
2917+ executable/interpreter path do not exist any more. (LP: #186684)
2918+ * cli/apport-cli: Intercept SIGPIPE when calling sensible-pager, to avoid
2919+ crash when quitting it prematurely. (LP: #153872)
2920+ * bin/apport-checkreports: Print out a list of program names/packages which
2921+ have a pending crash report. (LP: #145117)
2922+ * apport/ui.py, run_argv(): Add return code which indicates whether any
2923+ report has been processed.
2924+ * cli/apport-cli: If no pending crash reports are present, say so and refer
2925+ to --help. (LP: #182985)
2926+ * apport/ui.py: Waive check for obsolete packages if environment defines
2927+ $APPORT_IGNORE_OBSOLETE_PACKAGES. Document this in the apport-cli manpage.
2928+ (LP: #148064)
2929+
2930+ [ Daniel Hahler ]
2931+ * .crash file integration for KDE3 (LP: #177055)
2932+ - debian/apport-qt.install: install added files qt4/apport-qt-mime.desktop
2933+ and qt4/apport-qt-mimelnk.desktop
2934+ * Fixed minor warnings/errors from desktop-file-validate in
2935+ gtk/apport-gtk-mime.desktop.in and qt4/apport-qt.desktop.in (LP: #146957)
2936+
2937+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 06 Feb 2008 12:55:53 +0100
2938+
2939+apport (0.101) hardy; urgency=low
2940+
2941+ * debian/control: Add python-xdg dependency to apport, since apport-cli
2942+ needs it. (LP: #177095)
2943+ * apport/ui.py: Add test case for reporting a report which has been
2944+ preprocessed by apport-retrace, i. e. has a stack trace, but no core dump
2945+ any more (reproducing LP #185084).
2946+ * apport/ui.py, run_crash(): Do not reject reports which have a stack trace,
2947+ but no core dump. (LP: #185084)
2948+ * apport/report.py: Fix test_add_gdb_info_load() test case, the temporary
2949+ executable was already deleted when gdb ran the second time.
2950+
2951+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 23 Jan 2008 17:48:06 +0000
2952+
2953+apport (0.100) hardy; urgency=low
2954+
2955+ * bin/crash-digger: Add option --log for logging to a file, and
2956+ --pidfile/--stop for daemonization. Add test cases to test-crash-digger.
2957+ * bin/apport: Do not re-raise exceptions about failure to create the lock
2958+ file, to avoid crashing in the case that another apport instance tries to
2959+ lock at exactly the same moment. (LP: #147237)
2960+ * apport/report.py testsuite: Check that our methods get along with binary
2961+ data which turn into CompressedValue objects after loading them from a
2962+ file. This reproduces LP #148305.
2963+ * problem_report.py, CompressedValue: Add method splitlines() since we need
2964+ it very often. Add test case to test_compressed_values(). (LP: #148305)
2965+ * problem_report.py: Add test case to check that update() works and does the
2966+ right thing with binary values and overwriting. This confirms that
2967+ importing a dictionary works.
2968+ * debian/local/setup-apport-retracer: Update for hardy.
2969+ * apport/crashdb_impl/launchpad.py: get_source_info() does not work any more
2970+ due to HTML changes in Launchpad, and not showing the component any more
2971+ on /distro/+source/package. Since we do not actually need component and
2972+ release name any more, rename it to get_source_version(), fix the regular
2973+ expression to just get the version, and adapt get_fixed_version()
2974+ accordingly.
2975+ * debian/local/setup-apport-retracer: Update default apt sources to
2976+ http://ddebs.ubuntu.com.
2977+ * apport/ui.py: Robostify cleanup of forked test processes.
2978+ * apport/ui.py: Sleep for 0.5 seconds after creating the test process in the
2979+ test suite to give /proc some time to settle down.
2980+ * bin/apport: Drop evaluation of CORE_* environment variables and mandate
2981+ calling with <pid> <signal> <core ulimit>. Drop the now obsolete
2982+ apport/elfcore.py. Adapt test-apport accordingly.
2983+ * debian/apport.init, use-local: Now call apport with %p, %s, and %c kernel
2984+ macros (since 2.6.24). Drop Edgy support from init script.
2985+
2986+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 21 Dec 2007 02:18:48 +0100
2987+
2988+apport (0.99) hardy; urgency=low
2989+
2990+ * cli/apport-cli, qt4/apport-qt: Fix typo 'send' -> 'sent'.
2991+ (LP: #139288)
2992+ * apport_python_hook.py: Add user info, too. Also add check for this to the
2993+ test suite. (LP: #145109)
2994+ * apport/ui.py, run_crash(): Show a proper UI error message instead of just
2995+ crashing with an exception if the crash report is inaccessible for the
2996+ invoking user. (LP: #146464)
2997+ * apport/crashdb_impl/memory.py: Implement mark_retraced(),
2998+ get_unretraced(), and get_dup_unchecked() for completeness, and define
2999+ _MemoryCrashDBTest also when not running file as __main__. This makes the
3000+ class useful for higher-level test suites. Add test cases for the new
3001+ functions.
3002+ * apport/crashdb_impl/memory.py: Support 'dummy_data' option which adds a
3003+ few dummy crashes by default. This is useful for external test suites
3004+ which cannot otherwise pre-fill the in-memory db. Add checks that this
3005+ works properly.
3006+ * bin/crash-digger: Use self.log() more consistently, and flush stdout in
3007+ log(), so that we do not lose logs on output redirection.
3008+ * Add test-crash-digger: Initial test suite for bin/crash-digger.
3009+ * apport/ui.py, run_crash(): Intercept CRC errors from the info collection
3010+ thread, which happens on broken core dumps. (LP: #132212)
3011+ * cli/apport-cli, ui_present_package_error(): Fix running of dialog, so that
3012+ reporting package problems with apport-cli actually works. (LP: #136369)
3013+ * apport/ui.py, run_crash(): Intercept ENOSPC and present a proper error
3014+ message. (LP: #145100)
3015+ * gtk/apport-gtk.glade: Fix title of upload progress window to comply to
3016+ HIG. Thanks, Bruce Cowan. (LP: #144782)
3017+ * qt4/apport-qt: Fix Unicode <-> UTF-8 conversion. Thanks, Daniel Hahler!
3018+ (LP: #148177)
3019+ * apport/ui.py: Only import xdg.DesktopEntry when a .desktop file has been
3020+ found in the affected package. This avoids the dependency on servers with
3021+ just apport-cli. Thanks, Matthias Gug! (LP: #130013)
3022+ * apport/fileutils.py: Do not fail if there are no packages installed which
3023+ have one or several .desktop files. Thanks, Matthias Gug!
3024+
3025+ -- Martin Pitt <martin.pitt@ubuntu.com> Sun, 28 Oct 2007 18:32:07 -0400
3026+
3027+apport (0.98) gutsy; urgency=low
3028+
3029+ [ Martin Pitt ]
3030+ * debian/local/setup-apport-retracer: launchpadBugs -> launchpadbugs
3031+ (recently renamed Python package in python-launchpad-bugs).
3032+ * apport/crashdb_impl/launchpad.py, test examples: Do not duplicate to bug
3033+ #1, that generates a huge amount of spam. Use another test bug.
3034+ * apport/crashdb_impl/launchpad.py, download(): Use Bug.description_raw,
3035+ since LP mangles spaces in .description. Bump p-lp-bugs dependency.
3036+ * apport/crashdb_impl/launchpad.py, close_duplicate(): Explicitly set the
3037+ duplicate after removing attachments, since the new LP does not allow any
3038+ modification of duplicate bugs.
3039+ * bin/crash-digger: Only consolidate the duplicate DB when -i is given (i.
3040+ e. usually only on one running instance).
3041+
3042+ [ Colin Watson ]
3043+ * Use bugs.launchpad.net for +filebug and +bugs requests. (LP: #138090)
3044+
3045+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 01 Oct 2007 14:35:07 +0200
3046+
3047+apport (0.97) gutsy; urgency=low
3048+
3049+ [Martin Pitt]
3050+ * problem_report.py: Coerce CompressedValue.__len__() to return an int to
3051+ work on Python 2.4, too.
3052+ * debian/local/setup-apport-retracer: Adapt ddeb apt source for the move
3053+ from ~pitti to ~ubuntu-archive.
3054+
3055+ [Markus Korn]
3056+ * port to new python-launchpad-bugs API.
3057+
3058+ [Daniel Holbach]
3059+ * small fixes to the port.
3060+ * debian/control: bumped python-launchpad-bugs Depends to >= 0.2.2.
3061+
3062+ -- Daniel Holbach <daniel.holbach@ubuntu.com> Tue, 04 Sep 2007 11:24:28 +0200
3063+
3064+apport (0.96) gutsy; urgency=low
3065+
3066+ * Create man pages for apport-cli, apport-chroot, and dupdb-admin.
3067+ * apport/fileutils.py, find_file_package(): Try to resolve symlinks in the
3068+ directory path. (LP: #125551)
3069+ * apport/crashdb_impl/launchpad.py, debian/local/setup-apport-retracer: Use
3070+ packaging.get_system_architecture() (which is dpkg --print-architecture on
3071+ Debian/Ubuntu) instead of uname, so that this does the right thing on lpia.
3072+ * problem_report.py, write_mime(): Use base64 encoding for gzipped
3073+ attachments, to not screw up mail servers. Thanks to Tim Yamin for this
3074+ patch!
3075+ * apport/crashdb.py: Drop the last argument (-1), since it is the default
3076+ anyway and did not yet exist on Python 2.4.
3077+
3078+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 21 Aug 2007 14:11:48 +0200
3079+
3080+apport (0.95) gutsy; urgency=low
3081+
3082+ * general-hooks/automatix.py: Remove hashbang, it's not an executable
3083+ script.
3084+ * apport/report.py: Support system-wide blacklisting:
3085+ /etc/apport/blacklist.d/. Add test cases.
3086+ * Add doc/README.blacklist: Document blacklist.d/, install it there in
3087+ setup.py.
3088+ * debian/rules: Blacklist wine-preloader, so that we ignore wine crashes
3089+ until an appropriate way is found to deal with them. (Point 6 of
3090+ apport-better-retracing spec.)
3091+
3092+ -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 11 Aug 2007 18:10:54 +0200
3093+
3094+apport (0.94) gutsy; urgency=low
3095+
3096+ * doc/data-format.tex: Some updates to incorporate feedback from Gnome
3097+ upstream:
3098+ - Do not talk about "Distributions" any more, but "Operating systems".
3099+ Gnome is used on non-Linux OSs, too.
3100+ - Split "DistroRelease:" field into "OS:" and "OSRelease:".
3101+ - Explicitly mention that CoreDump, StackTrace etc. can also contain
3102+ minidump output.
3103+ - Increase document version to 0.2.
3104+ * apport/report.py, obsolete_packages(): Fix crash when apt does not know an
3105+ available version of a package. (LP: #128176)
3106+ * test-apport: Add check that apport aborts immediately if another apport
3107+ instance is already running. Also test that a symlink attack on the lock
3108+ file is not possible.
3109+ * bin/apport: Abort running several apport instances at the same time, by
3110+ lockf()'ing /var/crashes/.lock and aborting on failure. (LP: #119622)
3111+ * Add bin/gcc_ice_hook: Script to create an apport report for a gcc ICE
3112+ (internal compiler exception). Add test cases to test-hooks, and ship it
3113+ in the 'apport' package. (LP: #125551)
3114+ * run-tests: In 'local' mode, only explicitly run the apt/dpkg
3115+ implementation instead of backends/*, since the RPM ones don't have tests
3116+ yet.
3117+ * apport/crashdb.py: Add a second optional parameter to upload() to specify
3118+ an upload progress callback function. Adapt the declarations in the
3119+ Launchpad and Memory implementations, too.
3120+ * apport/crashdb_impl/launchpad.py, upload(): Pass upload progress callback
3121+ handler to launchpadBugs.storeblob.upload(), which supports this since
3122+ version 0.2~39. Bump dependency to it accordingly.
3123+ * apport/ui.py, file_report(): Define an upload progress callback handler,
3124+ pass it to the crashdb upload(), and feed ui_set_upload_progress() with
3125+ some actual data. (LP: #91521)
3126+ * problem_report.py: Remove support for reading bz2 compressed binary data.
3127+ That was only relevant during edgy's development cycle.
3128+ * apport/report.py, test_add_proc_info(): Fix determination of /bin/zgrep
3129+ interpreter.
3130+ * problem_report.py: Switch encoding of binary values from bare zlib to
3131+ proper gzip format, since this is much more useful when reusing the
3132+ compressed value. Retain support for zlib-only reports. Add test cases for
3133+ both old and new encodings, and adapt the other test cases for the new
3134+ format. Update doc/data-format.tex accordingly.
3135+ * problem_report.py, write(): Add new permitted 'binary' argument value
3136+ 'compressed', which retains gzip compressed binary values instead of
3137+ unpacking them transparently. Add test cases.
3138+ * problem_report, write_mime(): Eliminate unnecessary usage of StringIO.
3139+ * problem_report, write_mime(): Make function work for compressed binary
3140+ values. Add test case.
3141+ * apport/report.py, add_gdb_info(): Make function work if CoreDump is a
3142+ compressed value.
3143+ * apport/ui.py: Load crash report with keeping compressed binaries. This
3144+ avoids loading the entire uncompressed core dump into memory, and avoids
3145+ recompressing it all over again for generating the crash database upload
3146+ MIME document. This greatly speeds up crash reporting, too. (LP: #98562)
3147+
3148+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 31 Jul 2007 21:32:00 +0200
3149+
3150+apport (0.93) gutsy; urgency=low
3151+
3152+ * apport/crashdb.py: Set sqlite connect timeout to two hours, instead of the
3153+ default 5 seconds. Previously, one retracer always crashed when the other
3154+ was consolidating the database.
3155+ * bin/dupdb-admin, command_dump(): Correctly interpret empty version strings
3156+ as 'fixed in unknown verrsion', not 'unfixed'.
3157+ * apport/crashdb_impl/launchpad.py: Fix typo in bug comment string.
3158+ * apport/crashdb_impl/launchpad.py: Add function get_source_info() which
3159+ parses out release, version, and component from
3160+ https://launchpad.net/$DISTRO/+source/$PACKAGE.
3161+ * apport/crashdb_impl/launchpad.py, get_fixed_version(): If a bug is fixed,
3162+ return the current version (as approximation of the version where the bug
3163+ was fixed), instead of an empty string (which meant 'fixed in unknown
3164+ version'). [apport-crash-duplicates spec]
3165+
3166+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 25 Jul 2007 17:04:27 +0200
3167+
3168+apport (0.92) gutsy; urgency=low
3169+
3170+ * bin/crash-digger: Do not crash if duplicate db is locked when attempting
3171+ to consolidate it. This happens often because in the DC we have two
3172+ parallel instances (for amd64 and i386).
3173+ * Move ubuntu-fat-chroot from bin/ to debian/local/, since it is so heavily
3174+ Ubuntu specific.
3175+ * debian/local/ubuntu-fat-chroot: Use diversions for the binaries we want to
3176+ disable, so that chroot upgrades do not trash the modifications.
3177+ * debian/local/setup-apport-retracer: launchpad-crash-digger ->
3178+ crash-digger.
3179+ * bin/crash-digger: Add option -i/--arch-indep-dupcheck to explicitly enable
3180+ duplicate checking of arch-independent crashes like Python exceptions. We
3181+ only want to process them on one architecture to avoid scattering the
3182+ duplicate database.
3183+ * apport/crashdb_impl/launchpad.py, get_unfixed(): Search for 'apport-crash'
3184+ tag, not 'apport'.
3185+ * bin/apport-unpack: Fix format string in error message.
3186+ * apport/ui.py, __init__(): Intercept ImportError, which can happen for
3187+ crashes during system upgrades. (LP: #124354)
3188+ * Add general-hooks/automatix.py: Refuse to send problem reports if
3189+ automatix is installed.
3190+ * doc/package-hooks.txt: Do not document UnsupportableReason, since it does
3191+ not make sense to set it in package hooks (it is checked before calling
3192+ the hooks). Hooks should use UnreportableReason only.
3193+ * apport/ui.py, test_run_crash_package(): Check that 'Package' problem
3194+ reports collect additional information, too.
3195+ * apport/ui.py, collect_info(): Collect additional information for 'Package'
3196+ problem reports, too.
3197+ * Revive preloadlib/:
3198+ - Remove PIPE_CORE #ifdefs and make them the default. We do not need to
3199+ support the Edgy kernel patches in this version any more.
3200+ - Install signal handler for SIGABRT, too.
3201+ - Read core ulimit, pass it to apport in CORE_REAL_RLIM, and set it to
3202+ zero for the program, since we do not actually want the kernel to write
3203+ core files when we pipe the core dump to apport.
3204+ - test-apport: Pass APPORT_REPORT_DIR to the manually called apport
3205+ instance in the memory clipping test; otherwise it'll write into
3206+ /var/crash/, which we do not consider in library mode.
3207+ * apport/crashdb_impl/launchpad.py, __init__(): Only do the "download bug
3208+ #2" hack if we actually have an authentication cookie. Thus, do it only on
3209+ the retracing servers, not on the client side. (LP: #125142)
3210+ * apport/report.py, crash_signature(): Generate a signature for one-line
3211+ Python tracebacks, too. This sometimes seems to happen, e. g. LP#124588.
3212+ (LP: #125020)
3213+ * apport/crashdb_impl/launchpad.py, update(): Set bug importance to Medium
3214+ if retracing was successful. (LP: #106379)
3215+
3216+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 24 Jul 2007 21:50:34 +0200
3217+
3218+apport (0.91) gutsy; urgency=low
3219+
3220+ * bin/apport: Remove code that supported the Edgy kernel way of core dump
3221+ passing. Also factorize the CORE_REAL_RLIM evaluation, since it is likely
3222+ to change in the near future.
3223+ * apport/crashdb_impl/launchpad.py, close_duplicate(): Delete some
3224+ attachments, as specified in apport-crash-duplicates spec, and make the
3225+ bug public afterwards.
3226+ * apport/crashdb_impl/launchpad.py, close_duplicate(): If the master bug is
3227+ already duped to yet another bug, mark the bug to that one instead of the
3228+ master.
3229+ * apport/crashdb.py: Split out duplicate_db_last_consolidation() for getting
3230+ the date (or seconds since) the last consolidation, so that we can use it
3231+ externally.
3232+ * apport/crashdb.py: Add duplicate_db_change_master_id() to change the
3233+ master ID of a crash. Add test case to apport/crashdb_impl/memory.py.
3234+ * Add bin/dupdb-admin: Initial version of duplicate db CLI app; can dump the
3235+ db, display consolidation state, and change master bug IDs for now. Ship
3236+ it in apport-retrace.
3237+ * apport/crashdb.py, duplicate_db_last_consolidation(): Fix timedelta
3238+ seconds calculation to actually take the days into account, too.
3239+ * bin/crash-digger: Fix dumping of dup db after consolidation.
3240+ * apport/ui.py:
3241+ - test_run_report_bug_package(): Add test case for calling the UI in bug
3242+ filing mode with an invalid package name.
3243+ - run_report_bug(): Do not crash on invalid package name, generate an
3244+ error message instead. (LP: #123644)
3245+ * apport/fileutils.py, mark_report_seen(): Do not crash if the file has
3246+ already been deleted underneath us. (LP: #122347)
3247+ * apport/ui.py, run_report_bug(): Do not crash if the target process runs as
3248+ a different user. Print a proper error message instead. Add test case
3249+ test_run_report_bug_noperm_pid(). (LP: #121121)
3250+ * apport/fileutils.py, likely_packaged(): Ignore /var/lib/schroot. Add test
3251+ case. (LP: #122859)
3252+ * apport/ui.py, open_url(): Intercept weird race condition for os.close()
3253+ trying to close an already invalidated fd. (LP: #123180)
3254+
3255+ Merge the fedora branch, thanks to Will Woods <wwoods@redhat.com>:
3256+
3257+ * Add apport.init.fedora: Fedora specific init script.
3258+ * Add apport.spec: RPM build recipe.
3259+ * Add backends/packaging_rpm.py: Partial implementation of the packaging
3260+ backend for RPM which applies to all RPM-based distros.
3261+ * Add backends/packaging_fedora.py: Concrete packaging backend
3262+ implementation for Fedora.
3263+ * apport/elfcore.py: Classes for parsing general ELF files, and information
3264+ from core dumps.
3265+ * bin/apport: Fall back to reading signal number and PID directly from the
3266+ core file (via elfcore.py) if CORE_SIGNAL and CORE_PID are not defined (i.
3267+ e. when running on a non-Ubuntu kernel).
3268+ * crashdb.conf: Add stanzas for Fedora and a 'debug' database which uses the
3269+ 'memory' crashdb implementation.
3270+
3271+ -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 14 Jul 2007 15:08:35 +0200
3272+
3273+apport (0.90) gutsy; urgency=low
3274+
3275+ * apport/ui.py, load_report(): Catch IOError, too. LP: #118827
3276+ * Merge apport-cli package into apport itself. The program itself is just 3
3277+ kB compressed, and it's not worth wasting another 34 kB compressed
3278+ changelog for this tiny bit.
3279+ * apport/report.py, obsolete_packages(): Use the version comparison from the
3280+ packaging system instead of just testing for inequality. This catches zero
3281+ epochs. Thanks to Will Woods <wwoods@redhat.com>!
3282+ * apport/ui.py: Add option -c/--crash-file to run the UI with a particular
3283+ crash file (which can be anywhere) instead of all pending crashes in
3284+ /var/crash/.
3285+ * Add xdg-mime/apport.xml: XDG MIME type definition for .crash files.
3286+ * Add gtk/apport-gtk-mime.desktop.in: Link text/x-apport MIME type to
3287+ apport-gtk -c, so that .crash files can be reported with Gnome.
3288+ * Add debian/apport.links: Install an icon symlink for the MIME type.
3289+ * apport/ui.py: Do not ask the initial "Do you want to report this?"
3290+ question when being invoked with --crash-file.
3291+ * po/POTFILES.in: Add missing cli/apport-cli.
3292+ * po/de.po: Updated for apport-cli.
3293+ * cli/apport-cli: Add option for keeping the report file without sending it,
3294+ and to display its path. This is for sending the report later, copying
3295+ it from a server to a workstation with internet connection, etc.
3296+ * apport/crashdb_impl/launchpad.py: Simplify _subscribe_triaging_team(), now
3297+ that we do not differ between main and universe policies any more.
3298+ * apport/report.py: Support another hook directory
3299+ /usr/share/apport/general-hooks/ for scripts which are run for every
3300+ problem report. This was requested for adding e. g. AppArmor logs, etc.
3301+ Add test cases.
3302+ * Add debian/apport.dirs again to ship that hook directory.
3303+ * doc/package-hooks.txt: Document the general hooks.
3304+
3305+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 10 Jul 2007 21:10:19 +0100
3306+
3307+apport (0.89) gutsy; urgency=low
3308+
3309+ Implement private crash bug handling, according to
3310+ https://wiki.ubuntu.com/CrashReporting:
3311+
3312+ * apport/crashdb_impl/launchpad.py:
3313+ - upload(): If we have an Ubuntu bug, mark it as private and only
3314+ subscribe 'apport' (the 'Apport retracing service' user).
3315+ - Add function _subscribe_triaging_team() which subscribes
3316+ ubuntu-crashes-main for source packages in Ubuntu main or restricted, or
3317+ ubuntu-crashes-universe for other packages. It does not touch non-Ubuntu
3318+ bugs, since these are not marked private by default and are outside of
3319+ the scope of this spec.
3320+ - update(), _mark_dup_checked(): Call _subscribe_triaging_team().
3321+ - Note: This entire spec is a gross hack, and Ubuntu derivatives do not
3322+ benefit from it at all. We have to live with this until LP grows a real
3323+ crash database.
3324+ - get_distro_release(): Make this function work with private bugs, too, by
3325+ using p-lp-bugs' safe_urlopen().
3326+
3327+ Bug fixes:
3328+
3329+ * apport/crashdb_impl/launchpad.py: Revert simplification change of 0.85:
3330+ BugList returns a set of strings, not integers; due to non-identity they
3331+ do not work with the usual set operations.
3332+ * apport/crashdb_impl/launchpad.py: Add function get_source_component() to
3333+ query Launchpad for the component of a given distribution and source
3334+ package. (This will be required for implementing crash-reporting).
3335+ * backends/packaging-apt-dpkg.py, _search_contents(): Package list is
3336+ actually comma separated, only take the first item. This fixes retracing
3337+ of e. g. #124139.
3338+ * backends/packaging-apt-dpkg.py, _search_contents(): Fix package name
3339+ parsing for non-main components. This fixes retracing of e. g. #124111.
3340+ * apport/report.py, _read_maps(): Revert ptrace hack when maps cannot be
3341+ read. maps file is now protected based on process ownership, not ptracing.
3342+ * apport/crashdb.py, apport/crashdb_impl/launchpad.py,
3343+ apport/crashdb_impl/memory.py: Remove official interface
3344+ mark_dup_checked(), as it should only be an internally used function. Add
3345+ report parameter, since we will need it there in the future. Remove
3346+ explicit call from bin/crash-digger and instead change check_duplicate()
3347+ to call it on its own.
3348+ * apport/crashdb_impl/launchpad.py, download(): Replace dodgy parsing of
3349+ fields from the description with proper code, so that multi-line fields
3350+ are read correctly, too.
3351+
3352+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 06 Jul 2007 11:19:22 +0200
3353+
3354+apport (0.88) gutsy; urgency=low
3355+
3356+ * po/de.po: Update.
3357+ * backends/packaging-apt-dpkg.py, _search_contents(): Do not check the
3358+ return value of zgrep. It usually errors out with 'stdout: broken pipe'
3359+ when called with -m1.
3360+ * bin/crash-digger: Mark a bug as retraced if DistroRelease: cannot be
3361+ determined. Those are bugs apport cannot handle.
3362+ * backends/packaging-apt-dpkg.py, get_source_tree(): Call apt-get source
3363+ with --assume-yes to not block on VCS confirmations.
3364+ * apport/crashdb.py: Add interface mark_retrace_failed(). Implement it in
3365+ apport/crashdb_impl/launchpad.py.
3366+ * bin/apport-retrace: If retraced report does not have a crash signature,
3367+ mark it as failed with above new function. Bump python-apport dependency
3368+ for this.
3369+ * apport/crashdb_impl/launchpad.py, update(): Delete CoreDump.gz attachment
3370+ if the retrace was successful (i. e. if the report has a crash signature).
3371+ * apport/ui.py, test_run_crash(): Set the message box title, text, and
3372+ severity as assertion message if the run_crash() test fails, so that you
3373+ know why it fails. This usually happens if libc6 or another dependency of
3374+ the test crash is out of date.
3375+ * gtk/apport-gtk.glade: Mark string as translatable. LP: #119621
3376+
3377+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 03 Jul 2007 21:38:05 +0200
3378+
3379+apport (0.87) gutsy; urgency=low
3380+
3381+ * apport/report.py:
3382+ - test_gen_stacktrace_top(): Add test case for unwinding a Gnome assertion
3383+ (g_logv(), g_assert_warning() and similar), see LP #123462.
3384+ - _gen_stacktrace_top(): Generalize for unwinding multiple functions and a
3385+ set of function names, and add the Gnome assertion ones.
3386+
3387+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 02 Jul 2007 11:00:44 +0200
3388+
3389+apport (0.86) gutsy; urgency=low
3390+
3391+ * test-apport: Check that apport does not create reports for emtpy core
3392+ dumps.
3393+ * problem_report.py: Introduce a fourth optional parameter "fail_on_empty"
3394+ to file pointer tuples which causes write() to raise an IOError if no data
3395+ was read. Add test cases.
3396+ * bin/apport: Enforce non-emptyness of CoreDump.
3397+ * problem_report.py: Add test case for delayed piping of data passed as file
3398+ object pointers. This was supposed to explain the reason for getting bugs
3399+ with zero-byte core dumps, but already works correctly.
3400+ * apport/report.py, check_ignored(): round the mtime to an int (just like
3401+ mark_ignore() does), to not get wrong results on file systems that support
3402+ subsecond file timestamps. This fixes running the test suite on the live
3403+ CD.
3404+ * test-apport: Clarify assertion message if /var/crash is not empty.
3405+
3406+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 28 Jun 2007 19:14:36 +0200
3407+
3408+apport (0.85) gutsy; urgency=low
3409+
3410+ * apport/crashdb_impl/launchpad.py: BugList.bugs is already a set, simplify
3411+ code a bit.
3412+ * debian/control: Add dpkg-dev dependency to apport-retrace, for getting
3413+ dpkg-source.
3414+ * apport/report.py, crash_signature(): Allow ':' and '~' as part of function
3415+ names to cover C++. Adapt test case to cover this.
3416+ * apport/report.py test suite: Do not assume that /bin/zgrep uses /bin/sh,
3417+ it was recently changed to use bash. Directly read the interpreter from
3418+ the shebang line.
3419+ * bin/apport-chroot, command_upgrade(): Supply -y to 'apt-get upgrade' also
3420+ in verbose mode.
3421+ * bin/apport-chroot, command_upgrade(): Run 'apt-get clean' before
3422+ regenerating the chroot tarball.
3423+ * backends/packaging-apt-dpkg.py, get_dependencies(): Fix crash when
3424+ encountering a virtual package. LP: #122274
3425+ * apport/report.py, obsolete_packages(): Do not consider virtual packages as
3426+ obsolete.
3427+ * apport/crashdb_impl/launchpad.py: Do a bogus call to Bug() in the ctor.
3428+ This initializes python-launchpad-bugs to use a cookie for the urlopen in
3429+ BugList, so that get_unretraced() and get_dup_unchecked() return private
3430+ bugs, too. This works around LP #122126.
3431+
3432+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 25 Jun 2007 16:38:43 +0200
3433+
3434+apport (0.84) gutsy; urgency=low
3435+
3436+ * apport/crashdb.py: Add new abstract methods:
3437+ - get_unretraced() and mark_retraced(id) to get a list of crashes that
3438+ need to be retraced and chalk them off.
3439+ - get_dup_unchecked() and mark_dup_checked() to get a list of crashes that
3440+ need to be checked for being a duplicate and chalk them off. This is
3441+ aimed at crashes which do not need retracing, such as unhandled Python
3442+ exceptions.
3443+ * apport/crashdb_impl/launchpad.py: Implement above methods for launchpad
3444+ (moving the code from bin/launchpad-crash-digger).
3445+ * apport/crashdb_impl/launchpad.py: Set "need-duplicate-check" tag for
3446+ Python crashes.
3447+ * apport/crashdb_impl/launchpad.py, download(): Fetch Traceback.txt, too, so
3448+ that we can do duplicate checking for Python crashes.
3449+ * bin/launchpad-crash-digger: Drop Launchpad specific code and replace it
3450+ with calls to above new functions. Rename to bin/crash-digger. Also rename
3451+ all 'cookie' to 'auth' (as happened with the other applications earlier).
3452+ * bin/crash-digger: Do duplicate checking for needs-duplicate-check crash
3453+ bugs (such as Python crashes).
3454+ * bin/apport-retrace, bin/crash-digger: More language cleanup; we should
3455+ stop talking about 'bugs' and use 'crash' consistently.
3456+
3457+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 14 Jun 2007 19:50:24 +0200
3458+
3459+apport (0.83) gutsy; urgency=low
3460+
3461+ * apport/crashdb.py: Separate abstract from implemented functions.
3462+ * apport/crashdb.py, apport/packaging.py, apport/ui.py: Use
3463+ NotImplementedError instead of Exception in the abstract methods.
3464+ * apport/packaging.py: Add interface compare_versions() for comparing
3465+ package version numbers.
3466+ * backends/packaging-apt-dpkg.py: Implement compare_versions() using
3467+ apt.VersionCompare(), add some test cases.
3468+ * apport/report.py: Fix typo: 'none' -> 'None'.
3469+ * apport/chroot.py: Do not include /usr/local/lib and /usr/lib in
3470+ LD_LIBRARY_PATH, just /lib, so that we still use the libc from outside,
3471+ but e. g. libxml2 from inside the chroot.
3472+
3473+ https://blueprints.launchpad.net/ubuntu/+spec/apport-crash-duplicates: Merge
3474+ crash-dups branch, which implements automatic crash duplicate detection:
3475+
3476+ * apport/crashdb.py: Add methods for crash duplicate detection.
3477+ * apport/crashdb_impl/memory.py: Change internal data management to track
3478+ fixed version and duplicates.
3479+ * apport/crashdb_impl/memory.py: Add a test suite for all methods, including
3480+ the duplicate detection API of the base CrashDatabase (since it is
3481+ much easier to test it here, on an actual implementation).
3482+ * debian/pyversions: Bump minimal Python version to 2.5, since this starts
3483+ providing the sqlite3 module.
3484+ * apport/crashdb_impl/launchpad.py: Implement new methods required for crash
3485+ duplicate detection. get_fixed_version() does not approximate version
3486+ tracking yet; it just returns '' for fixed bugs (which means 'fixed, but
3487+ unknown version'). Bump python-launchpad-bugs dependency for this to
3488+ ensure the availability of Bug.mark_duplicate().
3489+ * bin/apport-retrace: Add option --duplicate-db which specifies the path to
3490+ the duplicate sqlite database and enables duplicate detection.
3491+ * Abin/apport-chroot: Add option --duplicate-db. If a file is given, symlink
3492+ it into the chroot and pass --duplicate-db to apport-retrace.
3493+ * bin/launchpad-crash-digger: Add --duplicate-db and pass it to
3494+ apport-chroot.
3495+ * apport/crashdb.py: Track last run of duplicate_db_consolidate() in an
3496+ extra table and add a method duplicate_db_needs_consolidation() which
3497+ returns True if the last run was more than a given number of seconds ago.
3498+ Add test cases to apport/crashdb_impl/memory.py.
3499+ * bin/launchpad-crash-digger, fill_pool(): Check whether the duplicate
3500+ database needs consolidation (i. e. updating the bug states to the reality
3501+ in the bug tracker) and if so, trigger it.
3502+
3503+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 13 Jun 2007 13:09:57 +0200
3504+
3505+apport (0.82) gutsy; urgency=low
3506+
3507+ * Add bin/ubuntu-fat-chroot: Script to install a set of commonly needed
3508+ packages into a minimal Ubuntu chroot (as created by apport-chroot). This
3509+ requires some hacking of postinst and /usr/sbin/ files in between the
3510+ installation stages and thus deserves a script on its own.
3511+ * apport/packaging.py:
3512+ - Add "uninstalled" option to get_file_package(). If set to True, this
3513+ will do an expensive search of files/packages which are not installed.
3514+ - Add interface "set_mirror(URL)" for functions which need to retrieve
3515+ packages and data from distribution mirrors.
3516+ * backends/packaging-apt-dpkg.py: Implement "uninstalled" option and
3517+ "set_mirror(URL)", add test cases.
3518+ * bin/apport-retrace: Use "uninstalled" option now to install packages and
3519+ corresponding -dbgsyms for uninstalled files mentioned in ProcMaps
3520+ (Point 1 of apport-better-retracing spec). Bump python-apport dependency.
3521+ * apport/packaging.py: Add interface get_available_version(package).
3522+ * backends/packaging-apt-dpkg.py: Implement get_available_version(), add
3523+ shallow test case.
3524+ * apport/report.py: Add function obsolete_packages() to return packages in
3525+ Package: and Depends: which are not up to date. Add test cases.
3526+ * apport/ui.py, thread_collect_info(): For crashes, call obsolete_packages()
3527+ and set UnreportableReason: if there are any (Point 2 of
3528+ apport-better-retracing spec).
3529+ * apport/ui.py, thread_collect_info(): call standard_title() and add it to
3530+ the report as 'Title' field. This is useful if reporters modify the
3531+ default title (per request of Brian Murray, thanks). Add test case.
3532+ * apport/ui.py: Fix declaration of the test suite's
3533+ ui_set_upload_progress(). Funny that this has never been triggered before.
3534+ * apport/report.py, add_gdb_info(): Split out StacktraceTop generation into
3535+ separate funtion _gen_stacktrace_top(), so that we can test it separately.
3536+ * apport/report.py, _gen_stacktrace_top(): Step back from the crashed
3537+ program's own signal handlers, since those are generally not useful for
3538+ the purposes of StacktraceTop and only impede duplicate matching
3539+ (Point 4 of apport-better-retracing spec). Add various test cases.
3540+ * apport/report.py: Add method crash_signature() to calculate an unique
3541+ identifier of a signal or Python crash, to be used for duplicate
3542+ detection. Add various test cases.
3543+ * apport/packaging.py: Add interface get_source_tree() to fetch and unpack a
3544+ source package to a given directory, optionally specifying a particular
3545+ version.
3546+ * backends/packaging-apt-dpkg.py: Implement get_source_tree(). This has a
3547+ rather crude 'call apt-get source and guess about directories'
3548+ implementation until python-apt learns about doing this directly and more
3549+ elegantly (see LP #118788).
3550+ * bin/apport-retrace: Add gen_source_stacktrace() and a few helper functions
3551+ to construct a field 'StacktraceSource' with the source code around the
3552+ affected lines in the stack trace (as available). (Point 5 of
3553+ apport-better-retracing spec).
3554+ * apport/crashdb_impl/launchpad.py, update(): Attach StacktraceSource to the
3555+ bug if it exists.
3556+ * apport/crashdb_impl/launchpad.py: Check PackageArchitecture for 'all', to
3557+ not set a retracer tag 'need-all-retrace'.
3558+ * test-apport: Clarify assertion failure message when an unexpected core
3559+ dump is present.
3560+ * apport/report.py, get_module_license(): Do not iterate over Popen.stdout,
3561+ use communicate() instead. The latter is already fixed to not trip over
3562+ SIGINTR. (LP: #118965)
3563+
3564+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 08 Jun 2007 07:47:04 +0200
3565+
3566+apport (0.81) gutsy; urgency=low
3567+
3568+ * apport/report.py: Remove '[apport]' default bug title prefix. (LP: #94819)
3569+ * apport/crashdb_impl/launchpad.py: Tag new bugs with
3570+ 'apport-<problemtype>'. This replaces the former '[apport]' prefixing.
3571+ * debian/local/setup-apport-retracer: Specify a path in '.' command and
3572+ use sh again. Yay for me needing three attempts before actually RTFMing
3573+ how '.' works (which is really nasty and strange IMHO).
3574+ * bin/apport-chroot: Fix symlinks before repackaging the chroot tarball in
3575+ 'install' and 'installdeb' modes.
3576+ * debian/local/setup-apport-retracer: Install python-libxml2 and python-apt.
3577+ * bin/launchpad-crash-digger: Supply --auth instead of the deprecated
3578+ --cookie to apport-chroot.
3579+ * bin/apport-chroot: Fix identifier name in command_retrace().
3580+ * debian/local/setup-apport-retracer: Set APPORT_CRASHDB_CONF to the local
3581+ crashdb.conf.
3582+ * bin/apport-chroot: Unset APPORT_CRASHDB_CONF for login and retrace.
3583+ * bin/launchpad-crash-digger: Check the release of a bug and whether we have
3584+ a chroot for it before untagging it. This avoids loosing tags for bugs we
3585+ do not yet have a working retracer chroot for.
3586+ * bin/apport-retrace: Do not abort with an exception if package installation
3587+ fails. Give a proper error message instead and point to -u. (LP: #115681)
3588+ * apport/crashdb_impl/launchpad.py, update(): Create a temporary directory
3589+ and use proper file names for the new attachments. With TemporaryFile(),
3590+ attachment file names ended up as '<fdopen>'. (LP: #115347)
3591+ * apport/report.py, add_os_info(): Add field 'NonfreeKernelModules' which
3592+ lists loaded kernel modules which do not have a FOSS license. This is
3593+ particularly helpful for quickly checking for restricted graphics drivers.
3594+ (LP: #103239)
3595+ * apport_python_hook.py: Move the apport.* imports into the try: block and
3596+ move the likely_packaged() test to the top, to avoid importing
3597+ apport.report and creating a Report object for non-packaged scripts. This
3598+ makes the entire code more efficient and robust against errors in the
3599+ apport modules. (LP: #109955)
3600+ * apport/report.py, add_gdb_info(): Intercept OSError from gdb invocation
3601+ (which might be segfaulting itself) and just do not put any gdb output
3602+ into the report. The automatic retracers can try their luck again.
3603+ (LP: #112501)
3604+ * bin/apport-retrace: Fix handling of packages which are still known to
3605+ /var/lib/dpkg/status, but do not have an apt record any more; treat them
3606+ like virtual packages and just issue a warning instead of falling over.
3607+ (LP: #107474)
3608+ * Add doc/data-format.tex: Documentation of the structure, encoding, and
3609+ standard keys of the Apport report file format. [apport-for-upstreams
3610+ blueprint]
3611+ * Add doc/Makefile: Build and clean rules for generating data-format.pdf.
3612+ * debian/rules, setup.py: Call doc/Makefile and install the PDF
3613+ documentation. Add texlive-latex-recommended build dependency for that.
3614+
3615+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 24 May 2007 19:39:12 +0200
3616+
3617+apport (0.80) gutsy; urgency=low
3618+
3619+ Collect all Launchpad specific bits in a separate class and provide an
3620+ abstract base class. This will greatly help for getting upstream acceptance
3621+ and the possibility of automatically forwarding crashes upstream
3622+ (apport-for-upstreams specification):
3623+
3624+ * Add apport/crashdb.py: Abstract crash database interface. This also offers
3625+ a factory function get_crashdb() which reads a configuration file to find
3626+ the default crash database to be used.
3627+ * Add ./crashdb.conf: Crash database configuration file, for Ubuntu on
3628+ Launchpad. Modify setup.py and debian/python-apport.install to ship it in
3629+ python-apport.
3630+ * Add apport/crashdb_impl/memory.py: Simple in-memory implementation of
3631+ crash database interface for testing.
3632+ * Add apport/crashdb_impl/launchpad.py: Launchpad implementation of crash
3633+ database interface.
3634+ * apport/ui.py: Drop LP specific bits and move towards new CrashDatabase
3635+ interface.
3636+ * apport/ui.py, test suite: Do not overwrite file_report() any more, but
3637+ use the memory CrashDatabase. This will test the actual file_report()
3638+ implementation and allows the test suite to check the precise value of
3639+ opened URLs.
3640+ * apport/{report,ui}.py: Move UserInterface.create_crash_bug_title() and its
3641+ test cases to Report.standard_title(). It is much more appropriate there
3642+ and can be used in the retracer as well.
3643+ * bin/apport-retrace: Drop LP specific bits and move to CrashDatabase
3644+ interface. Remove the --remove-tag option, we really should not have it
3645+ here; remove it from man/apport-retrace.1 as well.
3646+ * bin/apport-chroot: Drop --remove-tag option here, too.
3647+ * bin/apport-chroot: Drop LP specific bits and move to CrashDatabase
3648+ interface.
3649+ * bin/launchpad-crash-digger: Remove retracing tag directly instead of
3650+ passing --remove-tag to apport-chroot. This is a much cleaner design and
3651+ avoids infinitely looping on some weirdly failing retraces.
3652+ * debian/control: Bump some python-apport dependencies for the API changes.
3653+
3654+ Some debranding:
3655+
3656+ * setup.py: Use apport wiki home page for 'url'.
3657+ * Remove 'X-Ubuntu-Gettext-Domain' from *.desktop.in, since langpack.mk will
3658+ add it automatically now.
3659+ * *.desktop.in: Remove 'in Ubuntu' from comment.
3660+ * cli/apport-cli, qt4/apport-qt: Generalize window titles.
3661+
3662+ Other fixes:
3663+ * po/de.po: Update.
3664+ * debian/local/setup-apport-retracer: Revert back 'source' to '.' and use
3665+ bash instead of sh. POSIX sh does not seem to have a 'source' command.
3666+
3667+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 21 May 2007 19:25:31 +0200
3668+
3669+apport (0.79) gutsy; urgency=low
3670+
3671+ * debian/local/setup-apport-retracer: Fix '.' bashism, replace it with
3672+ 'source'.
3673+ * problem_report.py, write_mime(): Drop preamble argument, replace it with
3674+ an extra_headers dictionary. This is much easier to evaluate on clients.
3675+ * apport/ui.py: Convert to new write_mime() interface from above. This
3676+ finally automatically tags bugs with need-$ARCH-retrace. Bump
3677+ p-problem-report dependency of python-apport for this.
3678+ * apport/report.py: Change example URLs in the testsuite from launchpad to
3679+ an artificial ones to avoid the impression that it is LP specific.
3680+ * backends/packaging-apt-dpkg.py: Formally make this a subclass of
3681+ apport.packaging.PackageInfo.
3682+ * debian/control: Use code.lp.net instead of bazaar.lp.net VCS URL.
3683+ * bin/kernel_hook: Fix/improve the collected information:
3684+ - Read /proc/modules instead of lsmod.
3685+ - Fix lspci argument: -n instead of -m.
3686+ - Add /proc/cmdline.
3687+ * debian/rules: Use langpack.mk for updating the .desktop files.
3688+ * Add po/Makevars to specify the domain, to make intltool figure out the
3689+ gettext domain automatically.
3690+ * bin/kernel_hook, ./test-hooks: Do not rely on /proc/version_signature any
3691+ more, it's gone in the gutsy kernel.
3692+
3693+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 21 May 2007 15:55:10 +0200
3694+
3695+apport (0.78) gutsy; urgency=low
3696+
3697+ * apport/packaging.py, backends/packaging-dpkg.py: Add new interface
3698+ is_distro_package(package) which verifies the origin of a given package.
3699+ Move the dodgy hack from apport/ui.py to the backend, where it belongs to.
3700+ Also add a test case.
3701+ * debian/control: Add python-apt dependency to python-apport.
3702+ * debian/control: Remove debianutils dependency, it's essential.
3703+ * Drop backends/packaging-dpkg.py. It had some hackish usage of python-apt
3704+ anyway, since some things just cannot be figured out with dpkg alone.
3705+ Since we have to give up on that idea, implement a new clean packaging
3706+ backend 'packaging-apt-dpkg.py' which now uses python-apt and dpkg in a
3707+ clean way.
3708+ * apport/report.py, add_gdb_info(): Fix crash when Stacktrace could not be
3709+ created. (LP: #107853)
3710+ * ./test-apport: Check that crashes create a core dump (with proper ulimits)
3711+ when an unseen crash report exists already. This reproduces LP #105976.
3712+ * bin/apport: Create core dump file if aborting because an unseen crash
3713+ report already exists. (LP: #105976)
3714+ * apport/ui.py: Add a comment for translators. (LP: #104703)
3715+ * apport/ui.py, load_report(): Also catch zlib.error on invalid reports.
3716+ (LP: #103547)
3717+ * apport/report.py: Add method has_useful_stacktrace() to determine whether
3718+ the stack trace can be considered useful. The current heuristic is to
3719+ consider it useless if it either is shorter than three lines and has any
3720+ unknown function, or for longer traces, a minority of known functions. Add
3721+ test cases.
3722+ * gtk/apport-gtk, qt4/apport-qt, cli/apport-cli: Do not offer 'reduced
3723+ report' option if the stack trace is useless. (LP: #87430) Bump the
3724+ python-apport dependencies of the frontend packages to ensure that we have
3725+ has_useful_stacktrace().
3726+
3727+ -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 5 May 2007 17:53:42 +0200
3728+
3729+apport (0.77) gutsy; urgency=low
3730+
3731+ * apport/report.py: Replace any() call with a list comprehension to work
3732+ with Python < 2.5. (LP: #104864)
3733+ * apport/report.py: Move the ctypes import to the one place where we
3734+ actually need it, and do not entirely fail if they do not exist (such as
3735+ in Python 2.4). It is only required for non-default Feisty kernels anyway.
3736+ (LP: #107662)
3737+ * apport/chroot.py: Fix test suite to work with Python 2.4's tarfile module
3738+ output format.
3739+ * debian/local/setup-apport-retracer: Generalized some feisty specific
3740+ bits, set default release to gutsy.
3741+
3742+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 23 Apr 2007 12:22:17 +0200
3743+
3744+apport (0.76) feisty; urgency=low
3745+
3746+ * Move python_hook.py out of the apport module to apport_python_hook.py, so
3747+ that it does not inflict the expensive import of all apport related
3748+ modules to every python program. Adapt module prefixes accordingly.
3749+ (LP: #105764)
3750+ * setup.py, debian/python-apport.install: Install apport_python_hook.py into
3751+ the python-apport binary package.
3752+ * apport/ui.py test suite: Unset locale related environment variables so
3753+ that the tests which check strings are not invalidated by translations.
3754+
3755+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 12 Apr 2007 11:47:50 +0200
3756+
3757+apport (0.75) feisty; urgency=low
3758+
3759+ * apport/report.py, add_proc_info(): Chop off /rofs/ prefix from
3760+ ExecutablePath, so that crashes work on the live system, too. Arguably a
3761+ kernel bug, but probably too hard to fix at this time. (LP: #102909)
3762+ * backends/packaging-dpkg.py, get_modified_files(): Ignore empty lines in
3763+ broken .md5sums file rather than crashing on them. (LP: #102906)
3764+
3765+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 4 Apr 2007 21:51:28 +0200
3766+
3767+apport (0.74) feisty; urgency=low
3768+
3769+ * debian/apport-{gtk,qt}.install: Do not install .desktop files for now,
3770+ until we get a proper guided bug reporting.
3771+ * problem_report.py, write_mime(): Do not re-compress keys which already end
3772+ in .gz. Add test cases.
3773+ * test-hooks: Add a (dodgy) test case for calling package_hook on an
3774+ uninstalled package. After all, this is very likely to happen for
3775+ installation errors. This reproduces #97636.
3776+ * backends/packaging-dpkg.py, get_source(): Add a similarly dodgy fallback
3777+ to apt if the queried package is not installed. This needs to be
3778+ generalized and cleaned up later, but now is the time for unintrusive
3779+ small patches. (LP: #97636)
3780+ * test-apport: Do not fail on non-empty gdb stderr if it only consists of a
3781+ single warning (as happens on powerpc).
3782+ * apport/report.py, test_check_interpreted(): Run gedit test on an actually
3783+ existing file, reproducing the interpreter confusion reported in #102056.
3784+ * apport/report.py, _check_interpreted(): Add a whitelist of common
3785+ interpreters and check ExecutablePath against it. (LP: #102056)
3786+ * apport/ui.py: Ignore SystemError exceptions from apt, which happen on
3787+ badly formatted source.list entries. (LP: #98901)
3788+ * apport/ui.py: Fix crash on None candiateOrigin from the apt cache object.
3789+ (LP: #98961)
3790+ * gtk/apport-gtk.glade: Add window titles to progress and details dialogs.
3791+ (LP: #97640)
3792+
3793+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 4 Apr 2007 14:44:08 +0200
3794+
3795+apport (0.73) feisty; urgency=low
3796+
3797+ * problem_report.py, write(): Allow a third optional argument in tuple
3798+ values, which specify a maximum file size. Above it, the entire key gets
3799+ removed. Add testsuite checks for all boundary cases.
3800+ * bin/apport: Limit core dump size to 75% of usable RAM
3801+ (MemFree+Cached-Writeback). This should avoid trashing people's boxes hard
3802+ on huge core dumps. Bump dependencies on python-problem-report. Create an
3803+ expensive, but realistic check for this in test-apport.
3804+ (LP: #71560)
3805+ * apport/ui.py, run_crash(): If a signal crash report does not have a core
3806+ dump, explain that the computer has too little memory for an automatic
3807+ analysis/report of the crash. Add test suite check.
3808+
3809+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 29 Mar 2007 23:38:23 +0200
3810+
3811+apport (0.72) feisty; urgency=low
3812+
3813+ [ Martin Pitt ]
3814+ * bin/apport-chroot, command_create(): Install gpgv.
3815+ * bin/apport-retrace: Fix error handling in fetch_unpack().
3816+ * Move apport-retrace.1 manpage from package apport to apport-retrace. Bump
3817+ Conflicts/Replaces accordingly.
3818+ * bin/launchpad-crash-digger, apport/ui.py: Remove the special case
3819+ 'powerpc'->'ppc' and use need-powerpc-retrace uniformly.
3820+ * debian/control: Add XS-Vcs-Bzr: header.
3821+ * apport/ui.py: Fix wrong parameter name in help message.
3822+ * Another grammar fix, thanks to Brian Murray!
3823+
3824+ [ Michael Hofmann ]
3825+ * debian/local/ubuntu-bug: Try to use apport-cli, if we do not have a
3826+ $DISPLAY, or neither Gnome nor KDE are running.
3827+ * debian/control: Recommend elinks, since it is the only text browser so far
3828+ that works with Launchpad (see #59510)
3829+ * Add debian/apport-cli.README.Debian: Describe how to integrate
3830+ apport-checkreports and apport-cli into .bashrc for crash notification on
3831+ servers.
3832+ * qt4/apport-qt: Fix undefined symbol in ui_present_package_error().
3833+ (LP: #97282)
3834+
3835+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 29 Mar 2007 11:41:39 +0200
3836+
3837+apport (0.71) feisty; urgency=low
3838+
3839+ * cli/apport-cli, qt4/apport-qt: Fix bad grammar 'some minutes'.
3840+ (LP: #95296)
3841+ * problem_report.py, write_mime(): Add optional 'preamble' parameter. Add
3842+ test case.
3843+ * apport/ui.py, upload_launchpad_blob(): Set need-$ARCH-retrace tag in MIME
3844+ preamble. Bump p-problem-report dependency. (LP: #94790)
3845+ * bin/apport-retrace: In verbose mode, display the path of currently
3846+ extracting deb.
3847+ * bin/apport-retrace: Do not fall over errors of dpkg -x (which happens e.
3848+ g. on udev, where it cannot unpack /dev, since this is a symlink to the
3849+ real /dev). Merely print out a warning about it.
3850+ * apport/ui.py, run_report_bug(): Ignore ENOENT from add_proc_info(). This
3851+ happens if the user closes the application prematurely, so that /proc/pid
3852+ does not exist any more. Add test case. (LP: #95954)
3853+ * backends/packaging-dpkg.py, get_modified_files(): Ignore lines in .md5sums
3854+ files which contain a NUL byte. This Should Not Happen™, but nevertheless
3855+ did. (LP: #96050)
3856+ * apport/ui.py, doc/package-hooks.txt: Check for a field
3857+ "UnreportableReason: <text>" and display an information box that the
3858+ current crash cannot be reported because of <text>. Add test case.
3859+ Document the new field.
3860+ * apport/ui.py: Check package origin, compare it to DistroRelease:, and
3861+ report crash as unreportable if they do not match. This particularly saves
3862+ the user from uploading large reports for e. g. opera crashes, and avoids
3863+ filing Ubuntu bugs from Debian installations. (LP: #75513)
3864+
3865+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 26 Mar 2007 18:01:24 +0200
3866+
3867+apport (0.70) feisty; urgency=low
3868+
3869+ [ Martin Pitt ]
3870+ * bin/apport-retrace: Add option --remove-tag to remove a Launchpad bug
3871+ tag. This is intended for an automatic Malone crash retracing system.
3872+ * debian/control: Bump python-launchpad-bugs dependency to ensure that we
3873+ have Bug.[gs]et_metadata().
3874+ * man/apport-retrace.1: Add documentation for --confirm and --remove-tag.
3875+ * bin/apport-chroot: Add option --remove-tag and pass it to apport-retrace.
3876+ * apport/chroot.py, fix_symlinks(): Convert chroot path prefixed absolute
3877+ symlinks to relative symlinks to avoid fakechroot's weird handling of
3878+ absolute symlinks.
3879+ * Add bin/launchpad-crash-digger: Daemon for watching out for
3880+ need-$ARCH-retrace tagged Ubuntu bugs in Launchpad and calling
3881+ apport-retrace on them.
3882+ * bin/apport-retrace: Mangle bug comment with StacktraceTop to not contain
3883+ invalid UTF-8, to avoid getting Internal Server Errors from LP.
3884+ * debian/local/setup-apport-retracer: Install libc6-i686{,-dbgsym} into an
3885+ x86 chroot, to get sane x86 backtraces for crashes in libc.
3886+ * debian/local/setup-apport-retracer:
3887+ - Unpack and install python-launchpad-bugs locally if the package is not
3888+ installed.
3889+ - Link launchpad-crash-digger into the retracer's bin/ dir.
3890+ * run-tests: Run tests with python's -tt flag to catch whitespace errors.
3891+ * Replace tabs with spaces in all Python files. (LP: #93561)
3892+ * Remove trailing white space in all Python files.
3893+ * apport/report.py, add_proc_info(): Do not regard symlinks to executables
3894+ as interpreted scripts any more (such as Debian alternatives). Add test
3895+ case. (LP: #94732)
3896+ * problem_report.py: Add new method get_new() which returns a set of all
3897+ keys which have been added since load() or construction. Add test cases.
3898+ * problem_report.py: Add optional parameter only_new to write(), which
3899+ writes only the get_new() keys. Add test case.
3900+ * apport/ui.py: Remember currently processed report file and update it with
3901+ the added information, so that it becomes useful for local evaluation,
3902+ too. Bump python-problem-report dependency to ensure write()'s only_new
3903+ availability. (LP: #94678)
3904+ * apport-chroot: Add forgotten sys.exit(1) after printing the error message
3905+ about an invalid chroot specification.
3906+ * apport/ui.py, run_crash(): Check for a field "UnsupportableReason: <text>"
3907+ and display an information box that the current configuration cannot be
3908+ supported because of <text>, instead of processing and reporting the
3909+ crash. Add test case for this workflow. With special regards to our
3910+ Firefox crash triagers who want to get rid of the hundreds of
3911+ flash-related crashes. :)
3912+ * apport/report.py, add_hooks_info(): Use execfile() instead of
3913+ __import__(), since package names might conflict with module names already
3914+ imported into apport's namespace. Also search for hook named after the
3915+ source package name (prefixed with 'source_'). Add test cases.
3916+ * bin/apport-chroot: When specifying --save for login, only save the tarball
3917+ if the exit status is 0.
3918+ * bin/apport-chroot, create: Install /usr/sbin/policy-rc.d to disable init
3919+ scripts.
3920+ * bin/apport-chroot: Fixed command function selection to not abort with
3921+ 'unknown command' if the DistroRelease: was unknown.
3922+ * bin/apport-retrace: Replace --no-purge with --no-dpkg. With this option,
3923+ do not call dpkg --unpack any more, but dpkg -x, to avoid any fchmod() and
3924+ other calls which cause problems in fakechroots.
3925+ * bin/apport-retrace: Fix ordering of version numbers in warning message.
3926+ * doc/package-hooks.txt: Add some examples, document source package hook.
3927+
3928+ [ Kees Cook ]
3929+ * apport/report.py, add_proc_info(): If reading /proc/pid/maps fails,
3930+ ptrace() the target process to make it readable (proposed security
3931+ improvement in future kernels).
3932+ * bin/apport-retrace: Fix crash for packages unknown to the apt cache.
3933+ * apport/report.py, add_gdb_info(): Limit maximum backtrace depth to 2000 to
3934+ avoid infinitely looped stacks and gdb crashes. (LP: #94455)
3935+ This also caps the maximum size of information that we add to reports.
3936+ (LP: #92653)
3937+ * bin/apport-retrace: Add option -R/--rebuild-package-info, so that
3938+ apport-retrace works on unprocessed crash dumps in /var/crash.
3939+ * Some grammar corrections.
3940+ * Add package-hooks/source_apport.py: Package hook for apport itself.
3941+ Include /var/log/apport.log and the status of files in /var/crash.
3942+
3943+ [ Michael Hofmann ]
3944+ * Add cli/apport-cli, setup.py, debian/apport-cli.install, debian/control:
3945+ Add command line user interface.
3946+ * apport/ui.py, format_filesize(): Use MiB and GiB instead of MB and GB;
3947+ these are the official units. Adapt test cases.
3948+ * apport/ui.py, collect_info()/file_report(): Do not raise an exception on
3949+ KeyboardInterrupt in the subthreads.
3950+ * apport/ui.py, open_url(): Do not use gtk.MessageDialog(), but
3951+ ui_error_message(), and fix error passing so that the message is
3952+ displayed in the parent thread.
3953+ * apport/ui.py, open_url(): Check that $DISPLAY is set before considering
3954+ the KDE/Gnome web browsers.
3955+
3956+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 26 Mar 2007 09:41:03 +0200
3957+
3958+apport (0.69) feisty; urgency=low
3959+
3960+ * apport-chroot: Add command 'installdeb' to conveniently install a bunch of
3961+ .debs into a chroot.
3962+ * apport-chroot: Fix 'login' and 'upgrade' commands to not require
3963+ specifying a chroot map when giving a chroot tarball path as argument.
3964+ * test-apport: Check that core dumps are written for packaged programs as
3965+ well, if ulimits want them. (Test for #92029)
3966+ * bin/apport: Call write_user_coredump() for packaged program crashes and
3967+ SIGABRT as well. (LP: #92029)
3968+
3969+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 19 Mar 2007 17:37:23 +0100
3970+
3971+apport (0.68) feisty; urgency=low
3972+
3973+ [ Michael Hofmann ]
3974+ * qt4/apport-qt: Fix taskbar entry, remove an unused method.
3975+ * qt4/error.ui: Fix icon spacing.
3976+
3977+ [ Martin Pitt ]
3978+ * apport-retrace: Add option --confirm to display the retraced stack traces
3979+ and ask for confirmation before uploading them as LP bug attachments.
3980+ (LP: #91878)
3981+ * apport-chroot: Add option --confirm-attach; if given, call apport-retrace
3982+ with --confirm.
3983+
3984+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 15 Mar 2007 00:05:18 +0100
3985+
3986+apport (0.67) feisty; urgency=low
3987+
3988+ * debian/local/setup-apport-retracer: Add apt sources for restricted,
3989+ universe, and multiverse, too.
3990+ * po/de.po: Update from Rosetta.
3991+ * apport/report.py: Remove undefined call to error_log() in
3992+ _command_output(), replace it with raising proper exceptions.
3993+ * bin/apport-retrace: Fix 'numer' typo. (LP: #91680)
3994+ * test-apport: Check that non-packaged executables generate a core dump on
3995+ SIGABRT, too (test case for bug #92029).
3996+ * bin/apport: Move check for ignoring SIGABRT below the core dump file
3997+ writing for non-packaged binaries. (LP: #92029)
3998+ * gtk/apport-gtk.glade:
3999+ - Remove titles from the progress windows to comply with Gnome HIG and not
4000+ repeat the text content.
4001+ - Improve wording a bit.
4002+ - LP: #92114
4003+ * gtk/apport-gtk{,.glade}: Fix signal handler name of the Cancel button in
4004+ the upload progress dialog, so that it actually works. (LP: #92115)
4005+
4006+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 14 Mar 2007 17:34:57 +0100
4007+
4008+apport (0.66) feisty; urgency=low
4009+
4010+ * Remove apport/MultipartPostHandler.py, this functionality moved to
4011+ python-launchpad-bugs now. Add a dependency to that package.
4012+ * apport/ui.py, upload_launchpad_blob(): Use the shiny new
4013+ launchpadBugs.storeblob.upload().
4014+ * bin/apport-retrace: Attach retraced stack traces back to the Launchpad bug
4015+ report if no other output option is given (This corresponds to the
4016+ in-place editing when a report file is specified). Add option --cookie to
4017+ specify a Mozilla-style cookie file for the necessary Launchpad
4018+ authentication.
4019+ * man/apport-retrace.1: Document above apport-retrace changes.
4020+ * bin/apport-chroot: Add --cookie option: temporarily symlink cookie into
4021+ the chroot and pass it to apport-retrace in retrace mode.
4022+
4023+ -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 10 Mar 2007 15:01:57 +0100
4024+
4025+apport (0.65) feisty; urgency=low
4026+
4027+ * debian/local/setup-apport-retracer:
4028+ - Replace grep-dctrl with grep call, since grep-dctrl is not installed in
4029+ all the DC chroots.
4030+ - Do not download apport source from archive.u.c., instead require that
4031+ this script lives in the unpacked apport source tree.
4032+ * bin/apport-chroot: Use apt-get options -y and --allow-unauthenticated when
4033+ installing additional packages.
4034+ * bin/apport-chroot: Handle --extra-package for 'upgrade', too, to provide a
4035+ simple way of adding a package to an existing chroot tarball.
4036+ * debian/local/setup-apport-retracer: Create tarball chroots by default.
4037+ It only imposes a negligible overhead, and sharing unpacked directories
4038+ with multiple people is just too brittle.
4039+ * bin/apport-retrace: Add option --no-purge to not purge unpacked packages
4040+ after retracing. This is (only) useful with temporarily unpacked chroots,
4041+ since it's only a waste of time there.
4042+ * bin/apport-chroot: Call apport-retrace with --no-purge when retracing in a
4043+ chroot tarball.
4044+ * apport/chroot.py: Add fix_symlinks() method to remove the chroot root
4045+ directory prefix from symbolic links; they prevent function of tarball
4046+ chroots and moving around directory chroots. Add test case.
4047+ * bin/apport: Fix symlinks after creating and upgrading a chroot.
4048+ * bin/apport-chroot: Add option --save to update a tarball after logging
4049+ in to it.
4050+
4051+ -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 10 Mar 2007 21:21:25 +0100
4052+
4053+apport (0.64) feisty; urgency=low
4054+
4055+ * bin/apport-chroot: Add 'login' command.
4056+ * bin/apport-chroot: Install apport-retrace into a newly created chroot.
4057+ * Add debian/local/setup-apport-retracer: Script to install local versions
4058+ of apport, debootstrap, fake{,ch}root libraries, and a feisty apport
4059+ fakechroot. This works OOTB on ronne's amd64 and i386 feisty chroots. The
4060+ script is not shipped in any package yet, but it's convenient to ship it
4061+ in revision control and in the source.
4062+ * apport/report.py, _check_interpreted(): When calling an interpreter with a
4063+ script name as argument, set ExecutablePath to the script instead of the
4064+ interpreter. Add test case. (LP: #88794)
4065+ * apport/report.py, search_bug_patterns(): Catch all exceptions from
4066+ urlopen(), not just IOError. Sometimes this fails with funnier errors.
4067+ (LP: #89589)
4068+ * bin/apport-retrace: Give some additional explanation when installing
4069+ packages fails. (LP: #89916)
4070+ * apport/fileutils.py, get_all_{system_,}reports(): Fix file access race
4071+ condition. (LP: #89977)
4072+ * bin/apport-retrace: Add option -p/--extra-package to install an additional
4073+ package for retracing. May be specified multiple times. Document new
4074+ option in man/apport-retrace.1. (LP: #90077)
4075+ * bin/apport-chroot: Add a similar option -p/--extra-package and install
4076+ those in the 'create' command and simply pass it to apport-retrace in the
4077+ 'retrace' command. (LP: #90077)
4078+ * bin/apport-chroot: Add a -v/--verbose option.
4079+ * bin/apport-retrace: Do not complain about missing ddebs for Arch: all
4080+ packages.
4081+
4082+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 6 Mar 2007 16:20:41 +0100
4083+
4084+apport (0.63) feisty; urgency=low
4085+
4086+ New feature: fakechroot support for apport-retrace
4087+
4088+ * bin/apport-retrace:
4089+ - Simplify program design and throw away the complicated debug symbol
4090+ sandbox generation, along with the -d and -C options. Instead, directly
4091+ install the missing packages and ddebs with apt. This makes the tool more
4092+ suitable for running in chroots and has often been requested anyway.
4093+ - Add option -u/--unpack-only which causes additionally installed packages
4094+ to be unpacked without being configured and purged again after
4095+ retracing. This allows apport-retrace to work under fakechroot and has
4096+ the nice side effect of speeding up package installation (we do not care
4097+ about configuration for retracing anyway).
4098+ * man/apport-retrace.1: Update description for the new behaviour, drop
4099+ documentation of the -d and -C options, and add documentation of -u.
4100+ * Add apport/chroot.py: Class for representing and working with chroots;
4101+ this uses the fakeroot and fakechroot libraries when being called as
4102+ non-root.
4103+ * Add bin/apport-chroot: CLI frontend for doing various things with
4104+ chroots (including fakeroot/fakechroot support from the Chroot class). For
4105+ now, this implements:
4106+ - create a chroot (tarball or directory)
4107+ - dist-upgrade a particular or all chroots
4108+ - apport-retrace a bug or Apport report file
4109+ * setup.py: Ship apport-chroot in scripts directory.
4110+ * Add a new package apport-retrace which ships apport-retrace and
4111+ apport-chroot and carries all the heavier dependencies (binutils,
4112+ python-launchpad-bugs, python-apt, etc.). Drop the latter two dependencies
4113+ from the apport package. This allows us to install the apport-retrace
4114+ package in fakechroots (not possible with apport itself) and avoid
4115+ unnecessary dependencies on normal desktop installations.
4116+
4117+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 5 Mar 2007 11:20:36 +0100
4118+
4119+apport (0.62) feisty; urgency=low
4120+
4121+ * apport/ui.py, collect_info(): Use REThread instead of Thread and raise
4122+ exceptions from it, so that errors during info collection actually become
4123+ visible.
4124+ * apport/report.py, add_proc_info(): Check that ExecutablePath actually
4125+ exists, so that invalid values from transient error conditions are ignored
4126+ (such as '/usr/bin/gnome-panel\x00\x00\x8b (deleted)').
4127+ * apport/packaging.py: Add interface get_system_architecture() to return the
4128+ system architecture in the distro specific notation. This can differ from
4129+ get_architecture(package) on multiarch platforms such as amd64.
4130+ * backends/packaging-dpkg.py: Implement get_system_architecture() to return
4131+ dpkg --print-architecture, add a shallow test case.
4132+ * apport/report.py, add_package_info(): Rename key 'Architecture:' to
4133+ 'PackageArchitecture:' for clarity.
4134+ * apport/report.py, add_os_info(): Add system architecture as
4135+ 'Architecture:' field.
4136+ * apport/ui.py, create_crash_bug_title(): Append warning about non-native
4137+ package if package architecture does not match the system's one.
4138+ * All test suites: Remove redundant word 'behaviour' from test descriptions.
4139+ * test-hooks: Run tests on installed hooks in /usr/share/apport by default
4140+ and add a '--local' switch to test the hooks in the source tree instead.
4141+ Use this option in run-tests.
4142+ * apport/report.py, test_add_proc_info(): Change the python script test
4143+ so that it does not depend on being run in the source tree.
4144+ * run-tests: Add a 'local' command line option which runs tests on the files
4145+ and modules in the build tree. Run tests on system files/modules by
4146+ default.
4147+ * setup.py, debian/apport.install: Ship test-hooks, test-apport, and
4148+ run-tests in /usr/share/apport/testsuite/, so that the full test suite can
4149+ be run in the installed system.
4150+ * gtk/apport-gtk.desktop.in: Only show in Gnome and Xfce.
4151+ * qt4/apport-qt.desktop.in: Only show in KDE.
4152+
4153+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 1 Mar 2007 10:43:29 +0100
4154+
4155+apport (0.61) feisty; urgency=low
4156+
4157+ * bin/apport:
4158+ - Kernel 2.6.20-9 now sets CORE_REAL_RLIM to -1 instead of not setting it;
4159+ handle this case correctly. (LP: #87065)
4160+ - Add forgotten multiplication of CORE_REAL_RLIM with 1024, since ulimit
4161+ sets kB, not bytes.
4162+
4163+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 27 Feb 2007 16:06:11 +0100
4164+
4165+apport (0.60) feisty; urgency=low
4166+
4167+ * gtk/apport-gtk.glade: Reintroduce window titles. Since the crash
4168+ notifications are like alerts, title have been removed recently to comply
4169+ with Gnome HIG standards, but then the user will get 'nameless window'
4170+ buttons in the task bar. Let's have the smaller evil then. (LP: #87164)
4171+ * apport/packaging.py: Add get_architecture() interface for determining the
4172+ architecture of a particular package (which might not match the overall
4173+ system architecture on multiarch-capable systems, e. g. an i386 Firefox
4174+ package installed on amd64).
4175+ * backends/packaging-dpkg.py: Implement get_architecture() and add test
4176+ case.
4177+ * apport/report.py, add_package_info(): Add Architecture: field.
4178+ (LP: #87424)
4179+ * apport/ui.py: Already mark report as seen when we load it, not just in the
4180+ information collection thread. That way, reports will only be shown once
4181+ on systems which have /var/crash mounted noatime, too. (LP: #85809)
4182+ * apport/fileutils.py, mark_report_seen(): If os.utime() fails, and opening
4183+ the report file for reading does not change the atime (happens with
4184+ noatime mount option), don't throw an exception, just delete the report.
4185+ (other aspect of LP: #85809)
4186+ * qt4/apport-qt: Wrap gettext() into an unicode(str, 'UTF-8') call,
4187+ otherwise all non-ASCII unicode strings are broken. (LP: #87757)
4188+
4189+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 26 Feb 2007 20:55:40 +0100
4190+
4191+apport (0.59) feisty; urgency=low
4192+
4193+ * apport/report.py: Check that interpreter options are discarded in
4194+ test_check_interpreted_script(). This replicates bug #87005.
4195+ * apport/report.py, _check_interpreted_script(): Filter out interpreter
4196+ command line options. This should make the detection of interpreted
4197+ scripts more robust. (LP: #87005)
4198+ * test-apport, check_crash(): Differ between expecting the program dumping
4199+ core and finding a core dump on disk, because this is not equivalent any
4200+ more with core pipelining.
4201+ * bin/apport: Write core files into a process' cwd if the process' ulimit
4202+ requests and permits it and the crashes process is not packaged, so that
4203+ developers get happy again. Test this behaviour with various ulimits in
4204+ test-apport.
4205+ * test-apport: Check that the core file written by apport is valid. This
4206+ uncovers kernel bugs like #87065
4207+ * problem_report.py test suite: Use assertAlmostEqual() when comparing stat
4208+ times, since they are floats on some systems.
4209+ * apport/report.py, add_gdb_info():
4210+ - Remove all the initial gdb output, which gets rid of the duplicated #0
4211+ line.
4212+ - Replace some stray tabs with spaces.
4213+ - Thanks to Kees Cook for this!
4214+
4215+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 22 Feb 2007 19:52:52 +0100
4216+
4217+apport (0.58) feisty; urgency=low
4218+
4219+ * qt4/apport-qt.desktop.in move to System menu
4220+
4221+ -- Jonathan Riddell <jriddell@ubuntu.com> Tue, 20 Feb 2007 11:35:17 +0000
4222+
4223+apport (0.57) feisty; urgency=low
4224+
4225+ * apport/ui.py: Intercept ENOMEM and fail gracefully; there is little else
4226+ we can do at that point, and there is no point in presenting a crash
4227+ report for this. (LP: #85155)
4228+ * apport/ui.py: Ignore KeyError when deleting the CoreDump field on sending
4229+ a reduced report. This Should Not Happen™, but nevertheless did.
4230+ (LP: #86083)
4231+ * gtk/apport-gtk, qt4/apport-qt: Intercept ImportError for the non-builtin
4232+ Python modules. This usually happens for crashes when there is a
4233+ dist-upgrade active and some Python packages have not been configured yet.
4234+ (LP: #86007)
4235+ * apport/ui.py: If the problem report does not apply to a packaged program,
4236+ and we have an ExecutablePath, mention it in the error message for easier
4237+ debugging.
4238+ * apport/python_hook.py: Resolve symbolic links in ExecutablePath.
4239+ (LP: #85529)
4240+ * apport/ui.py, open_url(): Remove debugging print statement again, now
4241+ that we tracked down bug #83974.
4242+
4243+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 19 Feb 2007 14:40:29 +0100
4244+
4245+apport (0.56) feisty; urgency=low
4246+
4247+ * apport/ui.py, open_url(): When being invoked as root, call gnome-open or
4248+ firefox as root through sudo instead of dropping our uid/gid and calling
4249+ it normally. The latter does not work for Firefox for some mysterious
4250+ reason. Thanks to Mika Fischer for this trick. (LP: #81207)
4251+ * Add debian/local/ubuntu-bug.1: Manpage for ubuntu-bug. Add it to
4252+ debian/apport.manpages.
4253+ * qt4/apport-qt: Add some missing features that are present in the GTK UI:
4254+ - Do not show details by default, add a button to show them.
4255+ - Add complete/reduced bug report radio buttons.
4256+ - Thanks to Michael Hofmann for this!
4257+
4258+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 15 Feb 2007 14:59:07 +0100
4259+
4260+apport (0.55) feisty; urgency=low
4261+
4262+ * Add debian/local/ubuntu-bug: Check for a running KDE or Gnome session,
4263+ availability of apport-gtk and -qt, and open the appropriate GUI in bug
4264+ filing mode. This makes it convenient for shell users and is also required
4265+ for proper Firefox 'Report a bug...' menu integration (see bug #85041).
4266+ * debian/apport.install: Install ubuntu-bug to /usr/bin.
4267+ * gtk/apport-gtk: Generously add some gtk.main_iteration() calls to avoid
4268+ hanging dialogs, since we do not have a main loop.
4269+ * apport/ui.py: Do not silently ignore exceptions while uploading data to
4270+ Launchpad, but intercept them and display their message in the error
4271+ dialog. (Part of LP: #84992)
4272+ * apport/ui.py: Switch from edge.launchpad.net to production launchpad.net,
4273+ since the necessary bits are now there. (LP: #84992)
4274+
4275+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 14 Feb 2007 13:37:52 +0100
4276+
4277+apport (0.54) feisty; urgency=low
4278+
4279+ * bin/apport: Re-enable, now that our kernel has been fixed to pipe complete
4280+ core dumps to us.
4281+
4282+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 13 Feb 2007 09:33:38 +0100
4283+
4284+apport (0.53) feisty; urgency=low
4285+
4286+ * apport/ui.py, open_url(): Remove some accidentally left-over debugging
4287+ junk.
4288+ * gtk/apport-gtk: Process pending GTK events after hiding the info
4289+ collection window to avoid a hanging dead dialog.
4290+ * gtk/apport-gtk: Do not count the lines of fields with binary data. This
4291+ particularly avoids long delays with huge core dumps. (LP: #81979)
4292+ * apport/ui.py, open_url(): Print URL to stdout, so that we can debug the
4293+ weirdness in #83974.
4294+
4295+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 12 Feb 2007 16:57:05 +0100
4296+
4297+apport (0.52) feisty; urgency=low
4298+
4299+ * apport/report.py: Fix hook directory to be
4300+ /usr/share/apport/package-hooks/, not /u/s/apport/.
4301+ * Add doc/package-hooks.txt: Document per-package hooks, ship in package
4302+ apport.
4303+ * Add debian/apport.dirs: Ship package-hooks/ directory.
4304+ * gtk/apport-gtk, qt4/apport-qt: Fix detection of binary data so that the
4305+ CoreDump is not displayed as incomprehensible gibberish any more.
4306+ * Add qt4/apport-qt.desktop.in and add it to POTFILES.in.
4307+ * bin/apport-retrace: --verbose can now be specified multiple times to
4308+ increase verbosity and debug package installation. Also, fix some quoting
4309+ bugs. Thanks to Kees Cook for this!
4310+ * qt4/apport-qt: Fix restart button handling. (LP: #84202)
4311+ * qt4/apport-qt: Do not try to call splitlines() on a report value that is a
4312+ file reference; just display the reference instead. (LP: #84196)
4313+ * bin/apport: Disable for now, since the current kernel produces cropped
4314+ core dumps and thus we get totally useless crash reports
4315+
4316+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 9 Feb 2007 18:58:08 +0100
4317+
4318+apport (0.51) feisty; urgency=low
4319+
4320+ New feature: Qt4 GUI implementation:
4321+
4322+ * Added qt4/: Qt4 implementation of the abstract user interface. Thanks to
4323+ Michael Hofmann <mh21@piware.de> for that!
4324+ * debian/copyright: Add Michael as copyright holder.
4325+ * setup.py, debian/control, debian/apport-qt.install: Packaging bits for
4326+ apport-qt.
4327+ * Move translations from apport-gtk to apport, since they are shared between
4328+ frontends. Add appropriate Conflicts/Replaces (we don't strictly need it
4329+ here because we strip them anyway, but we need that for the moving icon
4330+ anyway).
4331+ * Move icon from apport-gtk to apport, since it is/can be shared between
4332+ frontends.
4333+
4334+ Improvements:
4335+
4336+ * Replaced old apport.png icon stolen from bug-buddy with nice SVG one.
4337+ Thanks to Troy Sobotka for this!
4338+ * debian/copyright: Add Troy as copyright holder for the icon.
4339+ * bin/apport-retrace, man/apport-retrace.1: Document that report can now be
4340+ a LP bug number.
4341+
4342+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 8 Feb 2007 20:01:12 +0100
4343+
4344+apport (0.50) feisty; urgency=low
4345+
4346+ * gtk/apport-gtk.glade: Fix 'prolem' typo.
4347+ * bin/apport-retrace: Use python-launchpad-bugs to create a Report object
4348+ from a given Launchpad bug number (given as argument instead of the report
4349+ file path). Add appropriate p-l-b dependency.
4350+ * gtk/apport-gtk: Mark '(binary data)' string as translatable.
4351+
4352+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 8 Feb 2007 15:15:47 +0100
4353+
4354+apport (0.49) feisty; urgency=low
4355+
4356+ * gtk/apport-gtk.glade: Fix s/send/sent/ typo. Closes: LP#83061
4357+ * apport/ui.py, create_crash_bug_title(): Cope with odd Tracebacks that are
4358+ shorter than three lines. Add test case from the bug. Closes: LP#83556
4359+ * apport/python_hook: Do not create a report if the binary is ignored. Add
4360+ test case. Closes: LP#83566
4361+ * gtk/apport-gtk: Do not save/alter crash dialog title any more, it's empty
4362+ now.
4363+ * apport/ui.py, open_url(): Check the user's session for
4364+ ksmserver/gnome-session to decide whether to prefer kfmclient or
4365+ gnome-open. Also, only call Firefox directly if gconf's prefered browser
4366+ is actually Firefox. Closes: LP#82007
4367+
4368+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 6 Feb 2007 18:33:15 +0100
4369+
4370+apport (0.48) feisty; urgency=low
4371+
4372+ New feature: Infrastructure for reporting kernel Oopses:
4373+
4374+ * Add bin/kernel_hook and ship it in /usr/share/apport. The kernel can call
4375+ this on an Oops. Add a test suite for it to test-hooks.
4376+ * apport/ui.py: Add support for reporting ProblemType: Kernel reports, and
4377+ add test suite for the workflow.
4378+ * gtk/apport-gtk{,.glade}: Add implementation for ui_present_kernel_error().
4379+
4380+ Improvements:
4381+
4382+ * Merged various apport-retrace improvements from Kees' branch:
4383+ - Add various options to override some report fields with local values.
4384+ - Add --verbose option and be quiet by default.
4385+ - Read ProcMaps for additional library dependencies, to also catch
4386+ libraries loaded at runtime (plugins).
4387+ - Set correct debug file directory when starting an interactive gdb
4388+ session with -g.
4389+ * Add gtk/apport-gtk.desktop.in: Desktop file for calling apport-gtk in
4390+ 'file a distro bug' mode, to be displayed in gnome-panel's System menu
4391+ (see bug-reporting-tool spec). Also add a Makefile to do the
4392+ intltool-merge dance, add it to POTFILES.in, and ship it in
4393+ debian/apport-gtk.install.
4394+ * bin/apport: Call add_os_info(), so that we get architecture information
4395+ even for 'naked' reports which didn't go through UI enrichment.
4396+ * Add ./test-hooks: Test suite for the various package hooks shipped with
4397+ apport. Test the package problem hook for now.
4398+
4399+ Bug fixes:
4400+
4401+ * debian/control: Add missing python-apt dependency to apport
4402+ (apport-retrace needs it). Thanks to Kees Cook for noticing.
4403+ * debian/control: Add gdb dependency to python-apport.
4404+ * backends/packaging-dpkg.py test suite: Verify that packages returned by
4405+ get_dependencies() actually exist. This catches the 'chops off first
4406+ letter of package name sometimes' bug.
4407+ * backends/packaging-dpkg.py, _init_status(): Add missing space to Depends:
4408+ field format in dpkg-query call. This fixes the chopped-off first letters
4409+ in the 'Dependencies' report field.
4410+ * setup.py: Remove version attribute, we do not update and use it anyway.
4411+ * apport/ui.py: Do not crash if Package: specifies a nonexisting package.
4412+ Display a proper error message instead. Add test_run_crash_errors() test
4413+ case.
4414+ * apport/report.py, add_package_info(): Fix crash when the first dependency
4415+ is not installed. Closes: LP#82561
4416+ * gtk/apport-gtk.glade: Remove window titles in alert dialogs to comply with
4417+ Gnome HIG. Closes: LP#83123
4418+
4419+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 5 Feb 2007 12:19:35 +0100
4420+
4421+apport (0.47) feisty; urgency=low
4422+
4423+ * apport/report.py, add_hooks_info(): Only use first part of 'Package:',
4424+ there might be a version number and a changed files list which we must not
4425+ propagate to the import statement. Closes: LP#82566
4426+
4427+ -- Kees Cook <kees@ubuntu.com> Wed, 31 Jan 2007 15:37:11 -0800
4428+
4429+apport (0.46) feisty; urgency=low
4430+
4431+ * debian/control: Bump dependencies to python-apport due to recent changes
4432+ in expected return values in some UI functions. Closes: LP#82267
4433+ * bin/package_hook: Remove erroneous 'import apport.packaging', which
4434+ shadows the packaging variable in the apport package. This unbreaks the
4435+ package problem hook. Closes: LP#82297
4436+
4437+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 31 Jan 2007 07:51:24 +0100
4438+
4439+apport (0.45) feisty; urgency=low
4440+
4441+ New feature: Infrastructure for package install/upgrade failures:
4442+
4443+ * Add bin/package_hook: Script for creating a report for a package
4444+ installation/upgrade failure. It receives a package name, a number of log
4445+ files, and an ErrorMessage: from stdin. This will be called from e.g.
4446+ dist-upgrader.
4447+ * setup.py, debian/apport.install: Ship package_hook.
4448+ * apport/ui.py: If ProblemType is 'Package', call a new function
4449+ self.ui_present_package_error() instead of presenting a crash. Add test
4450+ suite checks for the package error report workflow.
4451+ * apport/ui.py, create_crash_bug_title(): Create default bug title for
4452+ package reports. Add various test cases.
4453+ * gtk/apport-gtk{,.glade}: GTK implementation of ui_present_package_error().
4454+
4455+ New feature: Maintain a per-binary blacklist to inhibit apport crash reports
4456+ until the binary changes. Closes: LP#79408
4457+
4458+ * apport/report.py: Add new Report methods check_ignored() and mark_ignore()
4459+ to check for/set ignore list entries. Add test cases.
4460+ * apport/ui.py: Add another return value of ui_present_crash() to specify
4461+ whether or not to blacklist the current crash's executable. Check workflow
4462+ of both responses in the test suite.
4463+ * gtk/apport-gtk{,.glade}: Add a blacklist checkbox to the crash
4464+ notification dialogs.
4465+ * bin/apport: Do nothing if the current crash is blacklisted.
4466+ * test-apport: Test blacklisting.
4467+
4468+ Bug fixes:
4469+
4470+ * gtk/apport-gtk: Fix return code for restarting the application ('reopen' ->
4471+ 'restart'). Closes: LP#81422
4472+ * test-apport: Adapt to new core_pattern kernel interface mode:
4473+ - Check core_pattern instead of the obsolete crashdump sysctl to determine
4474+ whether or not apport is running.
4475+ - Give apport max. 10 seconds to complete. The current kernel reaps the
4476+ crashed process as soon as writing the core dump to the pipe is
4477+ finished, but apport still needs to write the report file.
4478+ - Do not EXFAIL the test for crashes in nonwriteable cwd any more, since
4479+ it is now supposed to work (we do not write a core dump to the disk any
4480+ more).
4481+ * run-tests, use-local: Adapt to new core_pattern kernel interface.
4482+ * apport: Improve logging of exceptions, include environment variables.
4483+ * apport/report.py test suite: Use gdb to generate a test core dump, do not
4484+ rely on kill(SIGSEGV) and the kernel to do it (since we now use a pipe in
4485+ core_pattern).
4486+ * backends/packaging-dpkg.py: Fix return value of get_modified_files() if
4487+ dpkg .list file is missing.
4488+ * apport/report.py, add_package_info(): Do not produce stray empty lines for
4489+ uninstalled alternative dependencies.
4490+ * apport/report.py: Fix test_add_gdb_info_script() to not leave behind a
4491+ stray gzip process which randomly blocks stdin. Closes: LP#78421
4492+ * backends/packaging-dpkg.py: Do not read the dpkg status in the
4493+ constructor, but lazily initialize it when actually calling a query
4494+ function. This avoids imposing the dpkg-query overhead for programs that
4495+ import the apport package without doing package queries (such as any
4496+ Python program under Ubuntu, due to the Python crash hook).
4497+ * apport/ui.py, create_crash_bug_title():
4498+ - Do not crash on an empty StacktraceTop. Closes: LP#81677
4499+ - Do not mention an unknown function name ('??') in the bug title;
4500+ instead, use the topmost function with a known name, or leave it out
4501+ at all.
4502+ - Add test cases for these situations.
4503+ * apport/report.py, _get_ignore_dom(): Do not throw an error for an empty
4504+ ignore list file.
4505+
4506+ Code cleanups:
4507+
4508+ * apport/report.py test suite: Refactorize generation of test crash program
4509+ and core dump generation.
4510+ * Consistently use 'in'/'not in' instead of find() for substring searches.
4511+ * Changed the packaging backend import, so that its methods can now be
4512+ accessed at apport.packaging instead of apport.packging.impl.
4513+
4514+ -- Martin Pitt <martin.pitt@ubuntu.com> Sun, 28 Jan 2007 12:34:05 +0100
4515+
4516+apport (0.44) feisty; urgency=low
4517+
4518+ Some more 'Need for Speed' optimizations:
4519+
4520+ * backends/packaging-dpkg.py, _check_files_md5(): Also accept a md5sum
4521+ string in addition to a md5sum file.
4522+ * backends/packaging-dpkg.py, get_modified_files(): Compare package file's
4523+ ctime and mtime against the package list file's mtime and only md5sum the
4524+ files that are newer. This drastically reduces the amount of md5suming
4525+ (usually to zero) and thus speeds up the information collection.
4526+ * backends/packaging-dpkg.py: Use a single hackish 'dpkg-query --show *'
4527+ as a portable variant of 'cat /var/lib/dpkg/status' to pre-fill the status
4528+ cache with all packages instead of calling dpkg -s on every single package
4529+ we query. This changes the time for figuring out dependencies and their
4530+ versions from 'unbearable for many packages' to 'barely noticeable'.
4531+
4532+ New feature: per-package apport hooks to collect additional information:
4533+
4534+ * apport/report.py: Add method add_hooks_info() which executes a function
4535+ add_info(report) from /usr/share/apport/<package>.py. Also add
4536+ appropriate test cases. This provides per-package hooks for apport.
4537+ * apport/ui.py: Call add_hooks_info() in the information collection thread.
4538+
4539+ Bug fixes:
4540+
4541+ * apport/report.py: Add some more test cases for _check_interpreted() for
4542+ Python scripts.
4543+ * apport/python_hook.py: Check for a correct ExecutablePath in
4544+ test_general().
4545+ * apport/python_hook.py: Use fileutils.likely_packaged() instead of
4546+ checking for /tmp and home, so that we ignore stuff in /usr/local, too.
4547+ Closes: LP#81244
4548+ * apport/python_hook.py: If we figure out an ExecutablePath which is not
4549+ actually an executable, do not create a report. This particularly affects
4550+ interactive python sessions where sys.argv[0] is empty and thus
4551+ ExecutablePath ends up being the current directory. Add test cases.
4552+ Closes: LP#81237
4553+
4554+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 24 Jan 2007 17:16:04 +0100
4555+
4556+apport (0.43) feisty; urgency=low
4557+
4558+ * apport/ui.py: Add method create_crash_bug_title() to construct a
4559+ reasonable standard bug title for crash reports, so that the automatic
4560+ duplicate detection actually has a chance to work. Also add test cases for
4561+ various signal crashes and an unhandled Python exception.
4562+ * apport/ui.py, file_report(): Submit a default bug title for crash reports.
4563+ Closes: LP#79657
4564+
4565+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 23 Jan 2007 16:26:40 +0100
4566+
4567+apport (0.42) feisty; urgency=low
4568+
4569+ New feature: https://wiki.ubuntu.com/ApportImprovements (kernel interface
4570+ change):
4571+
4572+ * bin/apport: Support calling without arguments, to support new semantics
4573+ agreed in the ApportImprovements spec: macro values (in particular, pid
4574+ and signal number) are passed as environment variables.
4575+ * preloadlib/libapport.c: Simulate new kernel behaviour described above.
4576+ * debian/apport.init: Set the kernel's core_pattern sysctl to pipe to apport
4577+ if the edgy-style 'crashdump-helper' sysctl helper does not exist.
4578+
4579+ Bug fixes:
4580+
4581+ * bin/apport-retrace: Beautify error message when report file is not
4582+ accessible. Closes: LP#79568
4583+ * apport/ui.py: Fix crash in the bug pattern search thread if we could
4584+ not determine a package name. Closes: LP#77872
4585+ * bin/apport: Only unlink the core dump if it still exists. Closes: LP#80866
4586+ * gtk/apport-gtk.glade: Fix expand/fill attributes so that the expander gets
4587+ all the space when resizing the window. Closes: LP#80987
4588+ * problem_report.py, write_mime(): Make sure that multi-line values that go
4589+ to the summary are terminated with a newline.
4590+ * apport/ui.py: Fix error message invocation for reporting cloakroom upload
4591+ failure.
4592+ * problem_report.py, write_mime(): Fix off-by-one comparison of the 'inline
4593+ text' treshold, so that apport's StacktraceTop field appears in bug
4594+ summaries. Also fix a corner case in CR line ending handling. Check both
4595+ things in the test suite.
4596+ * gtk/apport-gtk: Add missing 'import subprocess.'. Closes: LP#81007
4597+ * debian/control: Bump apport's and apport-gtk's dependency to python-apport
4598+ to make sure that apport.ui is available. Closes: LP#81019
4599+ * apport/ui.py: Add missing 'import pwd'. Closes: LP#81033
4600+
4601+ Minor improvements:
4602+
4603+ * apport/ui.py: Get the cloakroom ticket number from the
4604+ X-Launchpad-Blob-Token HTTP header instead of parsing the resulting page.
4605+
4606+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 23 Jan 2007 11:27:20 +0100
4607+
4608+apport (0.41) feisty; urgency=low
4609+
4610+ New feature: Use Malone cloakroom for uploading reports. Closes: LP#70919
4611+
4612+ * gtk/apport-gtk.glade: Redesign bug reporting dialog to have a 'Create bug
4613+ report' and a 'Cancel' button. Also assign GTK_RESPONSE_* constants to the
4614+ dialog buttons. Go back to Glade 2 since Glade 3 still sucks too much.
4615+ * gtk/apport-gtk: Adjust workflow for sending report to Malone cloakroom
4616+ instead of asking the user to attach the file. Sending is not yet
4617+ implemented, though.
4618+ * gtk/apport-gtk: Do not show any dialogs any more when filing a bug.
4619+ * Add apport/MultipartPostHandler.py: This module provides an urllib2 opener
4620+ for uploading file attachments to forms over HTTP POST. This module is
4621+ (C) 2006 Will Holcomb <wholcomb@gmail.com> and was taken from
4622+ http://odin.himinbi.org/MultipartPostHandler.py. (This is a serious hole
4623+ of the Python standard library IMHO.)
4624+ * apport/ui.py, file_report(): Upload blob to Malone (edge.launchpad.net for
4625+ now), retrieve the ticket, and pass it to +filebug.
4626+
4627+ Refactorizations:
4628+
4629+ * gtk/apport-gtk: Major refactorization to use modal dialogs and run()
4630+ instead of loosely coupled event handlers.
4631+ * Add apport/ui.py: Abstract frontend which encapsulates the logic, workflow
4632+ and UI independent bits and provides UI hooks for concrete
4633+ implementations. This both makes it easy to write more frontends like Qt
4634+ or CLI, and also makes the code automatically testable. Add an extensive
4635+ testsuite.
4636+ * run-tests: Add ui.py testsuite.
4637+ * gtk/apport-gtk: Port to ui.py's UserInterface (which means moving 1/3 of
4638+ the code into the new ui_*() methods and throwing away the rest).
4639+ * Add apport/REThread.py: Enhanced threading.Thread class that can propagate
4640+ the return value and uncaught exceptions of run() to the calling thread.
4641+ * apport/ui.py: Get rid of thread_check_bugpatterns() and hackish exception
4642+ handling, rewrite using REThread.
4643+ * apport/ui.py, gtk/apport-gtk: Add progress bar to report upload. It is
4644+ indefinite for now, because neither urllib2 nor httplib support upload
4645+ progress.
4646+
4647+ Bug fixes:
4648+
4649+ * gtk/apport-gtk.glade: Merged Gnome HIG fixes from Sebastian Heinlein,
4650+ thank you!
4651+ * Merge patch from Sebastian Heinlein to properly treat the apport-gtk icon
4652+ the dh_iconcache way and make it themeable. Thank you!
4653+ * gtk/apport-gtk: Remove periods from primary dialog texts to comply with
4654+ Gnome HIG standards.
4655+ * backends/packaging-dpkg.py, get_file_package(): Process list files in
4656+ chunks of 100, so that we do not exceed the maximum command line length if
4657+ there is a large number of packages installed. Closes: LP#64839
4658+ * gtk/apport-gtk: Use pgrep with -u instead of pidof for testing whether the
4659+ crashed process is already running again, so that we do not match
4660+ processes of other users. Add procps package dependency for this.
4661+ * gtk/apport-gtk: Only offer to restart programs that are in the $PATH. E.
4662+ g. /usr/lib/firefox/firefox-bin cannot be called directly.
4663+ Closes: LP#79623
4664+ * apport/report.py: Disassemble 16 instructions instead of 32 bytes to
4665+ become independent of the instruction size. Thanks to Kees Cook for the
4666+ patch!
4667+
4668+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 22 Jan 2007 10:47:33 +0100
4669+
4670+apport (0.40) feisty; urgency=low
4671+
4672+ * debian/control: Add missing python-dev build dependency, which is
4673+ apparently required for 2.5 now.
4674+
4675+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 15 Jan 2007 11:06:20 +0100
4676+
4677+apport (0.39) feisty; urgency=low
4678+
4679+ * Introduce abstract packaging interface and move all dpkg/apt specific bits
4680+ to a dpkg implementation of this packaging interface (merge
4681+ apport/abstract-pkg branch):
4682+ - Add apport/packaging.py: Abstract packaging system query interface.
4683+ - Add backends/packaging-dpkg.py: dpkg implementation of abstract
4684+ packaging interface.
4685+ - run-tests: Run tests of all backends.
4686+ - apport/fileutils.py, apport/report.py: Port to packaging.py interface.
4687+ - debian/control: Drop python-apport's 'python-apt' dependency since the
4688+ backend only uses dpkg now (without measurable performance penalty since
4689+ it uses internal caching).
4690+ - debian/rules: Install backends/packaging-dpkg.py as our packaging
4691+ backend to apport/packaging_impl.py and remove it again on clean.
4692+
4693+ -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 13 Jan 2007 15:53:08 +0100
4694+
4695+apport (0.38) feisty; urgency=low
4696+
4697+ * Add ./COPYING: GPL license.
4698+ * debian/rules: Build POT file again.
4699+ * apport/fileutils.py: Add get_all_system_reports() and
4700+ get_new_system_reports() and added test cases. Now the test suite can also
4701+ be run as root to be able to actually check their complete behaviour.
4702+ Adapt the other tests to get along with running the tests as root.
4703+ * bin/apport-checkreports: Add option --system to check for system crash
4704+ reports. Closes: LP#62316
4705+ * gtk/apport-gtk: If called through sudo to process system crashes, drop
4706+ privileges to the original user in open_url() so that we get the web
4707+ browser correctly. (LP#62316) Caveat: The user cannot actually attach the
4708+ crash report file directly since it is not accessible to the user; this
4709+ will get fixed once Malone is able to link a bug report with uploaded
4710+ blobs.
4711+
4712+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 12 Jan 2007 14:29:44 +0100
4713+
4714+apport (0.37) feisty; urgency=low
4715+
4716+ * problem_report.py: Remove the requirement that values must not contain
4717+ empty lines. Add test cases that reading and writing values with empty
4718+ lines works, and add a test case that load() properly complains about
4719+ empty lines in debcontrol encoding (empty lines in values are encoded with
4720+ a single space). Closes: LP#78094
4721+ * apport/report.py test suite: Do not rely on a particular structure of the
4722+ 'cat' stacktrace; apparently this is not consistent across architectures.
4723+ Instead, compile a segfaulting mini C program, let it dump core, and test
4724+ add_gdb_info() on it instead. This also allows us for a more rigid check
4725+ of StacktraceTop.
4726+
4727+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 8 Jan 2007 14:44:08 +0100
4728+
4729+apport (0.36) feisty; urgency=low
4730+
4731+ * gtk/apport-gtk.glade: Restore pulse step of progress bar (this apparently
4732+ got destroyed when saving with Glade 3).
4733+ * gtk/apport-gtk{,.glade}: Terminate the program properly when closing the
4734+ progress dialog instead of exiting with an exception.
4735+ * gtk/apport-gtk: Defer opening of the bug reporting window a bit so that
4736+ it appears on top of the browser window. Also enable the task bar blinking
4737+ for it when it is in the background.
4738+ * gtk/apport-gtk.glade: Restore vertical padding of bug report dialog labels
4739+ (another Glade 3 transition regression).
4740+ * bin/apport-retrace, apport/report.py: Call gdb on InterpreterPath if
4741+ present; calling it on a script does not yield anything useful. Add a test
4742+ case to report.py.
4743+ * debian/apport.init: Use mkdir -p instead of install -d, since install is
4744+ not in /bin. Thanks to Kees Cook for catching this.
4745+ * debian/control: Add missing python-apport dependency 'python-apt', which
4746+ is not caught by ${python:Depends}.
4747+ * gtk/apport-gtk: Catch MemoryError when loading a report and display an
4748+ error dialog instead of just crashing. Closes: LP#76235
4749+ * gtk/apport-gtk: Properly catch exceptions from the bug pattern check
4750+ thread to avoid useless backtraces like in bug #75160.
4751+ * gtk/apport-gtk: Catch exceptions from decoding of damaged reports and
4752+ display an error message instead of crashing. Closes: LP#77149
4753+ * apport/report.py: Add missing import of 'time' to test suite.
4754+
4755+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 5 Jan 2007 09:49:01 +0100
4756+
4757+apport (0.35) feisty; urgency=low
4758+
4759+ Optimizations:
4760+
4761+ * apport/fileutils.py: Split out heuristics for determining whether a file
4762+ belongs to a package to new function likely_packaged() and add test cases.
4763+ * bin/apport: Do not use the expensive find_file_package() any more, use
4764+ likely_packaged() instead. This will create initial reports in some
4765+ corner cases (like custom non-packaged executables in /usr/bin/), but
4766+ greatly reduces I/O impact at crash time. We rely on apport-gtk to deal
4767+ with reports that do not actually belong to a packaged executable.
4768+ * apport/report.py, add_gdb_info(): Call gdb just once and split the output
4769+ instead of calling it again for each command. This should significantly
4770+ speed up the gdb stage especially for large programs/core dumps.
4771+ * Use cStringIO instead of StringIO in modules.
4772+ * gtk/apport-gtk: Code cleanup and refactorization:
4773+ - Move iteration over crash reports into __main__ to simplify housekeeping
4774+ in the ApportGTK class and get rid of some functions.
4775+ - Refactor creation of temporary report file.
4776+ * gtk/apport-gtk.glade: Split the text in the progress bar dialog so that we
4777+ can use it for multiple steps (like uploading data to Malone) while not
4778+ breaking translations.
4779+
4780+ New feature: Bug reporting tool (https://wiki.ubuntu.com/BugReportingTool)
4781+
4782+ * gtk/apport-gtk: Split out crash report initialization to new function
4783+ show_crashes() so that we can use the frontend for other purposes like bug
4784+ reporting.
4785+ * gtk/apport-gtk: Add --file-bug, --package, and --pid options; if given,
4786+ create a bug report about the given package instead of viewing crash
4787+ reports.
4788+ * gtk/apport-gtk{,.glade}: Generalize some strings to not talk about 'crash'
4789+ any more, to make them suitable for bug reporting, too.
4790+ * gtk/apport-gtk: Support --file-bug without specifying a package or a PID
4791+ for filing generic distro bugs.
4792+ * problem_report.py: Add new method write_mime() to encode a problem report
4793+ in MIME/Multipart RFC 2822 format (i. e. an email with attachments). Short
4794+ values are aggregated into the first inline text/plain part, large values,
4795+ binary values, and file references get gzip compressed separate
4796+ attachments. Also add various test cases.
4797+
4798+ Bug/crash information:
4799+
4800+ * apport/report.py, add_user_info(): Add list of system groups that the user
4801+ belongs to.
4802+ * bin/apport: Call add_user_info(), check functionality in test-apport.
4803+ * apport/report.py, add_gdb_info(): Add field 'StacktraceTop' with the top
4804+ five functions on the stack and no local variables. This reduced 'glimpse'
4805+ is suitable for inline display in bug reports and automatic processing
4806+ (dup finders, etc).
4807+
4808+ Bug fixes:
4809+
4810+ * po/Makefile: Add top_srcdir to work with current intltool.
4811+ * po/de.po: Unfuzz some strings.
4812+ * apport/report.py, add_gdb_info(): Strip away the 'No symbol table info
4813+ available' messages from stack traces.
4814+ * apport/report.py, test_search_bug_patterns(): Use security.u.c. instead
4815+ of archive.u.c., since the latter times out too often.
4816+
4817+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 3 Jan 2007 16:45:20 +0100
4818+
4819+apport (0.34) feisty; urgency=low
4820+
4821+ * apport/fileutils.py, mark_report_seen(): Do not bail out if os.utime()
4822+ fails due to access permissions. This happens if the file does not belong
4823+ to the user calling apport-gtk, but is world-readable (such as ubiquity
4824+ crash reports). If utime() fails, repeatedly open()/close() the file for
4825+ reading until atime != ctime, or the 1.2s timeout is reached.
4826+ Closes: LP#72250
4827+ * apport/python_hook.py: Add unit test, call that in run-tests.
4828+ * apport/python_hook.py: Chmod the generated report to 0600 to not expose
4829+ potentially private data to the world, and to be consistent with other
4830+ crash reports.
4831+ * apport/fileutils.py: Add check_files_md5() and test cases.
4832+ * apport/report.py, add_package_info(): Append list of modified package
4833+ files to Package: and Dependencies: value. Closes: LP#70946
4834+ * bin/apport-retrace: Get along with Package:/Dependencies: fields with list
4835+ of modified files.
4836+
4837+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 22 Dec 2006 12:40:55 +0100
4838+
4839+apport (0.33) feisty; urgency=low
4840+
4841+ * debian/rules: Convert to cdbs. This fixes the dh_pysupport invocation
4842+ along the way, too.
4843+ * gtk/apport-gtk: Rework web browser invocation: Use kfmclient if available,
4844+ fall back to firefox-remote, then to webbrowser.open(). Do not call
4845+ x-www-browser any more since this would block if no running browser was
4846+ open before.
4847+ * Drop the apport_utils module (and with it the python-apport-utils
4848+ package), it became too much of a dumping ground. The report file handling
4849+ functions now live in apport.fileutils, and the debugging information
4850+ collectors are now methods of a new 'Report' class (subclass of
4851+ ProblemReport) in the new apport.report module. Adjust all programs
4852+ accordingly.
4853+ * Add debian/python-apport.postinst: Remove old .pyc and .pyo cruft on
4854+ upgrades to clean up after our broken dh_pysupport invocation in earlier
4855+ versions, so that the new modules are actually used.
4856+ * Remove debian/apport.postinst: Those cleanups were only necessary for
4857+ intra-edgy upgrades.
4858+
4859+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 19 Dec 2006 01:15:27 +0100
4860+
4861+apport (0.32) feisty; urgency=low
4862+
4863+ * apport_utils.py: Filter out "no debugging symbols found" warnings from gdb
4864+ outputs, and add some tests for this. Thanks to Kees Cook for the patch!
4865+ * test-apport: Fix AGENTPATH directory when building the preload library
4866+ (recently moved to bin/).
4867+ * use-local: Fix path to apport as well (recently moved to bin/).
4868+ * apport-retrace: Use ldd on InterpreterPath if present; ldd'ing scripts
4869+ will not get us very far. Closes: LP#72201
4870+
4871+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 14 Dec 2006 13:42:58 +0100
4872+
4873+apport (0.31) feisty; urgency=low
4874+
4875+ * Move scripts to bin/ in source package.
4876+ * Add apport/python_hook.py: Default exception handler for Python, to create
4877+ apport reports for unhandled exceptions. Thanks to Robert Collins
4878+ <robert@ubuntu.com> for this! Closes: LP#70957
4879+ * Add new package python-apport to ship the new Python package 'apport'.
4880+ This includes the python crash hook for now, but in the near future
4881+ apport-utils will get redesigned and put into this package, too.
4882+ * debian/control: apport now depends on python-apport instead of
4883+ python-apport-utils.
4884+ * apport_utils.py: Quiesce gdb error messages in test suite.
4885+
4886+ -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 25 Nov 2006 12:30:41 +0100
4887+
4888+apport (0.30) feisty; urgency=low
4889+
4890+ * test-apport, use-local: Support both kernel 2.6.17 and 2.6.19 sysctl names
4891+ (crashdump-helper vs. crashdump).
4892+ * gtk/apport-gtk.glade: Improve dialog title capitalization.
4893+ Closes: LP#70652.
4894+ * debian/apport.cron.daily: Immediately exit if /var/crash does not exist.
4895+ Create /var/crash in debian/apport.init if it does not exist.
4896+ Closes: LP#71599
4897+ * Convert all tabs in Python source code files to spaces to comply to PEP 8.
4898+ Thanks to Robert Collins for pointing this out.
4899+ * apport_utils.py, gtk/apport-gtk: Do not pass None to subprocess arguments
4900+ if report belongs to a non-packaged program. Thanks to Robert Collins for
4901+ discovering and fixing this! Closes: LP#70942
4902+ * debian/apport.init: Change /var/crash permissions to 1777, so that custom
4903+ crash handlers (in Python/Mono/etc.) can put reports there.
4904+
4905+ -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 25 Nov 2006 10:44:33 +0100
4906+
4907+apport (0.29) feisty; urgency=low
4908+
4909+ * apport-retrace: Do not crash if a linked library is not a dependency.
4910+ Closes: LP#65914
4911+ * apport_utils.py:
4912+ - Add test_find_file_package_diversion() selftest to check diversion
4913+ handling.
4914+ - find_file_package(): Check for and respect diversions.
4915+ - Closes: LP#65917
4916+ * debian/apport.init, test-apport, use-local: Adapt to 'crashdump-helper' ->
4917+ 'crashdump' sysctl renaming in 2.6.19.
4918+ * test-apport: Restore cwd even when failing a test.
4919+ * problem_report.py, ProblemReport.write(): Support file-like objects as
4920+ argument of file references to support direct reading from pipes. Add test
4921+ case test_write_fileobj().
4922+ * apport: Support '-' as core file argument, in which case the core will be
4923+ read from stdin. This paves the way for using Linux 2.6.19's 'pipe
4924+ core_pattern' feature. Bump python-problem-report dependency to >= 0.29
4925+ for this.
4926+ * apport: Confine permissions of log file to root:adm 0640, just in case.
4927+ * apport: Temporarily drop real u/gid to target user for the os.access()
4928+ tests, so that normal users cannot verify the existence of a given
4929+ inaccessible file. Add comprehensive tests to apport_utils' test suite and
4930+ test-apport. Thanks to Kees Cook for this patch!
4931+ * apport_utils.py, find_file_package(): Terminate fgrep options with '--' to
4932+ avoid problems with funny file names. Thanks to Kees Cook for spotting
4933+ this!
4934+ * test-apport: Automatically detect whether ULIMIT_CORE is nonzero, and
4935+ adapt tests accordingly: check that core still exists after invoking
4936+ apport, and clean it up.
4937+ * apport-retrace: Add new mode -g/--gdb which starts an interactive gdb
4938+ session with the report's core dump. Add this to man/apport-retrace.1, too.
4939+ * apport-retrace: If -c is given, completely remove the CoreDump field from
4940+ the report instead of setting it to 'removed'.
4941+ * test-apport: When using 'lib' mode, point APPORT_LOG_FILE to a temporary
4942+ file. Print it if the test suite fails.
4943+ * test-apport: Fix EXFAILure of the 'core dump works for non-writable cwds'
4944+ test case.
4945+ * preloadlib: Support -DPIPE_CORE mode which emulates the
4946+ pipe-in-core_pattern mode of kernel 2.6.19.
4947+ * test-apport: Build preload library with core piping. No more failed test
4948+ suite checks in 'lib' mode.
4949+
4950+ -- Martin Pitt <martin.pitt@ubuntu.com> Sun, 5 Nov 2006 07:10:30 -0800
4951+
4952+apport (0.28) edgy; urgency=low
4953+
4954+ "No core - ignore!"
4955+
4956+ * apport: Do not create a report for crashes which we do not get a core dump
4957+ for. The reports are useless and only clutter our bug tracker.
4958+
4959+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 9 Oct 2006 15:22:32 +0200
4960+
4961+apport (0.27) edgy; urgency=low
4962+
4963+ * apport: Ignore SIGABRT for now; it's usually signalled from abort() or
4964+ assertion failures and we only get reports with unusable stack traces for
4965+ it (see #61938).
4966+ * gtk/apport-gtk: If gnome-open is not available, fall back to x-www-browser
4967+ instead of using webbrowser.py, to respect default browser in XFCE.
4968+ Closes: LP#64209
4969+ * apport: use os.nice() instead of executing 'renice'. Thanks to Benoit
4970+ Boissinot for noticing.
4971+ * apport_utils.py, find_file_package(): Lower() both strings in the speedup
4972+ heuristics to match e. g. /usr/bin/Xorg -> xserver-xorg. Thanks to Kees
4973+ Cook!
4974+ * apport_utils.py, report_add_package_info(): Do not crash if we encounter a
4975+ 'None' current version, which can happen with uninstalled alternative
4976+ dependencies. Thanks to Kees Cook for tracking this down!
4977+
4978+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 6 Oct 2006 17:15:08 +0200
4979+
4980+apport (0.26) edgy; urgency=low
4981+
4982+ * apport-retrace: Clean up code a bit:
4983+ - Move option parsing to separate function.
4984+ - Use apport_utils' report_add_gdb_info() instead of duplicating the gdb
4985+ code.
4986+ * apport_utils.py, report_add_gdb_info(): Add optional parameter 'debugdir'
4987+ to specify an alternate debug file symbol root directory.
4988+ * apport-retrace: Add option -d/--download-debug to automatically download
4989+ available ddebs, create a temporary debug symbol directory from already
4990+ installed and downloaded ddebs, and point gdb to use that. Also add option
4991+ -C/--cache-dir to specify a permanent ddeb cache directory (by default, a
4992+ temporary one is used). Update the manpage accordingly.
4993+ * apport-retrace: Make the best out of a report without packaging
4994+ information (which can happen if the user does not click on 'report bug'
4995+ in apport-gtk).
4996+ * apport_utils, report_add_proc_info():
4997+ - Move heuristics for detecting interpreted scripts to a separate function
4998+ to be able to provide separate test cases for it. Check a few more
4999+ special cases for mono programs.
5000+ - Make interpreter heuristics even scarier to detect some more mono corner
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches