Required for reporter-ureport to work with kernel oopses.

Signed-off-by: Richard Marko <[email protected]>
---
 abrt.spec.in                             |  1 +
 src/plugins/Makefile.am                  |  3 ++-
 src/plugins/abrt-action-save-kernel-data | 36 ++++++++++++++++++++++++++++++++
 src/plugins/koops_event.conf             |  1 +
 4 files changed, 40 insertions(+), 1 deletion(-)
 create mode 100755 src/plugins/abrt-action-save-kernel-data

diff --git a/abrt.spec.in b/abrt.spec.in
index a1c00ba..65a03d3 100644
--- a/abrt.spec.in
+++ b/abrt.spec.in
@@ -571,6 +571,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null 
|| :
 %endif
 %{_bindir}/abrt-dump-oops
 %{_bindir}/abrt-action-analyze-oops
+%{_bindir}/abrt-action-save-kernel-data
 %{_mandir}/man1/abrt-action-analyze-oops.1*
 
 %files addon-xorg
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
index 675b1a7..8829c06 100644
--- a/src/plugins/Makefile.am
+++ b/src/plugins/Makefile.am
@@ -4,7 +4,8 @@ bin_SCRIPTS = \
     abrt-action-install-debuginfo \
     abrt-action-analyze-core \
     abrt-action-analyze-vmcore \
-    abrt-action-list-dsos
+    abrt-action-list-dsos \
+    abrt-action-save-kernel-data
 
 bin_PROGRAMS = \
     abrt-watch-log \
diff --git a/src/plugins/abrt-action-save-kernel-data 
b/src/plugins/abrt-action-save-kernel-data
new file mode 100755
index 0000000..84bd447
--- /dev/null
+++ b/src/plugins/abrt-action-save-kernel-data
@@ -0,0 +1,36 @@
+#!/bin/bash
+#
+# Save pkg_{name, arch, version, release} for kernel oopses.
+#
+# These files are required by reporter-ureporter (mandatory
+# in uReport).
+#
+
+test -f kernel || exit 1
+
+echo "Looking for kernel package"
+kernel_package="kernel"
+kernel_version="$( sed 's/ .*//' kernel )"
+
+if grep -q "PAE" kernel; then
+        echo "Looking for PAE kernel"
+        kernel_package="kernel-PAE"
+        kernel_version="$( echo "$kernel_version" | sed 's/\.PAE//' )"
+fi
+
+package="$( rpm -q "$kernel_package" | grep "$kernel_version" )"
+if [ $? == 0 ]; then
+        echo "Kernel package $package found"
+        rpm -q --qf "%{name}\n" "$package" > pkg_name
+        rpm -q --qf "%{arch}\n" "$package" > pkg_arch
+        rpm -q --qf "%{version}\n" "$package" > pkg_version
+        rpm -q --qf "%{release}\n" "$package" > pkg_release
+        epoch="$( rpm -q --qf "%{epoch}" "$package" )"
+        if [ "$epoch" == "(none)" ]; then
+            echo "0" > pkg_epoch
+        else
+            echo "$epoch" > pkg_epoch
+        fi
+else
+        echo "Kernel package not found, tried version $kernel_version"
+fi
diff --git a/src/plugins/koops_event.conf b/src/plugins/koops_event.conf
index 91759b1..9369131 100644
--- a/src/plugins/koops_event.conf
+++ b/src/plugins/koops_event.conf
@@ -3,6 +3,7 @@ EVENT=post-create analyzer=Kerneloops
         abrt-action-analyze-oops &&
         dmesg >dmesg &&
         abrt-action-generate-core-backtrace
+        abrt-action-save-kernel-data
 
 # If you want behavior similar to one provided by kerneloops daemon
 # distributed by kerneloops.org - that is, if you want
-- 
1.7.11.4

Reply via email to