Jiri Moskovcak 1d0a84
--- /dev/null
Jiri Moskovcak 1d0a84
+++ b/src/plugins/abrt-action-analyzecore.py
Jiri Moskovcak 1d0a84
@@ -0,0 +1,184 @@
Jiri Moskovcak 1d0a84
+#! /usr/bin/python -u
Jiri Moskovcak 1d0a84
+# -*- coding: utf-8 -*-
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+# WARNING: python -u means unbuffered I/O without it the messages are
Jiri Moskovcak 1d0a84
+# passed to the parent asynchronously which looks bad in clients..
Jiri Moskovcak 1d0a84
+from subprocess import Popen, PIPE
Jiri Moskovcak 1d0a84
+import sys
Jiri Moskovcak 1d0a84
+import os
Jiri Moskovcak 1d0a84
+import getopt
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+# everything was ok
Jiri Moskovcak 1d0a84
+RETURN_OK = 0
Jiri Moskovcak 1d0a84
+# serious problem, should be logged somewhere
Jiri Moskovcak 1d0a84
+RETURN_FAILURE = 2
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+GETTEXT_PROGNAME = "abrt"
Jiri Moskovcak 1d0a84
+import locale
Jiri Moskovcak 1d0a84
+import gettext
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+_ = lambda x: gettext.lgettext(x)
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+def init_gettext():
Jiri Moskovcak 1d0a84
+    try:
Jiri Moskovcak 1d0a84
+        locale.setlocale(locale.LC_ALL, "")
Jiri Moskovcak 1d0a84
+    except locale.Error:
Jiri Moskovcak 1d0a84
+        os.environ['LC_ALL'] = 'C'
Jiri Moskovcak 1d0a84
+        locale.setlocale(locale.LC_ALL, "")
Jiri Moskovcak 1d0a84
+    gettext.bind_textdomain_codeset(GETTEXT_PROGNAME, locale.nl_langinfo(locale.CODESET))
Jiri Moskovcak 1d0a84
+    gettext.bindtextdomain(GETTEXT_PROGNAME, '/usr/share/locale')
Jiri Moskovcak 1d0a84
+    gettext.textdomain(GETTEXT_PROGNAME)
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+old_stdout = -1
Jiri Moskovcak 1d0a84
+def mute_stdout():
Jiri Moskovcak 1d0a84
+    if verbose < 2:
Jiri Moskovcak 1d0a84
+        global old_stdout
Jiri Moskovcak 1d0a84
+        old_stdout = sys.stdout
Jiri Moskovcak 1d0a84
+        sys.stdout = open("/dev/null", "w")
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+def unmute_stdout():
Jiri Moskovcak 1d0a84
+    if verbose < 2:
Jiri Moskovcak 1d0a84
+        if old_stdout != -1:
Jiri Moskovcak 1d0a84
+            sys.stdout = old_stdout
Jiri Moskovcak 1d0a84
+        else:
Jiri Moskovcak 1d0a84
+            print "ERR: unmute called without mute?"
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+verbose = 0
Jiri Moskovcak 1d0a84
+def log1(message):
Jiri Moskovcak 1d0a84
+    """ prints log message if verbosity > 0 """
Jiri Moskovcak 1d0a84
+    if verbose > 0:
Jiri Moskovcak 1d0a84
+        print "LOG1:", message
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+def log2(message):
Jiri Moskovcak 1d0a84
+    """ prints log message if verbosity > 1 """
Jiri Moskovcak 1d0a84
+    if verbose > 1:
Jiri Moskovcak 1d0a84
+        print "LOG2:", message
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+#eu_unstrip_OUT=`eu-unstrip "--core=$core" -n 2>eu_unstrip.ERR`
Jiri Moskovcak 1d0a84
+def extract_info_from_core(coredump_name):
Jiri Moskovcak 1d0a84
+    """
Jiri Moskovcak 1d0a84
+    Extracts builds with filenames,
Jiri Moskovcak 1d0a84
+    Returns a list of tuples (build_id, filename)
Jiri Moskovcak 1d0a84
+    """
Jiri Moskovcak 1d0a84
+    #OFFSET = 0
Jiri Moskovcak 1d0a84
+    BUILD_ID = 1
Jiri Moskovcak 1d0a84
+    LIBRARY = 2
Jiri Moskovcak 1d0a84
+    #SEP = 3
Jiri Moskovcak 1d0a84
+    EXECUTABLE = 4
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+    print _("Analyzing coredump '%s'") % coredump_name
Jiri Moskovcak 1d0a84
+    eu_unstrip_OUT = Popen(["eu-unstrip","--core=%s" % coredump_name, "-n"], stdout=PIPE, bufsize=-1).communicate()[0]
Jiri Moskovcak 1d0a84
+    # parse eu_unstrip_OUT and return the list of build_ids
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+    # eu_unstrip_OUT = ("0x7f42362ca000+0x204000 c4d35d993598a6242f7525d024b5ec3becf5b447@0x7f42362ca1a0 /usr/lib64/libcanberra-gtk.so.0 - libcanberra-gtk.so.0\n"
Jiri Moskovcak 1d0a84
+                     # "0x3afa400000+0x210000 607308f916c13c3ad9ee503008d31fa671ba73ce@0x3afa4001a0 /usr/lib64/libcanberra.so.0 - libcanberra.so.0\n"
Jiri Moskovcak 1d0a84
+                     # "0x3afa400000+0x210000 607308f916c13c3ad9ee503008d31fa671ba73ce@0x3afa4001a0 /usr/lib64/libcanberra.so.0 - libcanberra.so.0\n"
Jiri Moskovcak 1d0a84
+                     # "0x3bc7000000+0x208000 3be016bb723e85779a23e111a8ab1a520b209422@0x3bc70001a0 /usr/lib64/libvorbisfile.so.3 - libvorbisfile.so.3\n"
Jiri Moskovcak 1d0a84
+                     # "0x7f423609e000+0x22c000 87f9c7d9844f364c73aa2566d6cfc9c5fa36d35d@0x7f423609e1a0 /usr/lib64/libvorbis.so.0 - libvorbis.so.0\n"
Jiri Moskovcak 1d0a84
+                     # "0x7f4235e99000+0x205000 b5bc98c125a11b571cf4f2746268a6d3cfa95b68@0x7f4235e991a0 /usr/lib64/libogg.so.0 - libogg.so.0\n"
Jiri Moskovcak 1d0a84
+                     # "0x7f4235c8b000+0x20e000 f1ff6c8ee30dba27e90ef0c5b013df2833da2889@0x7f4235c8b1a0 /usr/lib64/libtdb.so.1 - libtdb.so.1\n"
Jiri Moskovcak 1d0a84
+                     # "0x3bc3000000+0x209000 8ef56f789fd914e8d0678eb0cdfda1bfebb00b40@0x3bc30001a0 /usr/lib64/libltdl.so.7 - libltdl.so.7\n"
Jiri Moskovcak 1d0a84
+                     # "0x7f4231b64000+0x22b000 3ca5b83798349f78b362b1ea51c8a4bc8114b8b1@0x7f4231b641a0 /usr/lib64/gio/modules/libgvfsdbus.so - libgvfsdbus.so\n"
Jiri Moskovcak 1d0a84
+                     # "0x7f423192a000+0x218000 ad024a01ad132737a8cfc7c95beb7c77733a652d@0x7f423192a1a0 /usr/lib64/libgvfscommon.so.0 - libgvfscommon.so.0\n"
Jiri Moskovcak 1d0a84
+                     # "0x7f423192a000+0x218000 ad024a01ad132737a8cfc7c95beb7c77733a652d@0x7f423192a1a0 /usr/lib64/libgvfscommon.so.0 - libgvfscommon.so.0\n"
Jiri Moskovcak 1d0a84
+                     # "0x3bb8e00000+0x20e000 d240ac5755184a95c783bb98a2d05530e0cf958a@0x3bb8e001a0 /lib64/libudev.so.0 - libudev.so.0")
Jiri Moskovcak 1d0a84
+    #
Jiri Moskovcak 1d0a84
+    #print eu_unstrip_OUT
Jiri Moskovcak 1d0a84
+    # we failed to get build ids from the core -> die
Jiri Moskovcak 1d0a84
+    if not eu_unstrip_OUT:
Jiri Moskovcak 1d0a84
+        print "Can't get build ids from %s" % coredump_name
Jiri Moskovcak 1d0a84
+        return RETURN_FAILURE
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+    lines = eu_unstrip_OUT.split('\n')
Jiri Moskovcak 1d0a84
+    # using set ensures the unique values
Jiri Moskovcak 1d0a84
+    build_ids = set()
Jiri Moskovcak 1d0a84
+    libraries = set()
Jiri Moskovcak 1d0a84
+    build_ids = set()
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+    for line in lines:
Jiri Moskovcak 1d0a84
+        b_ids_line = line.split()
Jiri Moskovcak 1d0a84
+        if len(b_ids_line) > 2:
Jiri Moskovcak 1d0a84
+            # [exe] -> the executable itself
Jiri Moskovcak 1d0a84
+            # linux-vdso.so.1 -> Virtual Dynamic Shared Object
Jiri Moskovcak 1d0a84
+            if b_ids_line[EXECUTABLE] not in ["linux-vdso.so.1"]:
Jiri Moskovcak 1d0a84
+                build_id = b_ids_line[BUILD_ID].split('@')[0]
Jiri Moskovcak 1d0a84
+                build_ids.add(build_id)
Jiri Moskovcak 1d0a84
+                library = b_ids_line[LIBRARY]
Jiri Moskovcak 1d0a84
+                libraries.add(library)
Jiri Moskovcak 1d0a84
+                build_ids.add(build_id)
Jiri Moskovcak 1d0a84
+            else:
Jiri Moskovcak 1d0a84
+                log2("skipping line '%s'" % line)
Jiri Moskovcak 1d0a84
+    log1("Found %i build_ids" % len(build_ids))
Jiri Moskovcak 1d0a84
+    log1("Found %i libs" % len(libraries))
Jiri Moskovcak 1d0a84
+    return build_ids
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+def build_ids_to_path(build_ids):
Jiri Moskovcak 1d0a84
+    """
Jiri Moskovcak 1d0a84
+    build_id1=${build_id:0:2}
Jiri Moskovcak 1d0a84
+    build_id2=${build_id:2}
Jiri Moskovcak 1d0a84
+    file="usr/lib/debug/.build-id/$build_id1/$build_id2.debug"
Jiri Moskovcak 1d0a84
+    """
Jiri Moskovcak 1d0a84
+    return ["/usr/lib/debug/.build-id/%s/%s.debug" % (b_id[:2], b_id[2:]) for b_id in build_ids]
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+def sigterm_handler(signum, frame):
Jiri Moskovcak 1d0a84
+    exit(RETURN_OK)
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+def sigint_handler(signum, frame):
Jiri Moskovcak 1d0a84
+    print "\n", _("Exiting on user command")
Jiri Moskovcak 1d0a84
+    exit(RETURN_OK)
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+import signal
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+if __name__ == "__main__":
Jiri Moskovcak 1d0a84
+    # abrt-server can send SIGTERM to abort the download
Jiri Moskovcak 1d0a84
+    signal.signal(signal.SIGTERM, sigterm_handler)
Jiri Moskovcak 1d0a84
+    # ctrl-c
Jiri Moskovcak 1d0a84
+    signal.signal(signal.SIGINT, sigint_handler)
Jiri Moskovcak 1d0a84
+    core = None
Jiri Moskovcak 1d0a84
+    cachedir = None
Jiri Moskovcak 1d0a84
+    tmpdir = None
Jiri Moskovcak 1d0a84
+    keeprpms = False
Jiri Moskovcak 1d0a84
+    output_file = "build_ids"
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+    # localization
Jiri Moskovcak 1d0a84
+    init_gettext()
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+    ABRT_VERBOSE = os.getenv("ABRT_VERBOSE")
Jiri Moskovcak 1d0a84
+    if (ABRT_VERBOSE):
Jiri Moskovcak 1d0a84
+        try:
Jiri Moskovcak 1d0a84
+            verbose = int(ABRT_VERBOSE)
Jiri Moskovcak 1d0a84
+        except:
Jiri Moskovcak 1d0a84
+            pass
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+    help_text = _("Usage: %s --core=COREFILE ") % sys.argv[0]
Jiri Moskovcak 1d0a84
+    try:
Jiri Moskovcak 1d0a84
+        opts, args = getopt.getopt(sys.argv[1:], "vhc:o:", ["help", "core="])
Jiri Moskovcak 1d0a84
+    except getopt.GetoptError, err:
Jiri Moskovcak 1d0a84
+        print str(err) # prints something like "option -a not recognized"
Jiri Moskovcak 1d0a84
+        sys.exit(RETURN_FAILURE)
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+    for opt, arg in opts:
Jiri Moskovcak 1d0a84
+        if opt == "-v":
Jiri Moskovcak 1d0a84
+            verbose += 1
Jiri Moskovcak 1d0a84
+        elif opt == "-o":
Jiri Moskovcak 1d0a84
+            output_file = arg
Jiri Moskovcak 1d0a84
+        elif opt in ("--core", "-c"):
Jiri Moskovcak 1d0a84
+            core = arg
Jiri Moskovcak 1d0a84
+        elif opt in ("-h", "--help"):
Jiri Moskovcak 1d0a84
+            print help_text
Jiri Moskovcak 1d0a84
+            sys.exit()
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+    if not core:
Jiri Moskovcak 1d0a84
+        print _("You have to specify the path to coredump.")
Jiri Moskovcak 1d0a84
+        print help_text
Jiri Moskovcak 1d0a84
+        exit(RETURN_FAILURE)
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+    b_ids = extract_info_from_core(core)
Jiri Moskovcak 1d0a84
+    if b_ids == RETURN_FAILURE:
Jiri Moskovcak 1d0a84
+        exit(RETURN_FAILURE)
Jiri Moskovcak 1d0a84
+    f_build_ids = open(output_file, "w")
Jiri Moskovcak 1d0a84
+    for bid in b_ids:
Jiri Moskovcak 1d0a84
+        f_build_ids.write("%s\n" % bid)
Jiri Moskovcak 1d0a84
+    f_build_ids.close()
Jiri Moskovcak 1d0a84
diff -urp abrt-2.0.0/src/plugins/abrt-action-install-debuginfo.py abrt-2.0.0_/src/plugins/abrt-action-install-debuginfo.py
Jiri Moskovcak 1d0a84
--- abrt-2.0.0/src/plugins/abrt-action-install-debuginfo.py	2011-03-25 09:51:45.000000000 +0100
Jiri Moskovcak 1d0a84
+++ abrt-2.0.0_/src/plugins/abrt-action-install-debuginfo.py	2011-04-13 21:05:23.104976172 +0200
Jiri Moskovcak 1d0a84
@@ -301,64 +301,6 @@ def log2(message):
Jiri Moskovcak 1d0a84
     if verbose > 1:
Jiri Moskovcak 1d0a84
         print "LOG2:", message
Jiri Moskovcak 1d0a84
Jiri Moskovcak 1d0a84
-#eu_unstrip_OUT=`eu-unstrip "--core=$core" -n 2>eu_unstrip.ERR`
Jiri Moskovcak 1d0a84
-def extract_info_from_core(coredump_name):
Jiri Moskovcak 1d0a84
-    """
Jiri Moskovcak 1d0a84
-    Extracts builds with filenames,
Jiri Moskovcak 1d0a84
-    Returns a list of tuples (build_id, filename)
Jiri Moskovcak 1d0a84
-    """
Jiri Moskovcak 1d0a84
-    #OFFSET = 0
Jiri Moskovcak 1d0a84
-    BUILD_ID = 1
Jiri Moskovcak 1d0a84
-    LIBRARY = 2
Jiri Moskovcak 1d0a84
-    #SEP = 3
Jiri Moskovcak 1d0a84
-    EXECUTABLE = 4
Jiri Moskovcak 1d0a84
-
Jiri Moskovcak 1d0a84
-    print _("Analyzing coredump '%s'") % coredump_name
Jiri Moskovcak 1d0a84
-    eu_unstrip_OUT = Popen(["eu-unstrip","--core=%s" % coredump_name, "-n"], stdout=PIPE, bufsize=-1).communicate()[0]
Jiri Moskovcak 1d0a84
-    # parse eu_unstrip_OUT and return the list of build_ids
Jiri Moskovcak 1d0a84
-
Jiri Moskovcak 1d0a84
-    # eu_unstrip_OUT = ("0x7f42362ca000+0x204000 c4d35d993598a6242f7525d024b5ec3becf5b447@0x7f42362ca1a0 /usr/lib64/libcanberra-gtk.so.0 - libcanberra-gtk.so.0\n"
Jiri Moskovcak 1d0a84
-                     # "0x3afa400000+0x210000 607308f916c13c3ad9ee503008d31fa671ba73ce@0x3afa4001a0 /usr/lib64/libcanberra.so.0 - libcanberra.so.0\n"
Jiri Moskovcak 1d0a84
-                     # "0x3afa400000+0x210000 607308f916c13c3ad9ee503008d31fa671ba73ce@0x3afa4001a0 /usr/lib64/libcanberra.so.0 - libcanberra.so.0\n"
Jiri Moskovcak 1d0a84
-                     # "0x3bc7000000+0x208000 3be016bb723e85779a23e111a8ab1a520b209422@0x3bc70001a0 /usr/lib64/libvorbisfile.so.3 - libvorbisfile.so.3\n"
Jiri Moskovcak 1d0a84
-                     # "0x7f423609e000+0x22c000 87f9c7d9844f364c73aa2566d6cfc9c5fa36d35d@0x7f423609e1a0 /usr/lib64/libvorbis.so.0 - libvorbis.so.0\n"
Jiri Moskovcak 1d0a84
-                     # "0x7f4235e99000+0x205000 b5bc98c125a11b571cf4f2746268a6d3cfa95b68@0x7f4235e991a0 /usr/lib64/libogg.so.0 - libogg.so.0\n"
Jiri Moskovcak 1d0a84
-                     # "0x7f4235c8b000+0x20e000 f1ff6c8ee30dba27e90ef0c5b013df2833da2889@0x7f4235c8b1a0 /usr/lib64/libtdb.so.1 - libtdb.so.1\n"
Jiri Moskovcak 1d0a84
-                     # "0x3bc3000000+0x209000 8ef56f789fd914e8d0678eb0cdfda1bfebb00b40@0x3bc30001a0 /usr/lib64/libltdl.so.7 - libltdl.so.7\n"
Jiri Moskovcak 1d0a84
-                     # "0x7f4231b64000+0x22b000 3ca5b83798349f78b362b1ea51c8a4bc8114b8b1@0x7f4231b641a0 /usr/lib64/gio/modules/libgvfsdbus.so - libgvfsdbus.so\n"
Jiri Moskovcak 1d0a84
-                     # "0x7f423192a000+0x218000 ad024a01ad132737a8cfc7c95beb7c77733a652d@0x7f423192a1a0 /usr/lib64/libgvfscommon.so.0 - libgvfscommon.so.0\n"
Jiri Moskovcak 1d0a84
-                     # "0x7f423192a000+0x218000 ad024a01ad132737a8cfc7c95beb7c77733a652d@0x7f423192a1a0 /usr/lib64/libgvfscommon.so.0 - libgvfscommon.so.0\n"
Jiri Moskovcak 1d0a84
-                     # "0x3bb8e00000+0x20e000 d240ac5755184a95c783bb98a2d05530e0cf958a@0x3bb8e001a0 /lib64/libudev.so.0 - libudev.so.0")
Jiri Moskovcak 1d0a84
-    #
Jiri Moskovcak 1d0a84
-    #print eu_unstrip_OUT
Jiri Moskovcak 1d0a84
-    # we failed to get build ids from the core -> die
Jiri Moskovcak 1d0a84
-    if not eu_unstrip_OUT:
Jiri Moskovcak 1d0a84
-        print "Can't get build ids from %s" % coredump_name
Jiri Moskovcak 1d0a84
-        return RETURN_FAILURE
Jiri Moskovcak 1d0a84
-
Jiri Moskovcak 1d0a84
-    lines = eu_unstrip_OUT.split('\n')
Jiri Moskovcak 1d0a84
-    # using set ensures the unique values
Jiri Moskovcak 1d0a84
-    build_ids = set()
Jiri Moskovcak 1d0a84
-    libraries = set()
Jiri Moskovcak 1d0a84
-    build_ids = set()
Jiri Moskovcak 1d0a84
-
Jiri Moskovcak 1d0a84
-    for line in lines:
Jiri Moskovcak 1d0a84
-        b_ids_line = line.split()
Jiri Moskovcak 1d0a84
-        if len(b_ids_line) > 2:
Jiri Moskovcak 1d0a84
-            # [exe] -> the executable itself
Jiri Moskovcak 1d0a84
-            # linux-vdso.so.1 -> Virtual Dynamic Shared Object
Jiri Moskovcak 1d0a84
-            if b_ids_line[EXECUTABLE] not in ["linux-vdso.so.1"]:
Jiri Moskovcak 1d0a84
-                build_id = b_ids_line[BUILD_ID].split('@')[0]
Jiri Moskovcak 1d0a84
-                build_ids.add(build_id)
Jiri Moskovcak 1d0a84
-                library = b_ids_line[LIBRARY]
Jiri Moskovcak 1d0a84
-                libraries.add(library)
Jiri Moskovcak 1d0a84
-                build_ids.add(build_id)
Jiri Moskovcak 1d0a84
-            else:
Jiri Moskovcak 1d0a84
-                log2("skipping line '%s'" % line)
Jiri Moskovcak 1d0a84
-    log1("Found %i build_ids" % len(build_ids))
Jiri Moskovcak 1d0a84
-    log1("Found %i libs" % len(libraries))
Jiri Moskovcak 1d0a84
-    return build_ids
Jiri Moskovcak 1d0a84
-
Jiri Moskovcak 1d0a84
 def build_ids_to_path(build_ids):
Jiri Moskovcak 1d0a84
     """
Jiri Moskovcak 1d0a84
     build_id1=${build_id:0:2}
Jiri Moskovcak 1d0a84
@@ -409,11 +351,12 @@ if __name__ == "__main__":
Jiri Moskovcak 1d0a84
     signal.signal(signal.SIGTERM, sigterm_handler)
Jiri Moskovcak 1d0a84
     # ctrl-c
Jiri Moskovcak 1d0a84
     signal.signal(signal.SIGINT, sigint_handler)
Jiri Moskovcak 1d0a84
-    core = None
Jiri Moskovcak 1d0a84
+    core = "build_ids"
Jiri Moskovcak 1d0a84
     cachedir = None
Jiri Moskovcak 1d0a84
     tmpdir = None
Jiri Moskovcak 1d0a84
     keeprpms = False
Jiri Moskovcak 1d0a84
     noninteractive = False
Jiri Moskovcak 1d0a84
+    b_ids = []
Jiri Moskovcak 1d0a84
Jiri Moskovcak 1d0a84
     # localization
Jiri Moskovcak 1d0a84
     init_gettext()
Jiri Moskovcak 1d0a84
@@ -441,7 +384,7 @@ if __name__ == "__main__":
Jiri Moskovcak 1d0a84
             verbose += 1
Jiri Moskovcak 1d0a84
         elif opt == "-y":
Jiri Moskovcak 1d0a84
             noninteractive = True
Jiri Moskovcak 1d0a84
-        elif opt in ("--core", "-c"):
Jiri Moskovcak 1d0a84
+        elif opt in ("-i"):
Jiri Moskovcak 1d0a84
             core = arg
Jiri Moskovcak 1d0a84
         elif opt in ("--cache"):
Jiri Moskovcak 1d0a84
             cachedir = arg
Jiri Moskovcak 1d0a84
@@ -464,8 +407,11 @@ if __name__ == "__main__":
Jiri Moskovcak 1d0a84
         # for now, we use /tmp...
Jiri Moskovcak 1d0a84
         tmpdir = "/tmp/abrt-tmp-debuginfo-%s.%u" % (time.strftime("%Y-%m-%d-%H:%M:%S"), os.getpid())
Jiri Moskovcak 1d0a84
Jiri Moskovcak 1d0a84
-    b_ids = extract_info_from_core(core)
Jiri Moskovcak 1d0a84
-    if b_ids == RETURN_FAILURE:
Jiri Moskovcak 1d0a84
+    fin = open(core)
Jiri Moskovcak 1d0a84
+    for line in fin.readlines():
Jiri Moskovcak 1d0a84
+        b_ids.append(line.strip('\n'))
Jiri Moskovcak 1d0a84
+
Jiri Moskovcak 1d0a84
+    if not b_ids:
Jiri Moskovcak 1d0a84
         exit(RETURN_FAILURE)
Jiri Moskovcak 1d0a84
Jiri Moskovcak 1d0a84
     missing = filter_installed_debuginfos(b_ids, cachedir)
Jiri Moskovcak 1d0a84
diff -urp abrt-2.0.0/src/plugins/ccpp_events.conf abrt-2.0.0_/src/plugins/ccpp_events.conf
Jiri Moskovcak 1d0a84
--- abrt-2.0.0/src/plugins/ccpp_events.conf	2011-03-26 15:21:15.000000000 +0100
Jiri Moskovcak 1d0a84
+++ abrt-2.0.0_/src/plugins/ccpp_events.conf	2011-04-13 21:05:23.105976172 +0200
Jiri Moskovcak 1d0a84
@@ -5,7 +5,7 @@ EVENT=post-create analyzer=CCpp
Jiri Moskovcak 1d0a84
 EVENT=analyze_LocalGDB analyzer=CCpp backtrace=      abrt-action-trim-files -f 4096m:/var/cache/abrt-di
Jiri Moskovcak 1d0a84
 # TODO: can we still specify additional directories to search for debuginfos,
Jiri Moskovcak 1d0a84
 # or was this ability lost with move to python installer?
Jiri Moskovcak 1d0a84
-EVENT=analyze_LocalGDB analyzer=CCpp backtrace=      abrt-action-install-debuginfo --core="$DUMP_DIR/coredump"
Jiri Moskovcak 1d0a84
+EVENT=analyze_LocalGDB analyzer=CCpp backtrace=      abrt-action-analyzecore.py --core="$DUMP_DIR/coredump"; abrt-action-install-debuginfo
Jiri Moskovcak 1d0a84
 EVENT=analyze_LocalGDB analyzer=CCpp backtrace=      abrt-action-generate-backtrace
Jiri Moskovcak 1d0a84
 EVENT=analyze_LocalGDB analyzer=CCpp backtrace=      abrt-action-analyze-backtrace
Jiri Moskovcak 1d0a84
 EVENT=analyze_RetraceServer analyzer=CCpp backtrace=    abrt-retrace-client batch -k --dir "$DUMP_DIR"
Jiri Moskovcak 1d0a84
diff -urp abrt-2.0.0/src/plugins/Makefile.am abrt-2.0.0_/src/plugins/Makefile.am
Jiri Moskovcak 1d0a84
--- abrt-2.0.0/src/plugins/Makefile.am	2011-04-13 21:07:17.045976143 +0200
Jiri Moskovcak 1d0a84
+++ abrt-2.0.0_/src/plugins/Makefile.am	2011-04-13 21:05:23.102976172 +0200
Jiri Moskovcak 1d0a84
@@ -2,6 +2,7 @@ pluginslibdir = $(PLUGINS_LIB_DIR)
Jiri Moskovcak 1d0a84
Jiri Moskovcak 1d0a84
 bin_SCRIPTS = \
Jiri Moskovcak 1d0a84
     abrt-action-install-debuginfo.py \
Jiri Moskovcak 1d0a84
+    abrt-action-analyzecore.py \
Jiri Moskovcak 1d0a84
     abrt-action-list-dsos.py
Jiri Moskovcak 1d0a84
Jiri Moskovcak 1d0a84
 bin_PROGRAMS = \
Jiri Moskovcak 1d0a84
@@ -57,7 +58,10 @@ man_MANS = \
Jiri Moskovcak 1d0a84
     abrt-Upload.7 \
Jiri Moskovcak 1d0a84
     abrt-plugins.7
Jiri Moskovcak 1d0a84
Jiri Moskovcak 1d0a84
-PYTHON_FILES = abrt-action-install-debuginfo.py abrt-action-list-dsos.py
Jiri Moskovcak 1d0a84
+PYTHON_FILES = \
Jiri Moskovcak 1d0a84
+    abrt-action-install-debuginfo.py \
Jiri Moskovcak 1d0a84
+    abrt-action-list-dsos.py \
Jiri Moskovcak 1d0a84
+    abrt-action-analyzecore.py
Jiri Moskovcak 1d0a84
Jiri Moskovcak 1d0a84
 EXTRA_DIST = $(man_MANS) $(PYTHON_FILES)
Jiri Moskovcak 1d0a84
Jiri Moskovcak 1d0a84
Only in abrt-2.0.0_/src/plugins: Makefile.am.orig