/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/trace.py

  • Committer: Alexander Belchenko
  • Date: 2007-10-04 05:50:44 UTC
  • mfrom: (2881 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2884.
  • Revision ID: bialix@ukr.net-20071004055044-pb88kgkfayawro8n
merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007 Canonical Ltd
2
2
#
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
58
58
lazy_import(globals(), """
59
59
from cStringIO import StringIO
60
60
import errno
 
61
import locale
61
62
import logging
62
63
import traceback
63
64
""")
65
66
import bzrlib
66
67
 
67
68
lazy_import(globals(), """
68
 
from bzrlib import debug
 
69
from bzrlib import (
 
70
    debug,
 
71
    errors,
 
72
    osutils,
 
73
    plugin,
 
74
    )
69
75
""")
70
76
 
71
77
_file_handler = None
146
152
        if size <= 4 << 20:
147
153
            return
148
154
        old_fname = trace_fname + '.old'
149
 
        from osutils import rename
150
 
        rename(trace_fname, old_fname)
 
155
        osutils.rename(trace_fname, old_fname)
151
156
    except OSError:
152
157
        return
153
158
 
308
313
 
309
314
 
310
315
def report_exception(exc_info, err_file):
 
316
    """Report an exception to err_file (typically stderr) and to .bzr.log.
 
317
 
 
318
    This will show either a full traceback or a short message as appropriate.
 
319
 
 
320
    :return: The appropriate exit code for this error.
 
321
    """
311
322
    exc_type, exc_object, exc_tb = exc_info
312
323
    # Log the full traceback to ~/.bzr.log
313
324
    log_exception_quietly()
314
325
    if (isinstance(exc_object, IOError)
315
326
        and getattr(exc_object, 'errno', None) == errno.EPIPE):
316
327
        print >>err_file, "bzr: broken pipe"
 
328
        return errors.EXIT_ERROR
317
329
    elif isinstance(exc_object, KeyboardInterrupt):
318
330
        print >>err_file, "bzr: interrupted"
 
331
        return errors.EXIT_ERROR
319
332
    elif not getattr(exc_object, 'internal_error', True):
320
333
        report_user_error(exc_info, err_file)
 
334
        return errors.EXIT_ERROR
321
335
    elif isinstance(exc_object, (OSError, IOError)):
322
336
        # Might be nice to catch all of these and show them as something more
323
337
        # specific, but there are too many cases at the moment.
324
338
        report_user_error(exc_info, err_file)
 
339
        return errors.EXIT_ERROR
325
340
    else:
326
341
        report_bug(exc_info, err_file)
 
342
        return errors.EXIT_INTERNAL_ERROR
327
343
 
328
344
 
329
345
# TODO: Should these be specially encoding the output?
352
368
                        '.'.join(map(str, sys.version_info)),
353
369
                        sys.platform)
354
370
    print >>err_file, 'arguments: %r' % sys.argv
355
 
    print >>err_file
356
 
    print >>err_file, "** please send this report to bazaar@lists.ubuntu.com"
 
371
    err_file.write(
 
372
        'encoding: %r, fsenc: %r, lang: %r\n' % (
 
373
            osutils.get_user_encoding(), sys.getfilesystemencoding(),
 
374
            os.environ.get('LANG')))
 
375
    err_file.write("plugins:\n")
 
376
    for name, a_plugin in sorted(plugin.plugins().items()):
 
377
        err_file.write("  %-20s %s [%s]\n" %
 
378
            (name, a_plugin.path(), a_plugin.__version__))
 
379
    err_file.write(
 
380
        "\n"
 
381
        "** Please send this report to bazaar@lists.ubuntu.com\n"
 
382
        "   with a description of what you were doing when the\n"
 
383
        "   error occurred.\n"
 
384
        )