apport-hackers team mailing list archive
-
apport-hackers team
-
Mailing list archive
-
Message #00050
[Merge] lp:~brad-figg/apport/ubuntu-natty-questions-removed into lp:apport
Brad Figg has proposed merging lp:~brad-figg/apport/ubuntu-natty-questions-removed into lp:apport.
Requested reviews:
Apport upstream developers (apport-hackers)
For more details, see:
https://code.launchpad.net/~brad-figg/apport/ubuntu-natty-questions-removed/+merge/58195
See the last commit. This patch fixes LP#765178.
--
https://code.launchpad.net/~brad-figg/apport/ubuntu-natty-questions-removed/+merge/58195
Your team Apport upstream developers is requested to review the proposed merge of lp:~brad-figg/apport/ubuntu-natty-questions-removed into lp:apport.
=== added directory '.bzr-builddeb'
=== added file '.bzr-builddeb/default.conf'
--- .bzr-builddeb/default.conf 1970-01-01 00:00:00 +0000
+++ .bzr-builddeb/default.conf 2011-04-18 21:01:06 +0000
@@ -0,0 +1,2 @@
+[BUILDDEB]
+merge = True
=== modified file '.bzrignore'
--- .bzrignore 2009-06-27 18:48:16 +0000
+++ .bzrignore 2011-04-18 21:01:06 +0000
@@ -1,4 +1,5 @@
apport/packaging_impl.py
+debhelper/dh_apport.1
doc/*.aux
doc/*.log
doc/*.pdf
=== modified file 'TODO'
--- TODO 2010-01-29 18:13:31 +0000
+++ TODO 2011-04-18 21:01:06 +0000
@@ -10,3 +10,12 @@
hooks:
- add hooks which run during program crash, to collect more runtime data
+
+retracers:
+ - cache Contents.gz
+
+hookutils:
+- run hooks for related packages in attach_related_packages
+
+apt-dpkg backend:
+- use python-apt's Version.get_source() instead of apt-get source
=== modified file 'apport/hookutils.py'
--- apport/hookutils.py 2011-03-13 22:06:43 +0000
+++ apport/hookutils.py 2011-04-18 21:01:06 +0000
@@ -70,6 +70,45 @@
key += "_"
report[key] = read_file(path)
+def attach_conffiles(report, package, conffiles=None):
+ '''Attach information about any modified or deleted conffiles'''
+
+ try:
+ dpkg = subprocess.Popen(['dpkg-query','-W','--showformat=${Conffiles}',
+ package], stdout=subprocess.PIPE, close_fds=True)
+ except OSError, e:
+ return 'Error: ' + str(e)
+
+ out = dpkg.communicate()[0]
+ if dpkg.returncode != 0:
+ return
+
+ for line in out.splitlines():
+ if not line:
+ continue
+ # just take the first two fields, to not stumble over obsolete
+ # conffiles
+ path, default_md5sum = line.strip().split()[:2]
+
+ if conffiles and path not in conffiles: continue
+
+ key = 'modified.conffile.' + path_to_key(path)
+
+ if os.path.exists(path):
+ contents = open(path).read()
+ m = hashlib.md5()
+ m.update(contents)
+ calculated_md5sum = m.hexdigest()
+
+ if calculated_md5sum != default_md5sum:
+ report[key] = contents
+ statinfo = os.stat(path)
+ mtime = datetime.datetime.fromtimestamp(statinfo.st_mtime)
+ mtime_key = 'mtime.conffile.' + path_to_key(path)
+ report[mtime_key] = mtime.isoformat()
+ else:
+ report[key] = '[deleted]'
+
def attach_dmesg(report):
'''Attach information from the kernel ring buffer (dmesg).
=== removed file 'backends/packaging_rpm.py'
--- backends/packaging_rpm.py 2011-02-03 13:52:02 +0000
+++ backends/packaging_rpm.py 1970-01-01 00:00:00 +0000
@@ -1,311 +0,0 @@
-'''A partial apport.PackageInfo class implementation for RPM.
-
-Used as a base class for Fedora, RHEL, openSUSE, SUSE Linux, and many other
-distributions.
-'''
-
-# Copyright (C) 2007 Red Hat Inc.
-# Copyright (C) 2008 Nikolay Derkach
-# Author: Will Woods <wwoods@xxxxxxxxxx>, Nikolay Derkach <nderkach@xxxxxxxxx>
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2 of the License, or (at your
-# option) any later version. See http://www.gnu.org/copyleft/gpl.html for
-# the full text of the license.
-
-# N.B. There's some distro-specific bits in here (e.g. is_distro_package()).
-# So this is actually an abstract base class (or a template, if you like) for
-# RPM-based distributions.
-# A proper implementation needs to (at least) set official_keylist to a list
-# of GPG keyids used by official packages. You might have to extend
-# is_distro_package() as well, if you don't sign all your official packages
-# (cough cough Fedora rawhide cough)
-
-# It'd be convenient to use rpmUtils from yum, but I'm trying to keep this
-# class distro-agnostic.
-import rpm, hashlib, os, stat, subprocess
-
-class RPMPackageInfo:
- '''Partial apport.PackageInfo class implementation for RPM, as
- found in Fedora, RHEL, CentOS, etc.'''
-
- # Empty keylist. Should contain a list of key ids (8 lowercase hex digits).
- # e.g. official_keylist = ('30c9ecf8','4f2a6fd2','897da07a','1ac70ce6')
- official_keylist = ()
-
- def __init__(self):
- self.ts = rpm.TransactionSet() # connect to the rpmdb
- self._mirror = None
-
- def get_version(self, package):
- '''Return the installed version of a package.'''
- hdr = self._get_header(package)
- if hdr == None:
- raise ValueError
- # Note - "version" here seems to refer to the full EVR, so..
- if not hdr['e']:
- return hdr['v'] + '-' + hdr['r']
- if not hdr['v'] or not hdr['r']:
- return None
- else:
- return hdr['e'] + ':' + hdr['v'] + '-' + hdr['r']
-
- def get_available_version(self, package):
- '''Return the latest available version of a package.'''
- # used in report.py, which is used by the frontends
- raise NotImplementedError('method must be implemented by distro-specific RPMPackageInfo subclass')
-
- def get_dependencies(self, package):
- '''Return a list of packages a package depends on.'''
- hdr = self._get_header(package)
- # parse this package's Requires
- reqs=[]
- for r in hdr['requires']:
- if r.startswith('rpmlib') or r.startswith('uname('):
- continue # we've got rpmlib, thanks
- if r[0] == '/': # file requires
- req_heads = self._get_headers_by_tag('basenames',r)
- else: # other requires
- req_heads = self._get_headers_by_tag('provides',r)
- for rh in req_heads:
- rh_envra = self._make_envra_from_header(rh)
- if rh_envra not in reqs:
- reqs.append(rh_envra)
- return reqs
-
- def get_source(self, package):
- '''Return the source package name for a package.'''
- hdr = self._get_header(package)
- return hdr['sourcerpm']
-
- def get_architecture(self, package):
- '''Return the architecture of a package.
-
- This might differ on multiarch architectures (e. g. an i386 Firefox
- package on a x86_64 system)'''
- # Yeah, this is kind of redundant, as package is ENVRA, but I want
- # to do this the right way (in case we change what 'package' is)
- hdr = self._get_header(package)
- return hdr['arch']
-
- def get_files(self, package):
- '''Return list of files shipped by a package.'''
- hdr = self._get_header(package)
- files = []
- for (f, mode) in zip(hdr['filenames'],hdr['filemodes']):
- if not stat.S_ISDIR(mode):
- files.append(f)
- return files
-
- def get_modified_files(self, package):
- '''Return list of all modified files of a package.'''
- hdr = self._get_header(package)
-
- files = hdr['filenames']
- mtimes = hdr['filemtimes']
- md5s = hdr['filemd5s']
-
- modified = []
- for i in xrange(len(files)):
- # Skip files we're not tracking md5s for
- if not md5s[i]: continue
- # Skip files we can't read
- if not os.access(files[i],os.R_OK): continue
- # Skip things that aren't real files
- s = os.stat(files[i])
- if not stat.S_ISREG(s.st_mode): continue
- # Skip things that haven't been modified
- if mtimes[i] == s.st_mtime: continue
- # Oh boy, an actual possibly-modified file. Check the md5sum!
- if not self._checkmd5(files[i],md5s[i]):
- modified.append(files[i])
-
- return modified
-
- def get_file_package(self, file):
- '''Return the package a file belongs to, or None if the file is not
- shipped by any package.
-
- Under normal use, the 'file' argument will always be the executable
- that crashed.
- '''
- # The policy for handling files which belong to multiple packages depends on the distro
- raise NotImplementedError('method must be implemented by distro-specific RPMPackageInfo subclass')
-
- def get_system_architecture(self):
- '''Return the architecture of the system, in the notation used by the
- particular distribution.'''
- rpmarch = subprocess.Popen(['rpm', '--eval', '%_target_cpu'],
- stdout=subprocess.PIPE)
- arch = rpmarch.communicate()[0].strip()
- return arch
-
- def is_distro_package(self, package):
- '''Check if a package is a genuine distro package (True) or comes from
- a third-party source.'''
- # This is a list of official keys, set by the concrete subclass
- if not self.official_keylist:
- raise Exception('Subclass the RPM implementation for your distro!')
- hdr = self._get_header(package)
- if not hdr:
- return False
- # Check the GPG sig and key ID to see if this package was signed
- # with an official key.
- if hdr['siggpg']:
- # Package is signed
- keyid = hdr['siggpg'][13:17].encode('hex')
- if keyid in self.official_keylist:
- return True
- return False
-
- def set_mirror(self, url):
- '''Explicitly set a distribution mirror URL for operations that need to
- fetch distribution files/packages from the network.
-
- By default, the mirror will be read from the system configuration
- files.'''
- # FIXME C&P from apt-dpkg implementation, might move to subclass
- self._mirror = url
-
- def get_source_tree(self, srcpackage, dir, version=None):
- '''Download given source package and unpack it into dir (which should
- be empty).
-
- This also has to care about applying patches etc., so that dir will
- eventually contain the actually compiled source.
-
- If version is given, this particular version will be retrieved.
- Otherwise this will fetch the latest available version.
-
- Return the directory that contains the actual source root directory
- (which might be a subdirectory of dir). Return None if the source is
- not available.'''
- # Used only by apport-retrace.
- raise NotImplementedError('method must be implemented by distro-specific RPMPackageInfo subclass')
-
- def compare_versions(self, ver1, ver2):
- '''Compare two package versions.
-
- Return -1 for ver < ver2, 0 for ver1 == ver2, and 1 for ver1 > ver2.'''
- # Used by crashdb.py (i.e. the frontends)
- # I could duplicate stringToVersion/compareEVR from rpmUtils.misc,
- # but I hate duplicating code. So if you don't want to require rpmUtils
- # you can implement this function yourself. Probably you've got
- # equivalent code in whatever your distro uses instead of yum anyway.
- raise NotImplementedError('method must be implemented by distro-specific RPMPackageInfo subclass')
-
- def package_name_glob(self, glob):
- '''Return known package names which match given glob.'''
-
- raise NotImplementedError('TODO')
-
- #
- # Internal helper methods. These are only single-underscore, so you can use
- # use them in extending/overriding the methods above in your subclasses
- #
-
- def _get_headers_by_tag(self,tag,arg):
- '''Get a list of RPM headers by doing dbMatch on the given tag and
- argument.'''
- matches = self.ts.dbMatch(tag,arg)
- if matches.count() == 0:
- raise ValueError('Could not find package with %s: %s' % (tag,arg))
- return [m for m in matches]
-
- def _get_header(self,envra):
- '''Get the RPM header that matches the given ENVRA.'''
-
- querystr = envra
- qlen = len(envra)
- while qlen > 0:
- mi = impl.ts.dbMatch('name', querystr)
- hdrs = [m for m in mi]
- if len(hdrs) > 0:
- # yay! we found something
- # Unless there's some rpmdb breakage, you should have one header
- # here. If you do manage to have two rpms with the same ENVRA,
- # who cares which one you get?
- h = hdrs[0]
- break
-
- # remove the last char of querystr and retry the search
- querystr = querystr[0:len(querystr)-1]
- qlen = qlen - 1
-
- if qlen == 0:
- raise ValueError('No headers found for this envra: %s' % envra)
- return h
-
- def _make_envra_from_header(self,h):
- '''Generate an ENVRA string from an rpm header'''
- nvra="%s-%s-%s.%s" % (h['n'],h['v'],h['r'],h['arch'])
- if h['e']:
- envra = "%s:%s" % (h['e'],nvra)
- else:
- envra = nvra
- return envra
-
- def _checkmd5(self,filename,filemd5):
- '''Internal function to check a file's md5sum'''
- m = hashlib.md5()
- f = open(filename)
- data = f.read()
- f.close()
- m.update(data)
- return (filemd5 == m.hexdigest())
-
-impl = RPMPackageInfo()
-
-#
-# Unit test
-#
-
-if __name__ == '__main__':
- import unittest
-
- class _T(unittest.TestCase):
-
- def test_get_dependencies(self):
- '''get_dependencies().'''
-
- deps = impl.get_dependencies('bash')
- self.assertNotEqual(deps, [])
-
- def test_get_header(self):
- '''_get_header().'''
-
- hdr = impl._get_header('alsa-utils')
- self.assertEqual(hdr['n'], 'alsa-utils')
-
- def test_get_headers_by_tag(self):
- '''_get_headers_by_tag().'''
-
- headersByTag = impl._get_headers_by_tag('basenames','/bin/bash')
- self.assertEqual(len(headersByTag), 1)
- self.assertTrue(headersByTag[0]['n'].startswith('bash'))
-
- def test_get_system_architecture(self):
- '''get_system_architecture().'''
-
- arch = impl.get_system_architecture()
- # must be nonempty without line breaks
- self.assertNotEqual(arch, '')
- self.assertTrue('\n' not in arch)
-
- def test_get_version(self):
- '''get_version().'''
-
- ver = impl.get_version('bash')
- self.assertNotEqual(ver, None)
- ver = impl.get_version('alsa-utils')
- self.assertNotEqual(ver, None)
-
-
- # only execute if rpm is available
- try:
- if subprocess.call(['rpm', '--help'], stdout=subprocess.PIPE,
- stderr=subprocess.PIPE) == 0:
- unittest.main()
- except OSError:
- pass
=== modified file 'bin/apport-bug'
--- bin/apport-bug 2009-12-23 10:55:52 +0000
+++ bin/apport-bug 2011-04-18 21:01:06 +0000
@@ -38,6 +38,14 @@
# main
#
+# keep backwards compatibility with old documentation which says to use
+# ubuntu-bug -p packagename
+if [ $# = 2 ] && [ "$1" = '-p' -o "$1" = '-P' ]; then
+ shift
+ # Show warning about deprecated options.
+ echo "Warning: The options -p/-P are deprecated, please do not use them. See $0 --help"
+fi
+
find_programs
export APPORT_INVOKED_AS="$0"
=== modified file 'data/dump_acpi_tables.py' (properties changed: +x to -x)
=== added file 'data/general-hooks/automatix.py'
--- data/general-hooks/automatix.py 1970-01-01 00:00:00 +0000
+++ data/general-hooks/automatix.py 2011-04-18 21:01:06 +0000
@@ -0,0 +1,26 @@
+'''Do not send any crashes when automatix is or was installed, since it usually
+causes a mess in the system and causes a lot of package installation failures.
+
+Copyright (C) 2007 Canonical Ltd.
+Author: Martin Pitt <martin.pitt@xxxxxxxxxx>
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version. See http://www.gnu.org/copyleft/gpl.html for
+the full text of the license.
+'''
+
+import apport.packaging
+
+def add_info(report):
+ try:
+ if apport.packaging.get_version('automatix') or \
+ apport.packaging.get_version('automatix2') or \
+ apport.packaging.get_version('ultamatix'):
+ report['UnreportableReason'] = 'You have installed automatix or ultamatix on your \
+system. This is known to cause a lot of instability, thus problem reports \
+will not be sent to the %s developers.' % report.get('DistroRelease',
+ 'distribution').split()[0]
+ except ValueError, e:
+ return
=== added file 'data/general-hooks/ubuntu.py'
--- data/general-hooks/ubuntu.py 1970-01-01 00:00:00 +0000
+++ data/general-hooks/ubuntu.py 2011-04-18 21:01:06 +0000
@@ -0,0 +1,263 @@
+'''Attach generally useful information, not specific to any package.
+
+Copyright (C) 2009 Canonical Ltd.
+Author: Matt Zimmerman <mdz@xxxxxxxxxxxxx>
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version. See http://www.gnu.org/copyleft/gpl.html for
+the full text of the license.
+'''
+
+import apport.packaging
+import re, os, os.path, pwd, time
+from urlparse import urljoin
+from urllib2 import urlopen
+from apport.hookutils import *
+from apport import unicode_gettext as _
+
+def add_info(report):
+ add_release_info(report)
+
+ add_kernel_info(report)
+
+ add_cloud_info(report)
+
+ match_error_messages(report)
+
+ wrong_grub_msg = _('''Your system was initially configured with grub version 2, but you have removed it from your system in favor of grub 1 without configuring it. To ensure your bootloader configuration is updated whenever a new kernel is available, open a terminal and run:
+
+ sudo apt-get install grub-pc
+''')
+
+ if 'DpkgTerminalLog' in report \
+ and re.search(r'^Not creating /boot/grub/menu.lst as you wish', report['DpkgTerminalLog'], re.MULTILINE):
+ grub_hook_failure = True
+ else:
+ grub_hook_failure = False
+
+ # crash reports from live system installer often expose target mount
+ for f in ('ExecutablePath', 'InterpreterPath'):
+ if f in report and report[f].startswith('/target/'):
+ report[f] = report[f][7:]
+
+ # Allow filing update-manager bugs with obsolete packages
+ if report.get('Package', '').startswith('update-manager'):
+ os.environ['APPORT_IGNORE_OBSOLETE_PACKAGES'] = '1'
+
+ # file bugs against OEM project for modified packages
+ if 'Package' in report:
+ v = report['Package'].split()[1]
+ oem_project = get_oem_project(report)
+ if oem_project and ('common' in v or oem_project in v):
+ report['CrashDB'] = 'canonical-oem'
+
+ if 'Package' in report:
+ package = report['Package'].split()[0]
+ if package and 'attach_conffiles' in dir():
+ attach_conffiles(report, package)
+
+ # do not file bugs against "upgrade-system" if it is not installed (LP#404727)
+ if package == 'upgrade-system' and 'not installed' in report['Package']:
+ 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.'
+
+ # running Unity?
+ username = pwd.getpwuid(os.geteuid()).pw_name
+ if subprocess.call(['killall', '-s0', '-u', username,
+ 'unity-panel-service'], stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT) == 0:
+ add_tag(report, 'running-unity')
+
+def match_error_messages(report):
+ # There are enough of these now that it is probably worth refactoring...
+ # -mdz
+ if report['ProblemType'] == 'Package':
+ trim_dpkg_log(report)
+
+ if report['Package'] not in ['grub', 'grub2']:
+ # linux-image postinst emits this when update-grub fails
+ # https://wiki.ubuntu.com/KernelTeam/DebuggingUpdateErrors
+ if 'DpkgTerminalLog' in report and re.search(r'^User postinst hook script \[.*update-grub\] exited with value', report['DpkgTerminalLog'], re.MULTILINE):
+ # File these reports on the grub package instead
+ grub_package = apport.packaging.get_file_package('/usr/sbin/update-grub')
+ if grub_package is None or grub_package == 'grub':
+ report['SourcePackage'] = 'grub'
+ if os.path.exists('/boot/grub/grub.cfg') \
+ and grub_hook_failure:
+ report['UnreportableReason'] = wrong_grub_msg
+ else:
+ report['SourcePackage'] = 'grub2'
+
+ if report['Package'] != 'initramfs-tools':
+ # update-initramfs emits this when it fails, usually invoked from the linux-image postinst
+ # https://wiki.ubuntu.com/KernelTeam/DebuggingUpdateErrors
+ if 'DpkgTerminalLog' in report and re.search(r'^update-initramfs: failed for ', report['DpkgTerminalLog'], re.MULTILINE):
+ # File these reports on the initramfs-tools package instead
+ report['SourcePackage'] = 'initramfs-tools'
+
+ if report['Package'] in ['emacs22', 'emacs23', 'emacs-snapshot', 'xemacs21']:
+ # emacs add-on packages trigger byte compilation, which might fail
+ # we are very interested in reading the compilation log to determine
+ # where to reassign this report to
+ regex = r'^!! Byte-compilation for x?emacs\S+ failed!'
+ if 'DpkgTerminalLog' in report and re.search(regex, report['DpkgTerminalLog'], re.MULTILINE):
+ for line in report['DpkgTerminalLog'].split('\n'):
+ m = re.search(r'^!! and attach the file (\S+)', line)
+ if m:
+ path = m.group(1)
+ attach_file_if_exists(report, path)
+
+ if report['Package'].startswith('linux-image-') and 'DpkgTerminalLog' in report:
+ # /etc/kernel/*.d failures from kernel package postinst
+ m = re.search(r'^run-parts: (/etc/kernel/\S+\.d/\S+) exited with return code \d+', report['DpkgTerminalLog'], re.MULTILINE)
+ if m:
+ path = m.group(1)
+ package = apport.packaging.get_file_package(path)
+ if package:
+ report['SourcePackage'] = package
+ report['ErrorMessage'] = m.group(0)
+ if package == 'grub-pc' and grub_hook_failure:
+ report['UnreportableReason'] = wrong_grub_msg
+ else:
+ report['UnreportableReason'] = 'This failure was caused by a program which did not originate from Ubuntu'
+
+ if 'failed to install/upgrade: corrupted filesystem tarfile' in report.get('Title', ''):
+ report['UnreportableReason'] = 'This failure was caused by a corrupted package download or file system corruption.'
+
+ if 'is already installed and configured' in report.get('ErrorMessage', ''):
+ report['SourcePackage'] = 'dpkg'
+
+def add_kernel_info(report):
+ # This includes the Ubuntu packaged kernel version
+ attach_file_if_exists(report, '/proc/version_signature', 'ProcVersionSignature')
+
+def add_release_info(report):
+ # https://bugs.launchpad.net/bugs/364649
+ attach_file_if_exists(report, '/var/log/installer/media-info',
+ 'InstallationMedia')
+
+ # if we are running from a live system, add the build timestamp
+ attach_file_if_exists(report, '/cdrom/.disk/info', 'LiveMediaBuild')
+
+ # https://wiki.ubuntu.com/FoundationsTeam/Specs/OemTrackingId
+ attach_file_if_exists(report, '/var/lib/ubuntu_dist_channel',
+ 'DistributionChannelDescriptor')
+
+ release_codename = command_output(['lsb_release', '-sc'])
+ if release_codename.startswith('Error'):
+ release_codename = None
+ else:
+ add_tag(report, release_codename)
+
+ log ='/var/log/dist-upgrade/apt.log'
+ if os.path.exists(log):
+ mtime = os.stat(log).st_mtime
+ human_mtime = time.strftime('%Y-%m-%d', time.gmtime(mtime))
+ delta = time.time() - mtime
+
+ # Would be nice if this also showed which release was originally installed
+ report['UpgradeStatus'] = 'Upgraded to %s on %s (%d days ago)' % (release_codename, human_mtime, delta / 86400)
+ else:
+ report['UpgradeStatus'] = 'No upgrade log present (probably fresh install)'
+
+def add_cloud_info(report):
+ # EC2 and Ubuntu Enterprise Cloud instances
+ ec2_instance = False
+ for pkg in ('ec2-init', 'cloud-init'):
+ try:
+ if apport.packaging.get_version(pkg):
+ ec2_instance = True
+ break
+ except ValueError:
+ pass
+ if ec2_instance:
+ metadata_url = 'http://169.254.169.254/latest/meta-data/'
+ ami_id_url = urljoin(metadata_url, 'ami-id')
+
+ try:
+ ami = urlopen(ami_id_url).read()
+ except:
+ ami = None
+
+ if ami is None:
+ cloud = None
+ elif ami.startswith('ami'):
+ cloud = 'ec2'
+ add_tag(report, 'ec2-images')
+ fields = { 'Ec2AMIManifest':'ami-manifest-path',
+ 'Ec2Kernel':'kernel-id',
+ 'Ec2Ramdisk':'ramdisk-id',
+ 'Ec2InstanceType':'instance-type',
+ 'Ec2AvailabilityZone':'placement/availability-zone' }
+
+ report['Ec2AMI'] = ami
+ for key,value in fields.items():
+ try:
+ report[key]=urlopen(urljoin(metadata_url, value)).read()
+ except:
+ report[key]='unavailable'
+ else:
+ cloud = 'uec'
+ add_tag(report, 'uec-images')
+
+def add_tag(report, tag):
+ report.setdefault('Tags', '')
+ report['Tags'] += ' ' + tag
+
+def get_oem_project(report):
+ '''Determine OEM project name from Distribution Channel Descriptor
+
+ Return None if it cannot be determined or does not exist.
+ '''
+ dcd = report.get('DistributionChannelDescriptor', None)
+ if dcd and dcd.startswith('canonical-oem-'):
+ return dcd.split('-')[2]
+ return None
+
+def trim_dpkg_log(report):
+ '''Trim DpkgTerminalLog to the most recent installation session.'''
+
+ if 'DpkgTerminalLog' not in report:
+ return
+ lines = []
+ trim_re = re.compile('^\(.* ... \d+ .*\)$')
+ for line in report['DpkgTerminalLog'].splitlines():
+ if line.startswith('Log started: ') or trim_re.match(line):
+ lines = []
+ continue
+ lines.append(line)
+ report['DpkgTerminalLog'] = '\n'.join(lines)
+
+ if not report['DpkgTerminalLog'].strip():
+ report['UnreportableReason'] = '/var/log/apt/term.log does not contain any data'
+
+if __name__ == '__main__':
+ import sys
+
+ # for testing: update report file given on command line
+ if len(sys.argv) != 2:
+ print >> sys.stderr, 'Usage for testing this hook: %s <report file>' % sys.argv[0]
+ sys.exit(1)
+
+ report_file = sys.argv[1]
+
+ report = apport.Report()
+ report.load(open(report_file))
+ report_keys = set(report.keys())
+
+ new_report = report.copy()
+ add_info(new_report)
+
+ new_report_keys = set(new_report.keys())
+
+ # Show differences
+ changed = 0
+ for key in sorted(report_keys | new_report_keys):
+ if key in new_report_keys and key not in report_keys:
+ print "+%s: %s" % (key, new_report[key])
+ changed += 1
+ elif key in report_keys and key not in new_report_keys:
+ print "-%s: (deleted)" % key
+ changed += 1
+ print "%d items changed" % changed
=== added file 'data/package-hooks/source_debian-installer.py'
--- data/package-hooks/source_debian-installer.py 1970-01-01 00:00:00 +0000
+++ data/package-hooks/source_debian-installer.py 2011-04-18 21:01:06 +0000
@@ -0,0 +1,35 @@
+'''Apport package hook for the Debian installer.
+
+Copyright (C) 2009 Canonical Ltd.
+Author: Colin Watson <cjwatson@xxxxxxxxxx>'''
+
+from apport.hookutils import attach_hardware, command_available, command_output
+
+def add_info(report):
+ attach_hardware(report)
+
+ report['DiskUsage'] = command_output(['df'])
+ report['MemoryUsage'] = command_output(['free'])
+
+ if command_available('dmraid'):
+ report['DmraidSets'] = command_output(['dmraid', '-s'])
+ report['DmraidDevices'] = command_output(['dmraid', '-r'])
+ if command_available('dmsetup'):
+ report['DeviceMapperTables'] = command_output(['dmsetup', 'table'])
+
+ try:
+ installer_version = open('/var/log/installer/version')
+ for line in installer_version:
+ if line.startswith('ubiquity '):
+ # File these reports on the ubiquity package instead
+ report['SourcePackage'] = 'ubiquity'
+ break
+ installer_version.close()
+ except IOError:
+ pass
+
+if __name__ == '__main__':
+ report = {}
+ add_info(report)
+ for key in report:
+ print '%s: %s' % (key, report[key].split('\n', 1)[0])
=== added file 'data/package-hooks/source_linux.py'
--- data/package-hooks/source_linux.py 1970-01-01 00:00:00 +0000
+++ data/package-hooks/source_linux.py 2011-04-18 21:01:06 +0000
@@ -0,0 +1,89 @@
+'''Apport package hook for the Linux kernel.
+
+(c) 2008 Canonical Ltd.
+Contributors:
+Matt Zimmerman <mdz@xxxxxxxxxxxxx>
+Martin Pitt <martin.pitt@xxxxxxxxxxxxx>
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version. See http://www.gnu.org/copyleft/gpl.html for
+the full text of the license.
+'''
+
+import os.path
+import subprocess
+from apport.hookutils import *
+
+SUBMIT_SCRIPT = "/usr/bin/kerneloops-submit"
+
+def add_info(report, ui):
+
+ # If running an upstream kernel, instruct reporter to file bug upstream
+ abi = re.search("-(.*?)-", report['Uname'])
+ if abi and (abi.group(1) == '999' or re.search("^0", abi.group(1))):
+ ui.information("It appears you are currently running a mainline kernel. It would be better to report this bug upstream at http://bugzilla.kernel.org/ so that the upstream kernel developers are aware of the issue. If you'd still like to file a bug against the Ubuntu kernel, please boot with an official Ubuntu kernel and re-file.")
+ report['UnreportableReason'] = 'The running kernel is not an Ubuntu kernel'
+ return
+
+ version_signature = report.get('ProcVersionSignature', '')
+ if not version_signature.startswith('Ubuntu '):
+ report['UnreportableReason'] = 'The running kernel is not an Ubuntu kernel'
+ return
+
+ # Prevent reports against linux-meta
+ if report['SourcePackage'] == 'linux-meta':
+ report['SourcePackage'] = 'linux'
+
+ report.setdefault('Tags', '')
+
+ attach_hardware(report)
+ attach_alsa(report)
+ attach_wifi(report)
+ report['AcpiTables'] = root_command_output(['/usr/share/apport/dump_acpi_tables.py'])
+
+ staging_drivers = re.findall("(\w+): module is from the staging directory", report['BootDmesg'])
+ staging_drivers.extend(re.findall("(\w+): module is from the staging directory", report['CurrentDmesg']))
+ if staging_drivers:
+ staging_drivers = list(set(staging_drivers))
+ report['StagingDrivers'] = ' '.join(staging_drivers)
+ report['Tags'] += ' staging'
+ report['Title'] = '[STAGING] ' + report.get('Title', '')
+
+ attach_file_if_exists(report, "/etc/initramfs-tools/conf.d/resume", key="HibernationDevice")
+
+ uname_release = os.uname()[2]
+ lrm_package_name = 'linux-restricted-modules-%s' % uname_release
+ lbm_package_name = 'linux-backports-modules-%s' % uname_release
+
+ attach_related_packages(report, [lrm_package_name, lbm_package_name, 'linux-firmware'])
+
+ if ('Failure' in report and report['Failure'] == 'oops'
+ and 'OopsText' in report and os.path.exists(SUBMIT_SCRIPT)):
+ #it's from kerneloops, ask the user whether to submit there as well
+ if ui is not None:
+ summary = report['OopsText']
+ # Some OopsText begin with "--- [ cut here ] ---", so remove it
+ summary = re.sub("---.*\n","",summary)
+ first_line = re.match(".*\n", summary)
+ ip = re.search("IP\:.*\n", summary)
+ call_trace = re.search("Call Trace(.*\n){,10}",summary)
+ oops = ''
+ if first_line:
+ oops += first_line.group(0)
+ if ip:
+ oops += ip.group(0)
+ if call_trace:
+ oops += call_trace.group(0)
+ if ui.yesno("This report may also be submitted to "
+ "http://kerneloops.org/ in order to help collect aggregate "
+ "information about kernel problems. This aids in identifying "
+ "widespread issues and problematic areas. A condensed "
+ "summary of the Oops is shown below. Would you like to submit "
+ "information about this crash to kerneloops.org ?"
+ "\n\n%s" % oops):
+ text = report['OopsText']
+ proc = subprocess.Popen(SUBMIT_SCRIPT, stdin=subprocess.PIPE)
+ proc.communicate(text)
+
=== added file 'data/package-hooks/source_ubiquity.py'
--- data/package-hooks/source_ubiquity.py 1970-01-01 00:00:00 +0000
+++ data/package-hooks/source_ubiquity.py 2011-04-18 21:01:06 +0000
@@ -0,0 +1,32 @@
+'''Apport package hook for the ubiquity live CD installer.
+
+Copyright (C) 2009 Canonical Ltd.
+Author: Colin Watson <cjwatson@xxxxxxxxxx>'''
+
+import os.path
+import apport.hookutils
+
+def add_installation_log(report, ident, name):
+ if os.path.exists('/var/log/installer/%s' % name):
+ f = '/var/log/installer/%s' % name
+ elif os.path.exists('/var/log/%s' % name):
+ f = '/var/log/%s' % name
+ else:
+ return
+
+ if os.access(f, os.R_OK):
+ report[ident] = (f,)
+ else:
+ apport.hookutils.attach_root_command_outputs(report,
+ {ident: "cat '%s'" % f})
+
+def add_info(report):
+ add_installation_log(report, 'UbiquitySyslog', 'syslog')
+ add_installation_log(report, 'UbiquityPartman', 'partman')
+ if os.path.exists('/var/log/installer/debug'):
+ report['UbiquityDebug'] = ('/var/log/installer/debug',)
+ if os.path.exists('/var/log/installer/dm'):
+ report['UbiquityDm'] = ('/var/log/installer/dm',)
+ add_installation_log(report, 'Casper', 'casper.log')
+ if os.path.exists('/var/log/oem-config.log'):
+ report['OemConfigLog'] = ('/var/log/oem-config.log',)
=== added directory 'debhelper'
=== added file 'debhelper/apport.pm'
--- debhelper/apport.pm 1970-01-01 00:00:00 +0000
+++ debhelper/apport.pm 2011-04-18 21:01:06 +0000
@@ -0,0 +1,10 @@
+#!/usr/bin/perl
+# debhelper sequence file for apport
+
+use warnings;
+use strict;
+use Debian::Debhelper::Dh_Lib;
+
+insert_after("dh_bugfiles", "dh_apport");
+
+1;
=== added file 'debhelper/dh_apport'
--- debhelper/dh_apport 1970-01-01 00:00:00 +0000
+++ debhelper/dh_apport 2011-04-18 21:01:06 +0000
@@ -0,0 +1,83 @@
+#!/usr/bin/perl -w
+
+=head1 NAME
+
+dh_installapport - install apport package hooks
+
+=cut
+
+use strict;
+
+use Debian::Debhelper::Dh_Lib;
+
+=head1 SYNOPSIS
+
+B<dh_apport> [S<B<debhelper options>>]
+
+=head1 DESCRIPTION
+
+dh_apport is a debhelper program that installs apport package hooks into
+package build directories.
+
+=head1 FILES
+
+=over 4
+
+=item debian/I<package>.apport
+
+Installed into /usr/share/apport/package-hooks/I<package>.py in the package
+build directory. This file is used to control apport's bug filing for this
+package.
+
+=item debian/source.apport
+
+Installed into /usr/share/apport/package-hooks/source_I<src>.py (where
+I<src> is the current source package name) in the package build directory of
+the first package dh_apport is told to act on. By default, this is the first
+binary package in debian/control, but if you use -p, -i, or -a flags, it
+will be the first package specified by those flags. This file is used to
+control apport's bug filing for all binary packages built by this source
+package.
+
+=back
+
+=cut
+
+init();
+
+foreach my $package (@{$dh{DOPACKAGES}}) {
+ next if is_udeb($package);
+
+ my $tmp=tmpdir($package);
+ my $hooksdir="$tmp/usr/share/apport/package-hooks";
+ my $file=pkgfile($package,"apport");
+
+ if ($file ne '') {
+ if (! -d $hooksdir) {
+ doit("install","-d",$hooksdir);
+ }
+ doit("install","-p","-m644",$file,"$hooksdir/$package.py");
+ }
+
+ if (-e "debian/source.apport") {
+ if (! -d $hooksdir) {
+ doit("install","-d",$hooksdir);
+ }
+ my $src=sourcepackage();
+ doit("install","-p","-m644","debian/source.apport","$hooksdir/source_$src.py");
+ }
+}
+
+=head1 SEE ALSO
+
+L<debhelper(1)>
+
+This program is a part of apport.
+
+=head1 AUTHOR
+
+Colin Watson <cjwatson@xxxxxxxxxx>
+
+Copyright (C) 2009 Canonical Ltd., licensed under the GNU GPL v2 or later.
+
+=cut
=== added directory 'debian'
=== added file 'debian/apport-gtk.install'
--- debian/apport-gtk.install 1970-01-01 00:00:00 +0000
+++ debian/apport-gtk.install 2011-04-18 21:01:06 +0000
@@ -0,0 +1,2 @@
+usr/share/apport/*gtk*
+usr/share/applications/*gtk-mime*
=== added file 'debian/apport-kde.install'
--- debian/apport-kde.install 1970-01-01 00:00:00 +0000
+++ debian/apport-kde.install 2011-04-18 21:01:06 +0000
@@ -0,0 +1,7 @@
+usr/share/apport/*kde*
+usr/share/apport/progress.ui
+usr/share/apport/error.ui
+usr/share/apport/bugreport.ui
+usr/share/apport/choices.ui
+usr/share/applications/apport-kde-mime.desktop
+usr/share/applications/apport-kde-mimelnk.desktop usr/share/mimelnk/text
=== added file 'debian/apport-retrace.install'
--- debian/apport-retrace.install 1970-01-01 00:00:00 +0000
+++ debian/apport-retrace.install 2011-04-18 21:01:06 +0000
@@ -0,0 +1,3 @@
+usr/bin/apport-retrace
+usr/bin/dupdb-admin
+../local/apport-chroot usr/bin
=== added file 'debian/apport-retrace.manpages'
--- debian/apport-retrace.manpages 1970-01-01 00:00:00 +0000
+++ debian/apport-retrace.manpages 2011-04-18 21:01:06 +0000
@@ -0,0 +1,3 @@
+man/apport-retrace.1
+man/dupdb-admin.1
+debian/local/apport-chroot.1
=== added file 'debian/apport.install'
--- debian/apport.install 1970-01-01 00:00:00 +0000
+++ debian/apport.install 2011-04-18 21:01:06 +0000
@@ -0,0 +1,26 @@
+etc/apport/blacklist.d
+etc/default
+etc/cron.daily
+etc/bash_completion.d
+usr/share/apport/apport
+usr/share/apport/apport-checkreports
+usr/share/apport/package_hook
+usr/share/apport/kernel_crashdump
+usr/share/apport/kernel_oops
+usr/share/apport/gcc_ice_hook
+usr/share/apport/apportcheckresume
+usr/share/apport/unkillable_shutdown
+usr/share/apport/dump_acpi_tables.py
+usr/share/apport/java_uncaught_exception
+usr/share/apport/testsuite/
+usr/share/doc/apport
+usr/share/locale
+usr/share/icons
+usr/share/mime
+usr/share/apport/package-hooks
+usr/share/apport/general-hooks
+usr/bin/apport-cli
+usr/bin/apport-unpack
+usr/bin/apport-bug
+usr/bin/apport-collect
+../../java/apport.jar usr/share/apport/
=== added file 'debian/apport.links'
--- debian/apport.links 1970-01-01 00:00:00 +0000
+++ debian/apport.links 2011-04-18 21:01:06 +0000
@@ -0,0 +1,4 @@
+/usr/share/apport/package-hooks/source_linux.py /usr/share/apport/package-hooks/source_linux-meta.py
+/usr/bin/apport-bug /usr/bin/ubuntu-bug
+/usr/share/man/man1/apport-bug.1.gz /usr/share/man/man1/ubuntu-bug.1.gz
+/usr/share/man/man1/apport-bug.1.gz /usr/share/man/man1/apport-collect.1.gz
=== added file 'debian/apport.logrotate'
--- debian/apport.logrotate 1970-01-01 00:00:00 +0000
+++ debian/apport.logrotate 2011-04-18 21:01:06 +0000
@@ -0,0 +1,9 @@
+/var/log/apport.log {
+ daily
+ rotate 7
+ delaycompress
+ compress
+ notifempty
+ missingok
+}
+
=== added file 'debian/apport.manpages'
--- debian/apport.manpages 1970-01-01 00:00:00 +0000
+++ debian/apport.manpages 2011-04-18 21:01:06 +0000
@@ -0,0 +1,3 @@
+man/apport-unpack.1
+man/apport-cli.1
+man/apport-bug.1
=== added file 'debian/apport.postinst'
--- debian/apport.postinst 1970-01-01 00:00:00 +0000
+++ debian/apport.postinst 2011-04-18 21:01:06 +0000
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+
+if [ "$1" = configure ]; then
+ # directory is required for package failures even if apport is disabled and
+ # thus the upstart job does not run
+ mkdir -p -m 1777 /var/crash
+fi
+
+#DEBHELPER#
=== added file 'debian/apport.upstart'
--- debian/apport.upstart 1970-01-01 00:00:00 +0000
+++ debian/apport.upstart 2011-04-18 21:01:06 +0000
@@ -0,0 +1,50 @@
+# apport - automatic crash report generation
+#
+# While this job is active, core dumps will captured by apport and
+# used to generate automatic crash reports.
+
+description "automatic crash report generation"
+
+start on runlevel [2345]
+stop on runlevel [!2345]
+
+env enabled=1
+
+pre-start script
+ . /etc/default/apport
+ [ "$enabled" = "1" ] || [ "$force_start" = "1" ]
+
+ mkdir -p -m 1777 /var/crash
+
+ # check for kernel crash dump, convert it to apport report
+ if [ -e /var/crash/vmcore ]
+ then
+ /usr/share/apport/kernel_crashdump || true
+ fi
+
+ # check for incomplete suspend/resume or hibernate
+ if [ -e /var/lib/pm-utils/status ]
+ then
+ /usr/share/apport/apportcheckresume || true
+ rm -f /var/lib/pm-utils/status
+ rm -f /var/lib/pm-utils/resume-hang.log
+ fi
+
+ echo "|/usr/share/apport/apport %p %s %c" > /proc/sys/kernel/core_pattern
+end script
+
+post-stop script
+ # Check for a hung resume. If we find one try and grab everything
+ # we can to aid in its discovery
+ if [ -e /var/lib/pm-utils/status ]
+ then
+ ps -wwef > /var/lib/pm-utils/resume-hang.log
+ fi
+
+ if [ "`dd if=/proc/sys/kernel/core_pattern count=1 bs=1 2>/dev/null`" != "|" ]
+ then
+ exit 1
+ else
+ echo "core" > /proc/sys/kernel/core_pattern
+ fi
+end script
=== added file 'debian/changelog'
--- debian/changelog 1970-01-01 00:00:00 +0000
+++ debian/changelog 2011-04-18 21:01:06 +0000
@@ -0,0 +1,5263 @@
+apport (1.21-0ubuntu1) UNRELEASED; urgency=low
+
+ * New upstream bug fix release:
+ - Add bash completion support for new -w/--window option that was
+ introduced in 1.20. Thanks Philip Muškovac.
+ - apport-unpack: Fix crash if target directory already exists.
+ - Fix crash if UnreportableReason is a non-ASCII string. (LP: #738632)
+ - Fix crash if application from desktop name is a non-ASCII string.
+ (LP: #737799)
+ - unkillable_shutdown: Fix rare crash if ExecutablePath does not exist
+ (any more). (LP: #537904)
+ - kernel_crashdump: Fix crash if the vmcore file disappeared underneath
+ us. (LP: #450295)
+ - unkillable_shutdown: Fix crash if the checked process terminated
+ underneath us. (LP: #540436)
+ - ui.py: Properly raise exceptions from the upload thread that happen at
+ its very end. (LP: #469943)
+ * data/package-hooks/source_ubiquity.py: Read root-only accessible log files
+ as root. (LP: #745455)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 31 Mar 2011 16:00:08 +0200
+
+apport (1.20-0ubuntu1) natty; urgency=low
+
+ * New upstream release. Changes since our previous snapshot:
+ - Add support for -w/--window option which will enable user to select a
+ window as a target for filing a problem report. Thanks Abhinav Upadhyay.
+ (LP: #357847)
+ - Disable the filtering on SIGABRT without assertion messages. Turns out
+ that developers want these crash reports after all. (LP: #729223)
+ - Add support for a "DuplicateSignature" report fields. This allows
+ package hooks to implement custom duplicate problem handling which
+ doesn't need to be hardcoded in Apport itself. Update the launchpad
+ backend to tag such bugs as "need-duplicate-check".
+ - hookutils.py Update WifiSyslog regex to correctly catch application log
+ messages in syslog. Thanks Mathieu Trudel-Lapierre. (LP: #732917)
+ - hookutils.py, attach_hardware(): Avoid error message if machine does not
+ have a PCI bus. Thanks Marcin Juszkiewicz. (LP: #608449)
+ - backends/packaging-apt-dpkg.py: Replace deprecated getChanges() call
+ with get_changes().
+ - apport-gtk: Fix broken dialog heading if the name of the crashed program
+ contains an & or other markup specific characters.
+ - apport-gtk: Don't crash if GTK cannot be initialized. This usually
+ happens without a $DISPLAY or when the session is being shut down. Just
+ print an error message. If there are pending crashes, they will be shown
+ again the next time a session starts. (LP: #730569)
+ * debian/local/apport-chroot: In retracing mode, fix the passed --auth and
+ --duplicate-db arguments to be paths within the fakechroot.
+ * debian/local/apport-chroot: Apply the same absolute path fix to retracing
+ mode that we already applied to login mode in 1.19-0ubuntu1.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 18 Mar 2011 16:39:07 +0100
+
+apport (1.19-0ubuntu3) natty; urgency=low
+
+ * Merge fixes from trunk:
+ - apport-retrace: Intercept SystemErrors from ill-formed gzip attachments
+ as well.
+ - Fix crash if crash database configuration does not specify a
+ bug_pattern_url. Just assume None. (LP: #731526)
+ - If a custom crash database does not specify a bug_pattern_url, fall back
+ to using the default database's. (LP: #731526)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 09 Mar 2011 19:21:16 +0100
+
+apport (1.19-0ubuntu2) natty; urgency=low
+
+ * gtk/apport-gtk: Update require_version() call to current pygobject API.
+ Bump python-gobject dependency accordingly.
+ * Merge from trunk:
+ - report.py, add_hooks_info(): Properly report TypeErrors from hooks.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 03 Mar 2011 17:20:41 +0100
+
+apport (1.19-0ubuntu1) natty; urgency=low
+
+ [ Martin Pitt ]
+ * New upstream release:
+ - apt backend: Do not generate a warning if the opportunistically added -dbg
+ package does not exist.
+ - apt backend: Only add -dbg in --no-pkg mode, as there will be conflicts in
+ normal package mode.
+ - apt backend: Call tar with target cwd instead of using -C; the latter causes
+ an extra openat() call which breaks with current fakechroot.
+ - launchpad.py: Fix retracer crash if DistroRelease field does not exist.
+ - Convert deprecated failIf()/assert_() TestCase method calls to
+ assertFalse()/assertTrue().
+ - In apport-bug, if the user specifies a PID referring to a kernel thread,
+ do the right thing and file the bug against the kernel
+ - In hookutils.attach_dmesg, skip over an initial truncated message if one
+ is present (this happens when the ring buffer overflows)
+ - Change bug patterns to just use one central file instead of per-package
+ files. This allows bug patterns to be written which are not package
+ specific, and is easier to maintain as well. IMPORTANT: This changed the
+ format of crashdb.conf: bug_pattern_base is now obsolete, and the new
+ attribute bug_pattern_url now points to the full URL/path of the patterns
+ file. Thanks to Matt Zimmerman!
+ * debian/local/setup-apport-retracer: Drop local installation of packages,
+ we now just check that they are installed in the system.
+ * debian/local/apport-chroot: Convert --auth argument to absolute path, as
+ fakechroot needs that.
+
+ [ Steve Langasek ]
+ * data/general-hooks/ubuntu.py: don't collect bug reports on missing
+ menu.lst - this is a user error that they need to fix up on their side.
+ (LP: #668888)
+
+ [ Matt Zimmerman ]
+ * data/general-hooks/ubuntu.py: Add UpgradeStatus field to show if the
+ system was upgraded from a previous release (and when)
+ * debian/apport.install: actually install the java_uncaught_exception script
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 28 Feb 2011 12:16:22 +0100
+
+apport (1.18-0ubuntu2) natty; urgency=low
+
+ * Merge from trunk:
+ - Update stack unwind patterns for current glib (slightly changed function
+ names), and also ignore a preceding '*'. (LP: #716251)
+ - Fix crash_signature() to fail if there is an empty or too short
+ StacktraceTop.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sun, 20 Feb 2011 20:31:02 +0100
+
+apport (1.18-0ubuntu1) natty; urgency=low
+
+ [ Martin Pitt ]
+ * New upstream release:
+ - Ensure that symptom scripts define a run() function, and don't show them
+ if not.
+ - Do not show symptom scripts which start with an underscore. These can be
+ used for private libraries for the actual symptom scripts.
+ - Update bash completion. Thanks Philip Muškovac.
+ - etc/default/apport: Remove obsolete "maxsize" setting. (LP: #719564)
+ - Remove explicit handling of KDE *.ui files in setup.py, as
+ python-distutils-extra 2.24 fixes this. Bump version check.
+ - hookutils.py: Add attach_root_command_outputs() to run several commands
+ at once. This avoids asking for the password several times.
+ (LP: #716595)
+ * debian/apport.postinst: Add missing debhelper token.
+ * debian/rules: Drop dump_acpi_tables.py chmod workaround, it's upstream now
+ and has the proper permissions.
+ * Add etc/apport/blacklist.d/apport and drop the creation of it in
+ /debian/rules. This is easier to maintain and more obvious. Also move
+ README.blacklist from python-apport to apport, it fits better there.
+ * etc/apport/blacklist.d/apport: Add the binaries of nspluginwrapper, as we
+ can't do anything about them anyway. (LP: #717468)
+
+ [ Brian Murray ]
+ * data/package-hooks/source_linux.py: Properly set regression-release tag if
+ the reporter chooses "I do not know".
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 16 Feb 2011 14:29:36 +0100
+
+apport (1.17.2-0ubuntu2) natty; urgency=low
+
+ * Merge from trunk:
+ - Ensure that symptom scripts define a run() function, and don't show them
+ if not.
+ - Do not show symptom scripts which start with an underscore. These can be
+ used for private libraries for the actual symptom scripts.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 07 Feb 2011 12:23:57 +0100
+
+apport (1.17.2-0ubuntu1) natty; urgency=low
+
+ * New upstream bug fix release:
+ - Be more Python 3 compatible (not fully working with Python 3 yet,
+ though).
+ - apt/dpkg backend: Drop support for pre-0.7.9 python-apt API.
+ - Add --tag option to add extra tags to reports. (LP: #572504)
+ - hookutils.py, attach_dmesg(): Do not overwrite already existing dmesg.
+ - hookutils.py: Be more robust against file permission errors.
+ (LP: #444678)
+ - ui.py: Do not show all the options in --help when invoked as *-bug.
+ (LP: #665953)
+ - launchpad.py: Adapt test cases to current standard_title() behaviour.
+ * debian/control: Bump python-apt dependency to >= 0.7.9 to ensure that we
+ have the current API. Trunk dropped support for the old API.
+ * data/general-hooks/ubuntu.py: Ignore obsolete packages when filing bugs
+ against update-manager. (LP: #397519)
+ * data/general-hooks/ubuntu.py: Do not file a package install failure if
+ DpkgTerminalLog doesn't have any data. (LP: #695887)
+ * Add debian/apport.postinst: Create /var/crash. This directory is required
+ for package failures even if apport is disabled and thus the upstart job
+ does not run. (LP: #683367)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 04 Feb 2011 15:46:40 +0100
+
+apport (1.17.1-0ubuntu3) natty; urgency=low
+
+ * data/general-hooks/ubuntu.py: Add some __main__ code for easy testing,
+ which will update a .crash file with that hook's data.
+ * data/general-hooks/ubuntu.py: Trim DpkgTerminaLog to the most recent
+ install session; not only is this much easier to read, but it also avoids
+ confusing the tests further down which check for particular strings in the
+ log. (LP: #580419)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 26 Jan 2011 11:44:00 +0100
+
+apport (1.17.1-0ubuntu2) natty; urgency=low
+
+ * Merge from trunk:
+ - hookutils.py, attach_dmesg(): Do not overwrite already existing dmesg.
+ * etc/default/apport: Enable Apport by default for Alpha-2.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 25 Jan 2011 07:28:48 +0100
+
+apport (1.17.1-0ubuntu1) natty; urgency=low
+
+ * New upstream release:
+ - Make the GTK frontend work with GTK 2.0 as well, and drop "3.0"
+ requirement.
+ * gtk/apport-gtk: Force GTK 2 for now, as we do not currently have a real
+ GTK 3 theme, and thus with GTK 3 the application looks very ugly.
+ * debian/control: Depend on gir1.2-gtk-2.0 instead of -3.0.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 10 Jan 2011 22:26:10 -0600
+
+apport (1.17-0ubuntu2) natty; urgency=low
+
+ [ Brian Murray ]
+ * data/package-hooks/source_linux.py: Prevent regression-release bugs from
+ being tagged regression-updates. (LP: #692344). Additionally, reorder the
+ regression tags in likelyhood of greatest usage and clarify that
+ 'regression-release' applies to the dev release and a stable release but
+ not an updated package in the stable release.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 05 Jan 2011 09:47:38 +0100
+
+apport (1.17-0ubuntu1) natty; urgency=low
+
+ * New upstream release:
+ - Better standard bug titles for Python crashes. Thanks Matt Zimmerman!
+ (LP: #681574)
+ - Add handler for uncaught Java exceptions. There is no integration for
+ automatically intercepting all Java crashes yet, see java/README.
+ Thanks Matt Zimmerman! (LP: #548877)
+ - GTK frontend: Require GTK 3.0.
+ - launchpad.py: Default to "production" instance, not "edge", since edge
+ is obsolete now.
+ - hookutils.py, attach_alsa(): Fix crash if /proc/asound/cards does not
+ exist. (LP: #626215)
+ - ui.py, format_filesize(): Fix to work with stricter locale.format() in
+ Python 2.7. (LP: #688535). While we are at it, also change it to use
+ base-10 units.
+ - hookutils.py, package_versions(): Always include all requested package
+ names even if they're unknown to us. Thanks Matt Zimmerman!
+ (LP: #695188)
+ - launchpad.py: When updating a bug, also add new tags. Thanks Brian
+ Murray!
+ * debian/apport.install: Install Java crash handler in
+ /usr/share/apport/apport.jar.
+ * debian/control: Add Java build dependency so that the Java crash handler
+ will be built.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 31 Dec 2010 16:15:06 +0100
+
+apport (1.16-0ubuntu5) natty; urgency=low
+
+ * data/general-hooks/ubuntu.py: Add tag "running-unity" if Unity is running.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 18 Dec 2010 20:50:20 +0100
+
+apport (1.16-0ubuntu4) natty; urgency=low
+
+ * Restore the python2.7 fix which was not in the vcs and dropped.
+
+ -- Sebastien Bacher <seb128@xxxxxxxxxx> Thu, 16 Dec 2010 23:40:12 +0100
+
+apport (1.16-0ubuntu3) natty; urgency=low
+
+ * debian/control:
+ - Update Depends for gir abi change
+
+ -- Michael Terry <mterry@xxxxxxxxxx> Thu, 16 Dec 2010 13:49:57 -0500
+
+apport (1.16-0ubuntu2) natty; urgency=low
+
+ * Cherrypick from trunk:
+ - ui.py, format_filesize(): Fix to work with stricter locale.format() in
+ Python 2.7. (LP: #688535). While we are at it, also change it to use
+ base-10 units.
+ * debian/rules: Fix python version check to also work with 2.7.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 14 Dec 2010 12:23:31 +0100
+
+apport (1.16-0ubuntu1) natty; urgency=low
+
+ * New upstream release:
+ - Port GTK frontend from pygtk2 to GTK+3.0 and gobject-introspection.
+ - Fix symptoms again. Version 1.15 broke the default symptom directory.
+ - Fix memory test case to work with current Python versions, where the
+ SQLite integrity check throws a different exception.
+ * debian/control: Replace python-gtk2 dependency with python-gobject and
+ gir1.0-gtk-3.0.
+ * debian/control: Drop obsolete Conflicts/Replaces.
+ * debian/control: Consistently wrap dependencies.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 19 Nov 2010 11:43:08 +0100
+
+apport (1.15-0ubuntu1) natty; urgency=low
+
+ [ Martin Pitt ]
+ * New upstream release. Changes since to our previous trunk snapshot:
+ - Order symptom descriptions alphabetically. Thanks to Javier Collado.
+ - Check $APPORT_SYMPTOMS_DIR environment variable for overriding the
+ system default path. Thanks to Javier Collado.
+ - testsuite: Check that crashdb.conf can have dynamic code to determine DB
+ names and options.
+ - ui.py test suite: Rewrite _gen_test_crash() to have the test process
+ core dump itself, instead of using gdb to do it. The latter fails in
+ ptrace restricted environments, such as Ubuntu 10.10.
+ - launchpad.py: Use launchpadlib to file a bug instead of screen scraping.
+ The latter was completely broken with current Launchpad, so this makes
+ the test suite actually work again. Thanks to Diogo Matsubara!
+ - launchpad.py: Change $APPORT_STAGING to $APPORT_LAUNCHPAD_INSTANCE, so
+ that you can now specify "staging", "edge", or "dev" (for a local
+ http://launchpad.dev installation). Thanks to Diogo Matsubara!
+ - backends/packaging-apt-dpkg.py: Fix crash on empty lines in ProcMaps
+ attachment.
+ - doc/symptoms.txt: Fix typo, thanks Philip Muskovac. (LP: #590521)
+ - apport/hookutils.py: rename ProcCmdLine to ProcKernelCmdLine to not wipe
+ wipe out /proc/$pid/cmdline information. (LP: #657091)
+ - apport/hookutils.py: attach_file() will not overwrite existing report
+ keys, instead appending "_" until the key is unique.
+ - Fix --save option to recognise ~, thanks Philip Muškovac. (LP: #657278)
+ - Remove escalation_subscription from Ubuntu bug DB definition, turned out
+ to not be useful; thanks Brian Murray.
+ - launchpad.py: Fix APPORT_LAUNCHPAD_INSTANCE values with a https://
+ prefix.
+ - apt backend: Opportunistically try to install a -dbg package in addition
+ to -dbgsym, to increase the chance that at least one of it exists.
+ Thanks Daniel J Blueman!
+ * debian/control: Switch Vcs-Bzr: to natty branch.
+
+ [ Brian Murray ]
+ * data/package-hooks/source_linux.py: Drop regression-potential tag. We are
+ moving away from using regression-potential as a tag in the management of
+ regression bug reports. Instead we will tag bugs regression-release and
+ then create series, release, tasks for the release affected if the bug is
+ in fact a regression.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 12 Nov 2010 14:59:01 +0100
+
+apport (1.14.1-0ubuntu8) maverick; urgency=low
+
+ * debian/local/ubuntu-fat-chroot: Divert gio-querymodules and
+ gdk-pixbuf-query-loaders, since they keep breaking the chroots.
+ * etc/default/apport: Disable Apport for final Maverick release.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 28 Sep 2010 09:31:59 +0200
+
+apport (1.14.1-0ubuntu7) maverick; urgency=low
+
+ * In kde/apport-kde use correct translation catalogue, LP: #633483
+
+ -- Jonathan Riddell <jriddell@xxxxxxxxxx> Wed, 08 Sep 2010 20:53:13 +0100
+
+apport (1.14.1-0ubuntu6) maverick; urgency=low
+
+ * backends/packaging-apt-dpkg.py: fix handling of
+ /etc/apport/native-origins.d to actually work. LP: #627777.
+
+ -- Steve Langasek <steve.langasek@xxxxxxxxxx> Thu, 02 Sep 2010 22:28:48 +0000
+
+apport (1.14.1-0ubuntu5) maverick; urgency=low
+
+ * debian/control: Update Vcs-Bzr: to point to maverick branch.
+ * data/package-hooks/source_linux.py: Update to new-style kernel tags.
+ Patch by Brad Figg.
+ * debian/control: Bump Standards-Version to 3.9.1, no changes necessary.
+ * debian/compat: Bump to 7, since we are build depending on debhelper > 7.3
+ anyway.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 25 Aug 2010 13:02:46 +0200
+
+apport (1.14.1-0ubuntu4) maverick; urgency=low
+
+ * debian/local/ubuntu-fat-chroot: Drop firefox and thunderbird, we will use
+ upstream crash reporting for those now.
+ * debian/rules: Make dump_acpi_tables.py executable. This is a workaround as
+ long as the script comes through the package diff.gz.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 21 Jul 2010 08:43:32 +0200
+
+apport (1.14.1-0ubuntu3) maverick; urgency=low
+
+ * Merge from trunk:
+ - Add dump_acpi_tables.py script. This can be called by package hooks
+ which need ACPI table information (in particular, kernel bug reports).
+ Thanks to Brad Figg for the script!
+ - Fix test suite to work under ptrace restricted kernel.
+ * data/package-hooks/source_linux.py: Call dump_acpi_tables.py and save
+ output into "AcpiTables" field.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 13 Jul 2010 08:14:10 +0200
+
+apport (1.14.1-0ubuntu2) maverick; urgency=low
+
+ * etc/apport/crashdb.conf: Add a new database "canonical-oem" which
+ checks for an Ubuntu Distribution Channel Descriptor (in
+ /var/lib/ubuntu_dist_channel), and parses out the OEM project name from
+ that. Now that we modify the file anyway, remove the Fedora stanza, which
+ is not relevant for Ubuntu and not working due to a nonexisting Bugzilla
+ backend.
+ * data/general-hooks/ubuntu.py: Report bug against the OEM project instead
+ of Ubuntu if we have a DCD and an OEM specific package version.
+ * etc/default/apport: Re-enable Apport by default for Maverick.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 05 Jul 2010 10:53:10 +0200
+
+apport (1.14.1-0ubuntu1) maverick; urgency=low
+
+ * New upstream bug fix release:
+ - hookutils.py, attach_drm_info(): Sanitize connector names. Thanks Chris
+ Halse Rogers. (LP: #597558)
+ - bash completion: Complete all path names, apport-bug can be invoked with
+ a path to a program. Thanks Philip Muskovac.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 24 Jun 2010 15:37:19 +0200
+
+apport (1.14-0ubuntu1) maverick; urgency=low
+
+ * New upstream release:
+ - hookutils.py: Add new method attach_drm_info() to read and format
+ /sys/class/drm/*. (desktop-maverick-xorg-gpu-freeze-reports)
+ - packaging-apt-dpkg.py: Fix deprecated python-apt variables, thanks David
+ Stansby. (LP: #591695)
+ - launchpad.py: Fix crash on attachments which are named *.gz, but
+ uncompressed. (LP: #574360)
+ - hookutils.py, attach_gconf(): Fix defaults parsing for boolean keys.
+ (LP: #583109)
+ * debian/control: Bump p-distutils-extra build-dependency to 2.19, to ensure
+ that we get a complete translation template. (LP: #533565)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 16 Jun 2010 15:50:55 +0200
+
+apport (1.13.4-0ubuntu1) maverick; urgency=low
+
+ * New upstream bug fix release:
+ - bash completion: Fix error message if /usr/share/apport/symptoms does
+ not exist. Thanks Philip Muškovac! (LP: #562118)
+ - general-hooks/parse_segv.py: Report stack exhaustion more clearly and
+ correctly handle register dereferencing calls.
+ - Save/restore environment when calling hooks, in case they change the
+ locale, etc. (LP: #564422)
+ - hookutils.py, command_output(): Do not set $LC_MESSAGES for the calling
+ process/hook, just for the command to be called.
+ - ui.py: When displaying strings from system exceptions, decode them into
+ an unicode string, to avoid crashing the KDE UI. (LP: #567253)
+ - apport-retrace: Fix crash for retracing kernel vmcores, which do not
+ have an ExecutablePath.
+ - apport-bug manpage: Clarify when apport-collect may be used. Thanks
+ Brian Murray! (LP: #537273)
+ - generic hook: Check ProcMaps for unpackaged libraries, and ask the user
+ if he really wants to continue. If he does, tag the report as
+ "local-libs" and add a "LocalLibraries" field to the report with a list
+ of them. (LP: #545227)
+ * debian/control: Drop the now obsolete apport-qt transitional package.
+ * debian/control: We do not need python-dev, just python-all.
+ * Add debian/source/format: We keep 1.0, since 3.0 is a pain for
+ bzr-maintained packages.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 08 May 2010 09:00:26 +0200
+
+apport (1.13.3-0ubuntu2) lucid; urgency=low
+
+ * etc/default/apport: Disable Apport for the final release.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 19 Apr 2010 10:33:43 +0200
+
+apport (1.13.3-0ubuntu1) lucid; urgency=low
+
+ * New upstream bug fix release:
+ - data/general-hooks/parse_segv.py: suggest segv-in-kernel possibility.
+ - ui.py: When running as root, only show system crash reports, to avoid
+ restarting user programs as root. (LP: #445017)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 14 Apr 2010 14:42:28 +0200
+
+apport (1.13.2-0ubuntu1) lucid; urgency=low
+
+ [ Martin Pitt ]
+ * New upstream bug fix release:
+ - packaging-apt-dpkg.py, _install_debug_kernel(): Do not crash on an
+ outdated kernel, just return that it is outdated. (LP: #532923)
+ - launchpad.py test suite: Add "Referer" HTTP header, now required by
+ launchpad.
+ - launchpad.py: Fix crash if configuration does not have an
+ "escalated_tag" option.
+ - launchpad.py: Port to launchpadlib 1.0 API, thanks Michael Bienia for
+ the initial patch! (LP: #545009)
+ - gtk/apport-gtk-mime.desktop.in, kde/apport-kde-mime.desktop.in: Change
+ categories so that these do not ever appear in menu editors.
+ (LP: #449215)
+ - launchpad.py: Some LP bugs have broken attachments (this is a bug in
+ Launchpad itself). Ignore those instead of crashing.
+ - apport-gtk: Turn http:// and https:// links into clickable hyperlinks in
+ information and error dialogs. (LP: #516323)
+ - apport-retrace: Fix crash when trying to rebuild package info for
+ reports without an ExecutablePath. (LP: #436157)
+ - ui.py: Fix crash when package information cannot be determined due to
+ broken apt status. (LP: #362743)
+ - ui.py: Fix crash when /etc/apport/crashdb.conf is damaged; print an
+ appropriate error message instead. (LP: #528327)
+ - data/kernel_crashdump: Fix crash if log file disappeared underneath us.
+ (LP: #510327)
+ - data/apport: Fix IOError when apport is called with invalid number of
+ arguments, and stderr is not a valid fd. (LP: #467363)
+ - hookutils.py: Factor out the DMI collection code from attach_hardware()
+ into attach_dmi(), and call that in attach_alsa() as well. Thanks to
+ Brad Figg for the patch! (LP: #552091)
+ - apport/ui.py: Fix the help output if Apport is invoked under an
+ alternative name (like apport-collect). (LP: #539427)
+ * debian/local/apport-chroot: Fix crash if $APPORT_CRASHDB_CONF is not set.
+ (LP: #487700)
+ * debian/control: Bump python-launchpadlib dependency, to ensure that we
+ have a current version (LP: #407091), and the "1.0" protocol available.
+ * data/package-hooks/source_linux.py: Drop _() i18n, it's not available in
+ the hook and causes crashes. (LP: #538368)
+
+ [ Leann Ogasawara ]
+ * data/package-hooks/source_linux.py:
+ - Clean up some of the wording in the information dialogs for the
+ interactive kernel hook. Also add an additional "I don't know" option when
+ asked how frequently an issue occurs. (LP: #534638)
+ - Autodetect if running an upstream kernel. (LP: #532932)
+ - Attempt to categorize issue. Then add tag based on category.
+ (LP: #534745)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 31 Mar 2010 16:32:39 +0200
+
+apport (1.13.1-0ubuntu2) lucid; urgency=low
+
+ * Merge bug fixes from trunk:
+ - problem_report.py, write_mime(): Add new optional argument
+ "priority_fields" for ordering report keys. Patch by Brian Murray,
+ thanks!
+ - launchpad.py: Put some interesting fields first in the report, with the
+ new priority_fields argument. Patch by Brian Murray, thanks!
+ - packaging-apt-dpkg.py, _install_debug_kernel(): Do not crash on an
+ outdated kernel, just return that it is outdated.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 27 Mar 2010 11:48:34 +0100
+
+apport (1.13.1-0ubuntu1) lucid; urgency=low
+
+ [ Martin Pitt ]
+ * New upstream bug fix release:
+ - Update parse-segv to handle gdb 7.1 output.
+ - Enhance test suite to work with gdb 7.1 as well, and catch future
+ outputs.
+ - UI: Add exception string to the "network error" dialog, to better tell
+ what the problem is.
+ - UI: Add back -p option to apport-collect/apport-update-bug (regression
+ from 1.13). (LP: #538944)
+ - launchpad.py: Add yet another workaround for LP#336866. (LP: #516381)
+ - launchpad.py, download(): Ignore attachments with invalid key names.
+ - Fix regression from 1.10 which made it impossible for a package hook to
+ set a third-party crash database for non-native packages. (LP: #517272)
+ - apport-cli: Create the 'details' string only if user wants to view
+ details, and do not show files larger than 1MB. Thanks Scott Moser!
+ (LP: #486122)
+ - packaging-apt-dpkg.py: Silence apt.Cache() spewage to stdout with newer
+ python-apt versions. (LP: #531518)
+ - unkillable_shutdown: Add list of running processes and blacklisted pids
+ to report. (LP: #537262)
+ - Sort the report by key in the details view. (LP: #519416)
+
+ [ Evan Dandrea ]
+ * Move ubiquity's package-hook into apport, so that it can be used
+ from the installed system to grab the logs in /var/log/installer.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 20 Mar 2010 22:28:44 +0100
+
+apport (1.13-0ubuntu3) lucid; urgency=low
+
+ * Merge fixes from trunk:
+ - Update parse-segv to handle gdb 7.1 output.
+ - Enhance test suite to work with gdb 7.1 as well, and catch future outputs.
+ - unkillable_shutdown: Add list of running processes, blacklisted pids,
+ and "initctl list" to report. (LP: #537262)
+ - launchpad.py: Preserve the bug title written to the description by
+ apport as OriginalTitle for pattern matching. Thanks to Brian Murray!
+ (LP: #511310)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 13 Mar 2010 15:55:47 +0100
+
+apport (1.13-0ubuntu2) lucid; urgency=low
+
+ * data/general-hooks/parse_segv.py: backport portion of upstream commit 1724
+ to handle new Disassembly output from gdb 7.1.
+
+ -- Kees Cook <kees@xxxxxxxxxx> Thu, 11 Mar 2010 10:58:39 -0800
+
+apport (1.13-0ubuntu1) lucid; urgency=low
+
+ * New upstream release:
+ - Add "unkillable_shutdown" script to collect information about processes
+ which are still running after sending SIGTERM to them. This can be
+ hooked into e. g. /etc/init.d/sendsigs on Debian/Ubuntu systems.
+ - apport_python_hook.py: Directly check /etc/default/apport instead of
+ querying packaging.enabled(), to avoid importing lots of modules for
+ non-packaged scripts. Thanks Stuart Colville! (LP: #528355)
+ - Fix SegV parser to notice walking off the stack during "call" or "ret"
+ (LP: #531672).
+ - Fix --help output for bug updating mode (invocation as apport-collect or
+ apport-update-bug). (LP: #504116)
+ - Fix bug escalation tagging, thanks to Brian Murray.
+ - Fix option processing when being invoked as apport-bug. Thanks to Daniel
+ Hahler for the patch! (LP: #532944)
+ * debian/apport.install: Install unkillable_shutdown.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 11 Mar 2010 08:42:05 +0100
+
+apport (1.12.1-0ubuntu5) lucid; urgency=low
+
+ * launchpad.py: Do not escalate a bug if its already been escalated and
+ dealt with.
+
+ -- Brian Murray <brian@xxxxxxxxxx> Fri, 05 Mar 2010 13:05:10 -0800
+
+apport (1.12.1-0ubuntu4) lucid; urgency=low
+
+ [ Leann Ogasawara ]
+ * data/package-hooks/source_linux.py: When reporting a kernel oops the
+ reporter is presented with a dialog asking if they also want to report the
+ oops to kerneloops.org. Unfortunately there is no information regarding
+ the oops at the time this dialog is presented. Provide the reporter a
+ summary of the oops in question so they can make an educated decision
+ about reporting it to kerneloops.org. (LP: #528175)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 04 Mar 2010 13:08:22 +0100
+
+apport (1.12.1-0ubuntu3) lucid; urgency=low
+
+ * data/general-hooks/parse_segv.py: add "call" and "ret" to list of insns
+ that check the stack pointer for VMA sanity (LP: #531672), backport of
+ upstream commit 1715.
+
+ -- Kees Cook <kees@xxxxxxxxxx> Wed, 03 Mar 2010 18:07:46 -0800
+
+apport (1.12.1-0ubuntu2) lucid; urgency=low
+
+ [ Leann Ogasawara ]
+ * data/package-hooks/source_linux.py: Prevent filing bugs against
+ linux-meta. Use the linux package instead. (LP: #526787)
+
+ [ Scott Moser ]
+ * data/general-hooks/ubuntu.py: Update "is ec2 instance" logic for lucid uec
+ images. (LP: #525003)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 25 Feb 2010 19:06:39 +0100
+
+apport (1.12.1-0ubuntu1) lucid; urgency=low
+
+ [ Martin Pitt ]
+ * New upstream bug fix release:
+ - launchpad.py: Do not keep escalating bugs, just escalate at the 10th
+ duplicate.
+ - Improve error message if a symptom script did not determine a package
+ name. (LP: #503834)
+ - general-hooks/generic.py: Fix crash on libGL check with empty
+ StacktraceTop.
+ - Review and clean up usage of chmod(). This fixes a small race condition
+ in the Python exception hook where a local attacker could read the
+ information from another user's crash report. (LP: #516029)
+ - hookutils, package_versions(): Ignore "None" packages, for more robust
+ package hooks. (LP: #518295)
+ * debian/apport.install: Actually install the bash completion file.
+ (LP: #218933)
+ * Bump Standards-Version to 3.8.4 (no changes necessary).
+
+ [ Leann Ogasawara ]
+ * source_linux.py: Tag kernel bugs which utilize a driver from staging. Also
+ provide the list of staging drivers in use. Prefix suspend/resume bug
+ titles with "[STAGING]" if a staging driver was being used.
+ (LP: #524174, #524167)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 22 Feb 2010 21:58:16 +0100
+
+apport (1.12-0ubuntu5) lucid; urgency=low
+
+ * Add a dh_apport debhelper program, and a sequence addon making it
+ possible to use 'dh --with apport'.
+
+ -- Colin Watson <cjwatson@xxxxxxxxxx> Wed, 10 Feb 2010 18:12:30 +0100
+
+apport (1.12-0ubuntu4) lucid; urgency=low
+
+ [ Martin Pitt ]
+ * Add X-Ubuntu-Gettext-Domain: to desktop files, thanks Sebastien Bacher for
+ spotting this.
+
+ [ 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
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 01 Feb 2010 07:40:11 -0800
+
+apport (1.12-0ubuntu3) lucid; urgency=low
+
+ * data/general-hooks/ubuntu.py: also attach byte compilation logs for
+ xemacs21
+
+ -- Reinhard Tartler <siretart@xxxxxxxxxx> Sun, 24 Jan 2010 19:51:04 +0100
+
+apport (1.12-0ubuntu2) lucid; urgency=low
+
+ * launchpad.py: Do not keep escalating bugs, just escalate at the 10th
+ duplicate. (Merged from trunk)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 22 Jan 2010 16:51:35 +0100
+
+apport (1.12-0ubuntu1) lucid; urgency=low
+
+ * 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.
+ * debian/local/setup-apport-retracer: Switch to lucid.
+ * debian/local/setup-apport-retracer: Do not locally install python-apt and
+ friends, users can run apt-get install in DC dchroots now.
+ * debian/local/setup-apport-retracer: Don't add the retracer PPA for now,
+ everything we need is in lucid.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 20 Jan 2010 13:51:15 +0100
+
+apport (1.11-0ubuntu5) lucid; urgency=low
+
+ * ubuntu.py: Avoid errors when running on ramdiskless EC2 images, by only
+ attaching available EC2 information. Patch from Scott Moser (LP: #494615)
+
+ -- Thierry Carrez <thierry.carrez@xxxxxxxxxx> Tue, 12 Jan 2010 12:19:32 +0100
+
+apport (1.11-0ubuntu4) lucid; urgency=low
+
+ * Merge from trunk:
+ - 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)
+ - launchpad.py: Drop APPORT_FILES whitelist for download() and instead
+ just filter out file extensions that we know about (*.txt and *.gz).
+ (LP: #444975)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 11 Jan 2010 23:53:10 +0100
+
+apport (1.11-0ubuntu3) lucid; urgency=low
+
+ * Attach emacs compilation logs in order to assist bug triaging.
+ LP: #413110
+
+ -- Reinhard Tartler <siretart@xxxxxxxxxx> Thu, 07 Jan 2010 22:14:45 +0100
+
+apport (1.11-0ubuntu2) lucid; urgency=low
+
+ * launchpad.py: Remove a snippet of redundant code.
+ * Merge bug fixes from trunk:
+ - launchpad.py: Drop APPORT_FILES whitelist for download() and instead
+ just filter out file extensions that we know about (*.txt and *.gz).
+ (LP: #444975)
+ * Enable Apport by default again.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 05 Jan 2010 18:30:19 +0100
+
+apport (1.11-0ubuntu1) lucid; urgency=low
+
+ * New upstream release:
+ - Add "--save" UI option to store the collected information into an
+ .apport file instead of sending it right away. The file can then later
+ be sent through apport-bug. Update manpages accordingly.
+ - Update all copyright and description headers and consistently format
+ them.
+ - Rename all TestCase classes to "_T", which makes it much easier to run
+ individual tests from the command line.
+ - Testsuite: Verify that report details are/are not shown. This uncovered
+ that details about package installation failures were not shown before
+ sending them, which is fixed now.
+ - test/hooks: Do not try to add hook information to kernel_crashdump test
+ case, since we do not have an UI here. This test case broke when the
+ system had an interactive package hook for the kernel.
+ - When reporting a bug from a saved .apport file, let the user
+ review/confirm the content before sending.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 23 Dec 2009 13:09:55 +0100
+
+apport (1.10.1-0ubuntu1) lucid; urgency=low
+
+ * New upstream release:
+ - Install apport-collect symlink.
+ - Update translations from Launchpad.
+ - Move all remaining option/argument parsing from apport-bug into ui.py.
+ This allows the user to add options to apport-bug/apport-collect, and
+ also avoids unwieldy dissection of options/arguments in shell.
+ * debian/apport.links: Do not create apport-collect symlink, now done by
+ upstream build system. Install that in debian/apport.install.
+ * debian/local/setup-apport-retracer: Set up lazr.restfulclient.
+ * debian/control: Bump python-distutils-extra build dependency to >= 2.14 to
+ ensure correct symlink handling.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 23 Dec 2009 00:54:37 +0100
+
+apport (1.10-0ubuntu1) lucid; urgency=low
+
+ * New upstream release:
+ - Add a mode for updating an existing problem report to ui.py
+ (-u/--update). This is similar to the Ubuntu specific "apport-collect"
+ tool, but implemented the right way now: In particular, this has access
+ to the UI and thus can use interactive hooks (LP: #385811) and show you
+ what is being sent for confirmation/cancelling (LP: #371827)
+
+ - apport-bug: If invoked as "apport-collect" or "apport-update-bug" (i. e.
+ through a symlink), run apport in update mode (-u <number>). This
+ provides a convenient no-options command line program. Please note that
+ setup.py does not currently install such a symlink. Update the
+ apport-bug manpage accordingly.
+
+ - launchpad.py: Use new login_with() to clean up code, and specify allowed
+ access levels (WRITE_PRIVATE is the only sensible one anyway).
+ (LP: #410205)
+
+ - New hookutils functions:
+ + xsession_errors (match lines from ~/.xsession-errors)
+ + shared_libraries (determine which libraries a binary links with)
+ + links_with_shared_library (test if a binary links with a particular
+ library)
+
+ - New CrashDatabase API: get_affected_packages(), can_update(), is_reporter()
+
+ - Rename CrashDatabase.update() to update_traces().
+
+ - Add CrashDatabase.update() for adding all new fields of a report. This is
+ primarily useful for collecting local standard and package hook data for an
+ already existing bug report which was not filed through Apport. This checks
+ can_update()/is_reporter() if the user is eligible for updating that
+ particular bug. (LP: #485880)
+
+ - Ignore SIGXCPU and SIGXFSZ; thanks to Kees Cook. (LP: #498074)
+
+ - launchpad.py: Do not mark non-Ubuntu bugs as needs-retrace, since there is
+ no retracer right now. (LP: #489794)
+
+ - packaging-apt-dpkg.py, install_retracing_packages(): Do not crash on
+ malformed Dependencies.txt lines. (LP: #441709)
+
+ - use-local: Fix for new source tree location of "apport" binary.
+
+ * Drop debian/local/apport-collect{,.1} and install symlinks for apport-bug
+ instead.
+ * data/general-hooks/ubuntu.py: Do not report "corrupted filesystem tarfile"
+ package errors. (LP: #320743)
+ * data/general-hooks/ubuntu.py: Report "package ... is already installed and
+ configured" errors against dpkg, not the package that failed. (LP: #467688)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 19 Dec 2009 16:48:48 +0100
+
+apport (1.9.6-0ubuntu2) lucid; urgency=low
+
+ * Bump python-launchpadlib dependency to ensure that we have login_with()
+ with credentials_file argument.
+ * debian/local/apport-collect: Add short infos to description if the calling
+ person is the bug reporter. (LP: #348948)
+ * debian/local/apport-collect: Intercept lazr.restfulclient.errors.HTTPError
+ as well, and also cover the login process.
+ * debian/local/apport-collect: Improve error messages.
+ * debian/local/ubuntu-fat-chroot: Disable update-alternatives, it causes too
+ much breakage with fakechroot.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 18 Dec 2009 13:09:26 +0100
+
+apport (1.9.6-0ubuntu1) lucid; urgency=low
+
+ [ Brian Murray ]
+ * debian/local/apport-collect: Strongly encourage collectors who are not
+ the bug reporter to file a new bug report.
+
+ [ Marco Rodrigues ]
+ * debian/control: Fix lintian warnings. Move python-distutils-extra
+ to b-d-i and add misc:Depends to apport-qt.
+
+ [ Martin Pitt ]
+ * New upstream version 1.9.5 and 1.9.6:
+ - apport-retrace: Fix crash if InterpreterPath/ExecutablePath do not
+ exist.
+ - hookutils.py, attach_alsa(): Attach /proc/cpuinfo too, for CPU flags.
+ - Fix crash if InterpreterPath does not exist any more at the time of
+ reporting. (LP: #428289)
+ - apport-gtk: Connect signals properly, to repair cancel/window close
+ buttons. (LP: #427814)
+ - Update German translations and fix "konnre" typo. (LP: #484119)
+ - launchpad.py: Ensure that text attachments on initial bug filing are
+ valid UTF-8. (LP: #453203)
+ - man/apport-retrace.1: Document -R option.
+ - Add pm-utils hook to record current operation, so that apportcheckresume
+ can check it. Before this was kept in Ubuntu's pm-utils package.
+ - general-hooks/generic.py: Check if using ecryptfs, and which directory.
+ (LP: #444656)
+ * data/general-hooks/ubuntu.py: Add distro release codename tag.
+ (LP: #404250)
+ * debian/local/apport-chroot: Fix last occurrence of "--no-dpkg" to be
+ "--no-pkg". (LP: #487056)
+ * debian/local/apport-collect: Use "apport-collect data" as comment for the
+ apport-collect attachments to enable bug mail filtering. Thanks to Bryce
+ Harrington for the suggestion.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 02 Dec 2009 00:01:06 +0100
+
+apport (1.9.4-0ubuntu1) lucid; urgency=low
+
+ [ Marco Rodrigues ]
+ * etc/default/apport: Replace the old init.d force_start command by
+ the Upstart one.
+ * debian/apport.upstart: If $force_start=1 is given then run the job.
+ * debian/local/apport-collect: Don't collect information if bug is a
+ duplicate. (LP: #471429)
+
+ [ Martin Pitt ]
+ * New upstream bug fix release:
+ - Fix crash when ExecutablePath isn't part of a package. (LP: #424965)
+ - hookutils.py, attach_hardware(): Anonymize disk labels. Thanks to Marco
+ Rodrigues. (LP: #394411)
+ - hookutils.py, attach_wifi(): Anonymize encryption key (which appeared in
+ hex when being called as root). Thanks to Marco Rodrigues. (LP: #446299)
+ - launchpad.py: If unset, set bug task source package also for interpreter
+ crashes.
+ - apport-gtk: Give details window a minimize/maximize button, which were
+ missing in some window managers. Thanks to Marien Zwart. (LP: #447749)
+ - apport-kde: Properly terminate program after closing the last dialog.
+ (LP: #458662)
+ - hookutils.py, attach_alsa(): Attach /proc/asound/version. (LP: #467233)
+ - general-hooks/generic.py: Only collect ~/.xsession-errors bits when we
+ have an ExecutablePath linked to libgtk.
+ * debian/control: Update Vcs-Bzr: for lucid branch.
+ * data/package-hooks/source_linux.py: Add interactive questionaire, thanks
+ Leann Ogasawara! (LP: #444672)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 06 Nov 2009 14:06:52 +0100
+
+apport (1.9.3-0ubuntu4) karmic; urgency=low
+
+ * etc/default/apport: Disable Apport for final Karmic.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 22 Oct 2009 22:41:34 +0200
+
+apport (1.9.3-0ubuntu3) karmic; urgency=low
+
+ * apport/crash_db/launchpad.py: Increase the number of files available
+ for searching with bug patterns.
+
+ -- Brian Murray <brian@xxxxxxxxxx> Sun, 18 Oct 2009 12:38:38 +0200
+
+apport (1.9.3-0ubuntu2) karmic; urgency=low
+
+ * debian/local/apport-collect: Instantiate Launchpad crash database with
+ "distro = ubuntu", to satisfy an assertion introduced in the previous
+ release. (LP: #451838)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 15 Oct 2009 21:12:21 +0200
+
+apport (1.9.3-0ubuntu1) karmic; urgency=low
+
+ * New upstream bug fix release:
+ - hookutils.py: Fix error codes from "comm", thanks to Brian Murray.
+ (LP: #414194)
+ - general-hooks/generic.py: Catch xkbcomp error messages. (LP: #431807)
+ - launchpad.py: Assert that we have exactly one of "distro" or "project"
+ option.
+ - doc/crashdb-conf.txt: Improve documentation of crash database options.
+ - apport-gtk: Make Cancel/Send buttons focusable. Thanks to Marco
+ Rodrigues. (LP: #447780)
+ - Drop handling of the APPORT_REPORT_THIRDPARTY environment variable and
+ "thirdparty" configuration file option. This has never been documented,
+ and conceptually does not work. There is a proper mechanism for this in
+ place now, e. g. launchpad.py's "project" option.
+ * bin/apport-bug: Show deprecation warning for -p/-P. (LP: #431942)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 14 Oct 2009 23:28:24 +0200
+
+apport (1.9.2-0ubuntu2) karmic; urgency=low
+
+ [ Matt Zimmerman ]
+ * general-hooks/ubuntu.py: Include in Ubuntu bug reports the version number
+ of the installation media used to install the system, via
+ /var/log/installer/media-info (cf. #364649)
+
+ [ Martin Pitt ]
+ * debian/local/apport-collect.1: Clarify that the launchpad.credentials
+ files needs to be removed in order to ask for privileges again.
+ * Merge bug fixes from trunk:
+ - general-hooks/generic.py: Catch xkbcomp error messages, too. (LP: #431807)
+ - apport-bug: Consider -h as "output help", too. (Marco Rodrigues)
+
+ [ Brian Murray ]
+ * debian/local/apport-collect:
+ - Resolve bug with specifying package for adding information.
+ - Let collector know if bug was not reported by them.
+ - Clarify potential failure causes.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 08 Oct 2009 09:37:35 +0200
+
+apport (1.9.2-0ubuntu1) karmic; urgency=low
+
+ * New upstream bug fix release:
+ - apport-cli: Print the URL and ask whether to open a browser. In many
+ situations (such as usage on a server through ssh), it's preferable to not
+ open the browser on the reporting computer. Thanks to Matt Zimmerman for the
+ initial patch! (LP: #286415)
+ - general-hooks/generic.py: Collect important glib errors/assertions (which
+ should not have private data) from ~/.xsession-errors (LP: #431807)
+ - launchpad.py: Link hardware data submission key if it exists. (LP: #424382)
+ - apport-cli: Fix crash with non-ASCII characters in prompts.
+ - Fix "apport-bug symptomname" to actually work.
+ - launchpad.py: Fix crash on invalid credentials file. Thanks to Marco
+ Rodrigues for the initial patch! (LP: #414055)
+ * man/apport-bug.1: Document APPORT_IGNORE_OBSOLETE_PACKAGES (cherrypicked
+ from trunk), and APPORT_STAGING (Ubuntu specific change, since it's a
+ launchpad backend specific variable).
+ * bin/apport-bug: Ignore -p option when giving two arguments, to keep
+ compatibility with current bug filing instructions. (LP: #356755)
+ * debian/copyright: Update copyright year and fix GPL link, thanks Marco
+ Rodrigues!
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 02 Oct 2009 13:25:58 +0200
+
+apport (1.9.1-0ubuntu3) karmic; urgency=low
+
+ * Merge bug fixes from trunk:
+ - apport-cli: Print the URL and ask whether to open a browser. This makes
+ ubuntu-bug work much better for servers, now that ubuntu-bug is by and
+ large mandatory. (LP: #286415)
+ - launchpad.py: Consistently respect $APPORT_STAGING, so that it works
+ for bug filing as well. (LP: #435112)
+
+ [ Matt Zimmerman ]
+ * data/general-hooks/ubuntu.py: Add metadata and tags for bugs reported from
+ EC2 and UEC instances.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 25 Sep 2009 18:51:44 +0200
+
+apport (1.9.1-0ubuntu2) karmic; urgency=low
+
+ * kde/bugreport.ui: Select "complete report" option by default, to actually
+ be able to file bugs if the options are not shown. Thanks to Yuriy Kozlov!
+ Fix cherrypicked from trunk. (LP: #405378)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 23 Sep 2009 10:18:28 +0200
+
+apport (1.9.1-0ubuntu1) karmic; urgency=low
+
+ [ Martin Pitt ]
+ * New upstream bug fix release:
+ - hookutils.py, attach_hardware(): Do not attach empty Pccardctl*.
+ - apport/report.py, add_gdb_info(): Do not throw away stderr from gdb.
+ - data/general-hooks/parse_segv.py:
+ + Handle arithmetic wrapping correctly.
+ + Handle empty base, scale, or index registers in disassembly.
+ + Handle in/out ioport faults.
+ - Various improvements to user-visible strings, thanks to Marco Rodrigues!
+ (LP: #178507)
+ - Various apport-retrace robustifications.
+ - setup.py: Fix DistUtilsExtra version check. (LP: #428337)
+ - hookutils.py, attach_gconf(): Do not overwrite previous values from
+ other packages, thanks Loïc Minier!
+ - hookutils.py, attach_gconf(): Fix crash with nonexisting <applyto> tags.
+
+ [ Loïc Minier ]
+ * Upstream source is at https://launchpad.net/apport/+download not
+ archive.ubuntu.com.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 22 Sep 2009 12:51:38 +0200
+
+apport (1.9-0ubuntu6) karmic; urgency=low
+
+ * debian/apport.upstart:
+ - Use "exit" in Upstart script rather than "return".
+ - Fix post-stop script to write to the correct file. LP: #430895.
+
+ -- Scott James Remnant <scott@xxxxxxxxxx> Wed, 16 Sep 2009 20:33:49 +0100
+
+apport (1.9-0ubuntu5) karmic; urgency=low
+
+ * Merge bug fixes from trunk:
+ - hookutils.py, attach_hardware(): Do not attach empty Pccardctl*.
+ - apport/ui.py: Show a better message when failed connection to crash
+ database. Thanks to Marco Rodrigues! (LP: #178507)
+ - Do not throw away stderr from gdb.
+ - data/general-hooks/parse_segv.py: Handle arithmetic wrapping correctly.
+ - backends/packaging-apt-dpkg.py: More robust of missing ExecutablePath
+ due to outdated packages.
+ - setup.py: Fix DistUtilsExtra version check. (LP: #428337)
+ * data/general-hooks/ubuntu.py: Add distribution channel descriptor, as per
+ https://wiki.ubuntu.com/FoundationsTeam/Specs/OemTrackingId .
+ * data/general-hooks/ubuntu.py: Do not allow users to file bugs against
+ upgrade-system if the package isn't actually installed. Way too many
+ upgrade failures get wrongly reported against this. (LP: #404727)
+ * debian/rules: Entirely drop obsolete dh_installinit call.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 15 Sep 2009 17:31:26 +0200
+
+apport (1.9-0ubuntu4) karmic; urgency=low
+
+ FFE LP: #427356.
+
+ * Replace init script with Upstart job.
+ * debian/control:
+ - Bump build-dependency on debhelper for Upstart-aware dh_installinit
+
+ -- Scott James Remnant <scott@xxxxxxxxxx> Tue, 15 Sep 2009 03:33:57 +0100
+
+apport (1.9-0ubuntu3) karmic; urgency=low
+
+ * apport/report.py: add upstream bzr commit 1591:
+ - include stderr in gdb command output
+
+ -- Kees Cook <kees@xxxxxxxxxx> Wed, 09 Sep 2009 19:32:05 -0700
+
+apport (1.9-0ubuntu2) karmic; urgency=low
+
+ * Add missing python-apt build dependency.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 08 Sep 2009 17:41:04 +0200
+
+apport (1.9-0ubuntu1) karmic; urgency=low
+
+ * New upstream release:
+ - Add "do what I mean" mode to command line argument parsing (applies to
+ all interfaces: -cli, -gtk, -kde). When giving a single argument and no
+ options, determine the most likely mode, like reporting a bug against a
+ symptom, package, executable name, or PID.
+ - Add program "apport-bug" which determines the most appropriate user
+ interface (GTK, KDE, CLI) and files a bug through it, using the single
+ argument "do what I mean" mode. This is an improved version of Ubuntu's
+ "ubuntu-bug" script.
+ - Update apport-cli manpage to current set of options and behaviour. Also
+ point out that apport-gtk and apport-kde share the same CLI.
+ - setup.py now installs apport-{gtk,kde} into $prefix/share/apport/, they
+ are not supposed to be called directly. This also reflects the path
+ which the .desktop files expect.
+ - setup.py now installs the internal helper scripts like
+ "kernel_crashdump", "apport", or "apportcheckresume" into
+ $prefix/share/apport instead of $prefix/bin.
+ - Update usage of gettext to work around Python bug of gettext() not
+ returning unicodes, but str. Fixes UnicodeDecodeErrors on translated
+ --help output.
+ - Add missing gettext wrapping for user-visible strings in
+ apport-{retrace,unpack} and ui.py; thanks to Marco Rodrigues!
+ - backends/packaging-apt-dpkg.py: Robustify get_{source,architecture} for
+ uninstalled packages
+ - ui.py: Add --version option. Thanks Marco Rodrigues! (LP: #383694)
+ * debian/local/apport-collect: Fix KeyError crash on nonexisting LP bug
+ number. Thanks Marco Rodrigues! (LP: #424273)
+ * debian/control: Bump Standards-Version to 3.8.3 (no changes necessary).
+ * debian/local/apport-collect: Point out that you need to select "Change
+ anything" privileges. (LP: #373700)
+ * debian/control: Drop obsolete texlive-latex-recommended build dependency.
+ * debian/rules: Drop --install-scripts, upstream now installs the files and
+ binaries into the right place. Adapt debian/*.install accordingly.
+ * Drop debian/local/ubuntu-bug{,.1} and replace them with symlinks to
+ apport-bug{,.1}, which is a more robust version of ubuntu-bug.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 08 Sep 2009 15:53:33 +0200
+
+apport (1.8.2-0ubuntu1) karmic; urgency=low
+
+ [ Martin Pitt ]
+ * New upstream bug fix release:
+ - crashdb.py: Fix handling of non-ASCII crash signatures
+ - packaging-apt-dpkg.py: Run ExecutablePath/InterpreterPath check later,
+ so that it does not always have to be done
+ - crashdb.py: Never mark a bug as a duplicate of itself.
+ - launchpad.py, close_duplicate(): Add duplicate assertion
+ - Update Ubuntu bug pattern URL
+ - launchpad.py: Add "cache_dir" option and $APPORT_LAUNCHPAD_CACHE
+ environment variable to specify a non-temporary cache directory.
+ (LP: #416804)
+ - packaging-apt-dpkg.py, get_architecture(): Only use installed
+ architecture if package is actually installed
+ - launchpad.py: Drop explicit temporary cache dir, launchpadlib does that
+ automatically now. Thanks to Marco Rodriguez!
+
+ [ Marco Rodrigues ]
+ * debian/local/setup-apport-retracer: Switch to karmic.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 05 Sep 2009 13:04:16 +0200
+
+apport (1.8.1-0ubuntu1) karmic; urgency=low
+
+ * New upstream bug fix release:
+ - data/general-hooks/generic.py: Check $HOME, not /home for enough space.
+ (LP: #422658)
+ - launchpad.py: Intercept httplib2.ServerNotFoundError as well, to avoid
+ crashes when being offline. (LP: #396276)
+ - apport-cli: Save reports with .apport extension instead of .txt. Thanks
+ to Steve Beattie! (LP: #401983)
+ - fileutils.py, likely_packaged(): Ignored crashes in /var, packages don't
+ ship executables there, and it creates false positives. (LP: #414368)
+ - packaging-apt-dpkg.py, get_modified_files(): Fix crash with empty lines.
+ (LP: #408280)
+ - packaging-apt-dpkg.py: Use installed version instead of candidate
+ version where appropriate. This also fixes a crash where an obsolete
+ package is not available any more. (LP: #423511)
+ - hookutils.py, attach_gconf(): Fix crash with keys which do not have a
+ schema default. (LP: #422277)
+ - launchpad.py: Remove LP #353805 workaround, seems fixed now.
+ - launchpad.py: Talk to staging if $APPORT_STAGING is set.
+ - launchpad.py: Explicitly supply content_type for addAttachment, current
+ wadllib requires it now.
+ - apport_python_hook.py: Paper over inexplicable import error.
+ (LP: #348250)
+ - apport_python_hook.py: Protect against nonexisting sys.argv.
+ (LP: #418051)
+ - apport/ui.py, load_report(): Check that report has ProblemType field.
+ (LP: #198543)
+ - ui.py: Fix handling of complete vs. reduced report size. (LP: #92653).
+ This also fixes a race condition crash with os.path.getsize().
+ (LP: #348137)
+ - fi.po: Fix mistranslation of "&Cancel". (LP: #355303)
+ - apport-{gtk,kde}: Check for having $DISPLAY at startup to avoid crashes.
+ (LP: #411276)
+ - report.py, add_gdb_info(): Fix race condition in unlink_core, thanks to
+ Tommi Komulainen! (LP: #397945)
+ - ui.py, load_report(): Robustify check whether program is still
+ installed. (LP: #329184)
+ - packaging-apt-dpkg.py, install_retracing_packages(): Install package for
+ ExecutablePath/InterpreterPath if missing; this can happen with package
+ hooks which reassing package
+ - launchpad.py: Add a comment when marking a bug as a duplicate.
+ (LP: #418871)
+ * Move gdb dependency from apport to GUI packages to avoid pulling in gdb on
+ Ubuntu server. Thanks to Steve Beattie! (LP: #354172)
+ * ubuntu-bug: Fix handling of .crash file arguments, thanks to Marco
+ Rodrigues for pointing this out! (LP: #422881)
+ * debian/local/apport-collect: Set content_type and description, wadllib
+ requires them now. (LP: #423512) Also drop the ASCII reencoding
+ workaround, this doesn't seem to be necessary any more.
+ * apport/hookutils.py, attach_conffiles(): Fix crash with obsolete
+ conffiles. (LP: #412132)
+ * debian/local/apport-collect: Do not upload data if the affected package
+ isn't installed and there is no source package hook available either.
+ (LP: #417277)
+ * debian/local/ubuntu-bug: Accept .apport extension, too; thanks to Steve
+ Beattie! (LP: #401983)
+ * debian/local/apport-collect: Drop $APPORT_STAGING check, it's done by
+ launchpad.py itself now.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 03 Sep 2009 21:08:31 +0200
+
+apport (1.8-0ubuntu2) karmic; urgency=low
+
+ * apport/report.py: add upstream bzr 1538 commit:
+ - change to upstream glibc's __abort_msg variable name.
+ - filter out memory addresses when matching assert-bug duplicates.
+
+ -- Kees Cook <kees@xxxxxxxxxx> Fri, 28 Aug 2009 12:47:14 -0700
+
+apport (1.8-0ubuntu1) karmic; urgency=low
+
+ * New upstream release:
+ - Do not generally ignore SIGABRT any more. Try to extract the assertion
+ message from the core dump, and add it as "AssertionMessage" field. Mark
+ reports as unreportable if they do not have an assertion message and crashed
+ with SIGABRT. This implements UbuntuSpec:security-karmic-apport-abort.
+ - report.py, add_hooks_info(): Add optional package/srcpackage argument. Hooks
+ can use that to change the affected package or call hooks from different
+ packages.
+ - KDE frontend implementation of ui_question_userpass(), for crash databases
+ which need to ask for credentials.
+ - hookutils.py: New funtion attach_wifi() to add wireless network related
+ information to reports.
+ - Fix the test suite on current kernels; test/crash previously often failed
+ with python segfaults, since it killed the test processes too early.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 26 Aug 2009 13:19:51 +0200
+
+apport (1.7-0ubuntu4) karmic; urgency=low
+
+ [ Colin Watson ]
+ * data/package-hooks/source_debian-installer.py: Report Ubiquity bugs
+ against the ubiquity source package, rather than rejecting them.
+
+ [ James Westby ]
+ * data/package-hooks/source_linux.py: submit oopses back if the user
+ accepts. Use the new kerneloops-submit to do it.
+ * bin/kernel_oops: kerneloops will now pass the checksum, so if it does
+ then base the report path on that to uniquify the reports.
+ * apport/fileutils.py: allow uid to be a string so that we can use
+ the checksum in place of the uid.
+
+ -- James Westby <james.westby@xxxxxxxxxx> Tue, 25 Aug 2009 21:15:24 +0100
+
+apport (1.7-0ubuntu3) karmic; urgency=low
+
+ [ Colin Watson ]
+ * data/general-hooks/ubuntu.py: File update-grub bugs on grub2 instead of
+ grub if appropriate.
+ * apport/hookutils.py: Add command_available method, and use it to add
+ prtconf and pccardctl output if those commands are available.
+ * data/package-hooks/source_debian-installer.py: New hook, providing
+ roughly the same information as is provided by the 'report-hw' tool in
+ installation-report.
+
+ [ Matt Zimmerman ]
+ * apport/hookutils.py: Include modem-manager syslog messages in WifiSyslog
+ * data/general-hooks/ubuntu.py: Exclude bugs already aimed at grub2 from the
+ update-grub test (in support of Colin's change above)
+ * data/general-hooks/ubuntu.py: Redirect failures in /etc/kernel/*.d to the
+ package owning the file which failed
+ * Make sure that kernel crash dumps are marked as private in Launchpad
+ (LP: #417059)
+
+ -- Kees Cook <kees@xxxxxxxxxx> Fri, 21 Aug 2009 11:32:06 -0700
+
+apport (1.7-0ubuntu2) karmic; urgency=low
+
+ [ Matt Zimmerman ]
+ * data/general-hooks/ubuntu.py: Detect when a kernel upgrade failure is
+ caused by update-grub failing, and file the bug on grub instead of linux
+ * data/general-hooks/ubuntu.py: Detect when a kernel upgrade failure is
+ caused by update-initramfs failing, and file the bug on initramfs-tools
+ instead of linux
+ * data/package-hooks/source_linux.py: Per discussion with ogasawara, attach
+ ALSA details on kernel bug reports by default. About 9% of sampled kernel
+ bugs are audio-related.
+ * data/package-hooks/source_linux.py: Add linux-firmware version to kernel
+ bug reports
+ * apport/hookutils.py: Add attach_wifi function with wifi-related debug info
+ * data/package-hooks/source_linux.py: Attach wifi info by default to kernel
+ bugs
+
+ [ Martin Pitt ]
+ * Merge trunk:
+ - report.py, add_hooks_info(): Add optional package/srcpackage argument.
+ - Implemented ui_question_userpass [Caio Romão].
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 08 Aug 2009 12:20:39 +0200
+
+apport (1.7-0ubuntu1) karmic; urgency=low
+
+ * New upstream release:
+ - Add support for symptoms.
+ * debian/control: Recommend apport-symptoms.
+ * debian/local/ubuntu-bug: When called without arguments, run in "show
+ available symptoms" mode.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 05 Aug 2009 19:32:39 +0100
+
+apport (1.6-0ubuntu3) karmic; urgency=low
+
+ * Merge trunk:
+ - apport-gtk: Fix ordering of choices
+ - bin/package_hook: Fix crash for subdirectories in log dir. (LP: #332350)
+ - doc/package-hooks.txt: Document allowed chars in report keys.
+ - Show precise error message for damaged reports.
+ * ubuntu-bug: Call apport-kde instead of apport-qt.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 04 Aug 2009 18:50:26 +0100
+
+apport (1.6-0ubuntu2) karmic; urgency=low
+
+ * Re-enable Apport by default, for the alpha-3 release.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 21 Jul 2009 00:44:50 +0200
+
+apport (1.6-0ubuntu1) karmic; urgency=low
+
+ * New upstream release:
+ - Add support for kernel crashes, thanks to Michael Vogt!
+ - apport/ui.py, run_crash(): Do not re-collect information if we already
+ have a Dependencies field. This happens when calling apport on an already
+ pre-processed .crash file with -c. (LP: #394497)
+ - apport/hookutils.py, pci_devices(): Deliver all matching devices, not
+ just the last one. (LP: #398906)
+ - hookutils.py, _get_module_license(): Return "invalid" if modinfo fails,
+ so that they do not count as "free". (LP: #341720)
+ - packaging-apt-dpkg.py: Support additional custom native origins in
+ /etc/apport/native-origins.d/ . (LP: #386052)
+ - packaging-apt-dpkg.py: Drop PPA origin hack, launchpad behaves properly
+ now
+ - apport-gtk: Avoid focus stealing when being called without arguments (i.
+ e. auto-launched). LP: #396243)
+ - apport-kde: Use standard gettext again
+ - Fix handling of PC lacking disassembly due to invalid memory location.
+ * debian/local/apport-collect: Tag bugs with "apport-collected" on success.
+ (LP: #391392)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 15 Jul 2009 18:02:59 +0200
+
+apport (1.5-0ubuntu2) karmic; urgency=low
+
+ * Merge fixes from trunk:
+ - packaging-apt-dpkg.py: Fix install_retracing_packages() for pre-0.7.9
+ python-apt API.
+ - Sort the list of dependencies so it's easier to scan (LP: #391021)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 30 Jun 2009 22:39:18 +0200
+
+apport (1.5-0ubuntu1) karmic; urgency=low
+
+ * New upstream release:
+ - Drop all Makefiles, po/POTFILES.in, and most code from setup.py, and use
+ DistUtilsExtras.auto which "just does the right thing" for most build
+ system tasks. This requires python-distutils-extra >= 2.2, see
+ https://launchpad.net/python-distutils-extra
+ - Move all test scripts into test/, to unclutter source tree.
+ - setup.py now auto-detects the required packaging backend if
+ apport/packaging_impl.py is not manually installed.
+ * debian/control: Add python-distutils-extra build dependency.
+ * debian/rules: Drop stuff which is now properly done by the upstream build
+ system.
+ * Drop debian/apport.examples, preloadlib died long ago.
+ * Adapt debian/apport-{gtk,kde}.install to new upstream build system, which
+ now installs the .desktop files itself.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 29 Jun 2009 12:00:21 +0200
+
+apport (1.4-0ubuntu1) karmic; urgency=low
+
+ * New upstream release. Compared to our previous snapshot, this changes:
+ - Replace Qt4 frontend with KDE frontend, thanks to Richard Johnson!
+ - apport/ui.py, run_report_bug(): Clean up PID information collection.
+ - gtk/apport-gtk.ui: Drop invalid icon reference. (LP: #389064)
+ - ui.py: Do not reject non-distro package reports if report sets CrashDB
+ (for third-party destination). (LP: #391015)
+ - bin/kernel_crashdump: Use packaging API properly.
+ - apport-gtk.ui: Drop erroneous translatable flag from stock buttons.
+ - Update German translations.
+ * debian/*: qt â kde, add transitional package for apport-qt.
+ * Drop backends/packaging_rpm.py. We don't use it in the Ubuntu package at
+ all, and it's still in trunk.
+ * debian/rules: Drop some deprecated dh_* calls, cdbs's debhelper.mk has
+ done them for a long time.
+ * debian/control: Bump Standards-Version to 3.8.2 (no changes necessary).
+ * debian/control: Replace URLs in descriptions with proper Homepage: field.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 26 Jun 2009 10:44:54 +0200
+
+apport (1.3-0ubuntu2) karmic; urgency=low
+
+ * debian/local/apport-collect: Pass None as HookUI object. This will crash
+ with interactive hooks, but is a good enough immediate bandaid.
+ (LP: #385811)
+ * Merge fixes from trunk:
+ - packaging-apt-dpkg.py: Add backwards compatibility code for python-apt <
+ 0.7.9 to not break backportability.
+ - hookutils.py, command_output(): Force LC_MESSAGES=C, to avoid translated
+ output in bug reports. (LP: #383230)
+ - apport-gtk.ui: Make details window resizable, and lower default size, so
+ that it will fit on small screens. (LP: #365517)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 12 Jun 2009 12:47:59 +0200
+
+apport (1.3-0ubuntu1) karmic; urgency=low
+
+ * New upstream release. Compared to our bzr snapshot, this has:
+ - Interactive package hooks:
+ + Add apport.ui.HookUI class which provides GUI functionality such as
+ yes/no
+ questions or file dialogs to hooks.
+ + add_info() in package hooks now can (optionally) take a second argument
+ which is the HookUI instance.
+ + See doc/package-hooks.txt for details.
+ + See UbuntuSpec:desktop-karmic-symptom-based-bug-reporting
+ - New function apport.hookutils.root_command_output() to run a command as root,
+ through gksu/kdesudo/sudo, depending on the desktop environment.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 10 Jun 2009 16:49:13 +0200
+
+apport (1.2.1-0ubuntu3) karmic; urgency=low
+
+ * debian/control: Bump Standards-Version to 3.8.1 (no changes necessary).
+ * debian/control: Bump debhelper dependency for dh_icons, to satisfy
+ lintian.
+ * general-hooks/ubuntu.py: Fix IndexError crash if report does not have a
+ Package field. Check whether we actually have attach_conffiles() (which is
+ not the case when running the upstream version).
+ * Merge trunk:
+ - launchpad.py: Fix crash for unset titles.
+ - Add segfault analysis hook for quick segv reviews. Thanks to Kees Cook!
+ - run-tests: Replace hardcoded Python path with dynamically detected path.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 03 Jun 2009 09:52:03 +0200
+
+apport (1.2.1-0ubuntu2) karmic; urgency=low
+
+ * debian/control: Update Vcs-Bzr: for new location (moved from project
+ branch to package branch).
+ * Merge bug fixes from trunk:
+ - apport-cli: Fix report saving in "bug report" mode. (LP: #353253)
+ - Drop "UnsupportableReason" field, it is too similar to
+ UnreportableReason and just confusing.
+ - ui.py: Check UnreportableReason for run_report_bug() as well.
+ (LP: #361359)
+ - general-hooks/generic.py: Do not report problems with low free space on
+ / or /home. (LP: #381047)
+ - launchpad.py: Do not overwrite report['Title'].
+ - launchpad.py: Repair support for extra tags.
+ - New function apport.hookutils.root_command_output() to run a command as
+ root, through gksu/kdesudo/sudo, depending on the desktop environment.
+ (Part of UbuntuSpec:desktop-karmic-symptom-based-bug-reporting)
+ - launchpad.py: Fetch DpkgTerminalLog. (LP: #382589)
+ - launchpad.py: More robust download(), fixes other part of (LP: #382589)
+ - problem_report.py: Allow dashes and underscores in key names. Update
+ doc/data-format.tex accordingly. (LP: #380811)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 02 Jun 2009 11:59:41 +0200
+
+apport (1.2.1-0ubuntu1) karmic; urgency=low
+
+ * New upstream release:
+ - Moving away from deprecated APIs:
+ + packaging-apt-dpkg.py: Use python-apt >= 0.7.9 official API and drop
+ usage of internal symbols.
+ + hookutils.py: Drop hal related functions and queries, replace with
+ udev database, udev log file, and DMI information from sysfs.
+ + gtk UI: Convert from libglade to gtk.Builder.
+ - Bug fixes:
+ + hookutils.py: Drop /proc/version_signature collection, it is Ubuntu
+ specific.
+ + apportcheckresume: Fix log collection from pm-utils.
+ + Fix various crashes and report properties for reporting against
+ uninstalled packages.
+ * debian/control: Drop python-glade2 dependency, bump python-gtk2 dependency
+ to ensure availability of gtk.Builder.
+ * hookutils, attach_conffiles(): Remove leftover debugging spew.
+ * debian/apport-qt.install: Install the individual Qt .ui files instead of
+ *.ui, since GTK's are now also called *.ui.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 15 May 2009 11:28:34 +0200
+
+apport (1.1.1-0ubuntu2) karmic; urgency=low
+
+ [ Martin Pitt ]
+ * hookutils.py: Do not attach /proc/version_signature, it's Ubuntu specific.
+ (Merged from trunk). Instead, attach it in general-hooks/ubuntu.py.
+ * general-hooks/ubuntu.py: Attach package conffile information.
+ * debian/local/apport-collect: Add workaround for launchpadlib bug
+ LP#353805, to avoid crashing with non-UTF8 attachments. (LP: #368004)
+ * debian/local/apport-collect: Fix import of launchpadlib's HTTPError.
+ * apport/hookutils.py, attach_conffiles(): Ignore empty lines from
+ dpkg-query output.
+ * general-hooks/ubuntu.py: Strip off '/target' prefix from ExecutablePath
+ and InterpreterPath, to correctly process crash reports from the live
+ system installer.
+ * apport/hookutils.py, attach_conffiles(): Do not use command_output(),
+ since that causes error messages to get parsed as conffiles. Use
+ subprocess properly.
+ * backends/packaging-apt-dpkg.py: Replace deprecated python-apt properties
+ with current ones (merged from trunk). Update python-apt dependency to
+ >= 0.7.9.
+ * packaging-apt-dpkg.py, get_modified_files(): Do not show package list file
+ as modified if the package is not installed (merged from trunk).
+ (LP: #364533)
+ * backends/packaging-apt-dpkg.py, install_retracing_packages(): Fix syntax
+ error which broke the retracers.
+
+ [ Andy Whitcroft ]
+ * bin/apportcheckresume: the suspend _and_ hibernate logs are both in
+ pm-suspend.log.
+ * bin/apportcheckresume: remove redunant check for file before attaching
+ stress log.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 13 May 2009 15:22:53 +0200
+
+apport (1.1.1-0ubuntu1) karmic; urgency=low
+
+ [ Martin Pitt ]
+ * New upstream security update:
+ - etc/cron.daily/apport: Only attempt to remove files and symlinks, do not
+ descend into subdirectories of /var/crash/. Doing so might be exploited by
+ a race condition between find traversing a huge directory tree, changing
+ an existing subdir into a symlink to e. g. /etc/, and finally getting
+ that piped to rm. This also changes the find command to not use GNU
+ extensions. Thanks to Stephane Chazelas for discovering this!
+ (LP: #357024, CVE-2009-1295)
+ - Other fixes were already cherrypicked in the previous upload.
+
+ [ Matt Zimmerman ]
+ * package-hooks/source_linux.py: Attach info for linux-restricted-modules
+ and linux-backports-modules
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 30 Apr 2009 09:08:29 +0200
+
+apport (1.1-0ubuntu1) karmic; urgency=low
+
+ * New upstream release:
+ - Drop some remaining distro specific pieces of code from non-backends.
+ - Add hookutils methods for attaching relevant packages, greatly improve
+ attach_alsa() for sound problem debugging.
+ - Move launchpad crash database implementation from ever-breaking
+ python-launchpad-bugs (screenscraping) to launchpadlib (official and
+ stable Launchpad API). (LP: #353879)
+ - Add new field Report.pid which gets set on add_proc_info() and can be
+ used by hooks.
+ - setup.py: Properly clean up all generated files, install missing
+ mimetypes/text-x-apport.svg icon symlink.
+ - Add README file.
+ - Add translations from Launchpad.
+ - Remove preloadlib/*; it's undermaintained, and not really useful any
+ more these days.
+ - Various bug fixes; most visible being the misnamed
+ etc/default/apport.default file (which should just be
+ etc/default/apport).
+ * Merge some bug fixes from trunk:
+ - launchpad.py: Send and read Date: field again, reverting r1128; it is
+ useful after all. (LP: #349139)
+ - report.py, add_proc_info(): Only add ProcAttrCurrent if it is not
+ "unconfined".
+ - ui.py: Detect invalid PIDs (such as for kernel processes) and give a
+ friendly error message. (LP: #360608)
+ - report.py, add_hooks_info(): Always run common hooks, and run source
+ package hooks if we do not have a binary package name. (LP: #350131)
+ - launchpad.py: Consider socket errors when connecting as transient, so
+ that crash-digger doesn't stop completely on them.
+ * Drop debian/apport.README.Debian, superseded by upstream README.
+ * Drop debian/apport.links, done by upstream setup.py now.
+ * debian/rules, debian/apport.preinst: Drop upgrade fix for misnamed default
+ file again, was only necessary for intra-Jaunty upgrades.
+ * debian/control: python-launchpad-bugs â python-launchpadlib dependencies.
+ * debian/local/apport-collect: Drop launchpadlib login code, just use the
+ CrashDatabase implementation from apport/crashdb_impl/launchpad.py.
+ * Make package backportable to hardy and intrepid:
+ - debian/control: Relax python-central buil-dependency to 0.5.6.
+ - debian/rules: Determine DH_PYCENTRAL value ("include-links" vs.
+ "nomove") based on the installed pycentral version.
+ - debian/rules: Only supply --install-layout=deb when Python version is
+ 2.6.
+ * apport/hookutils.py: Add docstring for attach_hardware, thanks Matt
+ Zimmerman! (Merged from lp:~mdz/apport/hookutils)
+ * apport/crashdb_impl/launchpad.py: Support older wadllib API
+ where bug.date_created was a string instead of a datetime object.
+ (Cherrypicked from trunk).
+ * debian/control: Drop apport dependency to python-xdg, it's not required.
+ (LP: #354172)
+ * debian/control: Drop gdb from Depends: to Recommends:. (LP: #354172)
+ * debian/local/apport-collect: Print a friendly error message instead of
+ crashing if the bug number is not an integer. (LP: #351050)
+ * debian/local/apport-collect: Change incomplete tasks back to "New" after
+ data collection. (LP: #363126)
+ * debian/apport.links: source_linux-meta.py -> source_linux.py package hook,
+ so that apport-collect works on "linux" source bug tasks. These get
+ opportunistically translated into binary packages, but the binary "linux"
+ is built by the source "linux-meta". (LP: #350131)
+ * debian/local/setup-apport-retracer:
+ - Use ports.ubuntu.com for non-{i386,amd64,lpia}.
+ - Set up Jaunty by default.
+ - Fix test for being in local unpackaged apport source tree.
+ - Drop installation of python-launchpad-bugs.
+ - Install bzr branches/packages necessary for launchpad, in a shared
+ ~/launchpadlib/ tree: launchpadlib, wadllib, oauth, lazr.uri, httplib2,
+ simplejson.
+ - Clean up apport-chroot calling for extra packages.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 28 Apr 2009 10:50:49 +0200
+
+apport (1.0-0ubuntu5) jaunty; urgency=low
+
+ [ Martin Pitt ]
+ * Rename etc/default/apport.default to etc/default/apport (brown paperbag),
+ and add debian/apport.preinst to remove the apport.default file on
+ upgrades. (LP: #361543)
+ * debian/rules: Call dh_installinit with --onlyscripts, so that the package
+ calls update-rc.d again. This fixes the calling of init script again,
+ which got broken in 1.0-0ubuntu1. (LP: #361579)
+
+ [ Matt Zimmerman ]
+ * package-hooks/source_linux.py: Attach /etc/initramfs-tools/conf.d/resume to
+ show the resume device for hibernation
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 15 Apr 2009 22:36:33 +0200
+
+apport (1.0-0ubuntu4) jaunty; urgency=low
+
+ * etc/default/apport.default: Disable Apport by default for the final
+ release.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 14 Apr 2009 11:47:29 +0200
+
+apport (1.0-0ubuntu3) jaunty; urgency=low
+
+ * apport/hookutils.py: Factor out package_versions() to generate a simple
+ text listing of relevant package versions and use it in attach_printing()
+ * apport/hookutils.py: Add new function attach_relevant_packages() to attach
+ version information (and perhaps eventually run hooks?) for related
+ packages
+ * apport/hookutils.py: Add glob matching to package_versions()
+ * apport/hookutils.py: Add fuser info and dmesg to attach_alsa
+ * apport/hookutils.py: Add codec info to attach_alsa
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx> Thu, 09 Apr 2009 07:36:45 -0700
+
+apport (1.0-0ubuntu2) jaunty; urgency=low
+
+ * backends/packaging-apt-dpkg.py: Add missing shutil import.
+ * debian/local/ubuntu-bug: Filter out -p and -P, for backwards calling
+ compatibility. (LP: #356755)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 06 Apr 2009 23:04:39 -0700
+
+apport (1.0-0ubuntu1) jaunty; urgency=low
+
+ * Apport has a proper upstream trunk now (lp:apport) and made an 1.0
+ upstream release. Use this as an orig.tar.gz. This does not change any
+ code for Jaunty, just removes the Fedora/OpenSUSE specific .spec and init
+ scripts.
+ * Add bzr-builddeb configuration (merge mode).
+ * Add debian/watch for upstream releases on Launchpad.
+ * Drop debian/python-apport.postinst, obsolete for a long time.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 06 Apr 2009 17:37:48 -0700
+
+apport (0.149) jaunty; urgency=low
+
+ Do some internal cleanup of distribution specific stuff:
+
+ * problem_report.py, man/apport-unpack.1: Fix description of .crash file
+ syntax (RFC822, not "Debian control").
+ * Move cron.daily, init script, and default file from debian/ to etc/, and
+ install them in setup.py. These files are appropriate for upstream
+ installation.
+ * Move crashdb.conf and doc/README.blacklist to etc/, to simplify setup.py.
+ * setup.py: Move *.mo generation/installation into my_install_data class,
+ for cleanliness.
+ * Move installation of missing packages for retracing from
+ bin/apport-retrace to new abstract interface apport/packaging.py,
+ install_retracing_packages() and remove_packages(), and move the apt/dpkg
+ code to backends/packaging-apt-dpkg.py. This removes a major piece of
+ apt/dpkg specific code from non-backends.
+ * bin/apport-retrace: Rename option --no-dpkg to --no-pkg and update
+ bin/apport-chroot accordingly.
+ * Move bin/apport-chroot and man/apport-chroot.1 to debian/local, since they
+ are totally Debian/Ubuntu specific.
+ * debian/local/setup-apport-retracer: Update apport-chroot and crashdb.conf
+ paths for above changes.
+ * apport/hookutils.py, files_in_package(): Replace dpkg-query call with
+ packaging.get_files(), to avoid Debianism.
+ * man/apport-retrace.1: Drop reference to "apt", simply talk about package
+ installation.
+
+ Bug fixes:
+
+ * setup.py: Fix homepage URL.
+ * debian/local/apport-chroot: If multiple distro IDs point to the same
+ chroot, do not upgrade them more than once with "upgrade all".
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 06 Apr 2009 16:06:33 -0700
+
+apport (0.148) jaunty; urgency=low
+
+ [ Matt Zimmerman ]
+ * apport/hookutils.py: add attach_media_build to include information about
+ the build of installation media in use (i.e. in a casper live CD
+ environment)
+ * general-hooks/ubuntu.py: use attach_media_build (LP: #351781)
+ * bin/apportcheckresume: Use attach_file_if_exists rather than attach_file to
+ avoid spurious error messages about non-existent log files (LP: #351973)
+
+ [ Martin Pitt ]
+ * debian/local/ubuntu-bug: Drop generic passthrough of apport-{cli,gtk,kde}
+ options since this leads to too much confusion. Instead just support a
+ single argument and check whether it is a pid, a package name, a .crash
+ file, or a program path. This does the right thing when calling it with a
+ .crash file (LP: #347392) and fixes the help output (LP: #344923) Update
+ manpage accordingly.
+ * apport/hookutils.py: Move attach_media_build() to
+ general-hooks/ubuntu.py, since it is Ubuntu specific.
+ * bin/apport-retrace: Fix KeyError crash on bugs with an ExecutablePath
+ which does not exist any more. Close the bug as invalid instead.
+ (LP: #352331)
+ * bin/kernel_oops: Add "kernel-oops" tag. Since both bin/kernel_oops and
+ bin/apportcheckresume use the "kerneloops" bug class, it previously was
+ hard to filter out the bug reports which were real oopses. (LP: #349621)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 01 Apr 2009 18:10:01 +0200
+
+apport (0.147) jaunty; urgency=low
+
+ * bin/apportcheckresume: report the pm-suspend.log/pm-hibernate.log
+ from /var/lib.
+ * bin/apportcheckresume: only attempt to attach the stress log if its is
+ present.
+ * bin/apportcheckresume, debian/apport.init: add detection for late
+ resume hangs, those where the user thinks the system was working.
+ (LP: #335323)
+
+ -- Andy Whitcroft <apw@xxxxxxxxxxxxx> Mon, 30 Mar 2009 09:47:28 +0200
+
+apport (0.146) jaunty; urgency=low
+
+ * apport/report.py, _generate_sigsegv_report(): Turn into a class method, so
+ that it can be used by test cases in other modules as well. Also add
+ missing Signal field.
+ * apport/crashdb_impl/launchpad.py: Fully enable operation with
+ staging.launchpad.net.
+ * apport/crashdb_impl/launchpad.py: Add initial test suite, performing data
+ upload, Python and SEGV bug reporting, report download, report updating,
+ tag and duplicate handling. This happens on staging.launchpad.net.
+ * apport/crashdb.py: Add new interface duplicate_of(id) to return the master
+ bug of a duplicate. Also document that close_duplicate() with "None"
+ master bug will un-duplicate the bug.
+ * apport/crashdb_impl/{launchpad,memory}.py: Implement duplicate_of() and
+ add test cases. The Launchpad test case reproduces the
+ "duplicate-of-a-duplicate" regression, which now got fixed in
+ python-launchpad-bugs bzr head.
+ * apport/ui.py, open_url(): Also consider a sesssion as "GNOME" if gconfd-2
+ is running; some variants such as UNR do not have gnome-panel; this fixes
+ using the preferred browser for them. (LP: #322386)
+ * debian/local/apport-collect: Add new option -p to explicitly specify a
+ (binary) package name instead of guesstimating it from the bug's source
+ package tasks. Document new option in debian/local/apport-collect.1.
+ (LP: #333875)
+ * apport/crashdb.py, duplicate_db_consolidate(): Add logging about removing
+ invalidated bugs from the duplicate database, now that this actually
+ works.
+ * debian/local/ubuntu-bug.1: Update for the possibility to specify a package
+ name or PID without any options. Also document the "ubuntu-bug linux"
+ special case. (LP: #348985)
+ * debian/local/ubuntu-bug.1: Add missing documentation of the case of
+ specifying a path name.
+ * backends/packaging-apt-dpkg.py: When unpacking source trees, try
+ "debian/rules setup" last, since it is the least common variant.
+ * debian/local/ubuntu-fat-chroot: Divert away
+ /usr/lib/xulrunner-1.9.1b3/xulrunner-bin. It is called on debian/rules
+ patch in xulrunner-1.9.1 and hangs eternally in the fakechroots. This is
+ only a temporary kludge, though, until the next xulrunner version lands.
+ * apport/crashdb_impl/launchpad.py: Add test case: Update a bug report which
+ got marked as a duplicate during processing. This reproduces #349407.
+ * apport/crashdb_impl/launchpad.py, update(): Intercept and ignore IOErrors
+ when changing the bug priority. This happens if a bug gets duplicated
+ underneath us. (LP: #349407)
+ * apport/crashdb.py, get_crashdb(): Print syntax errors from parsing
+ conf.d/*.conf to stderr.
+ * apport/crashdb_impl/launchpad.py: Support new CrashDB option "project"
+ which can be set to a LP project name to file bugs against that project
+ instead of the distribution. Add test case for filing crash bug against a
+ project, updating it, duplicating/unduplicating it, and determining fixed
+ version. (LP: #338835)
+ * bin/crash-digger: If apport-retrace exits with 99, consider it a transient
+ error and just stop the retracer, but don't leave the lock file behind.
+ Add appropriate test case to test-crash-digger.
+ * bin/apport-retrace: If apt update fails due to a "hash sum mismatch", exit
+ with a "transient error" code, to stop (but not break) the retracing
+ cycle.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 27 Mar 2009 17:01:08 +0100
+
+apport (0.145) jaunty; urgency=low
+
+ * apport/crashdb_impl/launchpad.py: Fix typo in previous upload.
+ * debian/local/apport-collect: Do not crash on
+ launchpadlib.errors.HTTPError, but give a proper error message and point
+ out that this script needs "change anything" privileges. (LP: #338201)
+ * apport_python_hook.py: Fix crash for already existing reports, and make
+ behaviour equivalent to bin/apport: Silently exit for existing unseen
+ crash report, and overwrite existing seen crash report. Add test cases.
+ (LP: #323714)
+ * general-hooks/automatix.py: Refuse to send bug reports when ultamatix is
+ installed.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 10 Mar 2009 18:45:34 +0100
+
+apport (0.144) jaunty; urgency=low
+
+ * apport/crashdb_impl/launchpad.py, mark_retrace_failed(): If report is
+ invalid, remove CoreDump.gz and other attachments.
+ * bin/apport-retrace: If we didn't find the ExecutablePath on the system
+ because the package is out of date, don't crash, but close the bug as
+ invalid.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 10 Mar 2009 10:45:56 +0100
+
+apport (0.143) jaunty; urgency=low
+
+ * debian/apport.README.Debian: Document how to temporarily and permanently
+ enable crash interception.
+ * backends/packaging-apt-dpkg.py, is_distro_package(): Do not consider a
+ package a native distro one if installed version is "None". This happens
+ with some PPA packages. (LP: #252734)
+ * apport/report.py, anonymize(): Move user name anonymization into the
+ "non-root" case as well; fixes uninitialized variable. (LP: #338847)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 09 Mar 2009 12:16:49 +0100
+
+apport (0.142) jaunty; urgency=low
+
+ * apport/report.py: Do not include lsb_release's stderr in the
+ DistroRelease: output.
+ * apport/hookutils.py: Fix attach_printing():
+ - Correct spelling or "error_log".
+ - Do not call fgrep with no file names (if /etc/cups/ppd/ is empty), since
+ that hangs forever.
+ * apport/report.py, _gen_stacktrace_top(): Fix parsing of stacktraces
+ with some addresses missing. Add test cases. (LP: #269133)
+ * apport/ui.py, run_report_bug(): Show details of collected information and
+ give the user a chance to cancel. Previously, collected data was sent
+ directly to Launchpad. Nowadays lots of packages have hooks, so we cannot
+ guarantee any more that bug reports only have non-sensitive information.
+ (LP: #195514) This also allows the user to cancel if (s)he inadvertedly
+ clicked on "Report a problem". (LP: #279033)
+ * apport/ui.py: Fix crash in get_complete_size() for reports that are
+ constructed on the fly instead of loaded from a file (i. e. for bug
+ reports). Fixes displaying of report in apport-cli.
+ * apport/report.py: Slight robustification of test_add_gdb_info_script()
+ test case.
+ * debian/local/ubuntu-bug: Fix invocation with "--help". (LP: #305841)
+ * apport/ui.py, load_report(): Clearer error message if report file does not
+ exist. (LP: #204198)
+ * Remove redundant verbiage from test suite docstrings.
+ * apport/report.py, anonymize(): Fix crash when processing root-owned
+ reports. (LP: #338033)
+ * apport/report.py, anonymize(): Do not anonymize single-character user and
+ host names, since they create an utter mess in bug reports, and also are
+ very low-sensitive.
+ * debian/apport.init: Also start apport if force_start=1 is given. This
+ provides a convenient method of starting apport just for a session without
+ changing the default file. Add a comment to debian/apport.default about
+ this possibility. Thanks to Milan for the suggestion and the initial
+ patch! (LP: #320467)
+ * backends/packaging-apt-dpkg.py, _get_mirror(): Only consider http://
+ mirrors for fetching Contents.gz. (LP: #315797)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 05 Mar 2009 17:01:05 +0100
+
+apport (0.141) jaunty; urgency=low
+
+ * apport/hookutils.py: Add cups error log to attach_printing()
+
+ -- Brian Murray <brian@xxxxxxxxxx> Mon, 02 Mar 2009 10:55:53 -0800
+
+apport (0.140) jaunty; urgency=low
+
+ * debian/python-{apport,problem-report}.install: Fix site-packages â
+ *-packages.
+ * run-tests: Only check for local packaging_impl.py if running local tests.
+ This unbreaks running tests from /usr/share/apport/testsuite/.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 02 Mar 2009 11:56:59 +0100
+
+apport (0.139) jaunty; urgency=low
+
+ * apport/report.py, anonymize(): Do not anonymize "root". (Side
+ issue in LP #333542)
+ * debian/rules: Supply --install-layout=deb to setup.py.
+ * debian/local/apport-collect: Attach new info to
+ staging.launchpad.net if $APPORT_STAGING is defined. This makes
+ testing easier. Describe in debian/local/apport-collect.1.
+ * debian/local/apport-collect: Ignore ValueErrors from
+ add_package_info(), which happens if the bug has a source package
+ task which does not have an identically named binary package name.
+ Slightly ugly, but it's nontrivial to do that in a sensible
+ manner; let's just fix the crash for now, since the focus of this
+ tool is to collect information from hooks. (LP: #334823)
+ * apport/hookutils.py, hal_dump_udi(): Filter out serial numbers.
+ (Mentioned in LP #107103)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 02 Mar 2009 11:36:18 +0100
+
+apport (0.138) jaunty; urgency=low
+
+ * apport/crashdb_impl/launchpad.py: Consider an useful stack trace
+ sufficient for automatically removing the core dump, it doesn't
+ need to be perfect. This is in accordance with not setting the
+ apport-failed-retrace tag for useful, but non-perfect retraces any
+ more.
+ * apport/hookutils.py, backends/packaging_rpm.py: Convert usage of
+ md5 module (which is deprecated in 2.6) to hashlib.
+ * Replace all instances of using an exception's .message attribute
+ with str(exception), since message is deprecated in Python 2.6.
+ * apport/hookutils.py: Add attach_printing(). Thanks to Brian Murray
+ for the initial patch! (LP: #333582)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 24 Feb 2009 22:24:31 +0100
+
+apport (0.137) jaunty; urgency=low
+
+ * Set python-version to all, include symlinks in the package.
+
+ -- Matthias Klose <doko@xxxxxxxxxx> Tue, 24 Feb 2009 21:22:36 +0100
+
+apport (0.136) jaunty; urgency=low
+
+ [ Andy Whitcroft ]
+ * bin/apportcheckresume: remove originator in suspend/hibernate/resume
+ reporting. This was intended for debugging only and is now redundant.
+ * bin/apportcheckresume, apport/report.py: when collecting resume failures
+ in very early boot hal may not be running and we thus unable to obtain
+ the machine type information. Move title generation to the reporting
+ engine.
+
+ [ Martin Pitt ]
+ * debian/local/apport-collect: Add user environment information, too
+ (LANG, PATH, SHELL). (LP: #332578)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 24 Feb 2009 14:25:21 +0100
+
+apport (0.135) jaunty; urgency=low
+
+ * problem_report.py, test_write_mime_text(): Add test cases for
+ single-line and two-line UTF-8 values, single-line and two-line
+ Unicode values and a single-line LF-terminated value. Fix handling
+ of the latter two.
+ * problem_report.py, test_write(): Add test cases for single-line
+ and two-line UTF-8 and Unicode values, and fix handling of these
+ in write().
+ * debian/local/apport-collect: Collect package, OS, and user
+ information as well. (LP: #332578)
+ * package-hooks/source_apport.py: Robustify by using hookutils, and
+ avoid stat errors if /var/crash/* does not exist.
+ * test-hooks: Update dodgy test for uninstalled package,
+ libdb4.3-tcl is not available in Jaunty any more.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 23 Feb 2009 13:14:24 +0100
+
+apport (0.134) jaunty; urgency=low
+
+ * debian/local/apport-collect: Do not collect information for closed
+ tasks. Thanks for Brian Murray for the initial patch! (LP: #331839)
+ * apport/crashdb_impl/launchpad.py, download(): Download
+ DpkgTerminalLog.txt attachment as well.
+ * apport/report.py: If downloading a nonexisting bug pattern file
+ name succeeds and returns a HTML snippet with "404 Not Found",
+ consider this as failure. This repairs falling back to source
+ package names. (LP: #328751)
+ * apport/hookutils.py: Replace tabs with spaces.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 20 Feb 2009 11:22:15 +0100
+
+apport (0.133) jaunty; urgency=low
+
+ [ Andy Whitcroft ]
+ * apport/hookutils.py: define and include a machine type from the hardware
+ information in the report, using HAL information where available.
+ * bin/apportcheckresume: include the machine type in the suspend/hibernate
+ report title. They are generally machine specific.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 19 Feb 2009 17:49:03 +0100
+
+apport (0.132) jaunty; urgency=low
+
+ [ Martin Pitt ]
+ * Add debian/local/apport-collect: Download a Launchpad bug report,
+ get its source package, check if it has apport hooks, and if so,
+ run and upload them. Add manpage, too. (LP: #124338)
+ * debian/control: Add Suggests: python-launchpadlib; this is only
+ needed by apport-collect, thus we don't need to pull that into
+ every default installation; if it's not installed apport-collect
+ will detect and point this out.
+ * debian/control: Add ${misc:Depends} dependencies.
+
+ [ Jonathan Riddell ]
+ * Set window icon in apport-qt
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 19 Feb 2009 13:50:34 +0100
+
+apport (0.131) jaunty; urgency=low
+
+ [ Andy Whitcroft ]
+ * bin/apportcheckresume, bin/kernel_oops, cli/apport-cli, gtk/apport-gtk,
+ gtk/apport-gtk.glade, qt4/apport-qt: generalised the KernelOops
+ dialog and handling to allow suspend and hibernate failures present
+ more accurate reasons for the report. Also commonises all messages
+ in the three implementations to simplify internationalisation.
+
+ [ Martin Pitt ]
+ * po/Makefile: Fix merge-po rule to actually work again.
+ * cli/apport-cli, qt4/apport-qt: Unify string with apport-gtk.
+ * apport/ui.py: Drop some bogus translatable strings.
+ * Update German translations.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 16 Feb 2009 19:31:41 +0100
+
+apport (0.130) jaunty; urgency=low
+
+ [ Martin Pitt ]
+ * bin/kernel_crashdump: Don't crash if vmcore.log does not exist.
+ * crashdb_impl/launchpad.py: Tag bugs with the architecture they are
+ being reported on.
+ * bin/crash-digger: Revert catching "database is locked" errors
+ during consolidation, since it just hides more fundamental errors.
+ * apport/crashdb_impl/memory.py: Improve docstrings of test suite.
+ * bin/apport-retrace: Do not try to install -dbgsym packages with
+ nonmatching versions, unless --unpack-only is used. Thanks to
+ hggdh for the initial patch! (LP: #309208)
+
+ [ Andy Whitcroft ]
+ * bin/apportcheckresume: modify the oops title and thereby the launchpad
+ bug title to say suspend or hibernate.
+ * bin/apportcheckresume: modify the tags to bin/apportcheckresume:
+ modify the oops title and thereby the launchpad be resume+suspend or
+ resume+hibernate as appropriate.
+ * bin/apportcheckresume: include any non-free modules in the bug title.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 12 Feb 2009 22:09:35 +0100
+
+apport (0.129) jaunty; urgency=low
+
+ * bin/apport-retrace: Log broken reports.
+ * bin/apport-retrace: Do not mark bugs as invalid after they are
+ already marked as a duplicate, since that does not work in
+ Launchpad.
+ * debian/local/ubuntu-fat-chroot: Symlink /target -> /, to work
+ for crashes which appear in /target during installation.
+ * bin/apport: Move argv length/usage help before lock check, so that
+ it works if the user cannot lock /var/crash/.lock. Thanks to Kees
+ Cook!
+ * doc/package-hooks.txt: Point out apport.hookutils.
+ * apport/ui.py: Check environment variable APPORT_REPORT_THIRDPARTY
+ in addition to the 'thirdparty' configuration file option for
+ overriding the "genuine distro package" check. Thanks to Oumar
+ Aziz OUATTARA!
+ * apport/crashdb_impl/launchpad.py: In third-party mode, report bugs
+ against Launchpad projects. Thanks to Oumar
+ Aziz OUATTARA for his branch! (LP: #213454)
+ * bin/apportcheckresume: Include /var/lib/pm-utils/stress.log, too.
+ Thanks to Andy Whitcroft for the initial patch, rewrote to use
+ apport.hookutils.
+ * apport/crashdb.py, init_duplicate_db(): Run an integrity check and
+ raise exception if it fails, to avoid running the retracers on a
+ corrupt duplicate db. Add test case to
+ apport/crashdb_impl/memory.py.
+ * bin/crash-digger: Create a backup of the duplicates database right
+ after initializing it (which verifies integrity).
+ * dupdb-admin: Add new command "consolidate".
+ * apport/crashdb_impl/launchpad.py: Request bug lists with batch
+ size 300, for slight speedup of consolidation.
+ * apport/crashdb.py, duplicate_db_consolidate(): Warn about a bug
+ which is not yet fixed, but does not appear in get_unfixed(). In
+ Launchpad, this means that the bug does not have the
+ 'apport-crash' tag any more; if there are many, those would be a
+ huge time/bandwidth waste.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 26 Jan 2009 16:04:16 +0100
+
+apport (0.128) jaunty; urgency=low
+
+ * apport/ui.py: Introduce new configuration option "thirdparty" and
+ ignore the is_distro_package() check if it is set to true.
+ * bin/apport-retrace: Call Cache.open() after Cache.update().
+ * bin/apport-retrace: If downloading a report fails (e. g. the
+ description was invalidly modified), mark the bug as invalid with
+ a proper explanation instead of crashing, unless we are in
+ "stdout" or "output file" mode.
+ * apport/crashdb_impl/launchpad.py: Apply some heuristics to attempt
+ recovering broken descriptions as in LP #315728 (intermediate
+ blank lines, and non-apport data append).
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 19 Jan 2009 17:49:55 +0100
+
+apport (0.127) jaunty; urgency=low
+
+ * bin/apportcheckresume, debian/apport.init: integrate with pm-utils to
+ detect suspend/resume failures. Thanks to Steve Conklin and Andy
+ Whitcroft. LP: #316419.
+
+ -- Steve Langasek <steve.langasek@xxxxxxxxxx> Tue, 13 Jan 2009 12:54:12 -0800
+
+apport (0.126) jaunty; urgency=low
+
+ * bin/apport-chroot: If --auth is specified in "login" mode, symlink
+ the file into /tmp/auth in the fakechroot. This makes it much
+ easier to interactively debug retracing.
+ * bin/apport-retrace: Exit with zero for bugs which do not have a
+ core dump, so that it does not completely stop the retracers.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 09 Jan 2009 22:49:48 +0100
+
+apport (0.125) jaunty; urgency=low
+
+ * bin/apport-chroot: Exit with apport-retraces' exit status, to
+ propagate errors upwards to crash-digger.
+ * bin/apport-retrace: Do not put outdated -dbgsym comments into the
+ bug comments.
+ * Rewrite bin/crash-digger to become much more robust and easier for
+ retracer maintainers:
+ - Now designed around cron-based maintenance: start, process all
+ pending bugs, exit. This makes memory leaks irrelevant, and gets
+ rid of all the logging, daemonizing, and looping code.
+ - Adapt stdout/stderr reporting to be suitable for cron and
+ redirecting stdout to a log file.
+ - Use lock files to avoid overlapping instances and avoid damaging
+ bugs with broken retracers after crash-digger failed.
+ - Handle chroot upgrading, so that this does not need separate
+ cronjobs any more.
+ - Drop old -i option, replace with -D/--dupcheck which is a mode
+ which *only* checks duplicates of Python crashes (no fakechroot
+ handling).
+ - Mark bug as retraced after apport-chroot retrace finished
+ successfully; the process is robust enough now to avoid enless
+ loops even if retracing fails.
+ - Adapt test-crash-digger accordingly.
+ - UbuntuSpec:apport-retracer-maintenance
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 09 Jan 2009 12:14:44 +0100
+
+apport (0.124) jaunty; urgency=low
+
+ * debian/local/ubuntu-fat-chroot: Divert touch to touch.real and
+ wrap it into a shell wrapper which ignores failures. Some packages
+ use "touch -m" which fails with EPERM on directories under
+ fakechroot. Also disable gconf-schemas and polkit-auth, since they
+ do not work in fakechroots.
+ * apport/crashdb_impl/launchpad.py: Allow using staging for testing.
+ * apport/crashdb.py, mark_retrace_failed(): Add new optional
+ argument "invalid_msg", intended for crashes which cannot be
+ retraced properly (e. g. due to outdated packages). Implement this
+ in apport/crashdb_impl/launchpad.py.
+ * bin/apport-retrace: If we do not have an usable stack trace, and
+ encounter outdated package versions in the crash, close the report
+ as invalid with an appropriate comment. (LP: #308917)
+ * bin/apport-retrace: Update the apt cache before looking for, and
+ installing packages. (Part of UbuntuSpec:apport-retracer-maintenance)
+ * debian/apport.default: Enable by default again for Jaunty. Let the
+ flood begin!
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 08 Jan 2009 14:05:07 +0100
+
+apport (0.123) jaunty; urgency=low
+
+ * bin/apport: Do not write the report into the log file if opening
+ the report file failed; just log the error.
+ * bin/apport: Remove a previously seen report file, so that the
+ following creation with O_EXCL actually works.
+ * apport/report.py, add_proc_info(): Only try to attach
+ /proc/pid/attr/current if we are root. This works around Python
+ segfaulting regression when encountering EPERM on read() (see
+ LP #314065).
+ * apport/report.py testsuite: Use "isofs" for module license check
+ testing instead of "usbcore", since the latter is more likely to
+ get built into the kernel.
+ * apport/report.py, add_proc_environ(): Use "PATH=(...)" instead of
+ "PATH: ..." notation, to be consistent with other environment
+ variables. Unbreaks the apport test suite.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 05 Jan 2009 18:05:38 +0100
+
+apport (0.122) jaunty; urgency=low
+
+ * apport/crashdb_impl/launchpad.py: Support extra tags in the
+ report's "Tags:" field, and set them in the Launchpad bug.
+ Document this in doc/data-format.tex. Thanks to Steve Conklin for
+ the patch!
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 05 Jan 2009 10:06:49 +0100
+
+apport (0.121) jaunty; urgency=low
+
+ * debian/apport.init: Drop long obsolete setting of
+ /proc/sys/kernel/crashdump-size.
+ * debian/apport.init: Make restart actually work if the default file was
+ changed. (LP: #292402)
+ * apport/report.py, add_proc_environ(): Do not include verbatim $PATH, only
+ classify it as "default" (does not appear at all then), "custom,
+ user" (/home or /tmp in $PATH), or "custom, no user". Add appropriate test
+ case. Update the data format documentation accordingly. (LP: #245263)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 08 Dec 2008 19:37:53 -0800
+
+apport (0.120) jaunty; urgency=low
+
+ * man/apport-cli.1: Fix "sytem" typo. (LP: #288977)
+ * apport/fileutils.py: Add new function get_options() to read
+ ~/.config/apport/settings. In the future, the apport-ignore.xml file will
+ move to this directory, too. Based on idea and initial patch from Nikolay
+ Derkach.
+ * bin/apport: Check config option "unpackaged", and if it is set to True,
+ create a crash dump for unpackaged programs, too. Bump apport package
+ dependency to python-apport for this.
+ * apport/ui.py: Fix regression introduced in in 0.115 for checking
+ successful package name determination.
+ * apport/report.py: Some distro portability fixes in the test suite, thanks
+ to Nikolay Derkach!
+ * Add OpenSUSE spec file, init script, and RPM packaging backend. Thanks to
+ Nikolay Derkach!
+ * apport_python_hook.py, bin/apport: Create files in a race free way to
+ avoid symlink attacks. Thanks to Sebastian Kramer <krahmer@xxxxxxxxxx> for
+ finding them!
+ * problem_report.py test suite: Create debugging leftover which left /tmp/r
+ behind.
+ * apport/crashdb_impl/memory.py: Use example.com, not bug.net, since the
+ latter actually exists now.
+ * apport/hookutils.py: Add attach_network(), attach_alsa(), and
+ attach_hardware(), and add proper docstrings. Thanks to Matt Zimmerman for
+ the branch!
+ * source_linux.py hook: Use above tool functions, which greatly simplifies
+ the hook.
+ * apport/report.py: Also print exceptions from binary and source package
+ hooks, not just from common ones.
+ * apport/report.py, add_hooks_info(): Do not print an error if a source
+ package hook does not exist.
+ * apport/hookutils.py, _parse_gconf_schema(): Correctly handle bool values.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 26 Nov 2008 19:24:23 +0100
+
+apport (0.119) intrepid; urgency=low
+
+ * debian/apport.default: Disable Apport by default for the final release.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 23 Oct 2008 09:34:41 +0200
+
+apport (0.118) intrepid; urgency=low
+
+ * apport/hookutils.py: add attach_gconf() function to add non-default gconf
+ settings to a report
+
+ -- Matt Zimmerman <mdz@xxxxxxxxxx> Mon, 13 Oct 2008 20:10:33 +0100
+
+apport (0.117) intrepid; urgency=low
+
+ * backends/packaging-apt-dpkg.py, is_distro_package(): Fix crash if
+ apt.Cache()[pkg].origins is None. (LP: #279353)
+ * bin/apport: Log that we are ignoring SIGABRT, since it is a common cause
+ of confusion.
+ * test-apport, create_test_process(): Fix race condition: wait until the
+ child process has fully execve()ed, to avoid coredumping it while it is
+ still running as test-apport process.
+ * apport/crashdb_impl/launchpad.py, update(): Set source package of a bug if
+ the reporter removed it and the task is against 'Ubuntu'. (LP: #269045)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 07 Oct 2008 16:38:06 +0200
+
+apport (0.116) intrepid; urgency=low
+
+ * Update AUTHORS and debian/copyright, Michael and Troy released their
+ copyright to Canonical. Properly attribute them as authors in the
+ respective files.
+ * debian/local/ubuntu-bug: Fix quoting of the command line arguments, so
+ that several options do not end up as one big argument when being passed
+ to apport-{cli,gtk,qt}. This also repairs launchpad-integration.
+ (LP: #260242)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 26 Sep 2008 10:32:45 +0200
+
+apport (0.115) intrepid; urgency=low
+
+ [ Matt Zimmerman ]
+ * Add apport/hookutils.py with some convenience functions for writing hook
+ scripts (work in progress)
+ * Extend ubuntu-bug to accept a path as an argument and look up the package
+ name
+ * Rename kernel_hook to kernel_crashdump (there are other kernel hooks)
+ * Change kernel crash report type to KernelCrash
+ * Fix automatix.py to not crash when automatix isn't installed (LP: #267004)
+ * Add bin/kernel_oops hook to capture a kernel oops (eg. via kerneloops)
+
+ [ Martin Pitt ]
+ * Add AUTHORS file for collecting the list of major contributors and
+ copyright holders.
+ * apport/report.py: If we do not find a bug pattern file for the binary
+ package, fall back to looking for one with the source package name.
+ * run-tests: Provide a better error message if apport/packaging_impl.py does
+ not exist.
+
+ [ Brian Murray ]
+ * apport/crashdb_impl/launchpad.py: Add regression-retracer tag to bugs
+ which seem to be a regression (duplicate, and crash happens in a later
+ version than the fix). (LP: #271876)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 18 Sep 2008 18:18:03 -0700
+
+apport (0.114) intrepid; urgency=low
+
+ [ Fabien Tassin ]
+ * apport/ui.py: Use preferred browser when it's recognized as a
+ Mozilla browser (firefox, seamonkey, flock) or Epiphany (LP: #131350)
+
+ [ Oumar Aziz OUATTARA ]
+ * apport/crashdb.py: Add support for /etc/apport/crashdb.conf.d/*.conf crash
+ database configuration files. Document it in doc/crashdb-conf.txt.
+ * apport/ui.py: Support a new field "CrashDB" in apport reports which select
+ a non-default crash database. Document this in doc/package-hooks.txt.
+
+ [ Martin Pitt ]
+ * apport/report.py: If a hook crashes with an exception, print it to
+ stderr, for easier debugging of hooks.
+ * apport/crashdb_impl/launchpad.py: If PackageArchitecture is 'all', fall
+ back to looking at Architecture instead of not adding a
+ needs-$ARCH-retrace tag at all. This prevented signal crashes originating
+ from e. g. Python packages from being automatically retraced.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 04 Sep 2008 10:51:24 +0200
+
+apport (0.113) intrepid; urgency=low
+
+ * apport-qt recommends update-notifier-kde instead of adept-notifier
+
+ -- Anthony Mercatante <tonio@xxxxxxxxxx> Thu, 28 Aug 2008 15:02:20 +0200
+
+apport (0.112) intrepid; urgency=low
+
+ * apport/crashdb_impl/launchpad.py: Update attachment handling to current
+ python-launchpad-bugs API, thanks Markus Korn!
+ * apport/ui.py: Use gnome-panel as indicator for a running GNOME session;
+ 'gnome-session' now calls itself x-session-manager, which isn't useful
+ to tell apart session types.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 07 Aug 2008 17:09:49 +0200
+
+apport (0.111) intrepid; urgency=low
+
+ The "(Kernel) OOPS, I dumped it again!" release.
+
+ * apport/ui.py: Fix test_run_report_bug_unpackaged_pid() to work with the
+ installed run-tests from the package as well.
+ * apport/crashdb_impl/launchpad.py: Ignore broken LP bug tasks instead of
+ crashing on them.
+ * apport/report.py, add_proc_info(): Report the AppArmor or SELinux context
+ in a new ProcAttrCurrent field, read from /proc/pid/attr/current.
+ Document it in doc/data-format.tex. The field will not be added if the
+ proc attribute cannot be read or isn't present. Thanks to Steve Beattie
+ for the patch and the suggestion!
+ * debian/local/setup-apport-retracer: Switch to intrepid.
+ * debian/local/setup-apport-retracer: Fix installation of python-apt. Also
+ install apt, to avoid library version mismatches to python-apt.
+ * debian/apport.default: Enable apport by default again, now that we have
+ working retracers.
+ * apport/report.py, test_add_gdb_info_script(): Use bash, not dash as test
+ program for core dumping; stack trace is awkwardly bad with dash, so that
+ the test case cannot really work any more.
+ * Add package-hooks/source_linux.py: Package hook for collecting kernel
+ related information. By Matt Zimmerman, thank you! (LP: #251441)
+ * debian/local/ubuntu-bug.1: Fix documentation of -p, it specifies the
+ binary package name, not the source.
+ * apport/packaging.py: Add get_kernel_package() to return the actual Linux
+ kernel package name; useful if the user reports a bug against just
+ "linux". Implement it in backends/packaging-apt-dpkg.py.
+ * apport/ui.py: "Do what I mean" when filing a bug against "linux" and
+ report it against the actual kernel package.
+ * debian/local/ubuntu-bug: If just one argument is given, infer -p/-P from
+ the type of the argument.
+ * apport/ui.py: Drop the PackageArchitecture field for the uploaded report
+ if it is equal to Architecture. Adapt apport/crashdb_impl/launchpad.py to
+ fall back to Architecture, and mention the change in doc/data-format.tex.
+ * problem_report.py, write_mime(): Add new "skip_keys" argument to filter
+ out keys. Add test cases.
+ * apport/crashdb_impl/launchpad.py: Do not write the "Date:" field on
+ upload(), and fetch it from the bug metadata in download().
+ * apport/crashdb_impl/launchpad.py, download(): Support reading bugs with
+ the "--- " separator instead of "ProblemType: ". Launchpad doesn't create
+ bugs that way ATM, but at least we have the reading part implemented now.
+ * package-hooks/source_linux.py: Drop Uname, ProcVersion, and
+ RunningKernelVersion fields, since they are all subsumed in the
+ ProcVersionSignature field.
+ * apport/ui.py, run_report_bug(): Strip spaces from package argument.
+ * apport/ui.py, add_hooks_info(): Collect OS info first, then call the
+ package hooks, so that the linux hook actually has a chance to delete the
+ Uname field.
+ * bin/kernel_hook, test-hooks: Throw away the original kernel hook which
+ we never used (and got superseded by the proper source_linux.py package
+ hook now). Replace it with the new logic of looking for
+ /var/crash/vmcore{,.log} and turning that into an apport report.
+ * debian/apport.init: Call kernel_hook if /var/crash/vmcore exists.
+ (LP: #241322)
+ * apport/ui.py: Collect information for "ProblemType: Kernel" as well, so
+ that we run the package hook. Adapt test suite to cover this.
+ * debian/control: Bump Standards-Version (no required changes).
+ * gtk/apport-gtk.glade, qt4/apport-qt: Generalize notification of kernel
+ crash, since it now happens after a boot, not right after the BUG/OOPS.
+ But in the future we want to cover both cases.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 05 Aug 2008 18:13:24 +0200
+
+apport (0.110) intrepid; urgency=low
+
+ * apport/chroot.py: In the test suite, copy some system binaries/libraries
+ into a fakechroot and exercise a lot of standard shell commands (cp, ln
+ -s, rm, rm -r, mkdir, echo, chmod, chown, etc.) with absolute/relative
+ paths. This reproduces the total breakage of rm'ing, chmod'ing, and
+ chown'ing absolute paths in hardy fakechroots.
+ * bin/crash-digger: Intercept exceptions when downloading crash reports for
+ duplicate checking, so that the retracer does not crash on malformed bug
+ reports. (LP: #205178)
+ * apport/packaging.py: Introduce a new function enabled() which reports
+ whether Apport should create crash reports. Signal crashes are controlled
+ by /proc/sys/kernel/core_pattern, but we need that to control whether
+ reports for Python, package, or kernel crashes are generated.
+ * backends/packaging-apt-dpkg.py: Provide implementation for
+ PackageInfo.enabled() for Debian/Ubuntu by evaluating /etc/default/apport.
+ Add various test cases for different configuration files and absent files.
+ * apport_python_hook.py: Do not create reports if Apport is disabled (in
+ /etc/default/apport). (LP: #222260)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 17 May 2008 12:44:21 +0200
+
+apport (0.109) intrepid; urgency=low
+
+ [ Martin Pitt ]
+ * debian/local/setup-apport-retracer: Update for some changes in Hardy.
+
+ [ Loic Minier ]
+ * apport/report.py, add_proc_info(): also strip pathnames starting with
+ 'cow', 'squashmnt', and 'persistmnt' to allow apport to locate the
+ executable pathname, additionally to 'rofs' added in 0.75. This fixes
+ apport for packages installed on the read-write part of the unionfs mounts
+ and under UME which uses different names for the mount points. Proper fix
+ is to rewrite the pathnames in the kernel. (LP: #224168)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 23 Apr 2008 14:30:03 +0200
+
+apport (0.108) hardy; urgency=low
+
+ [ Martin Pitt ]
+ * apport-{gtk,qt,cli}: Fix handling of file references added by package
+ hooks. (LP: #205163)
+ * backends/packaging_rpm.py: Fix dependency resolution of uname(*) in the
+ RPM backend. Thanks to Patryk Zawadzki! (LP: #213018)
+ * backends/packaging_rpm.py: Fix RPM platform parsing, thanks to Patryk
+ Zawadzki! (LP: #213015)
+ * po/de.po: Fix typo (missing space).
+ * debian/apport.default: Disable Apport for the final Hardy release, since
+ it is less useful in stable releases, and drains a lot of CPU and I/O
+ power on crashes. Disabling it here instead of in update-notifier/adept is
+ more discoverable and more centralized.
+
+ [ Daniel Hahler ]
+ * bin/apport-retrace: catch the same exceptions from Report.load() like
+ ui.load_report() does (LP: #211899)
+ * Fix uncaught exceptions in apport itself (LP: #215929):
+ - apport/REThread.py: check if "sys" exists in the except block of
+ REThread.run()
+ - apport_python_hook.py: check if "sys" exists in the finally block of
+ apport_excepthook
+ * cli/apport-cli: Fix UnboundLocalError in ui_present_crash, which rendered
+ apport-cli useless (for reporting crashes) (LP: #216151)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 16 Apr 2008 12:24:32 +0200
+
+apport (0.107) hardy; urgency=low
+
+ * cli/apport-cli: Add translator comment for difficult string. (LP: #210948)
+ * Update German translations.
+ * po/Make{vars,file}: Remove the --language=python option again, since it
+ breaks extracting strings from the glade. intltool-update currently does
+ not seem to have a way to tag a file as "language python", so add an ugly
+ workaround: Create temporary .py symlinks for gtk/apport-gtk & friends,
+ and have intltool extract them.
+ * apport/ui.py: Disallow filing a bug without specifying a package or a PID.
+ Update debian/local/ubuntu-bug.1 accordingly (apport-cli manpage was
+ already correct). (LP: #210348)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sun, 06 Apr 2008 11:44:38 -0600
+
+apport (0.106) hardy; urgency=low
+
+ [ Martin Pitt ]
+ * apport/crashdb_impl/launchpad.py: Fix spelling mistake in p-lp-bugs API
+ (now corrected there).
+ * apport_python_hook.py: Catch IndexError for invalid sys.argv[0], too.
+ (LP: #204940)
+ * apport/ui.py: Add test_run_report_bug_unpackaged_pid() test case which
+ reports a bug against a pid which belongs to an unpackaged program. This
+ reproduces LP #203764.
+ * apport/report.py: Drop add_hooks_info() assertion on nonexisting Package
+ field, return silently instead. This conforms to the behaviour of the
+ other add_*_info() functions and avoids nasty error handling.
+ * apport/ui.py: Generate proper error message when calling with -f -p PID
+ and PID belongs to an unpackaged program. (LP: #203764).
+
+ [ Sebastien Bacher ]
+ * po/Makevars: add the --language=python xgettext option so the translations
+ template is correctly updated on build since cdbs is using intltool-update
+ directly and not the corresponding makefile target
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 01 Apr 2008 16:02:46 +0200
+
+apport (0.105) hardy; urgency=low
+
+ * apport/crashdb_impl/launchpad.py: Ignore ValueErrors when subscribing a
+ team, since these are usually due to the team already being subscribed.
+ * apport/report.py, anonymize(): Be robust against empty user names and only
+ anonymize fields which can potentially contain user specific data.
+ (LP: #195706)
+ * backends/packaging-apt-dpkg.py, get_architecture(): Return 'unknown'
+ instead of None if package architecture cannot be determined.
+ (LP: #198548)
+ * apport/ui.py, run_crash(): Intercept other IOErrors, too (such as EISDIR)
+ and print out proper error message instead of crashing. (LP: #201819)
+ * apport_python_hook.py: If the Python script has mutilated sys.argv so that
+ even sys.argv[0] does not exist any more, fall back into readlink()ing
+ /proc/pid/exe and gracefully handle the failure of that, instead of
+ crashing in the crash handler (ugh). Add test case. (LP: #198183)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 18 Mar 2008 23:04:57 +0100
+
+apport (0.104) hardy; urgency=low
+
+ [ Martin Pitt ]
+ * apport/crashdb_impl/launchpad.py, get_source_version(): re-escape the
+ package name so that it doesn't stumble over '+' and similar characters.
+ * apport/ui.py tests: assert that ProcEnviron is also included into bug
+ reports where we do not have a PID, since having the local information is
+ interesting and important (and acceptable in terms of personal
+ information).
+ * apport/report.py: Split out method add_proc_environ() for getting
+ ProcEnviron, so that we can call it separately.
+ * apport/ui.py, run_report_bug(): Add ProcEnviron if we do not have a pid to
+ file a bug against. This way, bugs filed against packages or distro also
+ get locale information. (LP: #198514)
+ * apport/fileutils.py, mark_report_seen(): Do not crash if the file does not
+ exist any more, because it was removed underneath us. (LP: #199932)
+ * apport/ui.py, test_collect_info_exepath(): Add a tuple argument and a
+ CompressedValue to the test report. This reproduces LP #199349.
+ * apport/report.py, anonymize(): Only work on string values. (LP: #199349)
+ * apport/ui.py: If a report has a field "Ignore", entirely ignore the report
+ without even presenting an explanatory error dialog (as
+ "UnsupportableReason" does). Document this in doc/package-hooks.txt.
+ (LP: #198863)
+ * debian/control: Bump Standards-Version (no changes necessary).
+ * debian/control: Fix wrongly spelt project names (Python and GTK+). Thanks
+ to lintian's scrutiny.
+ * gtk/apport-gtk-mime.desktop.in, qt4/apport-qt-mime.desktop.in: Add a main
+ category.
+
+ [ Kees Cook ]
+ * apport/report.py: fix module license checking logic (LP: #199927).
+ - nonfree_modules: being unable to find a module should not mean the
+ module is non-free.
+ - test_module_license_evaluation: check modinfo reporting.
+ * problem_report.py: Skip atime test case if file system is mounted noatime.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 13 Mar 2008 14:01:30 +0100
+
+apport (0.103) hardy; urgency=low
+
+ * bin/apport-unpack: Print error messages instead of crashing for problems
+ like nonexisting file names passed as arguments. (LP: #185273)
+ * backends/packaging-apt-dpkg.py, is_distro_package(): Explicitly check site
+ for "ppa", so that we do not automatically file bugs for PPA packages.
+ This works around Soyuz bug LP #140412 for the time being.
+ * apport/report.py: Add standard_title() test cases for Python crashes with
+ a custom message, and a custom message with newlines. The latter
+ reproduces LP #190947.
+ * apport/report.py, standard_title(): Do not rely on a fixed position of the
+ topmost function; use iteration and regular expression matching instead.
+ (LP: #190947)
+ * apport/ui.py, parse_argv(): Specify that --pid/-P argument must be an
+ integer, to avoid exceptions when it's not. (LP: #193494)
+ * apport/report.py: Use uname -srm, not -a, to hide the hostname. (part of
+ LP #192786); also use os.uname() instead of calling the system program.
+ * problem_report.py(): Make write() work for reports with CompressedValues.
+ Add test case.
+ * apport/ui.py: Add test case test_run_crash_anonymity() which asserts that
+ the crash dump does not contain strings which can identify the user, such
+ as the user name, login name, host name, and current directory.
+ * apport/report.py: Add method anonymize() which replaces user specific
+ strings with generic ones.
+ * apport/ui.py, thread_collect_info(): Call anonymize() on the report.
+ (LP: #192786)
+ * bin/apport-retrace: Only update a bug report with new attachments if it is
+ not a duplicate. (LP: #172792)
+ * bin/apport-retrace: Print out proper error message instead of an exception
+ if trying to do write operations to the bug tracker without specifying
+ a cookie file. (LP: #146423)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 25 Feb 2008 17:47:13 +0100
+
+apport (0.102) hardy; urgency=low
+
+ [ Martin Pitt ]
+ * problem_report.py: Support reading reports with legacy zlib
+ compression in 'retain compressed values' mode (as used nowadays by
+ apport when reporting a crash). Add a test case, too. (LP: #129616)
+ * debian/control, debian/rules: Switch from python-support to
+ python-central, and use 'nomove' option so that apport works during
+ upgrades, too. (LP: #121341)
+ * debian/rules: Use dh_icons instead of dh_iconcache.
+ * debian/apport.init: Do not stop apport in any runlevel (LSB header).
+ * apport/ui.py, run_crash(): Catch zlib.error on invalidly compressed core
+ dumps. (LP: #176977)
+ * apport/ui.py: Give a meaningful error message instead of crashing if the
+ package for a crash report is not installed any more. (LP: #149739)
+ * apport/ui.py: Do not include ProcCmdline in bug reports, since these are
+ not ack'ed by the user and might contain sensitive data. (LP: #132800)
+ * apport/ui.py: Add various test cases for crash reports whose packages have
+ been uninstalled between the crash and the report. This reproduces
+ LP #186684.
+ * apport/ui.py, load_report(): Produce proper error message if
+ executable/interpreter path do not exist any more. (LP: #186684)
+ * cli/apport-cli: Intercept SIGPIPE when calling sensible-pager, to avoid
+ crash when quitting it prematurely. (LP: #153872)
+ * bin/apport-checkreports: Print out a list of program names/packages which
+ have a pending crash report. (LP: #145117)
+ * apport/ui.py, run_argv(): Add return code which indicates whether any
+ report has been processed.
+ * cli/apport-cli: If no pending crash reports are present, say so and refer
+ to --help. (LP: #182985)
+ * apport/ui.py: Waive check for obsolete packages if environment defines
+ $APPORT_IGNORE_OBSOLETE_PACKAGES. Document this in the apport-cli manpage.
+ (LP: #148064)
+
+ [ Daniel Hahler ]
+ * .crash file integration for KDE3 (LP: #177055)
+ - debian/apport-qt.install: install added files qt4/apport-qt-mime.desktop
+ and qt4/apport-qt-mimelnk.desktop
+ * Fixed minor warnings/errors from desktop-file-validate in
+ gtk/apport-gtk-mime.desktop.in and qt4/apport-qt.desktop.in (LP: #146957)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 06 Feb 2008 12:55:53 +0100
+
+apport (0.101) hardy; urgency=low
+
+ * debian/control: Add python-xdg dependency to apport, since apport-cli
+ needs it. (LP: #177095)
+ * apport/ui.py: Add test case for reporting a report which has been
+ preprocessed by apport-retrace, i. e. has a stack trace, but no core dump
+ any more (reproducing LP #185084).
+ * apport/ui.py, run_crash(): Do not reject reports which have a stack trace,
+ but no core dump. (LP: #185084)
+ * apport/report.py: Fix test_add_gdb_info_load() test case, the temporary
+ executable was already deleted when gdb ran the second time.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 23 Jan 2008 17:48:06 +0000
+
+apport (0.100) hardy; urgency=low
+
+ * bin/crash-digger: Add option --log for logging to a file, and
+ --pidfile/--stop for daemonization. Add test cases to test-crash-digger.
+ * bin/apport: Do not re-raise exceptions about failure to create the lock
+ file, to avoid crashing in the case that another apport instance tries to
+ lock at exactly the same moment. (LP: #147237)
+ * apport/report.py testsuite: Check that our methods get along with binary
+ data which turn into CompressedValue objects after loading them from a
+ file. This reproduces LP #148305.
+ * problem_report.py, CompressedValue: Add method splitlines() since we need
+ it very often. Add test case to test_compressed_values(). (LP: #148305)
+ * problem_report.py: Add test case to check that update() works and does the
+ right thing with binary values and overwriting. This confirms that
+ importing a dictionary works.
+ * debian/local/setup-apport-retracer: Update for hardy.
+ * apport/crashdb_impl/launchpad.py: get_source_info() does not work any more
+ due to HTML changes in Launchpad, and not showing the component any more
+ on /distro/+source/package. Since we do not actually need component and
+ release name any more, rename it to get_source_version(), fix the regular
+ expression to just get the version, and adapt get_fixed_version()
+ accordingly.
+ * debian/local/setup-apport-retracer: Update default apt sources to
+ http://ddebs.ubuntu.com.
+ * apport/ui.py: Robostify cleanup of forked test processes.
+ * apport/ui.py: Sleep for 0.5 seconds after creating the test process in the
+ test suite to give /proc some time to settle down.
+ * bin/apport: Drop evaluation of CORE_* environment variables and mandate
+ calling with <pid> <signal> <core ulimit>. Drop the now obsolete
+ apport/elfcore.py. Adapt test-apport accordingly.
+ * debian/apport.init, use-local: Now call apport with %p, %s, and %c kernel
+ macros (since 2.6.24). Drop Edgy support from init script.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 21 Dec 2007 02:18:48 +0100
+
+apport (0.99) hardy; urgency=low
+
+ * cli/apport-cli, qt4/apport-qt: Fix typo 'send' -> 'sent'.
+ (LP: #139288)
+ * apport_python_hook.py: Add user info, too. Also add check for this to the
+ test suite. (LP: #145109)
+ * apport/ui.py, run_crash(): Show a proper UI error message instead of just
+ crashing with an exception if the crash report is inaccessible for the
+ invoking user. (LP: #146464)
+ * apport/crashdb_impl/memory.py: Implement mark_retraced(),
+ get_unretraced(), and get_dup_unchecked() for completeness, and define
+ _MemoryCrashDBTest also when not running file as __main__. This makes the
+ class useful for higher-level test suites. Add test cases for the new
+ functions.
+ * apport/crashdb_impl/memory.py: Support 'dummy_data' option which adds a
+ few dummy crashes by default. This is useful for external test suites
+ which cannot otherwise pre-fill the in-memory db. Add checks that this
+ works properly.
+ * bin/crash-digger: Use self.log() more consistently, and flush stdout in
+ log(), so that we do not lose logs on output redirection.
+ * Add test-crash-digger: Initial test suite for bin/crash-digger.
+ * apport/ui.py, run_crash(): Intercept CRC errors from the info collection
+ thread, which happens on broken core dumps. (LP: #132212)
+ * cli/apport-cli, ui_present_package_error(): Fix running of dialog, so that
+ reporting package problems with apport-cli actually works. (LP: #136369)
+ * apport/ui.py, run_crash(): Intercept ENOSPC and present a proper error
+ message. (LP: #145100)
+ * gtk/apport-gtk.glade: Fix title of upload progress window to comply to
+ HIG. Thanks, Bruce Cowan. (LP: #144782)
+ * qt4/apport-qt: Fix Unicode <-> UTF-8 conversion. Thanks, Daniel Hahler!
+ (LP: #148177)
+ * apport/ui.py: Only import xdg.DesktopEntry when a .desktop file has been
+ found in the affected package. This avoids the dependency on servers with
+ just apport-cli. Thanks, Matthias Gug! (LP: #130013)
+ * apport/fileutils.py: Do not fail if there are no packages installed which
+ have one or several .desktop files. Thanks, Matthias Gug!
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sun, 28 Oct 2007 18:32:07 -0400
+
+apport (0.98) gutsy; urgency=low
+
+ [ Martin Pitt ]
+ * debian/local/setup-apport-retracer: launchpadBugs -> launchpadbugs
+ (recently renamed Python package in python-launchpad-bugs).
+ * apport/crashdb_impl/launchpad.py, test examples: Do not duplicate to bug
+ #1, that generates a huge amount of spam. Use another test bug.
+ * apport/crashdb_impl/launchpad.py, download(): Use Bug.description_raw,
+ since LP mangles spaces in .description. Bump p-lp-bugs dependency.
+ * apport/crashdb_impl/launchpad.py, close_duplicate(): Explicitly set the
+ duplicate after removing attachments, since the new LP does not allow any
+ modification of duplicate bugs.
+ * bin/crash-digger: Only consolidate the duplicate DB when -i is given (i.
+ e. usually only on one running instance).
+
+ [ Colin Watson ]
+ * Use bugs.launchpad.net for +filebug and +bugs requests. (LP: #138090)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 01 Oct 2007 14:35:07 +0200
+
+apport (0.97) gutsy; urgency=low
+
+ [Martin Pitt]
+ * problem_report.py: Coerce CompressedValue.__len__() to return an int to
+ work on Python 2.4, too.
+ * debian/local/setup-apport-retracer: Adapt ddeb apt source for the move
+ from ~pitti to ~ubuntu-archive.
+
+ [Markus Korn]
+ * port to new python-launchpad-bugs API.
+
+ [Daniel Holbach]
+ * small fixes to the port.
+ * debian/control: bumped python-launchpad-bugs Depends to >= 0.2.2.
+
+ -- Daniel Holbach <daniel.holbach@xxxxxxxxxx> Tue, 04 Sep 2007 11:24:28 +0200
+
+apport (0.96) gutsy; urgency=low
+
+ * Create man pages for apport-cli, apport-chroot, and dupdb-admin.
+ * apport/fileutils.py, find_file_package(): Try to resolve symlinks in the
+ directory path. (LP: #125551)
+ * apport/crashdb_impl/launchpad.py, debian/local/setup-apport-retracer: Use
+ packaging.get_system_architecture() (which is dpkg --print-architecture on
+ Debian/Ubuntu) instead of uname, so that this does the right thing on lpia.
+ * problem_report.py, write_mime(): Use base64 encoding for gzipped
+ attachments, to not screw up mail servers. Thanks to Tim Yamin for this
+ patch!
+ * apport/crashdb.py: Drop the last argument (-1), since it is the default
+ anyway and did not yet exist on Python 2.4.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 21 Aug 2007 14:11:48 +0200
+
+apport (0.95) gutsy; urgency=low
+
+ * general-hooks/automatix.py: Remove hashbang, it's not an executable
+ script.
+ * apport/report.py: Support system-wide blacklisting:
+ /etc/apport/blacklist.d/. Add test cases.
+ * Add doc/README.blacklist: Document blacklist.d/, install it there in
+ setup.py.
+ * debian/rules: Blacklist wine-preloader, so that we ignore wine crashes
+ until an appropriate way is found to deal with them. (Point 6 of
+ apport-better-retracing spec.)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 11 Aug 2007 18:10:54 +0200
+
+apport (0.94) gutsy; urgency=low
+
+ * doc/data-format.tex: Some updates to incorporate feedback from Gnome
+ upstream:
+ - Do not talk about "Distributions" any more, but "Operating systems".
+ Gnome is used on non-Linux OSs, too.
+ - Split "DistroRelease:" field into "OS:" and "OSRelease:".
+ - Explicitly mention that CoreDump, StackTrace etc. can also contain
+ minidump output.
+ - Increase document version to 0.2.
+ * apport/report.py, obsolete_packages(): Fix crash when apt does not know an
+ available version of a package. (LP: #128176)
+ * test-apport: Add check that apport aborts immediately if another apport
+ instance is already running. Also test that a symlink attack on the lock
+ file is not possible.
+ * bin/apport: Abort running several apport instances at the same time, by
+ lockf()'ing /var/crashes/.lock and aborting on failure. (LP: #119622)
+ * Add bin/gcc_ice_hook: Script to create an apport report for a gcc ICE
+ (internal compiler exception). Add test cases to test-hooks, and ship it
+ in the 'apport' package. (LP: #125551)
+ * run-tests: In 'local' mode, only explicitly run the apt/dpkg
+ implementation instead of backends/*, since the RPM ones don't have tests
+ yet.
+ * apport/crashdb.py: Add a second optional parameter to upload() to specify
+ an upload progress callback function. Adapt the declarations in the
+ Launchpad and Memory implementations, too.
+ * apport/crashdb_impl/launchpad.py, upload(): Pass upload progress callback
+ handler to launchpadBugs.storeblob.upload(), which supports this since
+ version 0.2~39. Bump dependency to it accordingly.
+ * apport/ui.py, file_report(): Define an upload progress callback handler,
+ pass it to the crashdb upload(), and feed ui_set_upload_progress() with
+ some actual data. (LP: #91521)
+ * problem_report.py: Remove support for reading bz2 compressed binary data.
+ That was only relevant during edgy's development cycle.
+ * apport/report.py, test_add_proc_info(): Fix determination of /bin/zgrep
+ interpreter.
+ * problem_report.py: Switch encoding of binary values from bare zlib to
+ proper gzip format, since this is much more useful when reusing the
+ compressed value. Retain support for zlib-only reports. Add test cases for
+ both old and new encodings, and adapt the other test cases for the new
+ format. Update doc/data-format.tex accordingly.
+ * problem_report.py, write(): Add new permitted 'binary' argument value
+ 'compressed', which retains gzip compressed binary values instead of
+ unpacking them transparently. Add test cases.
+ * problem_report, write_mime(): Eliminate unnecessary usage of StringIO.
+ * problem_report, write_mime(): Make function work for compressed binary
+ values. Add test case.
+ * apport/report.py, add_gdb_info(): Make function work if CoreDump is a
+ compressed value.
+ * apport/ui.py: Load crash report with keeping compressed binaries. This
+ avoids loading the entire uncompressed core dump into memory, and avoids
+ recompressing it all over again for generating the crash database upload
+ MIME document. This greatly speeds up crash reporting, too. (LP: #98562)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 31 Jul 2007 21:32:00 +0200
+
+apport (0.93) gutsy; urgency=low
+
+ * apport/crashdb.py: Set sqlite connect timeout to two hours, instead of the
+ default 5 seconds. Previously, one retracer always crashed when the other
+ was consolidating the database.
+ * bin/dupdb-admin, command_dump(): Correctly interpret empty version strings
+ as 'fixed in unknown verrsion', not 'unfixed'.
+ * apport/crashdb_impl/launchpad.py: Fix typo in bug comment string.
+ * apport/crashdb_impl/launchpad.py: Add function get_source_info() which
+ parses out release, version, and component from
+ https://launchpad.net/$DISTRO/+source/$PACKAGE.
+ * apport/crashdb_impl/launchpad.py, get_fixed_version(): If a bug is fixed,
+ return the current version (as approximation of the version where the bug
+ was fixed), instead of an empty string (which meant 'fixed in unknown
+ version'). [apport-crash-duplicates spec]
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 25 Jul 2007 17:04:27 +0200
+
+apport (0.92) gutsy; urgency=low
+
+ * bin/crash-digger: Do not crash if duplicate db is locked when attempting
+ to consolidate it. This happens often because in the DC we have two
+ parallel instances (for amd64 and i386).
+ * Move ubuntu-fat-chroot from bin/ to debian/local/, since it is so heavily
+ Ubuntu specific.
+ * debian/local/ubuntu-fat-chroot: Use diversions for the binaries we want to
+ disable, so that chroot upgrades do not trash the modifications.
+ * debian/local/setup-apport-retracer: launchpad-crash-digger ->
+ crash-digger.
+ * bin/crash-digger: Add option -i/--arch-indep-dupcheck to explicitly enable
+ duplicate checking of arch-independent crashes like Python exceptions. We
+ only want to process them on one architecture to avoid scattering the
+ duplicate database.
+ * apport/crashdb_impl/launchpad.py, get_unfixed(): Search for 'apport-crash'
+ tag, not 'apport'.
+ * bin/apport-unpack: Fix format string in error message.
+ * apport/ui.py, __init__(): Intercept ImportError, which can happen for
+ crashes during system upgrades. (LP: #124354)
+ * Add general-hooks/automatix.py: Refuse to send problem reports if
+ automatix is installed.
+ * doc/package-hooks.txt: Do not document UnsupportableReason, since it does
+ not make sense to set it in package hooks (it is checked before calling
+ the hooks). Hooks should use UnreportableReason only.
+ * apport/ui.py, test_run_crash_package(): Check that 'Package' problem
+ reports collect additional information, too.
+ * apport/ui.py, collect_info(): Collect additional information for 'Package'
+ problem reports, too.
+ * Revive preloadlib/:
+ - Remove PIPE_CORE #ifdefs and make them the default. We do not need to
+ support the Edgy kernel patches in this version any more.
+ - Install signal handler for SIGABRT, too.
+ - Read core ulimit, pass it to apport in CORE_REAL_RLIM, and set it to
+ zero for the program, since we do not actually want the kernel to write
+ core files when we pipe the core dump to apport.
+ - test-apport: Pass APPORT_REPORT_DIR to the manually called apport
+ instance in the memory clipping test; otherwise it'll write into
+ /var/crash/, which we do not consider in library mode.
+ * apport/crashdb_impl/launchpad.py, __init__(): Only do the "download bug
+ #2" hack if we actually have an authentication cookie. Thus, do it only on
+ the retracing servers, not on the client side. (LP: #125142)
+ * apport/report.py, crash_signature(): Generate a signature for one-line
+ Python tracebacks, too. This sometimes seems to happen, e. g. LP#124588.
+ (LP: #125020)
+ * apport/crashdb_impl/launchpad.py, update(): Set bug importance to Medium
+ if retracing was successful. (LP: #106379)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 24 Jul 2007 21:50:34 +0200
+
+apport (0.91) gutsy; urgency=low
+
+ * bin/apport: Remove code that supported the Edgy kernel way of core dump
+ passing. Also factorize the CORE_REAL_RLIM evaluation, since it is likely
+ to change in the near future.
+ * apport/crashdb_impl/launchpad.py, close_duplicate(): Delete some
+ attachments, as specified in apport-crash-duplicates spec, and make the
+ bug public afterwards.
+ * apport/crashdb_impl/launchpad.py, close_duplicate(): If the master bug is
+ already duped to yet another bug, mark the bug to that one instead of the
+ master.
+ * apport/crashdb.py: Split out duplicate_db_last_consolidation() for getting
+ the date (or seconds since) the last consolidation, so that we can use it
+ externally.
+ * apport/crashdb.py: Add duplicate_db_change_master_id() to change the
+ master ID of a crash. Add test case to apport/crashdb_impl/memory.py.
+ * Add bin/dupdb-admin: Initial version of duplicate db CLI app; can dump the
+ db, display consolidation state, and change master bug IDs for now. Ship
+ it in apport-retrace.
+ * apport/crashdb.py, duplicate_db_last_consolidation(): Fix timedelta
+ seconds calculation to actually take the days into account, too.
+ * bin/crash-digger: Fix dumping of dup db after consolidation.
+ * apport/ui.py:
+ - test_run_report_bug_package(): Add test case for calling the UI in bug
+ filing mode with an invalid package name.
+ - run_report_bug(): Do not crash on invalid package name, generate an
+ error message instead. (LP: #123644)
+ * apport/fileutils.py, mark_report_seen(): Do not crash if the file has
+ already been deleted underneath us. (LP: #122347)
+ * apport/ui.py, run_report_bug(): Do not crash if the target process runs as
+ a different user. Print a proper error message instead. Add test case
+ test_run_report_bug_noperm_pid(). (LP: #121121)
+ * apport/fileutils.py, likely_packaged(): Ignore /var/lib/schroot. Add test
+ case. (LP: #122859)
+ * apport/ui.py, open_url(): Intercept weird race condition for os.close()
+ trying to close an already invalidated fd. (LP: #123180)
+
+ Merge the fedora branch, thanks to Will Woods <wwoods@xxxxxxxxxx>:
+
+ * Add apport.init.fedora: Fedora specific init script.
+ * Add apport.spec: RPM build recipe.
+ * Add backends/packaging_rpm.py: Partial implementation of the packaging
+ backend for RPM which applies to all RPM-based distros.
+ * Add backends/packaging_fedora.py: Concrete packaging backend
+ implementation for Fedora.
+ * apport/elfcore.py: Classes for parsing general ELF files, and information
+ from core dumps.
+ * bin/apport: Fall back to reading signal number and PID directly from the
+ core file (via elfcore.py) if CORE_SIGNAL and CORE_PID are not defined (i.
+ e. when running on a non-Ubuntu kernel).
+ * crashdb.conf: Add stanzas for Fedora and a 'debug' database which uses the
+ 'memory' crashdb implementation.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 14 Jul 2007 15:08:35 +0200
+
+apport (0.90) gutsy; urgency=low
+
+ * apport/ui.py, load_report(): Catch IOError, too. LP: #118827
+ * Merge apport-cli package into apport itself. The program itself is just 3
+ kB compressed, and it's not worth wasting another 34 kB compressed
+ changelog for this tiny bit.
+ * apport/report.py, obsolete_packages(): Use the version comparison from the
+ packaging system instead of just testing for inequality. This catches zero
+ epochs. Thanks to Will Woods <wwoods@xxxxxxxxxx>!
+ * apport/ui.py: Add option -c/--crash-file to run the UI with a particular
+ crash file (which can be anywhere) instead of all pending crashes in
+ /var/crash/.
+ * Add xdg-mime/apport.xml: XDG MIME type definition for .crash files.
+ * Add gtk/apport-gtk-mime.desktop.in: Link text/x-apport MIME type to
+ apport-gtk -c, so that .crash files can be reported with Gnome.
+ * Add debian/apport.links: Install an icon symlink for the MIME type.
+ * apport/ui.py: Do not ask the initial "Do you want to report this?"
+ question when being invoked with --crash-file.
+ * po/POTFILES.in: Add missing cli/apport-cli.
+ * po/de.po: Updated for apport-cli.
+ * cli/apport-cli: Add option for keeping the report file without sending it,
+ and to display its path. This is for sending the report later, copying
+ it from a server to a workstation with internet connection, etc.
+ * apport/crashdb_impl/launchpad.py: Simplify _subscribe_triaging_team(), now
+ that we do not differ between main and universe policies any more.
+ * apport/report.py: Support another hook directory
+ /usr/share/apport/general-hooks/ for scripts which are run for every
+ problem report. This was requested for adding e. g. AppArmor logs, etc.
+ Add test cases.
+ * Add debian/apport.dirs again to ship that hook directory.
+ * doc/package-hooks.txt: Document the general hooks.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 10 Jul 2007 21:10:19 +0100
+
+apport (0.89) gutsy; urgency=low
+
+ Implement private crash bug handling, according to
+ https://wiki.ubuntu.com/CrashReporting:
+
+ * apport/crashdb_impl/launchpad.py:
+ - upload(): If we have an Ubuntu bug, mark it as private and only
+ subscribe 'apport' (the 'Apport retracing service' user).
+ - Add function _subscribe_triaging_team() which subscribes
+ ubuntu-crashes-main for source packages in Ubuntu main or restricted, or
+ ubuntu-crashes-universe for other packages. It does not touch non-Ubuntu
+ bugs, since these are not marked private by default and are outside of
+ the scope of this spec.
+ - update(), _mark_dup_checked(): Call _subscribe_triaging_team().
+ - Note: This entire spec is a gross hack, and Ubuntu derivatives do not
+ benefit from it at all. We have to live with this until LP grows a real
+ crash database.
+ - get_distro_release(): Make this function work with private bugs, too, by
+ using p-lp-bugs' safe_urlopen().
+
+ Bug fixes:
+
+ * apport/crashdb_impl/launchpad.py: Revert simplification change of 0.85:
+ BugList returns a set of strings, not integers; due to non-identity they
+ do not work with the usual set operations.
+ * apport/crashdb_impl/launchpad.py: Add function get_source_component() to
+ query Launchpad for the component of a given distribution and source
+ package. (This will be required for implementing crash-reporting).
+ * backends/packaging-apt-dpkg.py, _search_contents(): Package list is
+ actually comma separated, only take the first item. This fixes retracing
+ of e. g. #124139.
+ * backends/packaging-apt-dpkg.py, _search_contents(): Fix package name
+ parsing for non-main components. This fixes retracing of e. g. #124111.
+ * apport/report.py, _read_maps(): Revert ptrace hack when maps cannot be
+ read. maps file is now protected based on process ownership, not ptracing.
+ * apport/crashdb.py, apport/crashdb_impl/launchpad.py,
+ apport/crashdb_impl/memory.py: Remove official interface
+ mark_dup_checked(), as it should only be an internally used function. Add
+ report parameter, since we will need it there in the future. Remove
+ explicit call from bin/crash-digger and instead change check_duplicate()
+ to call it on its own.
+ * apport/crashdb_impl/launchpad.py, download(): Replace dodgy parsing of
+ fields from the description with proper code, so that multi-line fields
+ are read correctly, too.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 06 Jul 2007 11:19:22 +0200
+
+apport (0.88) gutsy; urgency=low
+
+ * po/de.po: Update.
+ * backends/packaging-apt-dpkg.py, _search_contents(): Do not check the
+ return value of zgrep. It usually errors out with 'stdout: broken pipe'
+ when called with -m1.
+ * bin/crash-digger: Mark a bug as retraced if DistroRelease: cannot be
+ determined. Those are bugs apport cannot handle.
+ * backends/packaging-apt-dpkg.py, get_source_tree(): Call apt-get source
+ with --assume-yes to not block on VCS confirmations.
+ * apport/crashdb.py: Add interface mark_retrace_failed(). Implement it in
+ apport/crashdb_impl/launchpad.py.
+ * bin/apport-retrace: If retraced report does not have a crash signature,
+ mark it as failed with above new function. Bump python-apport dependency
+ for this.
+ * apport/crashdb_impl/launchpad.py, update(): Delete CoreDump.gz attachment
+ if the retrace was successful (i. e. if the report has a crash signature).
+ * apport/ui.py, test_run_crash(): Set the message box title, text, and
+ severity as assertion message if the run_crash() test fails, so that you
+ know why it fails. This usually happens if libc6 or another dependency of
+ the test crash is out of date.
+ * gtk/apport-gtk.glade: Mark string as translatable. LP: #119621
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 03 Jul 2007 21:38:05 +0200
+
+apport (0.87) gutsy; urgency=low
+
+ * apport/report.py:
+ - test_gen_stacktrace_top(): Add test case for unwinding a Gnome assertion
+ (g_logv(), g_assert_warning() and similar), see LP #123462.
+ - _gen_stacktrace_top(): Generalize for unwinding multiple functions and a
+ set of function names, and add the Gnome assertion ones.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 02 Jul 2007 11:00:44 +0200
+
+apport (0.86) gutsy; urgency=low
+
+ * test-apport: Check that apport does not create reports for emtpy core
+ dumps.
+ * problem_report.py: Introduce a fourth optional parameter "fail_on_empty"
+ to file pointer tuples which causes write() to raise an IOError if no data
+ was read. Add test cases.
+ * bin/apport: Enforce non-emptyness of CoreDump.
+ * problem_report.py: Add test case for delayed piping of data passed as file
+ object pointers. This was supposed to explain the reason for getting bugs
+ with zero-byte core dumps, but already works correctly.
+ * apport/report.py, check_ignored(): round the mtime to an int (just like
+ mark_ignore() does), to not get wrong results on file systems that support
+ subsecond file timestamps. This fixes running the test suite on the live
+ CD.
+ * test-apport: Clarify assertion message if /var/crash is not empty.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 28 Jun 2007 19:14:36 +0200
+
+apport (0.85) gutsy; urgency=low
+
+ * apport/crashdb_impl/launchpad.py: BugList.bugs is already a set, simplify
+ code a bit.
+ * debian/control: Add dpkg-dev dependency to apport-retrace, for getting
+ dpkg-source.
+ * apport/report.py, crash_signature(): Allow ':' and '~' as part of function
+ names to cover C++. Adapt test case to cover this.
+ * apport/report.py test suite: Do not assume that /bin/zgrep uses /bin/sh,
+ it was recently changed to use bash. Directly read the interpreter from
+ the shebang line.
+ * bin/apport-chroot, command_upgrade(): Supply -y to 'apt-get upgrade' also
+ in verbose mode.
+ * bin/apport-chroot, command_upgrade(): Run 'apt-get clean' before
+ regenerating the chroot tarball.
+ * backends/packaging-apt-dpkg.py, get_dependencies(): Fix crash when
+ encountering a virtual package. LP: #122274
+ * apport/report.py, obsolete_packages(): Do not consider virtual packages as
+ obsolete.
+ * apport/crashdb_impl/launchpad.py: Do a bogus call to Bug() in the ctor.
+ This initializes python-launchpad-bugs to use a cookie for the urlopen in
+ BugList, so that get_unretraced() and get_dup_unchecked() return private
+ bugs, too. This works around LP #122126.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 25 Jun 2007 16:38:43 +0200
+
+apport (0.84) gutsy; urgency=low
+
+ * apport/crashdb.py: Add new abstract methods:
+ - get_unretraced() and mark_retraced(id) to get a list of crashes that
+ need to be retraced and chalk them off.
+ - get_dup_unchecked() and mark_dup_checked() to get a list of crashes that
+ need to be checked for being a duplicate and chalk them off. This is
+ aimed at crashes which do not need retracing, such as unhandled Python
+ exceptions.
+ * apport/crashdb_impl/launchpad.py: Implement above methods for launchpad
+ (moving the code from bin/launchpad-crash-digger).
+ * apport/crashdb_impl/launchpad.py: Set "need-duplicate-check" tag for
+ Python crashes.
+ * apport/crashdb_impl/launchpad.py, download(): Fetch Traceback.txt, too, so
+ that we can do duplicate checking for Python crashes.
+ * bin/launchpad-crash-digger: Drop Launchpad specific code and replace it
+ with calls to above new functions. Rename to bin/crash-digger. Also rename
+ all 'cookie' to 'auth' (as happened with the other applications earlier).
+ * bin/crash-digger: Do duplicate checking for needs-duplicate-check crash
+ bugs (such as Python crashes).
+ * bin/apport-retrace, bin/crash-digger: More language cleanup; we should
+ stop talking about 'bugs' and use 'crash' consistently.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 14 Jun 2007 19:50:24 +0200
+
+apport (0.83) gutsy; urgency=low
+
+ * apport/crashdb.py: Separate abstract from implemented functions.
+ * apport/crashdb.py, apport/packaging.py, apport/ui.py: Use
+ NotImplementedError instead of Exception in the abstract methods.
+ * apport/packaging.py: Add interface compare_versions() for comparing
+ package version numbers.
+ * backends/packaging-apt-dpkg.py: Implement compare_versions() using
+ apt.VersionCompare(), add some test cases.
+ * apport/report.py: Fix typo: 'none' -> 'None'.
+ * apport/chroot.py: Do not include /usr/local/lib and /usr/lib in
+ LD_LIBRARY_PATH, just /lib, so that we still use the libc from outside,
+ but e. g. libxml2 from inside the chroot.
+
+ https://blueprints.launchpad.net/ubuntu/+spec/apport-crash-duplicates: Merge
+ crash-dups branch, which implements automatic crash duplicate detection:
+
+ * apport/crashdb.py: Add methods for crash duplicate detection.
+ * apport/crashdb_impl/memory.py: Change internal data management to track
+ fixed version and duplicates.
+ * apport/crashdb_impl/memory.py: Add a test suite for all methods, including
+ the duplicate detection API of the base CrashDatabase (since it is
+ much easier to test it here, on an actual implementation).
+ * debian/pyversions: Bump minimal Python version to 2.5, since this starts
+ providing the sqlite3 module.
+ * apport/crashdb_impl/launchpad.py: Implement new methods required for crash
+ duplicate detection. get_fixed_version() does not approximate version
+ tracking yet; it just returns '' for fixed bugs (which means 'fixed, but
+ unknown version'). Bump python-launchpad-bugs dependency for this to
+ ensure the availability of Bug.mark_duplicate().
+ * bin/apport-retrace: Add option --duplicate-db which specifies the path to
+ the duplicate sqlite database and enables duplicate detection.
+ * Abin/apport-chroot: Add option --duplicate-db. If a file is given, symlink
+ it into the chroot and pass --duplicate-db to apport-retrace.
+ * bin/launchpad-crash-digger: Add --duplicate-db and pass it to
+ apport-chroot.
+ * apport/crashdb.py: Track last run of duplicate_db_consolidate() in an
+ extra table and add a method duplicate_db_needs_consolidation() which
+ returns True if the last run was more than a given number of seconds ago.
+ Add test cases to apport/crashdb_impl/memory.py.
+ * bin/launchpad-crash-digger, fill_pool(): Check whether the duplicate
+ database needs consolidation (i. e. updating the bug states to the reality
+ in the bug tracker) and if so, trigger it.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 13 Jun 2007 13:09:57 +0200
+
+apport (0.82) gutsy; urgency=low
+
+ * Add bin/ubuntu-fat-chroot: Script to install a set of commonly needed
+ packages into a minimal Ubuntu chroot (as created by apport-chroot). This
+ requires some hacking of postinst and /usr/sbin/ files in between the
+ installation stages and thus deserves a script on its own.
+ * apport/packaging.py:
+ - Add "uninstalled" option to get_file_package(). If set to True, this
+ will do an expensive search of files/packages which are not installed.
+ - Add interface "set_mirror(URL)" for functions which need to retrieve
+ packages and data from distribution mirrors.
+ * backends/packaging-apt-dpkg.py: Implement "uninstalled" option and
+ "set_mirror(URL)", add test cases.
+ * bin/apport-retrace: Use "uninstalled" option now to install packages and
+ corresponding -dbgsyms for uninstalled files mentioned in ProcMaps
+ (Point 1 of apport-better-retracing spec). Bump python-apport dependency.
+ * apport/packaging.py: Add interface get_available_version(package).
+ * backends/packaging-apt-dpkg.py: Implement get_available_version(), add
+ shallow test case.
+ * apport/report.py: Add function obsolete_packages() to return packages in
+ Package: and Depends: which are not up to date. Add test cases.
+ * apport/ui.py, thread_collect_info(): For crashes, call obsolete_packages()
+ and set UnreportableReason: if there are any (Point 2 of
+ apport-better-retracing spec).
+ * apport/ui.py, thread_collect_info(): call standard_title() and add it to
+ the report as 'Title' field. This is useful if reporters modify the
+ default title (per request of Brian Murray, thanks). Add test case.
+ * apport/ui.py: Fix declaration of the test suite's
+ ui_set_upload_progress(). Funny that this has never been triggered before.
+ * apport/report.py, add_gdb_info(): Split out StacktraceTop generation into
+ separate funtion _gen_stacktrace_top(), so that we can test it separately.
+ * apport/report.py, _gen_stacktrace_top(): Step back from the crashed
+ program's own signal handlers, since those are generally not useful for
+ the purposes of StacktraceTop and only impede duplicate matching
+ (Point 4 of apport-better-retracing spec). Add various test cases.
+ * apport/report.py: Add method crash_signature() to calculate an unique
+ identifier of a signal or Python crash, to be used for duplicate
+ detection. Add various test cases.
+ * apport/packaging.py: Add interface get_source_tree() to fetch and unpack a
+ source package to a given directory, optionally specifying a particular
+ version.
+ * backends/packaging-apt-dpkg.py: Implement get_source_tree(). This has a
+ rather crude 'call apt-get source and guess about directories'
+ implementation until python-apt learns about doing this directly and more
+ elegantly (see LP #118788).
+ * bin/apport-retrace: Add gen_source_stacktrace() and a few helper functions
+ to construct a field 'StacktraceSource' with the source code around the
+ affected lines in the stack trace (as available). (Point 5 of
+ apport-better-retracing spec).
+ * apport/crashdb_impl/launchpad.py, update(): Attach StacktraceSource to the
+ bug if it exists.
+ * apport/crashdb_impl/launchpad.py: Check PackageArchitecture for 'all', to
+ not set a retracer tag 'need-all-retrace'.
+ * test-apport: Clarify assertion failure message when an unexpected core
+ dump is present.
+ * apport/report.py, get_module_license(): Do not iterate over Popen.stdout,
+ use communicate() instead. The latter is already fixed to not trip over
+ SIGINTR. (LP: #118965)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 08 Jun 2007 07:47:04 +0200
+
+apport (0.81) gutsy; urgency=low
+
+ * apport/report.py: Remove '[apport]' default bug title prefix. (LP: #94819)
+ * apport/crashdb_impl/launchpad.py: Tag new bugs with
+ 'apport-<problemtype>'. This replaces the former '[apport]' prefixing.
+ * debian/local/setup-apport-retracer: Specify a path in '.' command and
+ use sh again. Yay for me needing three attempts before actually RTFMing
+ how '.' works (which is really nasty and strange IMHO).
+ * bin/apport-chroot: Fix symlinks before repackaging the chroot tarball in
+ 'install' and 'installdeb' modes.
+ * debian/local/setup-apport-retracer: Install python-libxml2 and python-apt.
+ * bin/launchpad-crash-digger: Supply --auth instead of the deprecated
+ --cookie to apport-chroot.
+ * bin/apport-chroot: Fix identifier name in command_retrace().
+ * debian/local/setup-apport-retracer: Set APPORT_CRASHDB_CONF to the local
+ crashdb.conf.
+ * bin/apport-chroot: Unset APPORT_CRASHDB_CONF for login and retrace.
+ * bin/launchpad-crash-digger: Check the release of a bug and whether we have
+ a chroot for it before untagging it. This avoids loosing tags for bugs we
+ do not yet have a working retracer chroot for.
+ * bin/apport-retrace: Do not abort with an exception if package installation
+ fails. Give a proper error message instead and point to -u. (LP: #115681)
+ * apport/crashdb_impl/launchpad.py, update(): Create a temporary directory
+ and use proper file names for the new attachments. With TemporaryFile(),
+ attachment file names ended up as '<fdopen>'. (LP: #115347)
+ * apport/report.py, add_os_info(): Add field 'NonfreeKernelModules' which
+ lists loaded kernel modules which do not have a FOSS license. This is
+ particularly helpful for quickly checking for restricted graphics drivers.
+ (LP: #103239)
+ * apport_python_hook.py: Move the apport.* imports into the try: block and
+ move the likely_packaged() test to the top, to avoid importing
+ apport.report and creating a Report object for non-packaged scripts. This
+ makes the entire code more efficient and robust against errors in the
+ apport modules. (LP: #109955)
+ * apport/report.py, add_gdb_info(): Intercept OSError from gdb invocation
+ (which might be segfaulting itself) and just do not put any gdb output
+ into the report. The automatic retracers can try their luck again.
+ (LP: #112501)
+ * bin/apport-retrace: Fix handling of packages which are still known to
+ /var/lib/dpkg/status, but do not have an apt record any more; treat them
+ like virtual packages and just issue a warning instead of falling over.
+ (LP: #107474)
+ * Add doc/data-format.tex: Documentation of the structure, encoding, and
+ standard keys of the Apport report file format. [apport-for-upstreams
+ blueprint]
+ * Add doc/Makefile: Build and clean rules for generating data-format.pdf.
+ * debian/rules, setup.py: Call doc/Makefile and install the PDF
+ documentation. Add texlive-latex-recommended build dependency for that.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 24 May 2007 19:39:12 +0200
+
+apport (0.80) gutsy; urgency=low
+
+ Collect all Launchpad specific bits in a separate class and provide an
+ abstract base class. This will greatly help for getting upstream acceptance
+ and the possibility of automatically forwarding crashes upstream
+ (apport-for-upstreams specification):
+
+ * Add apport/crashdb.py: Abstract crash database interface. This also offers
+ a factory function get_crashdb() which reads a configuration file to find
+ the default crash database to be used.
+ * Add ./crashdb.conf: Crash database configuration file, for Ubuntu on
+ Launchpad. Modify setup.py and debian/python-apport.install to ship it in
+ python-apport.
+ * Add apport/crashdb_impl/memory.py: Simple in-memory implementation of
+ crash database interface for testing.
+ * Add apport/crashdb_impl/launchpad.py: Launchpad implementation of crash
+ database interface.
+ * apport/ui.py: Drop LP specific bits and move towards new CrashDatabase
+ interface.
+ * apport/ui.py, test suite: Do not overwrite file_report() any more, but
+ use the memory CrashDatabase. This will test the actual file_report()
+ implementation and allows the test suite to check the precise value of
+ opened URLs.
+ * apport/{report,ui}.py: Move UserInterface.create_crash_bug_title() and its
+ test cases to Report.standard_title(). It is much more appropriate there
+ and can be used in the retracer as well.
+ * bin/apport-retrace: Drop LP specific bits and move to CrashDatabase
+ interface. Remove the --remove-tag option, we really should not have it
+ here; remove it from man/apport-retrace.1 as well.
+ * bin/apport-chroot: Drop --remove-tag option here, too.
+ * bin/apport-chroot: Drop LP specific bits and move to CrashDatabase
+ interface.
+ * bin/launchpad-crash-digger: Remove retracing tag directly instead of
+ passing --remove-tag to apport-chroot. This is a much cleaner design and
+ avoids infinitely looping on some weirdly failing retraces.
+ * debian/control: Bump some python-apport dependencies for the API changes.
+
+ Some debranding:
+
+ * setup.py: Use apport wiki home page for 'url'.
+ * Remove 'X-Ubuntu-Gettext-Domain' from *.desktop.in, since langpack.mk will
+ add it automatically now.
+ * *.desktop.in: Remove 'in Ubuntu' from comment.
+ * cli/apport-cli, qt4/apport-qt: Generalize window titles.
+
+ Other fixes:
+ * po/de.po: Update.
+ * debian/local/setup-apport-retracer: Revert back 'source' to '.' and use
+ bash instead of sh. POSIX sh does not seem to have a 'source' command.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 21 May 2007 19:25:31 +0200
+
+apport (0.79) gutsy; urgency=low
+
+ * debian/local/setup-apport-retracer: Fix '.' bashism, replace it with
+ 'source'.
+ * problem_report.py, write_mime(): Drop preamble argument, replace it with
+ an extra_headers dictionary. This is much easier to evaluate on clients.
+ * apport/ui.py: Convert to new write_mime() interface from above. This
+ finally automatically tags bugs with need-$ARCH-retrace. Bump
+ p-problem-report dependency of python-apport for this.
+ * apport/report.py: Change example URLs in the testsuite from launchpad to
+ an artificial ones to avoid the impression that it is LP specific.
+ * backends/packaging-apt-dpkg.py: Formally make this a subclass of
+ apport.packaging.PackageInfo.
+ * debian/control: Use code.lp.net instead of bazaar.lp.net VCS URL.
+ * bin/kernel_hook: Fix/improve the collected information:
+ - Read /proc/modules instead of lsmod.
+ - Fix lspci argument: -n instead of -m.
+ - Add /proc/cmdline.
+ * debian/rules: Use langpack.mk for updating the .desktop files.
+ * Add po/Makevars to specify the domain, to make intltool figure out the
+ gettext domain automatically.
+ * bin/kernel_hook, ./test-hooks: Do not rely on /proc/version_signature any
+ more, it's gone in the gutsy kernel.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 21 May 2007 15:55:10 +0200
+
+apport (0.78) gutsy; urgency=low
+
+ * apport/packaging.py, backends/packaging-dpkg.py: Add new interface
+ is_distro_package(package) which verifies the origin of a given package.
+ Move the dodgy hack from apport/ui.py to the backend, where it belongs to.
+ Also add a test case.
+ * debian/control: Add python-apt dependency to python-apport.
+ * debian/control: Remove debianutils dependency, it's essential.
+ * Drop backends/packaging-dpkg.py. It had some hackish usage of python-apt
+ anyway, since some things just cannot be figured out with dpkg alone.
+ Since we have to give up on that idea, implement a new clean packaging
+ backend 'packaging-apt-dpkg.py' which now uses python-apt and dpkg in a
+ clean way.
+ * apport/report.py, add_gdb_info(): Fix crash when Stacktrace could not be
+ created. (LP: #107853)
+ * ./test-apport: Check that crashes create a core dump (with proper ulimits)
+ when an unseen crash report exists already. This reproduces LP #105976.
+ * bin/apport: Create core dump file if aborting because an unseen crash
+ report already exists. (LP: #105976)
+ * apport/ui.py: Add a comment for translators. (LP: #104703)
+ * apport/ui.py, load_report(): Also catch zlib.error on invalid reports.
+ (LP: #103547)
+ * apport/report.py: Add method has_useful_stacktrace() to determine whether
+ the stack trace can be considered useful. The current heuristic is to
+ consider it useless if it either is shorter than three lines and has any
+ unknown function, or for longer traces, a minority of known functions. Add
+ test cases.
+ * gtk/apport-gtk, qt4/apport-qt, cli/apport-cli: Do not offer 'reduced
+ report' option if the stack trace is useless. (LP: #87430) Bump the
+ python-apport dependencies of the frontend packages to ensure that we have
+ has_useful_stacktrace().
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 5 May 2007 17:53:42 +0200
+
+apport (0.77) gutsy; urgency=low
+
+ * apport/report.py: Replace any() call with a list comprehension to work
+ with Python < 2.5. (LP: #104864)
+ * apport/report.py: Move the ctypes import to the one place where we
+ actually need it, and do not entirely fail if they do not exist (such as
+ in Python 2.4). It is only required for non-default Feisty kernels anyway.
+ (LP: #107662)
+ * apport/chroot.py: Fix test suite to work with Python 2.4's tarfile module
+ output format.
+ * debian/local/setup-apport-retracer: Generalized some feisty specific
+ bits, set default release to gutsy.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 23 Apr 2007 12:22:17 +0200
+
+apport (0.76) feisty; urgency=low
+
+ * Move python_hook.py out of the apport module to apport_python_hook.py, so
+ that it does not inflict the expensive import of all apport related
+ modules to every python program. Adapt module prefixes accordingly.
+ (LP: #105764)
+ * setup.py, debian/python-apport.install: Install apport_python_hook.py into
+ the python-apport binary package.
+ * apport/ui.py test suite: Unset locale related environment variables so
+ that the tests which check strings are not invalidated by translations.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 12 Apr 2007 11:47:50 +0200
+
+apport (0.75) feisty; urgency=low
+
+ * apport/report.py, add_proc_info(): Chop off /rofs/ prefix from
+ ExecutablePath, so that crashes work on the live system, too. Arguably a
+ kernel bug, but probably too hard to fix at this time. (LP: #102909)
+ * backends/packaging-dpkg.py, get_modified_files(): Ignore empty lines in
+ broken .md5sums file rather than crashing on them. (LP: #102906)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 4 Apr 2007 21:51:28 +0200
+
+apport (0.74) feisty; urgency=low
+
+ * debian/apport-{gtk,qt}.install: Do not install .desktop files for now,
+ until we get a proper guided bug reporting.
+ * problem_report.py, write_mime(): Do not re-compress keys which already end
+ in .gz. Add test cases.
+ * test-hooks: Add a (dodgy) test case for calling package_hook on an
+ uninstalled package. After all, this is very likely to happen for
+ installation errors. This reproduces #97636.
+ * backends/packaging-dpkg.py, get_source(): Add a similarly dodgy fallback
+ to apt if the queried package is not installed. This needs to be
+ generalized and cleaned up later, but now is the time for unintrusive
+ small patches. (LP: #97636)
+ * test-apport: Do not fail on non-empty gdb stderr if it only consists of a
+ single warning (as happens on powerpc).
+ * apport/report.py, test_check_interpreted(): Run gedit test on an actually
+ existing file, reproducing the interpreter confusion reported in #102056.
+ * apport/report.py, _check_interpreted(): Add a whitelist of common
+ interpreters and check ExecutablePath against it. (LP: #102056)
+ * apport/ui.py: Ignore SystemError exceptions from apt, which happen on
+ badly formatted source.list entries. (LP: #98901)
+ * apport/ui.py: Fix crash on None candiateOrigin from the apt cache object.
+ (LP: #98961)
+ * gtk/apport-gtk.glade: Add window titles to progress and details dialogs.
+ (LP: #97640)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 4 Apr 2007 14:44:08 +0200
+
+apport (0.73) feisty; urgency=low
+
+ * problem_report.py, write(): Allow a third optional argument in tuple
+ values, which specify a maximum file size. Above it, the entire key gets
+ removed. Add testsuite checks for all boundary cases.
+ * bin/apport: Limit core dump size to 75% of usable RAM
+ (MemFree+Cached-Writeback). This should avoid trashing people's boxes hard
+ on huge core dumps. Bump dependencies on python-problem-report. Create an
+ expensive, but realistic check for this in test-apport.
+ (LP: #71560)
+ * apport/ui.py, run_crash(): If a signal crash report does not have a core
+ dump, explain that the computer has too little memory for an automatic
+ analysis/report of the crash. Add test suite check.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 29 Mar 2007 23:38:23 +0200
+
+apport (0.72) feisty; urgency=low
+
+ [ Martin Pitt ]
+ * bin/apport-chroot, command_create(): Install gpgv.
+ * bin/apport-retrace: Fix error handling in fetch_unpack().
+ * Move apport-retrace.1 manpage from package apport to apport-retrace. Bump
+ Conflicts/Replaces accordingly.
+ * bin/launchpad-crash-digger, apport/ui.py: Remove the special case
+ 'powerpc'->'ppc' and use need-powerpc-retrace uniformly.
+ * debian/control: Add XS-Vcs-Bzr: header.
+ * apport/ui.py: Fix wrong parameter name in help message.
+ * Another grammar fix, thanks to Brian Murray!
+
+ [ Michael Hofmann ]
+ * debian/local/ubuntu-bug: Try to use apport-cli, if we do not have a
+ $DISPLAY, or neither Gnome nor KDE are running.
+ * debian/control: Recommend elinks, since it is the only text browser so far
+ that works with Launchpad (see #59510)
+ * Add debian/apport-cli.README.Debian: Describe how to integrate
+ apport-checkreports and apport-cli into .bashrc for crash notification on
+ servers.
+ * qt4/apport-qt: Fix undefined symbol in ui_present_package_error().
+ (LP: #97282)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 29 Mar 2007 11:41:39 +0200
+
+apport (0.71) feisty; urgency=low
+
+ * cli/apport-cli, qt4/apport-qt: Fix bad grammar 'some minutes'.
+ (LP: #95296)
+ * problem_report.py, write_mime(): Add optional 'preamble' parameter. Add
+ test case.
+ * apport/ui.py, upload_launchpad_blob(): Set need-$ARCH-retrace tag in MIME
+ preamble. Bump p-problem-report dependency. (LP: #94790)
+ * bin/apport-retrace: In verbose mode, display the path of currently
+ extracting deb.
+ * bin/apport-retrace: Do not fall over errors of dpkg -x (which happens e.
+ g. on udev, where it cannot unpack /dev, since this is a symlink to the
+ real /dev). Merely print out a warning about it.
+ * apport/ui.py, run_report_bug(): Ignore ENOENT from add_proc_info(). This
+ happens if the user closes the application prematurely, so that /proc/pid
+ does not exist any more. Add test case. (LP: #95954)
+ * backends/packaging-dpkg.py, get_modified_files(): Ignore lines in .md5sums
+ files which contain a NUL byte. This Should Not Happenâ¢, but nevertheless
+ did. (LP: #96050)
+ * apport/ui.py, doc/package-hooks.txt: Check for a field
+ "UnreportableReason: <text>" and display an information box that the
+ current crash cannot be reported because of <text>. Add test case.
+ Document the new field.
+ * apport/ui.py: Check package origin, compare it to DistroRelease:, and
+ report crash as unreportable if they do not match. This particularly saves
+ the user from uploading large reports for e. g. opera crashes, and avoids
+ filing Ubuntu bugs from Debian installations. (LP: #75513)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 26 Mar 2007 18:01:24 +0200
+
+apport (0.70) feisty; urgency=low
+
+ [ Martin Pitt ]
+ * bin/apport-retrace: Add option --remove-tag to remove a Launchpad bug
+ tag. This is intended for an automatic Malone crash retracing system.
+ * debian/control: Bump python-launchpad-bugs dependency to ensure that we
+ have Bug.[gs]et_metadata().
+ * man/apport-retrace.1: Add documentation for --confirm and --remove-tag.
+ * bin/apport-chroot: Add option --remove-tag and pass it to apport-retrace.
+ * apport/chroot.py, fix_symlinks(): Convert chroot path prefixed absolute
+ symlinks to relative symlinks to avoid fakechroot's weird handling of
+ absolute symlinks.
+ * Add bin/launchpad-crash-digger: Daemon for watching out for
+ need-$ARCH-retrace tagged Ubuntu bugs in Launchpad and calling
+ apport-retrace on them.
+ * bin/apport-retrace: Mangle bug comment with StacktraceTop to not contain
+ invalid UTF-8, to avoid getting Internal Server Errors from LP.
+ * debian/local/setup-apport-retracer: Install libc6-i686{,-dbgsym} into an
+ x86 chroot, to get sane x86 backtraces for crashes in libc.
+ * debian/local/setup-apport-retracer:
+ - Unpack and install python-launchpad-bugs locally if the package is not
+ installed.
+ - Link launchpad-crash-digger into the retracer's bin/ dir.
+ * run-tests: Run tests with python's -tt flag to catch whitespace errors.
+ * Replace tabs with spaces in all Python files. (LP: #93561)
+ * Remove trailing white space in all Python files.
+ * apport/report.py, add_proc_info(): Do not regard symlinks to executables
+ as interpreted scripts any more (such as Debian alternatives). Add test
+ case. (LP: #94732)
+ * problem_report.py: Add new method get_new() which returns a set of all
+ keys which have been added since load() or construction. Add test cases.
+ * problem_report.py: Add optional parameter only_new to write(), which
+ writes only the get_new() keys. Add test case.
+ * apport/ui.py: Remember currently processed report file and update it with
+ the added information, so that it becomes useful for local evaluation,
+ too. Bump python-problem-report dependency to ensure write()'s only_new
+ availability. (LP: #94678)
+ * apport-chroot: Add forgotten sys.exit(1) after printing the error message
+ about an invalid chroot specification.
+ * apport/ui.py, run_crash(): Check for a field "UnsupportableReason: <text>"
+ and display an information box that the current configuration cannot be
+ supported because of <text>, instead of processing and reporting the
+ crash. Add test case for this workflow. With special regards to our
+ Firefox crash triagers who want to get rid of the hundreds of
+ flash-related crashes. :)
+ * apport/report.py, add_hooks_info(): Use execfile() instead of
+ __import__(), since package names might conflict with module names already
+ imported into apport's namespace. Also search for hook named after the
+ source package name (prefixed with 'source_'). Add test cases.
+ * bin/apport-chroot: When specifying --save for login, only save the tarball
+ if the exit status is 0.
+ * bin/apport-chroot, create: Install /usr/sbin/policy-rc.d to disable init
+ scripts.
+ * bin/apport-chroot: Fixed command function selection to not abort with
+ 'unknown command' if the DistroRelease: was unknown.
+ * bin/apport-retrace: Replace --no-purge with --no-dpkg. With this option,
+ do not call dpkg --unpack any more, but dpkg -x, to avoid any fchmod() and
+ other calls which cause problems in fakechroots.
+ * bin/apport-retrace: Fix ordering of version numbers in warning message.
+ * doc/package-hooks.txt: Add some examples, document source package hook.
+
+ [ Kees Cook ]
+ * apport/report.py, add_proc_info(): If reading /proc/pid/maps fails,
+ ptrace() the target process to make it readable (proposed security
+ improvement in future kernels).
+ * bin/apport-retrace: Fix crash for packages unknown to the apt cache.
+ * apport/report.py, add_gdb_info(): Limit maximum backtrace depth to 2000 to
+ avoid infinitely looped stacks and gdb crashes. (LP: #94455)
+ This also caps the maximum size of information that we add to reports.
+ (LP: #92653)
+ * bin/apport-retrace: Add option -R/--rebuild-package-info, so that
+ apport-retrace works on unprocessed crash dumps in /var/crash.
+ * Some grammar corrections.
+ * Add package-hooks/source_apport.py: Package hook for apport itself.
+ Include /var/log/apport.log and the status of files in /var/crash.
+
+ [ Michael Hofmann ]
+ * Add cli/apport-cli, setup.py, debian/apport-cli.install, debian/control:
+ Add command line user interface.
+ * apport/ui.py, format_filesize(): Use MiB and GiB instead of MB and GB;
+ these are the official units. Adapt test cases.
+ * apport/ui.py, collect_info()/file_report(): Do not raise an exception on
+ KeyboardInterrupt in the subthreads.
+ * apport/ui.py, open_url(): Do not use gtk.MessageDialog(), but
+ ui_error_message(), and fix error passing so that the message is
+ displayed in the parent thread.
+ * apport/ui.py, open_url(): Check that $DISPLAY is set before considering
+ the KDE/Gnome web browsers.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 26 Mar 2007 09:41:03 +0200
+
+apport (0.69) feisty; urgency=low
+
+ * apport-chroot: Add command 'installdeb' to conveniently install a bunch of
+ .debs into a chroot.
+ * apport-chroot: Fix 'login' and 'upgrade' commands to not require
+ specifying a chroot map when giving a chroot tarball path as argument.
+ * test-apport: Check that core dumps are written for packaged programs as
+ well, if ulimits want them. (Test for #92029)
+ * bin/apport: Call write_user_coredump() for packaged program crashes and
+ SIGABRT as well. (LP: #92029)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 19 Mar 2007 17:37:23 +0100
+
+apport (0.68) feisty; urgency=low
+
+ [ Michael Hofmann ]
+ * qt4/apport-qt: Fix taskbar entry, remove an unused method.
+ * qt4/error.ui: Fix icon spacing.
+
+ [ Martin Pitt ]
+ * apport-retrace: Add option --confirm to display the retraced stack traces
+ and ask for confirmation before uploading them as LP bug attachments.
+ (LP: #91878)
+ * apport-chroot: Add option --confirm-attach; if given, call apport-retrace
+ with --confirm.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 15 Mar 2007 00:05:18 +0100
+
+apport (0.67) feisty; urgency=low
+
+ * debian/local/setup-apport-retracer: Add apt sources for restricted,
+ universe, and multiverse, too.
+ * po/de.po: Update from Rosetta.
+ * apport/report.py: Remove undefined call to error_log() in
+ _command_output(), replace it with raising proper exceptions.
+ * bin/apport-retrace: Fix 'numer' typo. (LP: #91680)
+ * test-apport: Check that non-packaged executables generate a core dump on
+ SIGABRT, too (test case for bug #92029).
+ * bin/apport: Move check for ignoring SIGABRT below the core dump file
+ writing for non-packaged binaries. (LP: #92029)
+ * gtk/apport-gtk.glade:
+ - Remove titles from the progress windows to comply with Gnome HIG and not
+ repeat the text content.
+ - Improve wording a bit.
+ - LP: #92114
+ * gtk/apport-gtk{,.glade}: Fix signal handler name of the Cancel button in
+ the upload progress dialog, so that it actually works. (LP: #92115)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 14 Mar 2007 17:34:57 +0100
+
+apport (0.66) feisty; urgency=low
+
+ * Remove apport/MultipartPostHandler.py, this functionality moved to
+ python-launchpad-bugs now. Add a dependency to that package.
+ * apport/ui.py, upload_launchpad_blob(): Use the shiny new
+ launchpadBugs.storeblob.upload().
+ * bin/apport-retrace: Attach retraced stack traces back to the Launchpad bug
+ report if no other output option is given (This corresponds to the
+ in-place editing when a report file is specified). Add option --cookie to
+ specify a Mozilla-style cookie file for the necessary Launchpad
+ authentication.
+ * man/apport-retrace.1: Document above apport-retrace changes.
+ * bin/apport-chroot: Add --cookie option: temporarily symlink cookie into
+ the chroot and pass it to apport-retrace in retrace mode.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 10 Mar 2007 15:01:57 +0100
+
+apport (0.65) feisty; urgency=low
+
+ * debian/local/setup-apport-retracer:
+ - Replace grep-dctrl with grep call, since grep-dctrl is not installed in
+ all the DC chroots.
+ - Do not download apport source from archive.u.c., instead require that
+ this script lives in the unpacked apport source tree.
+ * bin/apport-chroot: Use apt-get options -y and --allow-unauthenticated when
+ installing additional packages.
+ * bin/apport-chroot: Handle --extra-package for 'upgrade', too, to provide a
+ simple way of adding a package to an existing chroot tarball.
+ * debian/local/setup-apport-retracer: Create tarball chroots by default.
+ It only imposes a negligible overhead, and sharing unpacked directories
+ with multiple people is just too brittle.
+ * bin/apport-retrace: Add option --no-purge to not purge unpacked packages
+ after retracing. This is (only) useful with temporarily unpacked chroots,
+ since it's only a waste of time there.
+ * bin/apport-chroot: Call apport-retrace with --no-purge when retracing in a
+ chroot tarball.
+ * apport/chroot.py: Add fix_symlinks() method to remove the chroot root
+ directory prefix from symbolic links; they prevent function of tarball
+ chroots and moving around directory chroots. Add test case.
+ * bin/apport: Fix symlinks after creating and upgrading a chroot.
+ * bin/apport-chroot: Add option --save to update a tarball after logging
+ in to it.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 10 Mar 2007 21:21:25 +0100
+
+apport (0.64) feisty; urgency=low
+
+ * bin/apport-chroot: Add 'login' command.
+ * bin/apport-chroot: Install apport-retrace into a newly created chroot.
+ * Add debian/local/setup-apport-retracer: Script to install local versions
+ of apport, debootstrap, fake{,ch}root libraries, and a feisty apport
+ fakechroot. This works OOTB on ronne's amd64 and i386 feisty chroots. The
+ script is not shipped in any package yet, but it's convenient to ship it
+ in revision control and in the source.
+ * apport/report.py, _check_interpreted(): When calling an interpreter with a
+ script name as argument, set ExecutablePath to the script instead of the
+ interpreter. Add test case. (LP: #88794)
+ * apport/report.py, search_bug_patterns(): Catch all exceptions from
+ urlopen(), not just IOError. Sometimes this fails with funnier errors.
+ (LP: #89589)
+ * bin/apport-retrace: Give some additional explanation when installing
+ packages fails. (LP: #89916)
+ * apport/fileutils.py, get_all_{system_,}reports(): Fix file access race
+ condition. (LP: #89977)
+ * bin/apport-retrace: Add option -p/--extra-package to install an additional
+ package for retracing. May be specified multiple times. Document new
+ option in man/apport-retrace.1. (LP: #90077)
+ * bin/apport-chroot: Add a similar option -p/--extra-package and install
+ those in the 'create' command and simply pass it to apport-retrace in the
+ 'retrace' command. (LP: #90077)
+ * bin/apport-chroot: Add a -v/--verbose option.
+ * bin/apport-retrace: Do not complain about missing ddebs for Arch: all
+ packages.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 6 Mar 2007 16:20:41 +0100
+
+apport (0.63) feisty; urgency=low
+
+ New feature: fakechroot support for apport-retrace
+
+ * bin/apport-retrace:
+ - Simplify program design and throw away the complicated debug symbol
+ sandbox generation, along with the -d and -C options. Instead, directly
+ install the missing packages and ddebs with apt. This makes the tool more
+ suitable for running in chroots and has often been requested anyway.
+ - Add option -u/--unpack-only which causes additionally installed packages
+ to be unpacked without being configured and purged again after
+ retracing. This allows apport-retrace to work under fakechroot and has
+ the nice side effect of speeding up package installation (we do not care
+ about configuration for retracing anyway).
+ * man/apport-retrace.1: Update description for the new behaviour, drop
+ documentation of the -d and -C options, and add documentation of -u.
+ * Add apport/chroot.py: Class for representing and working with chroots;
+ this uses the fakeroot and fakechroot libraries when being called as
+ non-root.
+ * Add bin/apport-chroot: CLI frontend for doing various things with
+ chroots (including fakeroot/fakechroot support from the Chroot class). For
+ now, this implements:
+ - create a chroot (tarball or directory)
+ - dist-upgrade a particular or all chroots
+ - apport-retrace a bug or Apport report file
+ * setup.py: Ship apport-chroot in scripts directory.
+ * Add a new package apport-retrace which ships apport-retrace and
+ apport-chroot and carries all the heavier dependencies (binutils,
+ python-launchpad-bugs, python-apt, etc.). Drop the latter two dependencies
+ from the apport package. This allows us to install the apport-retrace
+ package in fakechroots (not possible with apport itself) and avoid
+ unnecessary dependencies on normal desktop installations.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 5 Mar 2007 11:20:36 +0100
+
+apport (0.62) feisty; urgency=low
+
+ * apport/ui.py, collect_info(): Use REThread instead of Thread and raise
+ exceptions from it, so that errors during info collection actually become
+ visible.
+ * apport/report.py, add_proc_info(): Check that ExecutablePath actually
+ exists, so that invalid values from transient error conditions are ignored
+ (such as '/usr/bin/gnome-panel\x00\x00\x8b (deleted)').
+ * apport/packaging.py: Add interface get_system_architecture() to return the
+ system architecture in the distro specific notation. This can differ from
+ get_architecture(package) on multiarch platforms such as amd64.
+ * backends/packaging-dpkg.py: Implement get_system_architecture() to return
+ dpkg --print-architecture, add a shallow test case.
+ * apport/report.py, add_package_info(): Rename key 'Architecture:' to
+ 'PackageArchitecture:' for clarity.
+ * apport/report.py, add_os_info(): Add system architecture as
+ 'Architecture:' field.
+ * apport/ui.py, create_crash_bug_title(): Append warning about non-native
+ package if package architecture does not match the system's one.
+ * All test suites: Remove redundant word 'behaviour' from test descriptions.
+ * test-hooks: Run tests on installed hooks in /usr/share/apport by default
+ and add a '--local' switch to test the hooks in the source tree instead.
+ Use this option in run-tests.
+ * apport/report.py, test_add_proc_info(): Change the python script test
+ so that it does not depend on being run in the source tree.
+ * run-tests: Add a 'local' command line option which runs tests on the files
+ and modules in the build tree. Run tests on system files/modules by
+ default.
+ * setup.py, debian/apport.install: Ship test-hooks, test-apport, and
+ run-tests in /usr/share/apport/testsuite/, so that the full test suite can
+ be run in the installed system.
+ * gtk/apport-gtk.desktop.in: Only show in Gnome and Xfce.
+ * qt4/apport-qt.desktop.in: Only show in KDE.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 1 Mar 2007 10:43:29 +0100
+
+apport (0.61) feisty; urgency=low
+
+ * bin/apport:
+ - Kernel 2.6.20-9 now sets CORE_REAL_RLIM to -1 instead of not setting it;
+ handle this case correctly. (LP: #87065)
+ - Add forgotten multiplication of CORE_REAL_RLIM with 1024, since ulimit
+ sets kB, not bytes.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 27 Feb 2007 16:06:11 +0100
+
+apport (0.60) feisty; urgency=low
+
+ * gtk/apport-gtk.glade: Reintroduce window titles. Since the crash
+ notifications are like alerts, title have been removed recently to comply
+ with Gnome HIG standards, but then the user will get 'nameless window'
+ buttons in the task bar. Let's have the smaller evil then. (LP: #87164)
+ * apport/packaging.py: Add get_architecture() interface for determining the
+ architecture of a particular package (which might not match the overall
+ system architecture on multiarch-capable systems, e. g. an i386 Firefox
+ package installed on amd64).
+ * backends/packaging-dpkg.py: Implement get_architecture() and add test
+ case.
+ * apport/report.py, add_package_info(): Add Architecture: field.
+ (LP: #87424)
+ * apport/ui.py: Already mark report as seen when we load it, not just in the
+ information collection thread. That way, reports will only be shown once
+ on systems which have /var/crash mounted noatime, too. (LP: #85809)
+ * apport/fileutils.py, mark_report_seen(): If os.utime() fails, and opening
+ the report file for reading does not change the atime (happens with
+ noatime mount option), don't throw an exception, just delete the report.
+ (other aspect of LP: #85809)
+ * qt4/apport-qt: Wrap gettext() into an unicode(str, 'UTF-8') call,
+ otherwise all non-ASCII unicode strings are broken. (LP: #87757)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 26 Feb 2007 20:55:40 +0100
+
+apport (0.59) feisty; urgency=low
+
+ * apport/report.py: Check that interpreter options are discarded in
+ test_check_interpreted_script(). This replicates bug #87005.
+ * apport/report.py, _check_interpreted_script(): Filter out interpreter
+ command line options. This should make the detection of interpreted
+ scripts more robust. (LP: #87005)
+ * test-apport, check_crash(): Differ between expecting the program dumping
+ core and finding a core dump on disk, because this is not equivalent any
+ more with core pipelining.
+ * bin/apport: Write core files into a process' cwd if the process' ulimit
+ requests and permits it and the crashes process is not packaged, so that
+ developers get happy again. Test this behaviour with various ulimits in
+ test-apport.
+ * test-apport: Check that the core file written by apport is valid. This
+ uncovers kernel bugs like #87065
+ * problem_report.py test suite: Use assertAlmostEqual() when comparing stat
+ times, since they are floats on some systems.
+ * apport/report.py, add_gdb_info():
+ - Remove all the initial gdb output, which gets rid of the duplicated #0
+ line.
+ - Replace some stray tabs with spaces.
+ - Thanks to Kees Cook for this!
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 22 Feb 2007 19:52:52 +0100
+
+apport (0.58) feisty; urgency=low
+
+ * qt4/apport-qt.desktop.in move to System menu
+
+ -- Jonathan Riddell <jriddell@xxxxxxxxxx> Tue, 20 Feb 2007 11:35:17 +0000
+
+apport (0.57) feisty; urgency=low
+
+ * apport/ui.py: Intercept ENOMEM and fail gracefully; there is little else
+ we can do at that point, and there is no point in presenting a crash
+ report for this. (LP: #85155)
+ * apport/ui.py: Ignore KeyError when deleting the CoreDump field on sending
+ a reduced report. This Should Not Happenâ¢, but nevertheless did.
+ (LP: #86083)
+ * gtk/apport-gtk, qt4/apport-qt: Intercept ImportError for the non-builtin
+ Python modules. This usually happens for crashes when there is a
+ dist-upgrade active and some Python packages have not been configured yet.
+ (LP: #86007)
+ * apport/ui.py: If the problem report does not apply to a packaged program,
+ and we have an ExecutablePath, mention it in the error message for easier
+ debugging.
+ * apport/python_hook.py: Resolve symbolic links in ExecutablePath.
+ (LP: #85529)
+ * apport/ui.py, open_url(): Remove debugging print statement again, now
+ that we tracked down bug #83974.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 19 Feb 2007 14:40:29 +0100
+
+apport (0.56) feisty; urgency=low
+
+ * apport/ui.py, open_url(): When being invoked as root, call gnome-open or
+ firefox as root through sudo instead of dropping our uid/gid and calling
+ it normally. The latter does not work for Firefox for some mysterious
+ reason. Thanks to Mika Fischer for this trick. (LP: #81207)
+ * Add debian/local/ubuntu-bug.1: Manpage for ubuntu-bug. Add it to
+ debian/apport.manpages.
+ * qt4/apport-qt: Add some missing features that are present in the GTK UI:
+ - Do not show details by default, add a button to show them.
+ - Add complete/reduced bug report radio buttons.
+ - Thanks to Michael Hofmann for this!
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 15 Feb 2007 14:59:07 +0100
+
+apport (0.55) feisty; urgency=low
+
+ * Add debian/local/ubuntu-bug: Check for a running KDE or Gnome session,
+ availability of apport-gtk and -qt, and open the appropriate GUI in bug
+ filing mode. This makes it convenient for shell users and is also required
+ for proper Firefox 'Report a bug...' menu integration (see bug #85041).
+ * debian/apport.install: Install ubuntu-bug to /usr/bin.
+ * gtk/apport-gtk: Generously add some gtk.main_iteration() calls to avoid
+ hanging dialogs, since we do not have a main loop.
+ * apport/ui.py: Do not silently ignore exceptions while uploading data to
+ Launchpad, but intercept them and display their message in the error
+ dialog. (Part of LP: #84992)
+ * apport/ui.py: Switch from edge.launchpad.net to production launchpad.net,
+ since the necessary bits are now there. (LP: #84992)
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 14 Feb 2007 13:37:52 +0100
+
+apport (0.54) feisty; urgency=low
+
+ * bin/apport: Re-enable, now that our kernel has been fixed to pipe complete
+ core dumps to us.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 13 Feb 2007 09:33:38 +0100
+
+apport (0.53) feisty; urgency=low
+
+ * apport/ui.py, open_url(): Remove some accidentally left-over debugging
+ junk.
+ * gtk/apport-gtk: Process pending GTK events after hiding the info
+ collection window to avoid a hanging dead dialog.
+ * gtk/apport-gtk: Do not count the lines of fields with binary data. This
+ particularly avoids long delays with huge core dumps. (LP: #81979)
+ * apport/ui.py, open_url(): Print URL to stdout, so that we can debug the
+ weirdness in #83974.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 12 Feb 2007 16:57:05 +0100
+
+apport (0.52) feisty; urgency=low
+
+ * apport/report.py: Fix hook directory to be
+ /usr/share/apport/package-hooks/, not /u/s/apport/.
+ * Add doc/package-hooks.txt: Document per-package hooks, ship in package
+ apport.
+ * Add debian/apport.dirs: Ship package-hooks/ directory.
+ * gtk/apport-gtk, qt4/apport-qt: Fix detection of binary data so that the
+ CoreDump is not displayed as incomprehensible gibberish any more.
+ * Add qt4/apport-qt.desktop.in and add it to POTFILES.in.
+ * bin/apport-retrace: --verbose can now be specified multiple times to
+ increase verbosity and debug package installation. Also, fix some quoting
+ bugs. Thanks to Kees Cook for this!
+ * qt4/apport-qt: Fix restart button handling. (LP: #84202)
+ * qt4/apport-qt: Do not try to call splitlines() on a report value that is a
+ file reference; just display the reference instead. (LP: #84196)
+ * bin/apport: Disable for now, since the current kernel produces cropped
+ core dumps and thus we get totally useless crash reports
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 9 Feb 2007 18:58:08 +0100
+
+apport (0.51) feisty; urgency=low
+
+ New feature: Qt4 GUI implementation:
+
+ * Added qt4/: Qt4 implementation of the abstract user interface. Thanks to
+ Michael Hofmann <mh21@xxxxxxxxx> for that!
+ * debian/copyright: Add Michael as copyright holder.
+ * setup.py, debian/control, debian/apport-qt.install: Packaging bits for
+ apport-qt.
+ * Move translations from apport-gtk to apport, since they are shared between
+ frontends. Add appropriate Conflicts/Replaces (we don't strictly need it
+ here because we strip them anyway, but we need that for the moving icon
+ anyway).
+ * Move icon from apport-gtk to apport, since it is/can be shared between
+ frontends.
+
+ Improvements:
+
+ * Replaced old apport.png icon stolen from bug-buddy with nice SVG one.
+ Thanks to Troy Sobotka for this!
+ * debian/copyright: Add Troy as copyright holder for the icon.
+ * bin/apport-retrace, man/apport-retrace.1: Document that report can now be
+ a LP bug number.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 8 Feb 2007 20:01:12 +0100
+
+apport (0.50) feisty; urgency=low
+
+ * gtk/apport-gtk.glade: Fix 'prolem' typo.
+ * bin/apport-retrace: Use python-launchpad-bugs to create a Report object
+ from a given Launchpad bug number (given as argument instead of the report
+ file path). Add appropriate p-l-b dependency.
+ * gtk/apport-gtk: Mark '(binary data)' string as translatable.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 8 Feb 2007 15:15:47 +0100
+
+apport (0.49) feisty; urgency=low
+
+ * gtk/apport-gtk.glade: Fix s/send/sent/ typo. Closes: LP#83061
+ * apport/ui.py, create_crash_bug_title(): Cope with odd Tracebacks that are
+ shorter than three lines. Add test case from the bug. Closes: LP#83556
+ * apport/python_hook: Do not create a report if the binary is ignored. Add
+ test case. Closes: LP#83566
+ * gtk/apport-gtk: Do not save/alter crash dialog title any more, it's empty
+ now.
+ * apport/ui.py, open_url(): Check the user's session for
+ ksmserver/gnome-session to decide whether to prefer kfmclient or
+ gnome-open. Also, only call Firefox directly if gconf's prefered browser
+ is actually Firefox. Closes: LP#82007
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 6 Feb 2007 18:33:15 +0100
+
+apport (0.48) feisty; urgency=low
+
+ New feature: Infrastructure for reporting kernel Oopses:
+
+ * Add bin/kernel_hook and ship it in /usr/share/apport. The kernel can call
+ this on an Oops. Add a test suite for it to test-hooks.
+ * apport/ui.py: Add support for reporting ProblemType: Kernel reports, and
+ add test suite for the workflow.
+ * gtk/apport-gtk{,.glade}: Add implementation for ui_present_kernel_error().
+
+ Improvements:
+
+ * Merged various apport-retrace improvements from Kees' branch:
+ - Add various options to override some report fields with local values.
+ - Add --verbose option and be quiet by default.
+ - Read ProcMaps for additional library dependencies, to also catch
+ libraries loaded at runtime (plugins).
+ - Set correct debug file directory when starting an interactive gdb
+ session with -g.
+ * Add gtk/apport-gtk.desktop.in: Desktop file for calling apport-gtk in
+ 'file a distro bug' mode, to be displayed in gnome-panel's System menu
+ (see bug-reporting-tool spec). Also add a Makefile to do the
+ intltool-merge dance, add it to POTFILES.in, and ship it in
+ debian/apport-gtk.install.
+ * bin/apport: Call add_os_info(), so that we get architecture information
+ even for 'naked' reports which didn't go through UI enrichment.
+ * Add ./test-hooks: Test suite for the various package hooks shipped with
+ apport. Test the package problem hook for now.
+
+ Bug fixes:
+
+ * debian/control: Add missing python-apt dependency to apport
+ (apport-retrace needs it). Thanks to Kees Cook for noticing.
+ * debian/control: Add gdb dependency to python-apport.
+ * backends/packaging-dpkg.py test suite: Verify that packages returned by
+ get_dependencies() actually exist. This catches the 'chops off first
+ letter of package name sometimes' bug.
+ * backends/packaging-dpkg.py, _init_status(): Add missing space to Depends:
+ field format in dpkg-query call. This fixes the chopped-off first letters
+ in the 'Dependencies' report field.
+ * setup.py: Remove version attribute, we do not update and use it anyway.
+ * apport/ui.py: Do not crash if Package: specifies a nonexisting package.
+ Display a proper error message instead. Add test_run_crash_errors() test
+ case.
+ * apport/report.py, add_package_info(): Fix crash when the first dependency
+ is not installed. Closes: LP#82561
+ * gtk/apport-gtk.glade: Remove window titles in alert dialogs to comply with
+ Gnome HIG. Closes: LP#83123
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 5 Feb 2007 12:19:35 +0100
+
+apport (0.47) feisty; urgency=low
+
+ * apport/report.py, add_hooks_info(): Only use first part of 'Package:',
+ there might be a version number and a changed files list which we must not
+ propagate to the import statement. Closes: LP#82566
+
+ -- Kees Cook <kees@xxxxxxxxxx> Wed, 31 Jan 2007 15:37:11 -0800
+
+apport (0.46) feisty; urgency=low
+
+ * debian/control: Bump dependencies to python-apport due to recent changes
+ in expected return values in some UI functions. Closes: LP#82267
+ * bin/package_hook: Remove erroneous 'import apport.packaging', which
+ shadows the packaging variable in the apport package. This unbreaks the
+ package problem hook. Closes: LP#82297
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 31 Jan 2007 07:51:24 +0100
+
+apport (0.45) feisty; urgency=low
+
+ New feature: Infrastructure for package install/upgrade failures:
+
+ * Add bin/package_hook: Script for creating a report for a package
+ installation/upgrade failure. It receives a package name, a number of log
+ files, and an ErrorMessage: from stdin. This will be called from e.g.
+ dist-upgrader.
+ * setup.py, debian/apport.install: Ship package_hook.
+ * apport/ui.py: If ProblemType is 'Package', call a new function
+ self.ui_present_package_error() instead of presenting a crash. Add test
+ suite checks for the package error report workflow.
+ * apport/ui.py, create_crash_bug_title(): Create default bug title for
+ package reports. Add various test cases.
+ * gtk/apport-gtk{,.glade}: GTK implementation of ui_present_package_error().
+
+ New feature: Maintain a per-binary blacklist to inhibit apport crash reports
+ until the binary changes. Closes: LP#79408
+
+ * apport/report.py: Add new Report methods check_ignored() and mark_ignore()
+ to check for/set ignore list entries. Add test cases.
+ * apport/ui.py: Add another return value of ui_present_crash() to specify
+ whether or not to blacklist the current crash's executable. Check workflow
+ of both responses in the test suite.
+ * gtk/apport-gtk{,.glade}: Add a blacklist checkbox to the crash
+ notification dialogs.
+ * bin/apport: Do nothing if the current crash is blacklisted.
+ * test-apport: Test blacklisting.
+
+ Bug fixes:
+
+ * gtk/apport-gtk: Fix return code for restarting the application ('reopen' ->
+ 'restart'). Closes: LP#81422
+ * test-apport: Adapt to new core_pattern kernel interface mode:
+ - Check core_pattern instead of the obsolete crashdump sysctl to determine
+ whether or not apport is running.
+ - Give apport max. 10 seconds to complete. The current kernel reaps the
+ crashed process as soon as writing the core dump to the pipe is
+ finished, but apport still needs to write the report file.
+ - Do not EXFAIL the test for crashes in nonwriteable cwd any more, since
+ it is now supposed to work (we do not write a core dump to the disk any
+ more).
+ * run-tests, use-local: Adapt to new core_pattern kernel interface.
+ * apport: Improve logging of exceptions, include environment variables.
+ * apport/report.py test suite: Use gdb to generate a test core dump, do not
+ rely on kill(SIGSEGV) and the kernel to do it (since we now use a pipe in
+ core_pattern).
+ * backends/packaging-dpkg.py: Fix return value of get_modified_files() if
+ dpkg .list file is missing.
+ * apport/report.py, add_package_info(): Do not produce stray empty lines for
+ uninstalled alternative dependencies.
+ * apport/report.py: Fix test_add_gdb_info_script() to not leave behind a
+ stray gzip process which randomly blocks stdin. Closes: LP#78421
+ * backends/packaging-dpkg.py: Do not read the dpkg status in the
+ constructor, but lazily initialize it when actually calling a query
+ function. This avoids imposing the dpkg-query overhead for programs that
+ import the apport package without doing package queries (such as any
+ Python program under Ubuntu, due to the Python crash hook).
+ * apport/ui.py, create_crash_bug_title():
+ - Do not crash on an empty StacktraceTop. Closes: LP#81677
+ - Do not mention an unknown function name ('??') in the bug title;
+ instead, use the topmost function with a known name, or leave it out
+ at all.
+ - Add test cases for these situations.
+ * apport/report.py, _get_ignore_dom(): Do not throw an error for an empty
+ ignore list file.
+
+ Code cleanups:
+
+ * apport/report.py test suite: Refactorize generation of test crash program
+ and core dump generation.
+ * Consistently use 'in'/'not in' instead of find() for substring searches.
+ * Changed the packaging backend import, so that its methods can now be
+ accessed at apport.packaging instead of apport.packging.impl.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sun, 28 Jan 2007 12:34:05 +0100
+
+apport (0.44) feisty; urgency=low
+
+ Some more 'Need for Speed' optimizations:
+
+ * backends/packaging-dpkg.py, _check_files_md5(): Also accept a md5sum
+ string in addition to a md5sum file.
+ * backends/packaging-dpkg.py, get_modified_files(): Compare package file's
+ ctime and mtime against the package list file's mtime and only md5sum the
+ files that are newer. This drastically reduces the amount of md5suming
+ (usually to zero) and thus speeds up the information collection.
+ * backends/packaging-dpkg.py: Use a single hackish 'dpkg-query --show *'
+ as a portable variant of 'cat /var/lib/dpkg/status' to pre-fill the status
+ cache with all packages instead of calling dpkg -s on every single package
+ we query. This changes the time for figuring out dependencies and their
+ versions from 'unbearable for many packages' to 'barely noticeable'.
+
+ New feature: per-package apport hooks to collect additional information:
+
+ * apport/report.py: Add method add_hooks_info() which executes a function
+ add_info(report) from /usr/share/apport/<package>.py. Also add
+ appropriate test cases. This provides per-package hooks for apport.
+ * apport/ui.py: Call add_hooks_info() in the information collection thread.
+
+ Bug fixes:
+
+ * apport/report.py: Add some more test cases for _check_interpreted() for
+ Python scripts.
+ * apport/python_hook.py: Check for a correct ExecutablePath in
+ test_general().
+ * apport/python_hook.py: Use fileutils.likely_packaged() instead of
+ checking for /tmp and home, so that we ignore stuff in /usr/local, too.
+ Closes: LP#81244
+ * apport/python_hook.py: If we figure out an ExecutablePath which is not
+ actually an executable, do not create a report. This particularly affects
+ interactive python sessions where sys.argv[0] is empty and thus
+ ExecutablePath ends up being the current directory. Add test cases.
+ Closes: LP#81237
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 24 Jan 2007 17:16:04 +0100
+
+apport (0.43) feisty; urgency=low
+
+ * apport/ui.py: Add method create_crash_bug_title() to construct a
+ reasonable standard bug title for crash reports, so that the automatic
+ duplicate detection actually has a chance to work. Also add test cases for
+ various signal crashes and an unhandled Python exception.
+ * apport/ui.py, file_report(): Submit a default bug title for crash reports.
+ Closes: LP#79657
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 23 Jan 2007 16:26:40 +0100
+
+apport (0.42) feisty; urgency=low
+
+ New feature: https://wiki.ubuntu.com/ApportImprovements (kernel interface
+ change):
+
+ * bin/apport: Support calling without arguments, to support new semantics
+ agreed in the ApportImprovements spec: macro values (in particular, pid
+ and signal number) are passed as environment variables.
+ * preloadlib/libapport.c: Simulate new kernel behaviour described above.
+ * debian/apport.init: Set the kernel's core_pattern sysctl to pipe to apport
+ if the edgy-style 'crashdump-helper' sysctl helper does not exist.
+
+ Bug fixes:
+
+ * bin/apport-retrace: Beautify error message when report file is not
+ accessible. Closes: LP#79568
+ * apport/ui.py: Fix crash in the bug pattern search thread if we could
+ not determine a package name. Closes: LP#77872
+ * bin/apport: Only unlink the core dump if it still exists. Closes: LP#80866
+ * gtk/apport-gtk.glade: Fix expand/fill attributes so that the expander gets
+ all the space when resizing the window. Closes: LP#80987
+ * problem_report.py, write_mime(): Make sure that multi-line values that go
+ to the summary are terminated with a newline.
+ * apport/ui.py: Fix error message invocation for reporting cloakroom upload
+ failure.
+ * problem_report.py, write_mime(): Fix off-by-one comparison of the 'inline
+ text' treshold, so that apport's StacktraceTop field appears in bug
+ summaries. Also fix a corner case in CR line ending handling. Check both
+ things in the test suite.
+ * gtk/apport-gtk: Add missing 'import subprocess.'. Closes: LP#81007
+ * debian/control: Bump apport's and apport-gtk's dependency to python-apport
+ to make sure that apport.ui is available. Closes: LP#81019
+ * apport/ui.py: Add missing 'import pwd'. Closes: LP#81033
+
+ Minor improvements:
+
+ * apport/ui.py: Get the cloakroom ticket number from the
+ X-Launchpad-Blob-Token HTTP header instead of parsing the resulting page.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 23 Jan 2007 11:27:20 +0100
+
+apport (0.41) feisty; urgency=low
+
+ New feature: Use Malone cloakroom for uploading reports. Closes: LP#70919
+
+ * gtk/apport-gtk.glade: Redesign bug reporting dialog to have a 'Create bug
+ report' and a 'Cancel' button. Also assign GTK_RESPONSE_* constants to the
+ dialog buttons. Go back to Glade 2 since Glade 3 still sucks too much.
+ * gtk/apport-gtk: Adjust workflow for sending report to Malone cloakroom
+ instead of asking the user to attach the file. Sending is not yet
+ implemented, though.
+ * gtk/apport-gtk: Do not show any dialogs any more when filing a bug.
+ * Add apport/MultipartPostHandler.py: This module provides an urllib2 opener
+ for uploading file attachments to forms over HTTP POST. This module is
+ (C) 2006 Will Holcomb <wholcomb@xxxxxxxxx> and was taken from
+ http://odin.himinbi.org/MultipartPostHandler.py. (This is a serious hole
+ of the Python standard library IMHO.)
+ * apport/ui.py, file_report(): Upload blob to Malone (edge.launchpad.net for
+ now), retrieve the ticket, and pass it to +filebug.
+
+ Refactorizations:
+
+ * gtk/apport-gtk: Major refactorization to use modal dialogs and run()
+ instead of loosely coupled event handlers.
+ * Add apport/ui.py: Abstract frontend which encapsulates the logic, workflow
+ and UI independent bits and provides UI hooks for concrete
+ implementations. This both makes it easy to write more frontends like Qt
+ or CLI, and also makes the code automatically testable. Add an extensive
+ testsuite.
+ * run-tests: Add ui.py testsuite.
+ * gtk/apport-gtk: Port to ui.py's UserInterface (which means moving 1/3 of
+ the code into the new ui_*() methods and throwing away the rest).
+ * Add apport/REThread.py: Enhanced threading.Thread class that can propagate
+ the return value and uncaught exceptions of run() to the calling thread.
+ * apport/ui.py: Get rid of thread_check_bugpatterns() and hackish exception
+ handling, rewrite using REThread.
+ * apport/ui.py, gtk/apport-gtk: Add progress bar to report upload. It is
+ indefinite for now, because neither urllib2 nor httplib support upload
+ progress.
+
+ Bug fixes:
+
+ * gtk/apport-gtk.glade: Merged Gnome HIG fixes from Sebastian Heinlein,
+ thank you!
+ * Merge patch from Sebastian Heinlein to properly treat the apport-gtk icon
+ the dh_iconcache way and make it themeable. Thank you!
+ * gtk/apport-gtk: Remove periods from primary dialog texts to comply with
+ Gnome HIG standards.
+ * backends/packaging-dpkg.py, get_file_package(): Process list files in
+ chunks of 100, so that we do not exceed the maximum command line length if
+ there is a large number of packages installed. Closes: LP#64839
+ * gtk/apport-gtk: Use pgrep with -u instead of pidof for testing whether the
+ crashed process is already running again, so that we do not match
+ processes of other users. Add procps package dependency for this.
+ * gtk/apport-gtk: Only offer to restart programs that are in the $PATH. E.
+ g. /usr/lib/firefox/firefox-bin cannot be called directly.
+ Closes: LP#79623
+ * apport/report.py: Disassemble 16 instructions instead of 32 bytes to
+ become independent of the instruction size. Thanks to Kees Cook for the
+ patch!
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 22 Jan 2007 10:47:33 +0100
+
+apport (0.40) feisty; urgency=low
+
+ * debian/control: Add missing python-dev build dependency, which is
+ apparently required for 2.5 now.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 15 Jan 2007 11:06:20 +0100
+
+apport (0.39) feisty; urgency=low
+
+ * Introduce abstract packaging interface and move all dpkg/apt specific bits
+ to a dpkg implementation of this packaging interface (merge
+ apport/abstract-pkg branch):
+ - Add apport/packaging.py: Abstract packaging system query interface.
+ - Add backends/packaging-dpkg.py: dpkg implementation of abstract
+ packaging interface.
+ - run-tests: Run tests of all backends.
+ - apport/fileutils.py, apport/report.py: Port to packaging.py interface.
+ - debian/control: Drop python-apport's 'python-apt' dependency since the
+ backend only uses dpkg now (without measurable performance penalty since
+ it uses internal caching).
+ - debian/rules: Install backends/packaging-dpkg.py as our packaging
+ backend to apport/packaging_impl.py and remove it again on clean.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 13 Jan 2007 15:53:08 +0100
+
+apport (0.38) feisty; urgency=low
+
+ * Add ./COPYING: GPL license.
+ * debian/rules: Build POT file again.
+ * apport/fileutils.py: Add get_all_system_reports() and
+ get_new_system_reports() and added test cases. Now the test suite can also
+ be run as root to be able to actually check their complete behaviour.
+ Adapt the other tests to get along with running the tests as root.
+ * bin/apport-checkreports: Add option --system to check for system crash
+ reports. Closes: LP#62316
+ * gtk/apport-gtk: If called through sudo to process system crashes, drop
+ privileges to the original user in open_url() so that we get the web
+ browser correctly. (LP#62316) Caveat: The user cannot actually attach the
+ crash report file directly since it is not accessible to the user; this
+ will get fixed once Malone is able to link a bug report with uploaded
+ blobs.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 12 Jan 2007 14:29:44 +0100
+
+apport (0.37) feisty; urgency=low
+
+ * problem_report.py: Remove the requirement that values must not contain
+ empty lines. Add test cases that reading and writing values with empty
+ lines works, and add a test case that load() properly complains about
+ empty lines in debcontrol encoding (empty lines in values are encoded with
+ a single space). Closes: LP#78094
+ * apport/report.py test suite: Do not rely on a particular structure of the
+ 'cat' stacktrace; apparently this is not consistent across architectures.
+ Instead, compile a segfaulting mini C program, let it dump core, and test
+ add_gdb_info() on it instead. This also allows us for a more rigid check
+ of StacktraceTop.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 8 Jan 2007 14:44:08 +0100
+
+apport (0.36) feisty; urgency=low
+
+ * gtk/apport-gtk.glade: Restore pulse step of progress bar (this apparently
+ got destroyed when saving with Glade 3).
+ * gtk/apport-gtk{,.glade}: Terminate the program properly when closing the
+ progress dialog instead of exiting with an exception.
+ * gtk/apport-gtk: Defer opening of the bug reporting window a bit so that
+ it appears on top of the browser window. Also enable the task bar blinking
+ for it when it is in the background.
+ * gtk/apport-gtk.glade: Restore vertical padding of bug report dialog labels
+ (another Glade 3 transition regression).
+ * bin/apport-retrace, apport/report.py: Call gdb on InterpreterPath if
+ present; calling it on a script does not yield anything useful. Add a test
+ case to report.py.
+ * debian/apport.init: Use mkdir -p instead of install -d, since install is
+ not in /bin. Thanks to Kees Cook for catching this.
+ * debian/control: Add missing python-apport dependency 'python-apt', which
+ is not caught by ${python:Depends}.
+ * gtk/apport-gtk: Catch MemoryError when loading a report and display an
+ error dialog instead of just crashing. Closes: LP#76235
+ * gtk/apport-gtk: Properly catch exceptions from the bug pattern check
+ thread to avoid useless backtraces like in bug #75160.
+ * gtk/apport-gtk: Catch exceptions from decoding of damaged reports and
+ display an error message instead of crashing. Closes: LP#77149
+ * apport/report.py: Add missing import of 'time' to test suite.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 5 Jan 2007 09:49:01 +0100
+
+apport (0.35) feisty; urgency=low
+
+ Optimizations:
+
+ * apport/fileutils.py: Split out heuristics for determining whether a file
+ belongs to a package to new function likely_packaged() and add test cases.
+ * bin/apport: Do not use the expensive find_file_package() any more, use
+ likely_packaged() instead. This will create initial reports in some
+ corner cases (like custom non-packaged executables in /usr/bin/), but
+ greatly reduces I/O impact at crash time. We rely on apport-gtk to deal
+ with reports that do not actually belong to a packaged executable.
+ * apport/report.py, add_gdb_info(): Call gdb just once and split the output
+ instead of calling it again for each command. This should significantly
+ speed up the gdb stage especially for large programs/core dumps.
+ * Use cStringIO instead of StringIO in modules.
+ * gtk/apport-gtk: Code cleanup and refactorization:
+ - Move iteration over crash reports into __main__ to simplify housekeeping
+ in the ApportGTK class and get rid of some functions.
+ - Refactor creation of temporary report file.
+ * gtk/apport-gtk.glade: Split the text in the progress bar dialog so that we
+ can use it for multiple steps (like uploading data to Malone) while not
+ breaking translations.
+
+ New feature: Bug reporting tool (https://wiki.ubuntu.com/BugReportingTool)
+
+ * gtk/apport-gtk: Split out crash report initialization to new function
+ show_crashes() so that we can use the frontend for other purposes like bug
+ reporting.
+ * gtk/apport-gtk: Add --file-bug, --package, and --pid options; if given,
+ create a bug report about the given package instead of viewing crash
+ reports.
+ * gtk/apport-gtk{,.glade}: Generalize some strings to not talk about 'crash'
+ any more, to make them suitable for bug reporting, too.
+ * gtk/apport-gtk: Support --file-bug without specifying a package or a PID
+ for filing generic distro bugs.
+ * problem_report.py: Add new method write_mime() to encode a problem report
+ in MIME/Multipart RFC 2822 format (i. e. an email with attachments). Short
+ values are aggregated into the first inline text/plain part, large values,
+ binary values, and file references get gzip compressed separate
+ attachments. Also add various test cases.
+
+ Bug/crash information:
+
+ * apport/report.py, add_user_info(): Add list of system groups that the user
+ belongs to.
+ * bin/apport: Call add_user_info(), check functionality in test-apport.
+ * apport/report.py, add_gdb_info(): Add field 'StacktraceTop' with the top
+ five functions on the stack and no local variables. This reduced 'glimpse'
+ is suitable for inline display in bug reports and automatic processing
+ (dup finders, etc).
+
+ Bug fixes:
+
+ * po/Makefile: Add top_srcdir to work with current intltool.
+ * po/de.po: Unfuzz some strings.
+ * apport/report.py, add_gdb_info(): Strip away the 'No symbol table info
+ available' messages from stack traces.
+ * apport/report.py, test_search_bug_patterns(): Use security.u.c. instead
+ of archive.u.c., since the latter times out too often.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 3 Jan 2007 16:45:20 +0100
+
+apport (0.34) feisty; urgency=low
+
+ * apport/fileutils.py, mark_report_seen(): Do not bail out if os.utime()
+ fails due to access permissions. This happens if the file does not belong
+ to the user calling apport-gtk, but is world-readable (such as ubiquity
+ crash reports). If utime() fails, repeatedly open()/close() the file for
+ reading until atime != ctime, or the 1.2s timeout is reached.
+ Closes: LP#72250
+ * apport/python_hook.py: Add unit test, call that in run-tests.
+ * apport/python_hook.py: Chmod the generated report to 0600 to not expose
+ potentially private data to the world, and to be consistent with other
+ crash reports.
+ * apport/fileutils.py: Add check_files_md5() and test cases.
+ * apport/report.py, add_package_info(): Append list of modified package
+ files to Package: and Dependencies: value. Closes: LP#70946
+ * bin/apport-retrace: Get along with Package:/Dependencies: fields with list
+ of modified files.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 22 Dec 2006 12:40:55 +0100
+
+apport (0.33) feisty; urgency=low
+
+ * debian/rules: Convert to cdbs. This fixes the dh_pysupport invocation
+ along the way, too.
+ * gtk/apport-gtk: Rework web browser invocation: Use kfmclient if available,
+ fall back to firefox-remote, then to webbrowser.open(). Do not call
+ x-www-browser any more since this would block if no running browser was
+ open before.
+ * Drop the apport_utils module (and with it the python-apport-utils
+ package), it became too much of a dumping ground. The report file handling
+ functions now live in apport.fileutils, and the debugging information
+ collectors are now methods of a new 'Report' class (subclass of
+ ProblemReport) in the new apport.report module. Adjust all programs
+ accordingly.
+ * Add debian/python-apport.postinst: Remove old .pyc and .pyo cruft on
+ upgrades to clean up after our broken dh_pysupport invocation in earlier
+ versions, so that the new modules are actually used.
+ * Remove debian/apport.postinst: Those cleanups were only necessary for
+ intra-edgy upgrades.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 19 Dec 2006 01:15:27 +0100
+
+apport (0.32) feisty; urgency=low
+
+ * apport_utils.py: Filter out "no debugging symbols found" warnings from gdb
+ outputs, and add some tests for this. Thanks to Kees Cook for the patch!
+ * test-apport: Fix AGENTPATH directory when building the preload library
+ (recently moved to bin/).
+ * use-local: Fix path to apport as well (recently moved to bin/).
+ * apport-retrace: Use ldd on InterpreterPath if present; ldd'ing scripts
+ will not get us very far. Closes: LP#72201
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 14 Dec 2006 13:42:58 +0100
+
+apport (0.31) feisty; urgency=low
+
+ * Move scripts to bin/ in source package.
+ * Add apport/python_hook.py: Default exception handler for Python, to create
+ apport reports for unhandled exceptions. Thanks to Robert Collins
+ <robert@xxxxxxxxxx> for this! Closes: LP#70957
+ * Add new package python-apport to ship the new Python package 'apport'.
+ This includes the python crash hook for now, but in the near future
+ apport-utils will get redesigned and put into this package, too.
+ * debian/control: apport now depends on python-apport instead of
+ python-apport-utils.
+ * apport_utils.py: Quiesce gdb error messages in test suite.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 25 Nov 2006 12:30:41 +0100
+
+apport (0.30) feisty; urgency=low
+
+ * test-apport, use-local: Support both kernel 2.6.17 and 2.6.19 sysctl names
+ (crashdump-helper vs. crashdump).
+ * gtk/apport-gtk.glade: Improve dialog title capitalization.
+ Closes: LP#70652.
+ * debian/apport.cron.daily: Immediately exit if /var/crash does not exist.
+ Create /var/crash in debian/apport.init if it does not exist.
+ Closes: LP#71599
+ * Convert all tabs in Python source code files to spaces to comply to PEP 8.
+ Thanks to Robert Collins for pointing this out.
+ * apport_utils.py, gtk/apport-gtk: Do not pass None to subprocess arguments
+ if report belongs to a non-packaged program. Thanks to Robert Collins for
+ discovering and fixing this! Closes: LP#70942
+ * debian/apport.init: Change /var/crash permissions to 1777, so that custom
+ crash handlers (in Python/Mono/etc.) can put reports there.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sat, 25 Nov 2006 10:44:33 +0100
+
+apport (0.29) feisty; urgency=low
+
+ * apport-retrace: Do not crash if a linked library is not a dependency.
+ Closes: LP#65914
+ * apport_utils.py:
+ - Add test_find_file_package_diversion() selftest to check diversion
+ handling.
+ - find_file_package(): Check for and respect diversions.
+ - Closes: LP#65917
+ * debian/apport.init, test-apport, use-local: Adapt to 'crashdump-helper' ->
+ 'crashdump' sysctl renaming in 2.6.19.
+ * test-apport: Restore cwd even when failing a test.
+ * problem_report.py, ProblemReport.write(): Support file-like objects as
+ argument of file references to support direct reading from pipes. Add test
+ case test_write_fileobj().
+ * apport: Support '-' as core file argument, in which case the core will be
+ read from stdin. This paves the way for using Linux 2.6.19's 'pipe
+ core_pattern' feature. Bump python-problem-report dependency to >= 0.29
+ for this.
+ * apport: Confine permissions of log file to root:adm 0640, just in case.
+ * apport: Temporarily drop real u/gid to target user for the os.access()
+ tests, so that normal users cannot verify the existence of a given
+ inaccessible file. Add comprehensive tests to apport_utils' test suite and
+ test-apport. Thanks to Kees Cook for this patch!
+ * apport_utils.py, find_file_package(): Terminate fgrep options with '--' to
+ avoid problems with funny file names. Thanks to Kees Cook for spotting
+ this!
+ * test-apport: Automatically detect whether ULIMIT_CORE is nonzero, and
+ adapt tests accordingly: check that core still exists after invoking
+ apport, and clean it up.
+ * apport-retrace: Add new mode -g/--gdb which starts an interactive gdb
+ session with the report's core dump. Add this to man/apport-retrace.1, too.
+ * apport-retrace: If -c is given, completely remove the CoreDump field from
+ the report instead of setting it to 'removed'.
+ * test-apport: When using 'lib' mode, point APPORT_LOG_FILE to a temporary
+ file. Print it if the test suite fails.
+ * test-apport: Fix EXFAILure of the 'core dump works for non-writable cwds'
+ test case.
+ * preloadlib: Support -DPIPE_CORE mode which emulates the
+ pipe-in-core_pattern mode of kernel 2.6.19.
+ * test-apport: Build preload library with core piping. No more failed test
+ suite checks in 'lib' mode.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sun, 5 Nov 2006 07:10:30 -0800
+
+apport (0.28) edgy; urgency=low
+
+ "No core - ignore!"
+
+ * apport: Do not create a report for crashes which we do not get a core dump
+ for. The reports are useless and only clutter our bug tracker.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 9 Oct 2006 15:22:32 +0200
+
+apport (0.27) edgy; urgency=low
+
+ * apport: Ignore SIGABRT for now; it's usually signalled from abort() or
+ assertion failures and we only get reports with unusable stack traces for
+ it (see #61938).
+ * gtk/apport-gtk: If gnome-open is not available, fall back to x-www-browser
+ instead of using webbrowser.py, to respect default browser in XFCE.
+ Closes: LP#64209
+ * apport: use os.nice() instead of executing 'renice'. Thanks to Benoit
+ Boissinot for noticing.
+ * apport_utils.py, find_file_package(): Lower() both strings in the speedup
+ heuristics to match e. g. /usr/bin/Xorg -> xserver-xorg. Thanks to Kees
+ Cook!
+ * apport_utils.py, report_add_package_info(): Do not crash if we encounter a
+ 'None' current version, which can happen with uninstalled alternative
+ dependencies. Thanks to Kees Cook for tracking this down!
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 6 Oct 2006 17:15:08 +0200
+
+apport (0.26) edgy; urgency=low
+
+ * apport-retrace: Clean up code a bit:
+ - Move option parsing to separate function.
+ - Use apport_utils' report_add_gdb_info() instead of duplicating the gdb
+ code.
+ * apport_utils.py, report_add_gdb_info(): Add optional parameter 'debugdir'
+ to specify an alternate debug file symbol root directory.
+ * apport-retrace: Add option -d/--download-debug to automatically download
+ available ddebs, create a temporary debug symbol directory from already
+ installed and downloaded ddebs, and point gdb to use that. Also add option
+ -C/--cache-dir to specify a permanent ddeb cache directory (by default, a
+ temporary one is used). Update the manpage accordingly.
+ * apport-retrace: Make the best out of a report without packaging
+ information (which can happen if the user does not click on 'report bug'
+ in apport-gtk).
+ * apport_utils, report_add_proc_info():
+ - Move heuristics for detecting interpreted scripts to a separate function
+ to be able to provide separate test cases for it. Check a few more
+ special cases for mono programs.
+ - Make interpreter heuristics even scarier to detect some more mono corner
+ cases (like banshee and beagled-helper). Closes: LP#58859
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 4 Oct 2006 19:10:47 +0200
+
+apport (0.25) edgy; urgency=low
+
+ * Drop apport-gtk's update-notifier dependency to a Recommends:.
+ * apport_utils.py, report_add_gdb_info(): Add register dump and disassembly
+ of the last 32 bytes, they might be useful to see what's going on
+ sometimes. Thanks to Kees Cook for the idea and the patch.
+ * test-apport, check_crash(): Verify that a crash does not leave a core file
+ behind. (Test for LP#62972)
+ * preloadlib/libapport.c: Do not unlink the core file after calling apport,
+ but set REMOVE_CORE=1 environment instead. This matches the current
+ kernel behaviour.
+ * apport: Register an atexit handler as early as possible for unlinking the
+ core dump if REMOVE_CORE environment is set. Closes: LP#62972
+ * apport: Set nice level 10 instead of 5. Closes: LP#63099
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 2 Oct 2006 14:21:53 +0200
+
+apport (0.24) edgy; urgency=low
+
+ The "Need for speed" release -- rrrroarrr!
+
+ * apport: Remove _copy_shrink_corefile(): While this has an enormous impact
+ on the size of an uncompressed core dump, it only causes a negligible size
+ reduction of the bzip2'ed core, but it needs a lot of I/O resources for
+ large core dumps.
+ * problem_report.py:
+ - Use zlib instead of bzip2 for compressing the binary data (in
+ particular, core dumps). This results in slightly bigger files, but speeds
+ up compression a lot (30 seconds vs. ~2:45 minutes for a Firefox core dump
+ on my slow iBook). Closes: LP#61538
+ - ProblemReport.read(): Support both bzip2 and zlib compression to be able
+ to read existing reports, too.
+ - Add/Adapt test cases.
+ * Move InformationCollector._get_gdb() from apport to apport_utils.py
+ report_add_gdb_info(), and add a test case for it.
+ * apport_utils.py, report_add_package_info(): Support calling without a
+ package name, then it will be figured out from ExecutableName. Extend test
+ case accordingly.
+ * test-apport: Do not require apport reports to contain gdb, packaging, and
+ OS information, since we are going to move them out of apport.
+ * apport: Do not collect static information. It requires a lot of CPU and
+ I/O resources and slows down the machine a lot, and it can be added to
+ the report later in the frontend. This also gets rid of the entire
+ InformationCollector class, since everything has been moved to
+ apport_utils.py now. Closes: LP#62542
+ * apport: Do not intercept KeyboardInterrupt as unhandled exception (only
+ useful for command line debugging, though).
+ * problem_report.py: Add test case for appending new data to an existing
+ report, fix write() function to not rely on an existing ProblemType key.
+ * problem_report.py: Add new method ProblemReport.add_to_existing() to
+ update an already existing problem report with new data. Add test case.
+ * apport_utils.py, mark_report_seen(): Use os.utime() instead of
+ open()/read() and a timeout for simpler and faster operation.
+ * gtk/apport-gtk:
+ - Collect gdb/packaging/operating system information when the user chooses
+ to file a bug and update the apport report.
+ - Change the 'Downloading bug patterns...' progress dialog to 'Collecting
+ information about the crash...'.
+ * debian/control: Bumped library dependencies of apport-gtk, added
+ update-notifer dependency.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 29 Sep 2006 15:47:56 +0200
+
+apport (0.23) edgy; urgency=low
+
+ * apport: Reset signal handler to SIG_IGN in the crash signal handler, to
+ avoid an endless crash/handler loop (noticed during debugging LP#61708).
+ * debian/apport.init: Do not let the script run with set -e, so that
+ do_{start,stop} can deliver their return codes for proper evaluation,
+ instead of immediately existing. Closes: LP#61796
+ * test-apport: Check that SIGQUIT does not generate a report. (Check for
+ bug #62511).
+ * apport: Ignore SIGQUIT. Closes: LP#62511
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 28 Sep 2006 20:57:38 +0200
+
+apport (0.22) edgy; urgency=low
+
+ * apport_utils.py, report_add_proc_info(): Make 'interpreted script'
+ detection more general to also work for mono programs.
+ * test-apport: Check that non-packaged scripts do not generate a report.
+ * apport: Call ic.collect_runtime_information() earlier and drop the local
+ /proc/pid/exe examination, so that we get proper script detection. This
+ avoids getting crash reports for non-packaged scripts (see test case
+ change from above).
+ * apport: Do not try to chmod the report file if we could not create it and
+ output to stderr instead (this mainly affects local testing only).
+ * apport_utils.py, find_file_package(): First grep the package lists whose
+ names are a substring of the crashed binary name (or vice versa), to
+ immensely speed up the package name determination in many cases.
+ * apport: Drop the maximum number of consecutive crashes per executable
+ from 5 to 2. 5 creates a too bad user experience and creates the
+ impression that it will never stop. Closes: LP#61078
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 19 Sep 2006 16:16:46 +0200
+
+apport (0.21) edgy; urgency=low
+
+ * apport: Keep a partially written report with '000' permissions, and only
+ chmod it to 0600 when it is fully written. This stops update-notifier from
+ picking up half-written reports and get activated several times.
+ Closes: LP#59988
+ * apport: Add the executable path to the first line of logging.
+ * apport: Run the complete code under control of the general exception
+ fallback handler.
+ * debian/apport.default: Increase maximum core size to 200 MB, to also catch
+ Firefox and Evolution core dumps.
+ * apport_utils.py, find_file_package(): Before searching the dpkg database
+ (which is expensive), check if the executable path matches a whitelist of
+ path prefixes. This replaces the weaker blacklist (/tmp and /home) in
+ apport itself.
+ * gtk/apport-gtk: Show a progress dialog while checking for bug patterns and
+ execute report_search_bug_patterns() in a separate thread, so that the UI
+ is not potentially blocked for a long time.
+ * apport: Gracefully abort if we cannot readlink /proc/pid/exe, instead of
+ falling over with an exception. Closes: LP#59993
+ * debian/rules: Use 'multiuser' instead of 'defaults' for dh_installinit.
+ Clean up the unnecessary rc symlinks in postinst and add appropriate
+ sysv-rc dependency.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 14 Sep 2006 23:16:26 +0200
+
+apport (0.20) edgy; urgency=low
+
+ * apport: Renice ourself to priority 5 to not slow down the user's processes
+ so heavily.
+ * Add manpages for apport-retrace(1) and apport-unpack(1) and install them
+ into apport. Closes: LP#58463
+ * problem_report.py: Test attaching two files instead of one in the
+ test_write_file() regression check to assert correct key sorting.
+ * problem_report.py: Alter write() method to sort binary data to the end of
+ the report. This makes reports easier to read, and also shows relevant
+ information more quickly when progressively loading them in a web browser.
+ Adapt regression tests accordingly.
+ * Move setting of ExecutablePath from apport's InformationCollector ctor to
+ apport_utils' report_add_proc_info(), where it belongs to. Check
+ ExecutablePath in apport_utils' regression tests.
+ * apport-unpack: Support '-' as report argument to read from stdin.
+ * apport_utils.py, report_add_proc_info():
+ - Apply some heuristics to determine whether the crashed process is an
+ interpreted script (check if the Name in /proc/pid/status matches
+ the second /proc/pid/cmdline part, and if that command line argument is
+ an existing executable file). In the case of an interpreted script, set
+ ExecutablePath to the script and InterpreterPath to the actually crashed
+ ELF binary.
+ - Test this with a shell (/bin/zgrep) and a Python (./apport-unpack)
+ script in the test suite.
+ - Closes: LP#58859
+ * Add debian/apport.logrotate to add a daily 7-step /var/log/apport
+ log rotation.
+ * test-apport: Fix WCOREDUMP() and pidof checks in check_crash().
+ * apport: Install a signal handler for all 'crashy' signals, which just logs
+ the signal and stack info and exits. This should avoid a crashing apport
+ examining itself, possibly in an endless loop. Closes: LP#58873
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 11 Sep 2006 09:20:18 +0200
+
+apport (0.19) edgy; urgency=low
+
+ * apport_utils.py: Add function report_search_bug_patterns(): Try to
+ download a package specific bug pattern XML file from a given URL base
+ directory and return the bug URL in case of a match. Also add extensive
+ test suite check.
+ * test-apport: Fix help message.
+ * apport-gtk: Make use of the new report_search_bug_patterns() function and
+ display appropriate instructions on match. Bump python-apport-utils dependency.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 5 Sep 2006 11:31:17 +0200
+
+apport (0.18) edgy; urgency=low
+
+ The "mating dance for ubiquity" release.
+
+ * apport-gtk:
+ - Use pidof's -x option in the detection whether the program is already
+ running to correctly handle scripts.
+ - Do not assume the presence of the ExecutablePath key in reports, but
+ gracefully fall back to Package.
+ - If the report specifies an explicit DesktopFile, use that instead of
+ trying to figure it out.
+ - Only created reduced report and show the radio buttons if there are
+ actually removed fields.
+ - Change tooltip of 'reduced report' radio button to be more generic (do
+ not refer to the memory dump, but to 'large items', since this is what
+ apport-gtk currently does).
+ - Support new field 'BugDisplayMode: file | list (default)'. In 'file'
+ mode, display the /+filebug page instead of /+bugs and change
+ instructions accordingly.
+ - Use the ProcCmdline attibute to restart an application; correctly
+ parsing of all the desktop file is just not possible at this point.
+ - Support new field 'RespawnCommand' to use custom respawning command.
+ * problem_report.py: Add method has_removed_fields() to check whether load()
+ skipped any fields due to binary=False. Add test suite check.
+ * apport_utils.py: Fix the quoting in ProcCmdline so that it is fully shell
+ compatible.
+ * run-tests: Check if kernel crash dump helper is active, and if so, run
+ test-apport in kernel mode.
+ * problem_report.py: Support an optional second argument of file references
+ which controls whether or not the file contents will be compressed/encoded
+ (defaults to True for backwards compatibility). Add test suite checks.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 25 Aug 2006 14:01:47 +0200
+
+apport (0.17) edgy; urgency=low
+
+ * Move packaging information collection from apport to new function
+ report_add_package_info() in apport_utils.py, add test suite check.
+ * Move operating system information collection from apport to new function
+ report_add_os_info() in apport_utils.py, add test suite check.
+ * Move /proc information collection from apport to new function
+ report_add_proc_info() in apport_utils.py, add test suite check, and fix
+ handling of failed /proc/$$/environ reading.
+ * preloadlib/libapport.c: Route gcore's stderr to /dev/null to suppress
+ error messages during the test suite and to become more compatible to the
+ kernel behaviour.
+ * Change apport_utils.py to be a public module and ship it in the new
+ python-apport-utils package, so that other applications like ubiquity can
+ use it easily.
+ * po/de.po: Add new translations to make this complete again.
+ * problem_report.py, apport_utils.py: Prepend UnitTest classes with '_' so
+ that they do not appear in the help() output.
+ * apport_utils.py: Add make_report_path(), which constructs the canonical
+ crash report pathname for a given report.
+ * Add debian/apport.postinst: Remove /usr/share/apport/apport_utils.pyc when
+ upgrading from an earlier version, so that the programs in
+ /usr/share/apport actually use the version from p-apport-utils.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 22 Aug 2006 18:14:00 +0200
+
+apport (0.16) edgy; urgency=low
+
+ * test-apport: Check that non-packaged binaries do not generate a report.
+ * apport_utils.py: Add find_file_package() to find the package a file
+ belongs to. This uses fgrep /var/lib/dpkg/info/*.list which is much faster
+ than dpkg -S. Also add test suite check.
+ * apport: Use find_file_package() instead of direct dpkg -S call and pass
+ the result to the InformationCollector ctor to avoid grepping the dpkg
+ lists twice.
+ * apport: Immediately exit if the executable name starts with /home or /tmp,
+ to avoid grepping the dpkg database in the common developer case.
+ * apport: Replace 0-bytes in ProcCmdline with spaces to keep them readable.
+ * apport-gtk: Offer an alternative small report (without the core dump) for
+ users with slow internet connection.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 21 Aug 2006 19:34:47 +0200
+
+apport (0.15) edgy; urgency=low
+
+ * Add apport-unpack: Script to extract the fields of a problem report into
+ separate files into a new or empty directory. Mainly useful for extracting
+ compressed binary data like the core dump.
+ * test-apport: Check that dumped environment only contains security
+ insensitive variables.
+ * apport: Filter out all environment variables but $SHELL, $PATH, and
+ locale/language related ones. Closes: LP#56846
+ * test-apport: Delete test report in the cleanup handler so that the
+ kernel-mode test can be run multiple times without manual cleanup.
+ * test-apport: Check for running apport and test executable processes in
+ check_crash().
+ * preloadlib/libapport.c: Improve error checking, some robustification.
+ * test-apport: If using the preload library, wait a second between the test
+ process invocations in the flooding test to mitigate a strange race
+ condition that sometimes causes the signal handler not to be executed.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Sun, 20 Aug 2006 16:28:43 +0200
+
+apport (0.14) edgy; urgency=low
+
+ * preloadlib/libapport.c: Write core dump into cwd instead of /tmp to act
+ like the current kernel.
+ * apport_utils.py: Check APPORT_REPORT_DIR environment variable for an
+ alternate crash report directory. This is mainly useful for a local test
+ suite.
+ * apport: Quiesce the apt module's FutureWarning.
+ * preloadlib/libapport.c: Re-raise the signal instead of doing exit() so
+ that the process exits with the same code as it would do without the
+ library.
+ * preloadlib/libapport.c: Close stdout for gcore process.
+ * Add test-apport: Use preloadlib/ and APPORT_REPORT_DIR to create a
+ sandboxed environment and run various apport functionality tests. Also add
+ this script to run-tests.
+ * apport_utils.py, delete_report(): Actually try to unlink the report before
+ falling back to truncating it to zero bytes.
+ * preloadlib/libapport.c: Close stderr for apport process.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 18 Aug 2006 15:46:37 +0200
+
+apport (0.13) edgy; urgency=low
+
+ * Do not run the test suite on build since on the buildds modifying
+ file atimes does not work.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 18 Aug 2006 00:59:26 +0200
+
+apport (0.12) edgy; urgency=low
+
+ * apport-gtk: Make bug report window resizable when the details are
+ expanded. Closes: LP#56672
+ * apport_utils.py: Add get_recent_crashes() and a test suite check for it.
+ * apport: If the same binary produced more than 5 crashes in the last 24
+ hours, ignore the crash. This is a hideous and pretty ad-hoc band-aid to
+ avoid flooding users with reports for continuously crashing respawning
+ processes. Closes: LP#56362
+ * apport: Clean up exit codes to only exit with 0 if report was created, and
+ with 1 otherwise (to become more compatible to proposed future kernel
+ behaviour, where core dumps are only generated on demand).
+ * Add run-tests script which calls all available selftests.
+ * debian/rules: Run run-tests during build to have the package FTBFS on
+ regressions. Add python build dependency for this (it is already there
+ implicitly anyway).
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 17 Aug 2006 16:06:41 +0200
+
+apport (0.11) edgy; urgency=low
+
+ * gtk/apport-gtk.glade: Remove separators from dialogs. Closes: LP#56326
+ * apport:
+ - Move information collection from ctor to two new separate functions
+ collect_runtime_information() (fast, privileged, crashed process must
+ exist) and collect_static_information() (slow, unprivileged, crashed
+ process does not need to exist). This allows a cleaner design.
+ - Add missing close() call in init_error_log().
+ - Do not catch SystemExit in the final catch-all-and-log clause (will
+ become important once we switch to master/slave processes).
+ - Clean up handling of temporary files.
+ - Log successful report creation with file and package name, to ease
+ debugging.
+ - transitive_dependencies(): Do not break on pure virtual dependencies
+ (like perl-api-XXX).
+ * Add debian/apport.default: Default file to disable apport entirely and to
+ change the maximum size of kernel created core dumps.
+ * debian/apport.init: Evaluate new default file.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 16 Aug 2006 17:05:19 +0200
+
+apport (0.10) edgy; urgency=low
+
+ * apport-gtk: Show report file size in bug report window.
+ * apport: Correctly handle relative paths to core dumps (use crashed
+ process' cwd).
+ * Fix the GPL URLs in source file's copyright comments.
+ * debian/apport.cron.daily: Add -mindepth 1 to find commands to avoid
+ attempting to remove the /var/crash/ directory. Closes: LP#55107
+ * problem_report.py:
+ - Fix precise whitespace handling in continuation lines, add selftest.
+ - Add selftest for reading a report, modifying fields, and writing it
+ back.
+ - Fix writing back binary data, adapt test suite to check it.
+ - Fixed ProblemReport.load() to clean up old data, added selftest.
+ - Restructure class to inherit from IterableUserDict and throw away all
+ the now obsolete dictionary wrapper methods.
+ * debian/apport.init: Add colon to description to make output less
+ confusing.
+ * Add apport-retrace and install it into apport: This tool takes a crash
+ report and refreshes the stack traces in it. This is particularly useful
+ if debug symbols are installed now, but haven't been at the time the crash
+ occured.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Fri, 11 Aug 2006 15:40:05 +0200
+
+apport (0.9) edgy; urgency=low
+
+ * apport: Call objcopy to throw out READONLY/CODE sections from the core
+ dump, which drastically reduces its (uncompressed) size (factor 2 to 10).
+ This has little effect on the bzip2'ed core dump, though.
+ * apport:
+ - Support an optional third command line argument which specifies the
+ location of a core dump.
+ - If a core dump is given, call gdb on the core dump instead of the
+ crashed process. We cannot attach to the latter if we are called by the
+ kernel (since the crashed process is in uninterruptible kernel sleep).
+ - If no core dump is given, do not attempt to do anything gdb related.
+ - This matches the future behaviour of the kernel crash dump helper while
+ remaining compatible to the previous call semantics.
+ * Add preloadlib/{Makefile,libapport.c}: LD_PRELOADable library which
+ emulates the future kernel behaviour. This is ONLY for testing and
+ development purposes. It uses unsafe temporary file handling and thus must
+ not be used on production boxes!
+ * Ship preloadlib/* as examples in package 'apport' for people who want to
+ play with it until the new kernel arrives.
+ * Add preloadlib/README: Explain how to use the preload library.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 9 Aug 2006 12:12:20 +0200
+
+apport (0.8) edgy; urgency=low
+
+ * apport_utils.py:
+ - Add two new functions seen_report() and mark_report_seen().
+ - get_new_reports(): Only return unseen reports, add function
+ get_all_reports() for the old behaviour.
+ * gtk/apport-gtk.py: Do not delete reports after notifying about them. This
+ way, we do not need to add another button to save the report (which is
+ considered evil UI-wise), but still retain the report for filing and
+ examining later.
+ * Replace all usages of '/var/crash' to a new global variable in
+ apport_utils; this is particularly useful for test suites.
+ * apport.py: Overwrite old reports if they are seen.
+ * apport_utils.py: Add a test suite for all exported functions.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 8 Aug 2006 19:29:23 +0200
+
+apport (0.7) edgy; urgency=low
+
+ * Add apport_utils.py: Factorize out some common code of apport-gtk,
+ possible future frontends, and some backend tools.
+ * Add apport-checkreports: Test if there are new crash reports for the
+ invoking user. This factorizes out the tests we currently do in
+ update-notifier and makes them easier to change and keep in sync with
+ apport itself. Ship the script in the apport package.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Tue, 8 Aug 2006 17:24:46 +0200
+
+apport (0.6) edgy; urgency=low
+
+ * Add missing intltool build dependency to fix FTBFS.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 3 Aug 2006 09:15:42 +0200
+
+apport (0.5) edgy; urgency=low
+
+ * apport-gtk: Remove the crash report after it got displayed.
+ * apport-gtk: Fix exception on startup if no readable crash reports exist.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 2 Aug 2006 23:42:34 +0200
+
+apport (0.4) edgy; urgency=low
+
+ * Implement completely new UI according to the design described at
+ https://wiki.ubuntu.com/CrashReporting. Many thanks to Matthew Paul
+ Thomas!
+ * po/Makefile: Fix default target to not just break. Now it builds the .pot
+ file.
+ * debian/rules: Build .pot file on package build for automatic Rosetta
+ import.
+ * Bring German translations up to date.
+ * po/Makefile: Supply '--language=python' to intltool-update to properly
+ extract strings from apport-gtk.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Wed, 2 Aug 2006 23:14:58 +0200
+
+apport (0.3) edgy; urgency=low
+
+ * debian/rules clean: Also clean po/.
+ * debian/apport.cron.daily: Clean away empty files everytime.
+ * apport: Only consider a report as already present if it has a non-zero
+ size.
+ * apport: Set proper group for report files instead of 'root'.
+ * apport-gtk: Ignore 0-sized reports.
+ * apport-gtk: Add button to remove the current report (by truncating the
+ file to zero bytes; a user cannot unlink files in /var/crash).
+ * apport-gtk: Only display reports that the user can actually read.
+ * problem_report.py: Add 'binary' option to ProblemReport.load() to
+ optionally skip binary data.
+ * debian/rules: Clean stale *.pyc files.
+ * python-gtk: Do not load binary data (core dumps, etc.) to greatly speed up
+ the GUI. They are just gibberish anyway.
+ * apport: Switch from apt_pkg to apt, add SourcePackage: to reports.
+ * apport-gtk: Use source package name for the Malone URL.
+ * debian/rules: Call setup.py install with --no-compile to not ship *.pyc in
+ debs.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 31 Jul 2006 13:11:52 +0200
+
+apport (0.2) edgy; urgency=low
+
+ * debian/apport.cron.daily: Do not produce error messages if 'find' does not
+ find any crash reports.
+ * problem_report.py: Support iterators, add test case.
+ * apport: Filter out trailing 0-byte from ProcCmdline.
+ * Add a simple GTK frontend, ship it in new package apport-gtk.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Thu, 27 Jul 2006 23:52:33 +0200
+
+apport (0.1) edgy; urgency=low
+
+ * Initial release. This package implements the client backend part of
+ https://wiki.ubuntu.com/AutomatedProblemReports.
+
+ -- Martin Pitt <martin.pitt@xxxxxxxxxx> Mon, 24 Jul 2006 14:21:10 +0200
+
=== added file 'debian/clean'
--- debian/clean 1970-01-01 00:00:00 +0000
+++ debian/clean 2011-04-18 21:01:06 +0000
@@ -0,0 +1,1 @@
+debhelper/dh_apport.1
=== added file 'debian/compat'
--- debian/compat 1970-01-01 00:00:00 +0000
+++ debian/compat 2011-04-18 21:01:06 +0000
@@ -0,0 +1,1 @@
+7
=== added file 'debian/control'
--- debian/control 1970-01-01 00:00:00 +0000
+++ debian/control 2011-04-18 21:01:06 +0000
@@ -0,0 +1,146 @@
+Source: apport
+Section: utils
+Priority: optional
+Build-Depends: cdbs (>= 0.4.43),
+ debhelper (>= 7.3.15ubuntu2),
+ python-central (>= 0.5.6),
+ python-all
+Build-Depends-Indep: python-distutils-extra (>= 2.24~),
+ python-apt (>= 0.7.9),
+ intltool,
+ default-jdk | java-sdk
+Maintainer: Martin Pitt <martin.pitt@xxxxxxxxxx>
+Standards-Version: 3.9.1
+XS-Python-Version: all
+Vcs-Bzr: https://code.launchpad.net/~ubuntu-core-dev/ubuntu/natty/apport/ubuntu
+Homepage: https://wiki.ubuntu.com/Apport
+
+Package: apport
+XB-Python-Version: ${python:Versions}
+Architecture: all
+Depends: python (>= 2.4),
+ python-apport (>= 0.120),
+ lsb-base (>= 3.0-6),
+ sysv-rc (>= 2.86.ds1-14.1ubuntu2),
+ ${misc:Depends}
+Replaces: ubiquity, python-apport (<< 1.17.2-0ubuntu3)
+Recommends: apport-symptoms
+Suggests: apport-gtk | apport-kde
+Description: automatically generate crash reports for debugging
+ apport automatically collects data from crashed processes and
+ compiles a problem report in /var/crash/. This utilizes the crashdump
+ helper hook provided by the Ubuntu kernel.
+ .
+ This package also provides a command line frontend for browsing and
+ handling the crash reports. For desktops, you should consider
+ installing the GTK+ or Qt user interface (apport-gtk or apport-kde).
+
+Package: python-problem-report
+XB-Python-Version: ${python:Versions}
+Section: python
+Architecture: all
+Depends: ${python:Depends},
+ ${misc:Depends}
+Description: Python library to handle problem reports
+ This Python library provides an interface for creating, modifying,
+ and accessing standardized problem reports for program and kernel
+ crashes and packaging bugs.
+ .
+ These problem reports use standard Debian control format syntax
+ (RFC822).
+
+Package: python-apport
+XB-Python-Version: ${python:Versions}
+Section: python
+Architecture: all
+Depends: ${python:Depends},
+ python-apt (>= 0.7.9),
+ python-problem-report (>= 0.94),
+ python-launchpadlib (>= 1.5.7),
+ ${misc:Depends}
+Description: apport crash report handling library
+ This Python package provides high-level functions for creating and
+ handling apport crash reports:
+ .
+ * Query available and new reports.
+ * Add OS, packaging, and process runtime information to a report.
+ * Various frontend utility functions.
+ * Python hook to generate crash reports when Python scripts fail.
+
+Package: apport-retrace
+XB-Python-Version: ${python:Versions}
+Section: devel
+Architecture: all
+Depends: python (>= 2.4),
+ python-apport (>= 0.124),
+ python-apt (>= 0.7.9),
+ apt,
+ binutils,
+ dpkg-dev,
+ ${misc:Depends}
+Suggests: debootstrap (>= 0.3.3.2ubuntu2), fakeroot, fakechroot
+Description: tools for reprocessing Apport crash reports
+ apport-retrace recombines an Apport crash report (either a file or a
+ Launchpad bug) and debug symbol packages (.ddebs) into fully symbolic
+ stack traces.
+ .
+ This package also ships apport-chroot. This tool can create and
+ manage chroots for usage with apport-retrace. If the fakeroot and
+ fakechroot libraries are available (either by installing the packages
+ or by merely putting their libraries somewhere and setting two
+ environment variables), the entire process of retracing crashes in
+ chroots can happen with normal user privileges.
+
+Package: apport-gtk
+XB-Python-Version: ${python:Versions}
+Section: gnome
+Architecture: all
+Depends: python (>= 2.4),
+ python-apport (>= 0.80),
+ python-gobject (>= 2.27.91),
+ gir1.2-gtk-2.0 (>= 2.23.90-0ubuntu3),
+ python-xdg,
+ apport (>= 0.41),
+ procps,
+ ${misc:Depends}
+Recommends: update-notifier, gdb
+Description: GTK+ frontend for the apport crash report system
+ apport automatically collects data from crashed processes and
+ compiles a problem report in /var/crash/. This utilizes the crashdump
+ helper hook provided by the Ubuntu kernel.
+ .
+ This package provides a GTK+ frontend for browsing and handling the
+ crash reports.
+
+Package: apport-kde
+XB-Python-Version: ${python:Versions}
+Section: kde
+Architecture: all
+Depends: python (>= 2.4),
+ python-apport (>= 0.80),
+ python-kde4,
+ python-xdg,
+ apport (>= 0.41),
+ procps,
+ ${misc:Depends}
+Recommends: kubuntu-notification-helper, gdb
+Description: KDE frontend for the apport crash report system
+ apport automatically collects data from crashed processes and
+ compiles a problem report in /var/crash/. This utilizes the crashdump
+ helper hook provided by the Ubuntu kernel.
+ .
+ This package provides a KDE frontend for browsing and handling the
+ crash reports.
+
+Package: dh-apport
+Section: devel
+Architecture: all
+Depends: ${perl:Depends},
+ ${misc:Depends}
+Description: debhelper extension for the apport crash report system
+ apport automatically collects data from crashed processes and
+ compiles a problem report in /var/crash/. This utilizes the crashdump
+ helper hook provided by the Ubuntu kernel.
+ .
+ This package provides a debhelper extension to make it easier for other
+ packages to include apport hooks.
=== added file 'debian/copyright'
--- debian/copyright 1970-01-01 00:00:00 +0000
+++ debian/copyright 2011-04-18 21:01:06 +0000
@@ -0,0 +1,24 @@
+apport is written and maintained by Martin Pitt
+<martin.pitt@xxxxxxxxxx>. Initial packaging was on Wed, 12 July 2006.
+
+The upstream source was downloaded from:
+ https://launchpad.net/apport/+download
+
+Copyright (C) 2006-2009 Canonical Ltd.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL-2'.
=== added file 'debian/dh-apport.install'
--- debian/dh-apport.install 1970-01-01 00:00:00 +0000
+++ debian/dh-apport.install 2011-04-18 21:01:06 +0000
@@ -0,0 +1,2 @@
+../../debhelper/dh_apport usr/bin
+../../debhelper/apport.pm usr/share/perl5/Debian/Debhelper/Sequence
=== added file 'debian/dh-apport.manpages'
--- debian/dh-apport.manpages 1970-01-01 00:00:00 +0000
+++ debian/dh-apport.manpages 2011-04-18 21:01:06 +0000
@@ -0,0 +1,1 @@
+debhelper/dh_apport.1
=== added directory 'debian/local'
=== added file 'debian/local/apport-chroot'
--- debian/local/apport-chroot 1970-01-01 00:00:00 +0000
+++ debian/local/apport-chroot 2011-04-18 21:01:06 +0000
@@ -0,0 +1,350 @@
+#!/usr/bin/python
+
+# Execute operations on/in apport chroots.
+#
+# Copyright (c) 2007 Canonical Ltd.
+# Author: Martin Pitt <martin.pitt@xxxxxxxxxx>
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version. See http://www.gnu.org/copyleft/gpl.html for
+# the full text of the license.
+
+import optparse, os.path, sys, urllib, re, atexit, shutil, subprocess, tempfile
+from glob import glob
+
+import problem_report
+from apport.chroot import Chroot, setup_fakeroot_env
+from apport.crashdb import get_crashdb
+
+#
+# functions
+#
+
+def parse_options():
+ '''Parse command line options and return (options, args) tuple.'''
+
+ optparser = optparse.OptionParser('''%prog [options] create <release> <chroot path>
+%prog [options] upgrade <chroot path>|<chroot release name>|all
+%prog [options] installdeb <chroot path>|<chroot release name> <path to .deb> [...]
+%prog [options] login <chroot path>|<chroot release name>
+%prog [options] retrace <bugnumber>|<report file>''')
+
+ optparser.add_option('--mirror',
+ help='Mirror for chroot creation',
+ action='store', type='string', dest='mirror', metavar='URL', default=None)
+ optparser.add_option('-a', '--apt-source',
+ help='Add an extra apt source',
+ action='append', type='string', dest='extra_apt', metavar='SOURCE', default=[])
+ optparser.add_option('-t', '--tar',
+ help='Create chroot tarball instead of directory',
+ action='store_true', dest='tar', default=False)
+ optparser.add_option('--save',
+ help='When logging in to a chroot tarball, update the tarball afterwards to save modifications if the shell exits with status 0.',
+ action='store_true', dest='tar_save', default=False)
+ optparser.add_option('-m', '--chroot-map',
+ help='Path to chroot map. This is a file that defines a Python dictionary, mapping DistroRelease: values to chroot paths',
+ action='store', type='string', dest='chroot_map', metavar='FILE', default=None)
+ optparser.add_option('-p', '--extra-package',
+ help='Install an extra package (can be specified multiple times)',
+ action='append', type='string', dest='extra_packages', metavar='PACKAGE', default=[])
+ optparser.add_option('-v', '--verbose',
+ help='Verbose operation (also passed to apport-retrace)',
+ action='store_true', dest='verbose', default=False)
+ optparser.add_option('--auth',
+ help='Passed on to apport-retrace in "retrace" mode',
+ action='store', type='string', dest='auth_file', default=None)
+ optparser.add_option('--duplicate-db',
+ help='Passed on to apport-retrace in "retrace" mode',
+ action='store', type='string', dest='dup_db', default=None)
+ optparser.add_option('--confirm-attach',
+ help='Display retraced stack traces and ask for confirmation before uploading them as bug attachments.',
+ action='store_true', dest='confirm_attach', default=False)
+
+ (opts, args) = optparser.parse_args()
+
+ if len(args) < 1:
+ optparser.error('no command specified (use --help for a short online help)')
+ sys.exit(1)
+
+ if opts.chroot_map:
+ if not os.path.exists(opts.chroot_map):
+ print >> sys.stderr, 'specified chroot map does not exist'
+ sys.exit(1)
+
+ # load chroot map and resolve relative paths
+ map_file_dir = os.path.dirname(opts.chroot_map)
+ opts.chroot_map = eval(open(opts.chroot_map).read(), {}, {})
+ for n, p in opts.chroot_map.iteritems():
+ if not p.startswith('/'):
+ opts.chroot_map[n] = os.path.join(map_file_dir, p)
+
+ return (opts, args)
+
+def release_from_report(file):
+ '''Return the distro release from the given Apport report.'''
+
+ pr = problem_report.ProblemReport()
+ pr.load(open(file), binary=False)
+ return pr['DistroRelease']
+
+def upgrade_chroot(chroot, verbose=False, extra_packages=[]):
+ '''Update a chroot to the latest apt lists and packages.
+
+ If run from a tarball and the dist-upgrade succeeds, then the tarball
+ is updated as well. If the dist-upgrade fails, an assertion is raised.'''
+
+ if verbose:
+ assert chroot.run(['apt-get', 'update']) == 0
+ assert chroot.run(['apt-get', '-y', '--allow-unauthenticated', 'dist-upgrade']) == 0
+ else:
+ assert chroot.run(['apt-get', '-qq', 'update']) == 0
+ assert chroot.run(['apt-get', '-qqy', '--allow-unauthenticated', 'dist-upgrade']) == 0
+ if extra_packages:
+ assert chroot.run(['apt-get', 'install', '-y', '--allow-unauthenticated'] + extra_packages) == 0
+
+ chroot.fix_symlinks()
+
+ if chroot.root_tarball:
+ assert chroot.run(['apt-get', 'clean']) == 0
+ chroot.tar()
+
+#
+# commands
+#
+
+def command_create(opts, args):
+ '''Create a chroot.'''
+
+ if len(args) != 2:
+ print >> sys.stderr, 'create needs exactly two arguments (use --help for a short online help)'
+ sys.exit(1)
+ (release, destpath) = args
+
+ # create chroot directory
+ if opts.tar:
+ root = tempfile.mkdtemp()
+ atexit.register(shutil.rmtree, root)
+ if os.path.isfile(destpath):
+ print >> sys.stderr, 'target file', destpath, 'exists already, aborting'
+ sys.exit(1)
+ else:
+ root = destpath
+ if os.path.isdir(root):
+ print >> sys.stderr, 'target directory', root, 'exists already, aborting'
+ sys.exit(1)
+ os.makedirs(root)
+
+ # call debootstrap
+ setup_fakeroot_env()
+ debootstrap_argv = ['debootstrap',
+ '--variant=fakechroot', release, root]
+ if opts.mirror:
+ debootstrap_argv.append(opts.mirror)
+
+ assert subprocess.call(debootstrap_argv) == 0
+
+ # if we have a file:// mirror, create a symlink
+ if opts.mirror and opts.mirror.startswith('file://'):
+ mirrordir = os.path.abspath(opts.mirror[7:])
+ targetdir = os.path.normpath(root + '/' + os.path.dirname(mirrordir))
+ if not os.path.isdir(targetdir):
+ os.makedirs(targetdir)
+ os.symlink(mirrordir, os.path.join(targetdir, os.path.basename(mirrordir)))
+
+ # set up apt sources
+ if opts.mirror:
+ f = open(os.path.join(root, 'etc', 'apt', 'sources.list'), 'w')
+ print >> f, 'deb %s %s main' % (opts.mirror, release)
+ else:
+ # debootstrap puts default mirror there
+ f = open(os.path.join(root, 'etc', 'apt', 'sources.list'), 'a')
+
+ for s in opts.extra_apt:
+ print >> f, s
+ f.close()
+
+ # disable invoke-rc.d
+ policyrc = os.path.join(root, 'usr', 'sbin', 'policy-rc.d')
+ open(policyrc, 'w').write('#!/bin/sh\nexit 101')
+ os.chmod(policyrc, 0755)
+
+ # set up apt-get and required packages
+ chroot = Chroot(root)
+ assert chroot.run(['apt-get', 'update']) == 0
+ chroot.run(['apt-get', 'install', '-y', '--allow-unauthenticated', 'gpgv', 'apport-retrace'] + opts.extra_packages)
+
+ chroot.fix_symlinks()
+
+ # clean up cruft
+ for path, dirs, files in os.walk(os.path.join(root, 'var', 'cache', 'apt', 'archives')):
+ for f in files:
+ try:
+ os.unlink(os.path.join(path, f))
+ except OSError:
+ pass
+
+ # tar it up
+ if opts.tar:
+ chroot.tar(destpath)
+
+def command_upgrade(opts, args):
+ '''Upgrade one or all chroots.'''
+
+ if len(args) != 1:
+ print >> sys.stderr, 'upgrade needs exactly one argument (use --help for a short online help)'
+ sys.exit(1)
+ if not opts.chroot_map and not os.path.exists(args[0]):
+ print >> sys.stderr, 'you must specify a chroot map with -m (use --help for a short online help)'
+ sys.exit(1)
+
+ if args[0] == 'all':
+ for c in set(opts.chroot_map.itervalues()):
+ print 'Upgrading %s...' % c
+ upgrade_chroot(Chroot(c), opts.verbose, opts.extra_packages)
+ elif os.path.exists(args[0]):
+ upgrade_chroot(Chroot(args[0]), opts.verbose, opts.extra_packages)
+ elif opts.chroot_map.has_key(args[0]):
+ c = opts.chroot_map[args[0]]
+ print 'Upgrading %s...' % c
+ upgrade_chroot(Chroot(c), opts.verbose, opts.extra_packages)
+ else:
+ print >> sys.stderr, 'invalid chroot'
+
+def command_installdeb(opts, args):
+ '''Install a bunch of .debs into the chroot.'''
+
+ if len(args) < 2:
+ print >> sys.stderr, 'installdeb needs more arguments (use --help for a short online help)'
+ sys.exit(1)
+ if not opts.chroot_map and not os.path.exists(args[0]):
+ print >> sys.stderr, 'you must specify a chroot map with -m (use --help for a short online help)'
+ sys.exit(1)
+
+ if os.path.exists(args[0]):
+ chroot = Chroot(args[0])
+ elif opts.chroot_map.has_key(args[0]):
+ c = opts.chroot_map[args[0]]
+ chroot = Chroot(c)
+ else:
+ print >> sys.stderr, 'invalid chroot'
+
+ # symlink the debs into the chroot
+ chroot_deb_dir = os.path.join(chroot.root, 'installdebs')
+ os.makedirs(chroot_deb_dir)
+ for deb in args[1:]:
+ os.symlink(deb, os.path.join(chroot_deb_dir, os.path.basename(deb)))
+
+ result = chroot.run(['dpkg', '-i'] + ['/installdebs/' + os.path.basename(d) for d in args[1:]])
+ shutil.rmtree(chroot_deb_dir)
+
+ chroot.fix_symlinks()
+
+ if chroot.root_tarball and result == 0:
+ chroot.tar()
+
+def command_login(opts, args):
+ '''Start a shell in a chroot.'''
+
+ if len(args) != 1:
+ print >> sys.stderr, 'login needs exactly one argument (use --help for a short online help)'
+ sys.exit(1)
+ if not opts.chroot_map and not os.path.exists(args[0]):
+ print >> sys.stderr, 'you must specify a chroot map with -m (use --help for a short online help)'
+ sys.exit(1)
+
+ if os.path.exists(args[0]):
+ chroot = Chroot(args[0])
+ elif opts.chroot_map.has_key(args[0]):
+ c = opts.chroot_map[args[0]]
+ chroot = Chroot(c)
+ else:
+ print >> sys.stderr, 'invalid chroot'
+ sys.exit(1)
+
+ if opts.auth_file:
+ # symlink the file into the chroot
+ os.symlink(os.path.abspath(opts.auth_file), os.path.join(chroot.root, 'tmp', 'auth'))
+
+ try:
+ del os.environ['APPORT_CRASHDB_CONF']
+ except KeyError:
+ pass
+ ret = chroot.run([os.environ.get('SHELL', 'bash')])
+
+ if chroot.root_tarball and opts.tar_save and ret == 0:
+ chroot.fix_symlinks()
+ chroot.tar()
+
+def command_retrace(opts, args):
+ '''Retrace a bug or report file.'''
+
+ if len(args) != 1:
+ print >> sys.stderr, 'retrace needs exactly one argument (use --help for a short online help)'
+ sys.exit(1)
+ if not opts.chroot_map:
+ print >> sys.stderr, 'you must specify a chroot map with -m (use --help for a short online help)'
+ sys.exit(1)
+
+ apport_retrace_argv = ['apport-retrace', '-u']
+ if opts.verbose:
+ apport_retrace_argv.append('-v')
+ for p in opts.extra_packages:
+ apport_retrace_argv += ['-p', p]
+
+ if args[0].isdigit():
+ crashdb = get_crashdb(opts.auth_file)
+ release = crashdb.get_distro_release(args[0])
+ chroot_path = opts.chroot_map[release]
+ if os.path.isfile(chroot_path):
+ apport_retrace_argv.append('--no-pkg')
+ c = Chroot(chroot_path)
+ if opts.auth_file:
+ # symlink the file into the chroot
+ chroot_auth = os.path.join(c.root, 'tmp', 'auth')
+ os.symlink(os.path.abspath(opts.auth_file), chroot_auth)
+ apport_retrace_argv += ['--auth', '/tmp/auth']
+ else:
+ apport_retrace_argv += ['-s']
+ chroot_auth = None
+ if opts.dup_db:
+ # symlink the file into the chroot
+ chroot_dupdb = os.path.join(c.root, 'tmp', 'dup.db')
+ os.symlink(os.path.abspath(opts.dup_db), chroot_dupdb)
+ apport_retrace_argv += ['--duplicate-db', '/tmp/dup.db']
+ if opts.confirm_attach:
+ apport_retrace_argv.append('--confirm')
+ apport_retrace_argv.append(args[0])
+
+ del os.environ['APPORT_CRASHDB_CONF']
+ ret = c.run(apport_retrace_argv)
+ if chroot_auth:
+ os.unlink(chroot_auth)
+ else:
+ # symlink the report into the chroot
+ release = release_from_report(args[0])
+ chroot_path = opts.chroot_map[release]
+ if os.path.isfile(chroot_path):
+ apport_retrace_argv.append('--no-pkg')
+ c = Chroot(chroot_path)
+ chroot_report = os.path.join(c.root, 'tmp', os.path.basename(args[0]))
+ os.symlink(os.path.realpath(args[0]), chroot_report)
+ apport_retrace_argv.append('-s')
+ apport_retrace_argv.append(chroot_report)
+ ret = c.run(apport_retrace_argv)
+ os.unlink(chroot_report)
+
+ sys.exit(ret)
+
+#
+# main
+#
+
+opts, args = parse_options()
+try:
+ command = globals()['command_' + args[0]]
+except KeyError:
+ print >> sys.stderr, 'unknown command (use --help for a short online help)'
+ sys.exit(1)
+command(opts, args[1:])
=== added file 'debian/local/apport-chroot.1'
--- debian/local/apport-chroot.1 1970-01-01 00:00:00 +0000
+++ debian/local/apport-chroot.1 2011-04-18 21:01:06 +0000
@@ -0,0 +1,305 @@
+.TH apport\-chroot 1 "August 11, 2007" "Martin Pitt"
+
+.SH NAME
+
+apport\-chroot \- Create and use chroots for apport retracing
+
+.SH SYNOPSIS
+
+.B apport\-chroot
+[
+.I options
+]
+.B create
+.I release chrootpath
+
+.B apport\-chroot
+[
+.I options
+]
+.B retrace
+.I crashid
+.br
+.B apport\-chroot
+[
+.I options
+]
+.B retrace
+.I reportfile
+
+.B apport\-chroot
+[
+.I options
+]
+.B upgrade
+.I chroot
+.br
+.B apport\-chroot
+[
+.I options
+]
+.B upgrade all
+
+.B apport\-chroot
+[
+.I options
+]
+.B installdeb
+.I chroot debpath
+[
+.I debpath ...
+]
+
+.B apport\-chroot
+[
+.I options
+]
+.B login
+.I chroot
+
+.SH DESCRIPTION
+
+.SS Introduction
+
+.B apport\-chroot
+is a tool to create, update, and manage chroots for using
+.B apport\-retrace
+for several distributions and releases without needing to touch the
+installed system at all. It uses fakeroot and fakechroot, so that the
+entire reprocessing of apport reports which get submitted to the crash
+database can happen on a system where you do not have any root
+privileges or special packages installed.
+
+Chroots can either be kept as a normal directory, or be stored as a
+compressed tarball. In the latter case, the tarballs are temporarily
+unpacked when using them. While unpacking takes a certain amount of
+time, this is well compensated by not having to purge packages after
+installing them for retracing, and being sure not to destroy the
+chroot on failed upgrades, buggy maintainer scripts, etc. This also
+allows you to use a chroot for several tasks in parallel.
+
+.SS Installation
+
+If fakeroot or fakechroot themselves are not installed, you can just
+put the libraries anywhere and set the environment variables
+.B APPORT_LIBFAKEROOT
+and
+.B APPORT_LIBFAKECHROOT
+to the full path of
+.B libfakeroot.so
+and
+.B libfakechroot.so\fR. If the distribution packages are installed,
+they will be found and used automatically.
+
+.SS Creating chroots
+
+The
+.B create
+mode is mostly a wrapper around
+.B debootstrap
+which does the grunt work of actually creating a basic chroot.
+.B apport\-chroot
+then does some additional modifications:
+
+.IP * 4
+Install some additional packages like
+.B apport-retrace
+and
+.B gpgv
+(as well as extra packages specified with
+.B \-p\fR)
+
+.IP * 4
+Optionally set up additional apt sources (with
+.B \-a\fR)
+
+.IP * 4
+Adapt the apt
+.B sources.list
+if you use a file:// mirror
+
+.IP * 4
+Disable daemons with a
+.B policy\-rc.d
+
+.IP * 4
+Clean up the apt package cache
+
+.PP
+The only two required arguments are the release name (passed to
+debootstrap), and the target path (a directory, or the path to a
+.B .tar.gz
+tarball). For the reasons stated above, you usually want to supply
+.B \-\-tar
+and some additional apt sources with
+.B \-a\fR.
+
+.SS Using chroots for retracing
+
+In
+.B retrace
+mode, apport\-chroot selects and prepares a chroot for the crash to
+reprocess and calls
+.B apport\-retrace
+in the chroot with the crash file. Most of the options regarding
+retracing are passed to apport\-retrace, with making sure to properly
+handle file references by symlinking them into the chroot.
+
+In this mode you need to specify a "chroot map" which maps
+distribution names and release versions to chroot paths. Please see
+the documentation of
+.B \-m\fR/\fB\-\-chroot\-map
+below for details.
+
+If you want to enable duplicate checking, you need to specify the path
+to the duplicate database. Please see
+.B \-\-duplicate\-db
+below for details.
+
+.SS Maintaining chroots
+
+The most common maintenance operation is
+.B upgrade
+which takes a chroot path as argument, or a DistroRelease: name if a
+chroot map is specified. If
+.B all
+is specified as chroot name, all chroots in the chroot map are
+upgraded.
+
+To install a set of externally provided .deb packages into the chroot,
+you can use the
+.B installdeb
+mode. This will temporarily copy the debs into the chroot and install
+them with dpkg.
+
+The
+.B login
+mode will provide a shell in the chroot which can be used for general
+maintenance. If you use tarball chroots, you need to decide whether
+you want to keep the changes after logging out (specify
+.B \-\-save\fR) or throw them away (default).
+
+In
+.B \-\-save
+mode, you can still throw away the changes if you log out with a
+nonzero exit code, i. e. by doing
+.B exit 1\fR.
+
+.SH OPTIONS
+
+.TP
+.B \-\-mirror=\fIURL
+Use an alternate archive mirror (passed to
+.B debootstrap\fR).
+
+This is only relevant in
+.B create
+mode. (Passed to
+.B debootstrap\fR)
+
+.TP
+.B \-p \fIpackage\fR, \fB\-\-extra\-package=\fIpackage
+Install an additional package for the selected operation. May be
+specified multiple times.
+
+This is only relevant in
+.B create
+mode.
+
+.TP
+.B \-a \fIsource\fR, \fB\-\-apt\-source=\fIsource
+Add an extra apt source when creating chroots. May be specified
+multiple times.
+
+This is only relevant in
+.B create
+mode.
+
+.TP
+.B \-t\fR, \fB\-\-tar
+Create a chroot tarball instead of a permanent directory.
+
+This is only relevant in
+.B create
+mode, for other operations you can specify a directory or a tarball.
+
+.TP
+.B \-\-save
+When logging in to a chroot tarball, update the tarball afterwards to
+save modifications if the shell exits with status 0.
+
+This is only relevant in
+.B login
+mode if the chroot is a tarball.
+
+.TP
+.B \-m \fIMAP\fR, \fB\-\-chroot\-map=\fIMAP
+
+Path to chroot map. This file maps DistroRelease: values to chroot
+paths (in the syntax of a Python dictionary). This needs to be
+specified when refering to a chroot by distro release name instead of
+a chroot path, or when using
+.B apport\-chroot
+in
+.B retrace
+mode and specifying a crash ID. In the latter case, the
+.B DistroRelease:
+field is first read from the crash database, and the appropriate
+chroot selected from that map. Example:
+
+.IP
+{
+ "Ubuntu 7.04": "chroots/feisty.tar.gz",
+ "Debian 3.1": "chroots/sarge.tar.gz",
+.br
+}
+
+.TP
+.B \-v, \-\-verbose
+Verbose operation. This option is also passed to
+.B apport\-retrace
+to report download/install progress when installing additional
+packages.
+
+.TP
+.B \-\-auth=\fIauthfile
+If a bug number is given without any of the options
+.B \-g\fR,
+.B \-s\fR, or
+.B \-o\fR,
+then the retraced stack traces are attached to the bug.
+Since this needs authentication, an authentication file for the crash
+database must be specified. This could e. g. be the standard
+.B cookies.txt
+from Firefox' profile directory if the crash database uses
+cookie based authentication. This option is passed to
+.B apport\-retrace
+(after copying the file into the chroot).
+
+.TP
+.B \-\-duplicate\-db=\fIdbfile
+Specify path to the duplicate check database (in SQLite format). The
+database will be created and initialized if it does not exist. This
+option is passed to
+.B apport\-retrace
+(after linking the file into the chroot).
+
+If not specified,
+.B apport\-retrace
+will not check for duplicates.
+
+.TP
+.B \-\-confirm\-attach
+Display retraced stack traces and ask for confirmation before
+uploading them to the bug report. This option is ignored when
+retracing report files. This option is just passed to
+.B apport-retrace\fR.
+
+.TP
+.B \-h, \-\-help
+Print a short online help that documents all options.
+
+.SH AUTHOR
+.B apport
+and the accompanying tools are developed by Martin Pitt
+<martin.pitt@xxxxxxxxxx>.
=== added file 'debian/local/setup-apport-retracer'
--- debian/local/setup-apport-retracer 1970-01-01 00:00:00 +0000
+++ debian/local/setup-apport-retracer 2011-04-18 21:01:06 +0000
@@ -0,0 +1,73 @@
+#!/bin/sh -e
+
+rm -rf *
+
+RELEASE=lucid
+ARCH=`dpkg --print-architecture`
+if [ "$ARCH" = i386 ] || [ "$ARCH" = amd64 ] ; then
+ MIRROR=http://archive.ubuntu.com/ubuntu
+ SECMIRROR=http://security.ubuntu.com/ubuntu
+else
+ MIRROR=http://ports.ubuntu.com
+ SECMIRROR=http://ports.ubuntu.com
+fi
+
+# check required packages
+for p in python-apt python-launchpadlib fakeroot fakechroot; do
+ dpkg -s $p 2>/dev/null | grep -q ' installed$' || {
+ echo "Package $p not installed"
+ exit 1
+ }
+done
+
+# create directories
+mkdir -p bin chroots
+
+# we assume that we are in the unpacked apport source
+D=$(readlink -f $(dirname $0)/../..)
+test -e $D/debian/local/apport-chroot || {
+ echo "This script must live in an unpacked apport source tree" >&2
+ exit 1
+}
+cp -r $D apport
+cp apport/backends/packaging-apt-dpkg.py apport/apport/packaging_impl.py
+ln -s ../apport/debian/local/apport-chroot bin/apport-chroot
+ln -s ../apport/bin/crash-digger bin/crash-digger
+
+# debootstrap
+T=`mktemp -d`
+wget -O - -q $MIRROR/dists/$RELEASE/main/binary-`dpkg --print-architecture`/Packages.gz | gunzip > $T/Packages
+wget -O - -q $MIRROR/dists/$RELEASE/universe/binary-`dpkg --print-architecture`/Packages.gz | gunzip > $T/Packages-universe
+P=`grep '^Filename:.*debootstrap_.*deb' $T/Packages | cut -f 2 -d\ `
+wget -q $MIRROR/$P
+dpkg -x debootstrap_*.deb $T
+rm debootstrap_*.deb
+mv $T/usr/share/debootstrap/ .
+sed "1 s_\$_\\nDEBOOTSTRAP\_DIR=`pwd`/debootstrap_" $T/usr/sbin/debootstrap > bin/debootstrap
+chmod 755 bin/debootstrap
+rm -rf $T
+
+# create file with environment variables
+cat <<EOF > environ
+PATH=`pwd`/bin:/usr/sbin:/sbin:\$PATH
+PYTHONPATH=`pwd`/apport:\$PYTHONPATH
+APPORT_CRASHDB_CONF=`pwd`/apport/etc/apport/crashdb.conf
+
+export PATH PYTHONPATH APPORT_CRASHDB_CONF
+EOF
+
+. ./environ
+
+# create chroots
+if [ "`dpkg --print-architecture`" = i386 ]; then
+ EXTRA_PKG="-p libc6-i686 -p libc6-i686-dbgsym"
+fi
+apport-chroot -t -a "deb $MIRROR $RELEASE restricted universe multiverse" -a "deb $MIRROR $RELEASE-updates main restricted universe multiverse" -a "deb $SECMIRROR $RELEASE-security main restricted universe multiverse" -a "deb http://ddebs.ubuntu.com/ $RELEASE main restricted universe multiverse" $EXTRA_PKG create $RELEASE chroots/$RELEASE.tar.gz
+chmod -R g+w chroots/
+
+# chroot map
+cat <<EOF > chrootmap
+{
+ 'Ubuntu 10.04': 'chroots/lucid.tar.gz',
+}
+EOF
=== added file 'debian/local/ubuntu-fat-chroot'
--- debian/local/ubuntu-fat-chroot 1970-01-01 00:00:00 +0000
+++ debian/local/ubuntu-fat-chroot 2011-04-18 21:01:06 +0000
@@ -0,0 +1,28 @@
+#!/bin/sh -ex
+
+# Install a set of commonly needed packages into a minimal Ubuntu chroot as
+# created by apport-chroot.
+
+[ -f "$1" ] || [ -d "$1" ] || {
+ echo "Usage: $0 <chroot path>"
+ exit 1
+}
+
+cat <<EOF | apport-chroot --save login "$1"
+set -ex
+apt-get update
+for f in /usr/bin/ucf /usr/sbin/update-gconf-defaults /usr/sbin/update-alternatives /usr/sbin/gconf-schemas /usr/bin/polkit-auth /usr/lib/glib-2.0/gio-querymodules /usr/lib/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders; do
+ dpkg-divert --divert \${f}.disabled --rename \$f
+ ln -s /bin/true \$f
+done
+dpkg-divert --divert /usr/lib/xulrunner-1.9.1b3/xulrunner-bin.disabled --rename /usr/lib/xulrunner-1.9.1b3/xulrunner-bin
+mkdir -p /usr/lib/xulrunner-1.9.1b3/
+/bin/echo -e '#!/bin/sh\nexit 0' > /usr/lib/xulrunner-1.9.1b3/xulrunner-bin
+dpkg-divert --divert /usr/bin/touch.real --rename /usr/bin/touch
+/bin/echo -e '#!/bin/sh\ntouch.real "$@"; exit 0' > /usr/bin/touch
+chmod 755 /usr/bin/touch
+ln -s . /target
+
+DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-unauthenticated libgnome2-0 libqt3-mt
+apt-get clean
+EOF
=== added file 'debian/pycompat'
--- debian/pycompat 1970-01-01 00:00:00 +0000
+++ debian/pycompat 2011-04-18 21:01:06 +0000
@@ -0,0 +1,1 @@
+2
=== added file 'debian/python-apport.install'
--- debian/python-apport.install 1970-01-01 00:00:00 +0000
+++ debian/python-apport.install 2011-04-18 21:01:06 +0000
@@ -0,0 +1,3 @@
+usr/lib/python*/*-packages/apport/*
+usr/lib/python*/*-packages/apport_python_hook.py
+etc/apport/crashdb*
=== added file 'debian/python-problem-report.install'
--- debian/python-problem-report.install 1970-01-01 00:00:00 +0000
+++ debian/python-problem-report.install 2011-04-18 21:01:06 +0000
@@ -0,0 +1,1 @@
+usr/lib/python*/*-packages/problem_report*
=== added file 'debian/pyversions'
--- debian/pyversions 1970-01-01 00:00:00 +0000
+++ debian/pyversions 2011-04-18 21:01:06 +0000
@@ -0,0 +1,1 @@
+2.5-
=== added file 'debian/rules'
--- debian/rules 1970-01-01 00:00:00 +0000
+++ debian/rules 2011-04-18 21:01:06 +0000
@@ -0,0 +1,22 @@
+#!/usr/bin/make -f
+
+DEB_PYTHON_SYSTEM := pycentral
+export DH_PYCENTRAL := $(shell if dpkg --compare-versions `dpkg-query -W -f '$${Version}' python-central` gt 0.6.11; then echo include-links; else echo nomove; fi)
+
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/class/python-distutils.mk
+include /usr/share/cdbs/1/rules/langpack.mk
+
+DEB_DH_INSTALL_SOURCEDIR := debian/tmp
+ifneq (,$(findstring 2.5,$(shell python --version 2>&1)))
+DEB_PYTHON_INSTALL_ARGS_ALL := --no-compile
+else
+DEB_PYTHON_INSTALL_ARGS_ALL := --no-compile --install-layout=deb
+endif
+
+build/dh-apport::
+ pod2man -c Debhelper -r "$(DEB_VERSION)" debhelper/dh_apport debhelper/dh_apport.1
+
+clean::
+ # remove backend copies
+ rm -f apport/packaging_impl.py
=== added directory 'debian/source'
=== added file 'debian/source/format'
--- debian/source/format 1970-01-01 00:00:00 +0000
+++ debian/source/format 2011-04-18 21:01:06 +0000
@@ -0,0 +1,1 @@
+1.0
=== added file 'debian/watch'
--- debian/watch 1970-01-01 00:00:00 +0000
+++ debian/watch 2011-04-18 21:01:06 +0000
@@ -0,0 +1,2 @@
+version=3
+http://launchpad.net/apport/+download .*/apport-([0-9.]+)\.tar\.gz
=== removed file 'do-release'
--- do-release 2009-11-20 22:26:59 +0000
+++ do-release 1970-01-01 00:00:00 +0000
@@ -1,33 +0,0 @@
-#!/bin/sh -e
-
-# This script does all the steps necessary for doing a new upstream release. It
-# should solely be used by upstream developers, distributors do not need to
-# worry about it.
-
-[ -z "`bzr status`" ] || {
- echo "Uncommitted changes, aborting" >&2
- exit 1
-}
-
-bzr clean-tree --ignored
-
-version=$(grep '(UNRELEASED)' NEWS | cut -f1 -d' ')
-[ -n "$version" ] || {
- echo "no UNRELEASED in NEWS" >&2
- exit 1
-}
-
-sed -i -r "s/__version__ = '[0-9.]*'/__version__ = '${version}'/" apport/ui.py
-sed -i "s/(UNRELEASED)/$(date '+(%Y-%m-%d)')/" NEWS
-bzr commit -m "release $version"
-bzr tag "$version"
-
-bzr log -v --log-format 'gnu' > ChangeLog
-
-# temporarily add ChangeLog for export
-bzr add ChangeLog
-bzr commit -m 'temporarily add changelog'
-bzr export ../apport-${version}.tar.gz
-bzr uncommit --force
-bzr revert --no-backup
-rm ChangeLog
=== added file 'etc/apport/blacklist.d/apport'
--- etc/apport/blacklist.d/apport 1970-01-01 00:00:00 +0000
+++ etc/apport/blacklist.d/apport 2011-04-18 21:01:06 +0000
@@ -0,0 +1,5 @@
+/usr/bin/wine-preloader
+/usr/lib/nspluginwrapper/i386/linux/npviewer
+/usr/lib/nspluginwrapper/i386/linux/npviewer.bin
+/usr/lib/nspluginwrapper/x86_64/linux/npplayer
+/usr/lib/nspluginwrapper/x86_64/linux/npwrapper.so
=== modified file 'etc/apport/crashdb.conf'
--- etc/apport/crashdb.conf 2011-02-28 10:48:11 +0000
+++ etc/apport/crashdb.conf 2011-04-18 21:01:06 +0000
@@ -1,6 +1,18 @@
# map crash database names to CrashDatabase implementations and URLs
-default = 'debug'
+default = 'ubuntu'
+
+def get_oem_project():
+ '''Determine OEM project name from Distribution Channel Descriptor
+
+ Return None if it cannot be determined or does not exist.
+ '''
+ try:
+ dcd = open('/var/lib/ubuntu_dist_channel').read()
+ if dcd.startswith('canonical-oem-'):
+ return dcd.split('-')[2]
+ except IOError:
+ return None
databases = {
'ubuntu': {
@@ -10,11 +22,10 @@
'escalation_tag': 'bugpattern-needed',
'escalated_tag': 'bugpattern-written',
},
- 'fedora': {
- # NOTE this will change Fall '07 when RHT switches to bugzilla 3.x!
- 'impl': 'rhbugzilla',
- 'bug_pattern_url': 'http://qa.fedoraproject.org/apport/bugpatterns.xml',
- 'distro': 'fedora'
+ 'canonical-oem': {
+ 'impl': 'launchpad',
+ 'bug_pattern_url': 'http://people.canonical.com/~ubuntu-archive/bugpatterns/bugpatterns.xml',
+ 'project': get_oem_project(),
},
'debug': {
# for debugging
=== modified file 'etc/default/apport'
--- etc/default/apport 2011-02-16 13:20:26 +0000
+++ etc/default/apport 2011-04-18 21:01:06 +0000
@@ -1,4 +1,4 @@
# set this to 0 to disable apport, or to 1 to enable it
# you can temporarily override this with
-# sudo force_start=1 /etc/init.d/apport start
+# sudo service apport start force_start=1
enabled=1
=== modified file 'gtk/apport-gtk'
--- gtk/apport-gtk 2011-04-12 13:09:15 +0000
+++ gtk/apport-gtk 2011-04-18 21:01:06 +0000
@@ -13,7 +13,8 @@
import os.path, sys, subprocess, os, re
-import gobject
+import gobject, gi
+gi.require_version('Gtk', '2.0')
import glib
try:
from gi.repository import Gtk
=== modified file 'gtk/apport-gtk-mime.desktop.in'
--- gtk/apport-gtk-mime.desktop.in 2010-03-31 08:16:44 +0000
+++ gtk/apport-gtk-mime.desktop.in 2011-04-18 21:01:06 +0000
@@ -9,3 +9,4 @@
Categories=GNOME;GTK;
NoDisplay=true
StartupNotify=true
+X-Ubuntu-Gettext-Domain=apport
=== modified file 'gtk/apport-gtk.desktop.in'
--- gtk/apport-gtk.desktop.in 2007-05-21 14:31:49 +0000
+++ gtk/apport-gtk.desktop.in 2011-04-18 21:01:06 +0000
@@ -9,3 +9,4 @@
Categories=GNOME;Application;Core;
OnlyShowIn=GNOME;XFCE;
StartupNotify=true
+X-Ubuntu-Gettext-Domain=apport
=== modified file 'kde/apport-kde-mime.desktop.in'
--- kde/apport-kde-mime.desktop.in 2010-03-31 08:16:44 +0000
+++ kde/apport-kde-mime.desktop.in 2011-04-18 21:01:06 +0000
@@ -9,3 +9,4 @@
Categories=KDE;
NoDisplay=true
StartupNotify=true
+X-Ubuntu-Gettext-Domain=apport
=== modified file 'kde/apport-kde.desktop.in'
--- kde/apport-kde.desktop.in 2009-06-11 02:18:16 +0000
+++ kde/apport-kde.desktop.in 2011-04-18 21:01:06 +0000
@@ -8,3 +8,4 @@
Categories=KDE;System;
OnlyShowIn=KDE;
StartupNotify=true
+X-Ubuntu-Gettext-Domain=apport
=== modified file 'man/apport-bug.1'
--- man/apport-bug.1 2010-04-30 19:12:36 +0000
+++ man/apport-bug.1 2011-04-18 21:01:06 +0000
@@ -108,8 +108,15 @@
will thoroughly check the situation before filing a bug report can define this
in their
.B ~/.bashrc
-or temporarily on the command line when calling
-.B apport\-bug\fR.
+or temporarily when calling the apport frontend (\-cli, \-gtk, or \-kde).
+
+.TP
+.B APPORT_STAGING
+When reporting bugs to Launchpad (default in Ubuntu), use
+.B staging.launchpad.net
+instead of the real production instance. You should use this when testing new
+hooks or new functionality, to avoid sending uninteresting bug mail to
+developers.
.SH "SEE ALSO"
.BR apport\-cli (1)
Follow ups