diff options
author | Karel Klic <kklic@redhat.com> | 2009-10-19 12:02:40 +0200 |
---|---|---|
committer | Karel Klic <kklic@redhat.com> | 2009-10-19 12:02:40 +0200 |
commit | e714cfac17dcdb44c0b47f6f1323eade7fc9a3fe (patch) | |
tree | 0806832a14168b3ee356948487a1909956d10a88 | |
parent | c9f43d22c5bf1d1bb392ee426c72d383b2241bbe (diff) | |
parent | a0ad2aada47afdc78d6b807e7c51c854d50accda (diff) | |
download | abrt-e714cfac17dcdb44c0b47f6f1323eade7fc9a3fe.tar.gz abrt-e714cfac17dcdb44c0b47f6f1323eade7fc9a3fe.tar.xz abrt-e714cfac17dcdb44c0b47f6f1323eade7fc9a3fe.zip |
Merge branch 'master' of git://git.fedorahosted.org/git/abrt
-rw-r--r-- | abrt.spec | 31 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | lib/Plugins/CCpp.cpp | 212 | ||||
-rw-r--r-- | src/CLI/abrt-cli.1 | 4 | ||||
-rw-r--r-- | src/Daemon/Makefile.am | 5 | ||||
-rwxr-xr-x | src/Daemon/abrt-debuginfo-install | 175 | ||||
-rw-r--r-- | src/Daemon/org.fedoraproject.abrt.policy | 4 | ||||
-rw-r--r-- | src/Gui/ABRTExceptions.py | 4 | ||||
-rwxr-xr-x[-rw-r--r--] | src/Gui/abrt-gui | 2 |
9 files changed, 266 insertions, 173 deletions
@@ -3,8 +3,8 @@ %{!?python_sitearch: %define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} Summary: Automatic bug detection and reporting tool Name: abrt -Version: 0.0.9 -Release: 3%{?dist} +Version: 0.0.10 +Release: 1%{?dist} License: GPLv2+ Group: Applications/System URL: https://fedorahosted.org/abrt/ @@ -243,6 +243,7 @@ fi %defattr(-,root,root,-) %doc README COPYING %{_sbindir}/%{name}d +%{_bindir}/%{name}-debuginfo-install %config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf %config(noreplace) %{_sysconfdir}/dbus-1/system.d/dbus-%{name}.conf %{_initrddir}/%{name}d @@ -358,7 +359,31 @@ fi %defattr(-,root,root,-) %changelog -* Wed Sep 23 2009 jiri Moskovcak <jmoskovc@redhat.com> 0.0.9-2 +* Thu Oct 15 2009 Jiri Moskovcak <jmoskovc@redhat.com> 0.0.10-1 +- new version +- added more logging (vda.linux@googlemail.com) +- made polkit policy to be more permissive when installing debuginfo (jmoskovc@redhat.com) +- lib/Plugins/CCpp.cpp: add build-ids to backtrace (vda.linux@googlemail.com) +- lib/Plugins/CCpp.cpp: do not use temp file for gdb commands - use -ex CMD instead (vda.linux@googlemail.com) +- GUI: added refresh button, added sanity check to plugin settings (jmoskovc@redhat.com) +- Initial man page for abrt-cli (kklic@redhat.com) +- Added --version, -V, --help, -? options. Fixed crash caused by unknown option. (kklic@redhat.com) +- Date/time honors current system locale (kklic@redhat.com) +- fixed saving/reading user config (jmoskovc@redhat.com) +- SPEC: added gnome-python2-gnomekeyring to requirements (jmoskovc@redhat.com) +- GUI: call Report() with the latest pluginsettings (jmoskovc@redhat.com) +- Fix Bug 526220 - [abrt] crash detected in abrt-gui-0.0.9-2.fc12 (vda.linux@googlemail.com) +- removed unsecure reading/writting from ~HOME directory rhbz#522878 (jmoskovc@redhat.com) +- error checking added to archive creation (danny@rawhide.localdomain) +- try using pk-debuginfo-install before falling back to debuginfo-install (vda.linux@googlemail.com) +- abrt-gui: make "report" toolbar button work even if abrtd is not running (vda.linux@googlemail.com) +- set LIMIT_MESSAGE to 16k, typo fix and daemon now reads config information from dbus (npajkovs@redhat.com) +- add support for abrtd autostart (vda.linux@googlemail.com) +- GUI: reversed the dumplist, so the latest crashes are at the top (jmoskovc@redhat.com) +- rewrite FileTransfer to use library calls instead of commandline calls for compression (dnovotny@redhat.com) +- and many minor fixes .. + +* Wed Sep 23 2009 Jiri Moskovcak <jmoskovc@redhat.com> 0.0.9-2 - added bug-buddy to provides rhbz#524934 * Tue Sep 22 2009 Jiri Moskovcak <jmoskovc@redhat.com> 0.0.9-1 diff --git a/configure.ac b/configure.ac index c8c03889..aa9579ba 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([abrt], [0.0.9], [jmoskovc@redhat.com]) +AC_INIT([abrt], [0.0.10], [jmoskovc@redhat.com]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) diff --git a/lib/Plugins/CCpp.cpp b/lib/Plugins/CCpp.cpp index 34201174..40aadd24 100644 --- a/lib/Plugins/CCpp.cpp +++ b/lib/Plugins/CCpp.cpp @@ -87,6 +87,18 @@ static std::string CreateHash(const std::string& pInput) return hash_str; } +static std::string concat_str_vector(char **strings) +{ + std::string result; + while (*strings) + { + result += *strings++; + if (*strings) + result += ' '; + } + return result; +} + static pid_t ExecVP(char** pArgs, uid_t uid, std::string& pOutput) { int pipeout[2]; @@ -107,11 +119,7 @@ static pid_t ExecVP(char** pArgs, uid_t uid, std::string& pOutput) } if (child == 0) { - VERB1 log("Executing: %s %s %s %s", pArgs[0] - ,pArgs[1] ? pArgs[1] : "" - ,pArgs[1] && pArgs[2] ? pArgs[2] : "" - ,pArgs[1] && pArgs[2] && pArgs[3] ? pArgs[3] : "" - ); + VERB1 log("Executing: %s", concat_str_vector(pArgs).c_str()); close(pipeout[0]); /* read side of the pipe */ xmove_fd(pipeout[1], STDOUT_FILENO); /* Make sure stdin is safely open to nothing */ @@ -164,10 +172,10 @@ static void GetBacktrace(const std::string& pDebugDumpDir, std::string& pBacktra char* args[9]; args[0] = (char*)"gdb"; args[1] = (char*)"-batch"; - // when/if we'll add support for networked debuginfos + // when/if gdb supports it: // (https://bugzilla.redhat.com/show_bug.cgi?id=528668): - //args[] = (char*)"-ex"; - //args[] = xasprintf("set debug-file-directory %s", dir); + //args[2] = (char*)"-ex"; + //args[3] = "set debug-file-directory /usr/lib/debug/.build-id:/var/cache/abrt-di/usr/lib/debug/.build-id"; /* * Unfortunately, "file BINARY_FILE" doesn't work well if BINARY_FILE * was deleted (as often happens during system updates): @@ -365,75 +373,9 @@ static std::string run_unstrip_n(const std::string& pDebugDumpDir) static void InstallDebugInfos(const std::string& pDebugDumpDir, std::string& build_ids) { - log("Getting module names, file names, build IDs from core file"); - std::string unstrip_list = run_unstrip_n(pDebugDumpDir); - - log("Builting list of missing debuginfos"); - // lines look like this: - // 0x400000+0x209000 23c77451cf6adff77fc1f5ee2a01d75de6511dda@0x40024c - - [exe] - // 0x400000+0x209000 ab3c8286aac6c043fd1bb1cc2a0b88ec29517d3e@0x40024c /bin/sleep /usr/lib/debug/bin/sleep.debug [exe] - // 0x7fff313ff000+0x1000 389c7475e3d5401c55953a425a2042ef62c4c7df@0x7fff313ff2f8 . - linux-vdso.so.1 - vector_string_t missing; - char *dup = xstrdup(unstrip_list.c_str()); - char *p = dup; - char c; - do { - char* end = strchrnul(p, '\n'); - c = *end; - *end = '\0'; - char* word2 = strchr(p, ' '); - if (!word2) - continue; - word2++; - char* endsp = strchr(word2, ' '); - if (!endsp) - continue; - /* endsp points to 2nd space in the line now*/ - - /* This filters out linux-vdso.so, among others */ - if (strstr(endsp, "[exe]") == NULL && endsp[1] != '/') - continue; - *endsp = '\0'; - char* at = strchrnul(word2, '@'); - *at = '\0'; - - bool file_exists = 1; - if (word2[0] && word2[1] && is_hexstr(word2)) - { - struct stat sb; - char *fn = xasprintf("/usr/lib/debug/.build-id/%.2s/%s.debug", word2, word2 + 2); - /* Not lstat: this is a symlink and we want link's TARGET to exist */ - file_exists = stat(fn, &sb) == 0 && S_ISREG(sb.st_mode); - free(fn); - build_ids += "build-id "; - build_ids += word2; - build_ids += file_exists ? " (debuginfo present)\n" : " (debuginfo absent)\n"; - } - log("build_id:%s exists:%d", word2, (int)file_exists); - if (!file_exists) - missing.push_back(word2); - - p = end + 1; - } while (c); - free(dup); - - if (missing.size() == 0) - { - log("All debuginfos are present, not installing debuginfo packages"); - return; - } - //missing vector is unused for now, but TODO: use it to install only needed debuginfos - - std::string package; - { - CDebugDump dd; - dd.Open(pDebugDumpDir); - dd.LoadText(FILENAME_PACKAGE, package); - } - update_client(_("Searching for debug-info packages...")); - int pipein[2], pipeout[2]; + int pipein[2], pipeout[2]; //TODO: get rid of pipein xpipe(pipein); xpipe(pipeout); @@ -454,45 +396,18 @@ static void InstallDebugInfos(const std::string& pDebugDumpDir, std::string& bui /*close(STDERR_FILENO);*/ setsid(); -/* Honestly, I do not know what is worse, pk-debuginfo-install or debuginfo-install: - -# pk-debuginfo-install -y -- coreutils-7.2-4.fc11 -1. Getting sources list...OK. Found 16 enabled and 23 disabled sources. -2. Finding debugging sources...OK. Found 0 disabled debuginfo repos. -3. Enabling debugging sources...OK. Enabled 0 debugging sources. -4. Finding debugging packages...Failed to find the package : more than one package found for -Failed to find the package : more than one package found for -FAILED. Found no packages to install. -5. Disabling sources previously enabled...OK. Disabled 0 debugging sources. - -:( FAIL! - -# debuginfo-install -y -- coreutils-7.2-4.fc11 -Loaded plugins: refresh-packagekit -Another application is holding the yum lock, cannot continue -:( FAIL! - -# debuginfo-install -y -- coreutils-7.2-4.fc11 -(second time in a row - it worked) - -*/ + char *coredump = xasprintf("%s/"FILENAME_COREDUMP, pDebugDumpDir.c_str()); + char *tempdir = xasprintf("/tmp/abrt-%u-%lu", (int)getpid(), (long)time(NULL)); /* log() goes to stderr/syslog, it's ok to use it here */ - VERB1 log("Executing: %s %s %s %s", "pk-debuginfo-install", "-y", "--", package.c_str()); - execlp("pk-debuginfo-install", "pk-debuginfo-install", "-y", "--", package.c_str(), NULL); - /* fall back */ - VERB1 log("Executing: %s %s %s %s", "debuginfo-install", "-y", "--", package.c_str()); - execlp("debuginfo-install", "debuginfo-install", "-y", "--", package.c_str(), NULL); + VERB1 log("Executing: %s %s %s %s", "abrt-debuginfo-install", coredump, tempdir, "/"); // "/var/cache/abrt-di" + execlp("abrt-debuginfo-install", "abrt-debuginfo-install", coredump, tempdir, "/", NULL); exit(1); } close(pipein[0]); close(pipeout[1]); - /* Should not be needed (we use -y option), but just in case: */ - safe_write(pipein[1], "y\n", sizeof("y\n")-1); - close(pipein[1]); - update_client(_("Downloading and installing debug-info packages...")); FILE *pipeout_fp = fdopen(pipeout[0], "r"); @@ -503,50 +418,30 @@ Another application is holding the yum lock, cannot continue return; } -/* glx-utils, for example, do not have glx-utils-debuginfo package. - * Disabled code was causing failures in backtrace decoding. - * This does not seem to be useful. - */ -#ifdef COMPLAIN_IF_NO_DEBUGINFO - bool already_installed = false; -#endif char buff[1024]; - std::string packageName = package.substr(0, package.rfind("-", package.rfind("-")-1)); while (fgets(buff, sizeof(buff), pipeout_fp)) { int last = strlen(buff) - 1; if (last >= 0 && buff[last] == '\n') buff[last] = '\0'; - /* log(buff); - update_client logs it too */ - update_client(buff); /* maybe only if buff != ""? */ - -#ifdef COMPLAIN_IF_NO_DEBUGINFO - if (already_installed == false) + if (strncmp(buff, "MISSING:", 8) == 0) { - /* "Package foo-debuginfo-1.2-5.ARCH already installed and latest version" */ - char* pn = strstr(buff, packageName.c_str()); - if (pn) - { - char* already_str = strstr(pn, "already installed and latest version"); - if (already_str) - { - already_installed = true; - } - } + build_ids += "Debuginfo absent: "; + build_ids += buff + 8; + build_ids += "\n"; } - if (already_installed == false && - (strstr(buff, "No debuginfo packages available to install") != NULL || - strstr(buff, "Could not find debuginfo for main pkg") != NULL || - strstr(buff, "Could not find debuginfo pkg for dependency package") != NULL)) + const char *p = buff; + while (*p == ' ' || *p == '\t') { - fclose(pipeout_fp); - kill(child, SIGTERM); - wait(NULL); - throw CABRTException(EXCEP_PLUGIN, std::string(__func__) + ": cannot install debuginfos for " + pPackage); + p++; + } + if (*p) + { + /* log(buff); - update_client logs it too */ + update_client(buff); } -#endif } fclose(pipeout_fp); @@ -592,35 +487,29 @@ std::string CAnalyzerCCpp::GetGlobalUUID(const std::string& pDebugDumpDir) static bool DebuginfoCheckPolkit(int uid) { - PolkitResult result; - int child_pid; - - child_pid = fork(); - + int child_pid = fork(); + if (child_pid < 0) + { + perror_msg_and_die("fork"); + } if (child_pid == 0) { //child - setuid(uid); - result = polkit_check_authorization(getpid(), + if (setuid(uid)) + exit(1); //paranoia + PolkitResult result = polkit_check_authorization(getpid(), "org.fedoraproject.abrt.install-debuginfos"); - if (result == PolkitYes) - { - exit(0); //authentication OK - } - exit(1); - } else - { - //parent - int status; - - waitpid(child_pid, &status, 0); - if (WEXITSTATUS(status) == 0) - { - return true; //authentication OK - } - return false; + exit(result != PolkitYes); //exit 1 (failure) if not allowed } + //parent + int status; + if (waitpid(child_pid, &status, 0) > 0 && WEXITSTATUS(status) == 0) + { + return true; //authorization OK + } + log("UID %d is not authorized to install debuginfos", uid); + return false; } void CAnalyzerCCpp::CreateReport(const std::string& pDebugDumpDir, int force) @@ -663,6 +552,7 @@ void CAnalyzerCCpp::CreateReport(const std::string& pDebugDumpDir, int force) dd.Open(pDebugDumpDir); dd.SaveText(FILENAME_BACKTRACE, build_ids + backtrace); +log("BACKTRACE:'%s'", (build_ids + backtrace).c_str()); if (m_bMemoryMap) { dd.SaveText(FILENAME_MEMORYMAP, "memory map of the crashed C/C++ application, not implemented yet"); diff --git a/src/CLI/abrt-cli.1 b/src/CLI/abrt-cli.1 index fb0a7c89..5f132dfa 100644 --- a/src/CLI/abrt-cli.1 +++ b/src/CLI/abrt-cli.1 @@ -2,12 +2,12 @@ .SH NAME abrt\-cli \- a command line interface to abrt .SH SYNOPSIS -.B abrt\-cli +.B abrt\-cli [option] .SH DESCRIPTION .I abrt\-cli is a command line tool that manages application crashes catched by -.I abrtd +.I abrtd daemon. It enables access to crash data, and allows to report crashes depending on active abrt plugins. .SH OPTIONS diff --git a/src/Daemon/Makefile.am b/src/Daemon/Makefile.am index 29c7f1be..0067e5dd 100644 --- a/src/Daemon/Makefile.am +++ b/src/Daemon/Makefile.am @@ -1,3 +1,5 @@ +bin_SCRIPTS = abrt-debuginfo-install + sbin_PROGRAMS = abrtd abrtd_SOURCES = \ @@ -43,7 +45,8 @@ comredhatabrtservicedir = ${datadir}/dbus-1/system-services dist_comredhatabrtservice_DATA = com.redhat.abrt.service man_MANS = abrtd.8 abrt.conf.5 -EXTRA_DIST = $(man_MANS) + +EXTRA_DIST = $(man_MANS) abrt-debuginfo-install DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ diff --git a/src/Daemon/abrt-debuginfo-install b/src/Daemon/abrt-debuginfo-install new file mode 100755 index 00000000..fe55250a --- /dev/null +++ b/src/Daemon/abrt-debuginfo-install @@ -0,0 +1,175 @@ +#!/bin/sh + +core=$1 +tempdir=$2 +cachedir=$3 +debug=false + +count_words() { + echo $# +} + +exec 2>&1 + +# Output goes to GUI as debigunfo install log. +# "MISSING:xxxx" messages result in xxxx being prepended to backtrace + +# Exitcodes: +# 0 - all debuginfos are installed +# 1 - not all debuginfos are installed +# 2+ - serious problem + +test -f "$core" || exit 2 +# cachedir is optional +test x"$cachedir" = x"" || test -d "$cachedir" || exit 2 +# tempdir must not exist +test -e "$tempdir" && exit 2 + +mkdir "$tempdir" || exit 2 +cd "$tempdir" || exit 2 +$debug && echo "Installing rpms to $tempdir" + +# eu-unstrip output example: +# 0x400000+0x209000 23c77451cf6adff77fc1f5ee2a01d75de6511dda@0x40024c - - [exe] +# or +# 0x400000+0x20d000 233aa1a57e9ffda65f53efdaf5e5058657a39993@0x40024c /usr/libexec/im-settings-daemon /usr/lib/debug/usr/libexec/im-settings-daemon.debug [exe] +# 0x7fff5cdff000+0x1000 0d3eb4326fd7489fcf9b598269f1edc420e2c560@0x7fff5cdff2f8 . - linux-vdso.so.1 +# 0x3d15600000+0x208000 20196628d1bc062279622615cc9955554e5bb227@0x3d156001a0 /usr/lib64/libnotify.so.1.1.3 /usr/lib/debug/usr/lib64/libnotify.so.1.1.3.debug libnotify.so.1 +# 0x7fd8ae931000+0x62d000 dd49f44f958b5a11a1635523b2f09cb2e45c1734@0x7fd8ae9311a0 /usr/lib64/libgtk-x11-2.0.so.0.1600.6 /usr/lib/debug/usr/lib64/libgtk-x11-2.0.so.0.1600.6.debug +echo "Getting list of build IDs" +eu_unstrip_OUT=`eu-unstrip "--core=$core" -n 2>&1` +err=$? +printf "%s\nexitcode:%s\n" "$eu_unstrip_OUT" $err >eu_unstrip.OUT +test $err = 0 || exit 2 + +# Get space-separated list of all build-ids +# There can be duplicates (observed in real world) +build_ids=`printf "%s\n" "$eu_unstrip_OUT" \ +| while read junk1 build_id binary_file di_file lib_name junk2; do + build_id=${build_id%%@*} + + # This filters out linux-vdso.so, among others + test x"$lib_name" != x"[exe]" && test x"${binary_file:0:1}" != x"/" && continue + # Sanitize build_id: must be longer than 2 chars + test ${#build_id} -le 2 && continue + # Sanitize build_id: must have only hex digits + test x"${build_id//[0-9a-f]/}" != x"" && continue + + echo "$build_id" +done | sort | uniq | xargs` +$debug && echo "build_ids:$build_ids" + +# Which debuginfo files are missing? +missing_debuginfo_files=`for build_id in $build_ids; do + build_id1=${build_id:0:2} + build_id2=${build_id:2} + + file="usr/lib/debug/.build-id/$build_id1/$build_id2.debug" + if test x"$cachedir" != x"" && test x"$cachedir" != x"/" ; then + test -f "$cachedir/$file" && continue + if test -f "/$file"; then + mkdir -p "$cachedir/usr/lib/debug/.build-id/$build_id1" + # Note: this does not preserve symlinks. This is intentional + $debug && echo Copying "$file" to "$cachedir/$file" >&2 + cp "$file" "$cachedir/$file" + continue + fi + fi + test -f "/$file" && continue + echo -n "/$file " +done` +$debug && echo "missing_debuginfo_files:$missing_debuginfo_files" + +test x"$missing_debuginfo_files" = x"" && exit 0 + +# We'll run something like: +# yum --enablerepo='*debuginfo*' --quiet provides \ +# /usr/lib/debug/.build-id/bb/11528d59940983f495e9cb099cafb0cb206051.debug \ +# /usr/lib/debug/.build-id/c5/b84c0ad3676509dc30bfa7d42191574dac5b06.debug ... +echo "Determining list of packages for `count_words $missing_debuginfo_files` missing debuginfos" +yum_provides_OUT=`yum --enablerepo='*debuginfo*' --quiet provides $missing_debuginfo_files 2>&1` +err=$? +printf "%s\nexitcode:%s\n" "$yum_provides_OUT" $err >yum_provides.OUT +test $err = 0 || exit 2 + +# The output is pretty machine-unfriendly: +# glibc-debuginfo-2.10.90-24.x86_64 : Debug information for package glibc +# Repo : rawhide-debuginfo +# Matched from: +# Filename : /usr/lib/debug/.build-id/5b/c784c8d63f87dbdeb747a773940956a18ecd2f.debug +# +# 1:dbus-debuginfo-1.2.12-2.fc11.x86_64 : Debug information for package dbus +# Repo : updates-debuginfo +# Matched from: +# Filename : /usr/lib/debug/.build-id/bc/da7d09eb6c9ee380dae0ed3d591d4311decc31.debug +# Need to massage it a lot. +# There can be duplicates (one package may provide many debuginfos). +packages=`printf "%s\n" "$yum_provides_OUT" \ +| grep -- -debuginfo- \ +| sed 's/^[0-9]*://' \ +| sed -e 's/ .*//' -e 's/:.*//' \ +| sort | uniq | xargs` +$debug && echo "packages:$packages" + +# yum may return "" here if it found no packages (say, if coredump is from a new, +# unreleased package fresh from koji). +test x"$packages" = x"" && exit 1 + +# Redirecting, since progress bar stuff only messes up our output +echo "Downloading `count_words $packages` packages" +yumdownloader --enablerepo='*debuginfo*' --quiet $packages >yumdownloader.OUT 2>&1 +err=$? +echo "exitcode:$err" >>yumdownloader.OUT +test $err = 0 || exit 2 + +for f in *.rpm; do + # Happens if no .rpm's were downloaded (yumdownloader problem) + # In this case, $f is the literal "*.rpm" string + test -f "$f" || exit 2 + echo "Unpacking: $f" + echo "Processing: $f" >>unpack.OUT + rpm2cpio <"$f" 2>>unpack.OUT | cpio -id >>unpack.OUT 2>&1 +done + +# Which debuginfo files are still missing, including those we just unpacked? +missing_build_ids=`for build_id in $build_ids; do + build_id1=${build_id:0:2} + build_id2=${build_id:2} + + file="usr/lib/debug/.build-id/$build_id1/$build_id2.debug" + + test -f "/$file" && continue + test x"$cachedir" != x"" \ + && test x"$cachedir" != x"/" \ + && test -f "$cachedir/$file" && continue + + if test -f "$file"; then + # file is one of those we just installed. + # Cache it if cachedir is specified. + if test x"$cachedir" != x"" && test -d "$cachedir"; then + mkdir -p "$cachedir/usr/lib/debug/.build-id/$build_id1" + # Note: this does not preserve symlinks. This is intentional + $debug && echo Copying "$file" to "$cachedir/$file" >&2 + cp --remove-destination "$file" "$cachedir/$file" + fi + continue + fi + echo -n "$build_id " +done` +$debug && echo "missing_build_ids:$missing_build_ids" + +# If cachedir is specified, tempdir is just a staging area. Delete it +if test x"$cachedir" != x""; then + $debug && echo "Removing $tempdir" + rm -rf "$tempdir" +fi + +test x"$missing_build_ids" = x"" && exit 0 + +for missing in $missing_build_ids; do + echo "MISSING:$missing" +done + +echo "`count_words $missing_build_ids` debuginfos can't be found" + +exit 1 diff --git a/src/Daemon/org.fedoraproject.abrt.policy b/src/Daemon/org.fedoraproject.abrt.policy index 1c2c0bb0..9261acdc 100644 --- a/src/Daemon/org.fedoraproject.abrt.policy +++ b/src/Daemon/org.fedoraproject.abrt.policy @@ -30,9 +30,9 @@ Copyright (c) 2009 Red Hat inc. <description>Install debuginfos</description> <message>Installing debuginfos requires authentication</message> <defaults> - <allow_any>no</allow_any> + <allow_any>yes</allow_any> <allow_active>yes</allow_active> - <allow_inactive>no</allow_inactive> + <allow_inactive>yes</allow_inactive> </defaults> </action> </policyconfig> diff --git a/src/Gui/ABRTExceptions.py b/src/Gui/ABRTExceptions.py index 30496384..0d357a30 100644 --- a/src/Gui/ABRTExceptions.py +++ b/src/Gui/ABRTExceptions.py @@ -14,11 +14,11 @@ class WrongData(Exception): def __str__(self): return self.what - + class ConfBackendInitError(Exception): def __init__(self, msg): Exception.__init__(self) self.what = msg - + def __str__(self): return self.what diff --git a/src/Gui/abrt-gui b/src/Gui/abrt-gui index dd0897c0..85bdebbc 100644..100755 --- a/src/Gui/abrt-gui +++ b/src/Gui/abrt-gui @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/sh export PYTHONPATH=/usr/share/abrt export XLOGNAME=$LOGNAME exec /usr/bin/python /usr/share/abrt/CCMainWindow.py "$@" |