On 09/14/2012 02:42 PM, Richard Marko wrote: > 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 | 38 > ++++++++++++++++++++++++++++++++ > src/plugins/koops_event.conf | 1 + > 4 files changed, 42 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..6257c08 > --- /dev/null > +++ b/src/plugins/abrt-action-save-kernel-data > @@ -0,0 +1,38 @@ > +#!/bin/bash > +# > +# Save pkg_{name, arch, version, release} for kernel oopses. > +# > +# These files are required by reporter-ureporter (mandatory > +# in uReport). > +# > + > +if [ ! -f kernel ]; then > + echo "File 'kernel' containing kernel version not found in current > directory" > + exit 1 > +fi > + > +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 "Can't find kernel package corresponding to '$kernel_version'" > + echo "Can't record package version data (pkg_version, pkg_release, > ...)." > + exit 1 > +fi > + > +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" )" > +[ "$epoch" == "(none)" ] && epoch=0 > +echo "$epoch" > pkg_epoch > 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
Looks good to me, please apply. The "==" in [ "$epoch" == "(none)" ] is a bashism. No reason to use it instead of standard-compliant "="...
