Server IP : 15.235.198.142 / Your IP : 216.73.216.14 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ballsack 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /proc/self/root/usr/share/apport/ |
Upload File : |
#!/usr/bin/python3 # # Copyright (c) 2007 - 2009 Canonical Ltd. # Author: Martin Pitt <martin.pitt@ubuntu.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. """Collect information about a package installation/upgrade failure.""" import argparse import contextlib import os import sys import apport import apport.fileutils def mkattrname(path): """Convert a file path to a problem report attribute name.""" name = "" for directory in path.split(os.sep): if not directory: continue name += "".join( [c for c in directory[0].upper() + directory[1:] if c.isalnum()] ) return name def parse_args(): """Parse command line options and return arguments.""" parser = argparse.ArgumentParser() parser.add_argument( "-p", "--package", required=True, help="Specify the package name which failed to upgrade (mandatory)", ) parser.add_argument( "-l", "--log", action="append", dest="logs", help="Append given log file, or, if it is a directory," " all files in it (can be specified multiple times)", ) parser.add_argument( "-t", "--tags", help="Add the following tags to the bug report (comma separated)", ) args = parser.parse_args() if args.tags: args.tags = args.tags.split(",") return args # pylint: disable-next=missing-function-docstring def main(): # parse command line arguments options = parse_args() # create report report = apport.Report("Package") report.add_package(options.package) # get_source can fail on distribution upgrades where the package in question has # been removed from the newer release. See https://launchpad.net/bugs/2078695 with contextlib.suppress(ValueError): report["SourcePackage"] = apport.packaging.get_source(options.package) report["ErrorMessage"] = (sys.stdin, False) if options.tags: report.add_tags(options.tags) for line in options.logs or []: if os.path.isfile(line): report[mkattrname(line)] = (line,) elif os.path.isdir(line): for log_file in os.listdir(line): path = os.path.join(line, log_file) if os.path.isfile(path): report[mkattrname(path)] = (path,) # write report try: with apport.fileutils.make_report_file(report) as report_file: report.write(report_file) except OSError as error: apport.fatal("Cannot create report: %s", str(error)) if __name__ == "__main__": main()