Merge lp:~diwic/apport/trunk into lp:~apport-hackers/apport/trunk

Proposed by Marco Rodrigues
Status: Rejected
Rejected by: Martin Pitt
Proposed branch: lp:~diwic/apport/trunk
Merge into: lp:~apport-hackers/apport/trunk
Diff against target: 4374 lines (+4349/-0)
3 files modified
apport/hookutils.py (+20/-0)
debian/apport.preinst (+14/-0)
debian/changelog.OTHER (+4315/-0)
To merge this branch: bzr merge lp:~diwic/apport/trunk
Reviewer Review Type Date Requested Status
David Henningsson (community) Needs Information
Martin Pitt (community) Disapprove
Review via email: mp+14877@code.launchpad.net
To post a comment you must log in.
Revision history for this message
David Henningsson (diwic) wrote :

This branch should merge into the Karmic branch; not the upstream one. It contains things that should not be applied to Lucid.

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

The sl-modem check needs to go into the alsa-libs/pulseaudio/etc. package hooks. I do not want to hardcode particular package names in apport itself.

The kernel version check should go into /usr/share/apport/general-hooks/ubuntu.py. I don't think that all cases of those can be explained by a grub failure, you might simply have booted an older one, installed a custom kernel, or one from our "upstream daily builds" ones?

review: Disapprove
Revision history for this message
David Henningsson (diwic) wrote :

> The sl-modem check needs to go into the alsa-libs/pulseaudio/etc. package
> hooks. I do not want to hardcode particular package names in apport itself.

I thought this was ok, since the same thing is done in hookutils.py at another place (when checking versions of printing packages, approx line 453)

> The kernel version check should go into /usr/share/apport/general-
> hooks/ubuntu.py. I don't think that all cases of those can be explained by a
> grub failure, you might simply have booted an older one, installed a custom
> kernel, or one from our "upstream daily builds" ones?

Hmm. It seems like there is already a check there for grub failing to update there.
I admit the idea was a bit hackerish but the packages calling attach_alsa are mainly linux, alsa-driver and pulseaudio, so it roughly corresponds to what packages should complain about the wrong kernel version.

review: Needs Information

Unmerged revisions

1575. By david <david@david-desktop>

Add information about sl-modem-daemon to alsa bug reports

1574. By david <david@david-desktop>

Check for wrong kernel version and switch package to grub if upgrade failed

1573. By Martin Pitt

releasing version 1.9.3-0ubuntu4.1

1572. By Martin Pitt

update-manager 0.126.5 was affected as well

1571. By Martin Pitt

apport/report.py: Fix crash when ExecutablePath isn't part of a package.
Fix cherrypicked from trunk r1629. (LP: #424965)

1570. By Martin Pitt

Add debian/apport.preinst: Clean up after update-manager erroneously
enabling Apport: Check /var/log/dist-upgrade/main.log for indications that
this happened, and set Apport to disabled in /etc/default/apport then.
(LP: #465619)

Preview Diff

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

Subscribers

People subscribed via source and target branches