#!/usr/bin/python
#
# Collect information about a kernel oops.
#
# Copyright (c) 2008 Canonical Ltd.
# Author: Matt Zimmerman <mdz@canonical.com>
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.  See http://www.gnu.org/copyleft/gpl.html for
# the full text of the license.

import os
import sys
import apport.fileutils

from apport import unicode_gettext as _

checksum = None
if len(sys.argv) > 1:
    checksum = sys.argv[1]

oops = sys.stdin.read()

pr = apport.Report('KernelOops')
pr['Failure'] = 'oops'
pr['Tags'] = 'kernel-oops'
pr['Annotation'] = _('Your system might become unstable'
                     'now and might need to be restarted.')
package = apport.packaging.get_kernel_package()
try:
    package_version = apport.packaging.get_version(package)
except ValueError as e:
    if 'does not exist' in e.message:
        package_version = 'unknown'
pr['Package'] = '%s %s' % (package, package_version)
pr['SourcePackage'] = 'linux'

pr['OopsText'] = oops
u = os.uname()
pr['Uname'] = '%s %s %s' % (u[0], u[2], u[4])

# write report
report_path = apport.fileutils.make_report_path(pr, uid=checksum)
if not os.path.exists(report_path):
    with open(report_path, 'wb') as f:
        pr.write(f)
