1
# Copyright (C) 2009, 2010 Canonical Ltd
1
# Copyright (C) 2009-2011 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
84
84
"""Report a bug by just printing a message to the user."""
85
85
trace.print_exception(exc_info, err_file)
86
86
err_file.write('\n')
87
err_file.write('bzr %s on python %s (%s)\n' % \
89
bzrlib._format_version_tuple(sys.version_info),
90
platform.platform(aliased=1)))
91
err_file.write('arguments: %r\n' % sys.argv)
89
err_file.write(textwrap.fill(l,
90
width=78, subsequent_indent=' ') + '\n')
91
print_wrapped('bzr %s on python %s (%s)\n' % \
93
bzrlib._format_version_tuple(sys.version_info),
94
platform.platform(aliased=1)))
95
print_wrapped('arguments: %r\n' % sys.argv)
96
print_wrapped(textwrap.fill(
97
'plugins: ' + plugin.format_concise_plugin_list(),
99
subsequent_indent=' ',
93
102
'encoding: %r, fsenc: %r, lang: %r\n' % (
94
103
osutils.get_user_encoding(), sys.getfilesystemencoding(),
95
104
os.environ.get('LANG')))
96
err_file.write("plugins:\n")
97
err_file.write(_format_plugin_list())
105
# We used to show all the plugins here, but it's too verbose.
100
108
"*** Bazaar has encountered an internal error. This probably indicates a\n"
101
109
" bug in Bazaar. You can help us fix it by filing a bug report at\n"
102
110
" https://bugs.launchpad.net/bzr/+filebug\n"
143
151
exc_type, exc_object, exc_tb = exc_info
146
# add_proc_info gives you the memory map of the process, which is not so
147
# useful for Bazaar but does tell you what binary libraries are loaded.
148
# More importantly it sets the ExecutablePath, InterpreterPath, etc.
154
# add_proc_info sets the ExecutablePath, InterpreterPath, etc.
149
155
pr.add_proc_info()
156
# It also adds ProcMaps which for us is rarely useful and mostly noise, so
150
159
pr.add_user_info()
152
161
# Package and SourcePackage are needed so that apport will report about even
256
265
def _format_plugin_list():
258
for name, a_plugin in sorted(plugin.plugins().items()):
259
plugin_lines.append(" %-20s %s [%s]" %
260
(name, a_plugin.path(), a_plugin.__version__))
261
return '\n'.join(plugin_lines)
266
return ''.join(plugin.describe_plugins(show_paths=True))
264
269
def _format_module_list():