fixed update from abrt1 to abrt2
This commit is contained in:
parent
0037b8245f
commit
935a9503da
32
abrt.spec
32
abrt.spec
@ -10,7 +10,7 @@
|
||||
Summary: Automatic bug detection and reporting tool
|
||||
Name: abrt
|
||||
Version: 2.0.4
|
||||
Release: 2%{?dist}
|
||||
Release: 3%{?dist}
|
||||
License: GPLv2+
|
||||
Group: Applications/System
|
||||
URL: https://fedorahosted.org/abrt/
|
||||
@ -18,6 +18,7 @@ Source: https://fedorahosted.org/released/%{name}/%{name}-%{version}.tar.gz
|
||||
Source1: abrt.init
|
||||
Source2: abrt-ccpp.init
|
||||
Source3: abrt-oops.init
|
||||
Source4: abrt1_to_abrt2
|
||||
Patch0: 0001-abrt-gui-launch-reporter-children-with-LIBREPORT_GET.patch
|
||||
Patch1: 0002-gui-split-the-main-window-in-2-panes-reported-not-re.patch
|
||||
Patch2: 0004-install-debuginfo-ask-before-downloading.patch
|
||||
@ -191,6 +192,7 @@ install -m 755 %SOURCE1 ${RPM_BUILD_ROOT}/%{_initrddir}/abrtd
|
||||
install -m 755 %SOURCE2 ${RPM_BUILD_ROOT}/%{_initrddir}/abrt-ccpp
|
||||
install -m 755 %SOURCE3 ${RPM_BUILD_ROOT}/%{_initrddir}/abrt-oops
|
||||
%endif
|
||||
install -m 755 %SOURCE4 ${RPM_BUILD_ROOT}/%{_libexecdir}/abrt1-to-abrt2
|
||||
mkdir -p $RPM_BUILD_ROOT/var/cache/abrt-di
|
||||
mkdir -p $RPM_BUILD_ROOT/var/run/abrt
|
||||
mkdir -p $RPM_BUILD_ROOT/var/spool/abrt
|
||||
@ -230,6 +232,7 @@ if [ $1 -eq 1 ]; then
|
||||
/sbin/chkconfig --add abrtd
|
||||
%endif
|
||||
fi
|
||||
%{_libexecdir}/abrt1-to-abrt2 || :
|
||||
|
||||
%post addon-ccpp
|
||||
# this is required for transition from 1.1.x to 2.x
|
||||
@ -244,6 +247,18 @@ if [ $1 -eq 1 ]; then
|
||||
/sbin/chkconfig --add abrt-ccpp
|
||||
%endif
|
||||
fi
|
||||
# FIXME: Workaround for update from abrt-1.1.x, can be removed in
|
||||
# F17(18) update. When we are updating from ABRT 1 to ABRT 2, assume
|
||||
# that abrtd service is enabled and thus enable the new abrt-ccpp
|
||||
# service. If abrtd is running on the system, run abrt-ccpp service
|
||||
# as well, because what was a part of abrtd became a separate service.
|
||||
if [ $1 -gt 1 ]; then # Is this an upgrade?
|
||||
/sbin/chkconfig --add abrt-ccpp
|
||||
/sbin/pidof abrtd >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then # Is abrtd running?
|
||||
service abrt-ccpp restart >/dev/null 2>&1 || :
|
||||
fi
|
||||
fi
|
||||
|
||||
%post addon-kerneloops
|
||||
if [ $1 -eq 1 ]; then
|
||||
@ -254,6 +269,18 @@ if [ $1 -eq 1 ]; then
|
||||
/sbin/chkconfig --add abrt-oops
|
||||
%endif
|
||||
fi
|
||||
# FIXME: Workaround for update from abrt-1.1.x, can be removed in
|
||||
# F17(18) update. When we are updating from ABRT 1 to ABRT 2, assume
|
||||
# that abrtd service is enabled and thus enable the new abrt-oops
|
||||
# service. If abrtd is running on the system, run abrt-ccpp service
|
||||
# as well, because what was a part of abrtd became a separate service.
|
||||
if [ $1 -gt 1 ]; then # Is this an upgrade?
|
||||
/sbin/chkconfig --add abrt-oops
|
||||
/sbin/pidof abrtd >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then # Is abrtd running?
|
||||
service abrt-oops restart >/dev/null 2>&1 || :
|
||||
fi
|
||||
fi
|
||||
|
||||
%preun
|
||||
if [ "$1" -eq "0" ] ; then
|
||||
@ -444,6 +471,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
||||
%defattr(-,root,root,-)
|
||||
|
||||
%changelog
|
||||
* Tue Aug 30 2011 Jiri Moskovcak <jmoskovc@redhat.com> - 2.0.4-3
|
||||
- fixed abrt1-abrt2 update
|
||||
|
||||
* Fri Aug 19 2011 Jiri Moskovcak <jmoskovc@redhat.com> - 2.0.4-2
|
||||
- enable bugzilla for kerneloops rhbz#725970
|
||||
- Resolves: #725970
|
||||
|
115
abrt1_to_abrt2
Executable file
115
abrt1_to_abrt2
Executable file
@ -0,0 +1,115 @@
|
||||
#! /usr/bin/python
|
||||
#-*- coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
|
||||
# abrt_v4 TABLE columns:
|
||||
UUID = 0
|
||||
UID = 1
|
||||
INFORMALL = 2
|
||||
DUMPDIR_PATH = 3
|
||||
COUNT = 4
|
||||
REPORTED = 5
|
||||
TIME = 6
|
||||
MESSAGE = 7
|
||||
|
||||
# abrt_v4_reportresult columns:
|
||||
#UUID = 0
|
||||
#UID = 1
|
||||
REPORTER = 2
|
||||
RESULT_MESSAGE = 3
|
||||
|
||||
def get_db_path():
|
||||
path = "/var/spool/abrt/abrt-db"
|
||||
try:
|
||||
with open("/etc/abrt/plugins/SQLite3.conf") as f:
|
||||
for line in f:
|
||||
line = line.split('=', 1)
|
||||
if len(line) == 2 and line[0].strip() == "DBPath":
|
||||
path = line[1].strip()
|
||||
except Exception, ex:
|
||||
pass
|
||||
return path
|
||||
|
||||
def get_url_from_text(text):
|
||||
url_marks = ["http://", "https://", "ftp://", "ftps://", "file://"]
|
||||
lines = text.split('\n')
|
||||
url = ""
|
||||
for mark in url_marks:
|
||||
for line in lines:
|
||||
last_mark = line.find(mark)
|
||||
if last_mark != -1:
|
||||
url_end = line.find(' ',last_mark)
|
||||
if url_end == -1:
|
||||
url_end = len(line)
|
||||
url = "URL=" + line[last_mark:url_end]
|
||||
return url
|
||||
|
||||
def format_reported_to(reported_to):
|
||||
reporter = reported_to[REPORTER]
|
||||
url = get_url_from_text(reported_to[RESULT_MESSAGE])
|
||||
if not url:
|
||||
url = reported_to[RESULT_MESSAGE]
|
||||
return reporter + ": " + url
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
from sqlite3 import dbapi2 as sqlite
|
||||
db = sqlite.connect(get_db_path())
|
||||
crashes = db.execute("SELECT * FROM abrt_v4")
|
||||
# abrt_v4 TABLE columns:
|
||||
# UUID | UID | INFORMALL | DUMPDIR_PATH | COUNT | REPORTED | TIME | MESSAGE
|
||||
for crash in crashes:
|
||||
# abrt_v4_reportresult columns:
|
||||
# UUID | UID | REPORTER | MESSAGE
|
||||
report_results = db.execute("SELECT * FROM abrt_v4_reportresult WHERE UUID='%s'" % crash[UUID])
|
||||
|
||||
# save count from db to file
|
||||
count_file = "%s/count" % crash[DUMPDIR_PATH]
|
||||
# don't overwrite
|
||||
if not os.path.exists(count_file):
|
||||
try:
|
||||
fout = open(count_file, "w")
|
||||
fout.write(str(crash[COUNT]))
|
||||
fout.close()
|
||||
except Exception, ex:
|
||||
# silently ignore errors -> probably stalled db, but we can't
|
||||
# do much about it, so it's better to not polute the rpm output
|
||||
pass
|
||||
|
||||
# save uuid from db to file
|
||||
uuid_file = "%s/uuid" % crash[DUMPDIR_PATH]
|
||||
# don't overwrite
|
||||
if not os.path.exists(uuid_file):
|
||||
try:
|
||||
fout = open(uuid_file, "w")
|
||||
fout.write(str(crash[UUID]))
|
||||
fout.close()
|
||||
except Exception, ex:
|
||||
# silently ignore errors -> probably stalled db, but we can't
|
||||
# do much about it, so it's better to not polute the rpm output
|
||||
pass
|
||||
|
||||
results = report_results.fetchall()
|
||||
if results:
|
||||
# save report results from db to file
|
||||
reported_to_file = "%s/reported_to" % crash[DUMPDIR_PATH]
|
||||
if not os.path.exists(reported_to_file):
|
||||
try:
|
||||
fout = open(reported_to_file, "w")
|
||||
except Exception, ex:
|
||||
# silently ignore errors -> probably stalled db, but we can't
|
||||
# do much about it, so it's better to not polute the rpm output
|
||||
continue
|
||||
|
||||
for report_result in results:
|
||||
# print "\t", format_reported_to(report_result)
|
||||
# I know, it adds a '\n' to the end, but it's not a problem
|
||||
fout.write("%s\n" % format_reported_to(report_result))
|
||||
fout.close()
|
||||
db.close()
|
||||
except Exception, ex:
|
||||
# in case of any unhandled error, just ignore it, the worst, what
|
||||
# can happen is that the old reports are marked as unreported
|
||||
#print ex
|
||||
pass
|
Loading…
Reference in New Issue
Block a user