Blame SPECS/0057-a-a-save-package-data-Use-regexps-to-match-interpret.patch

Packit 8ea169
From caf03304c98dc84086b2f4f60be4b41fc76f31e6 Mon Sep 17 00:00:00 2001
Packit 8ea169
From: Martin Kutlak <mkutlak@redhat.com>
Packit 8ea169
Date: Wed, 4 Mar 2020 16:41:28 +0100
Packit 8ea169
Subject: [PATCH] a-a-save-package-data: Use regexps to match interpreters
Packit 8ea169
Packit 8ea169
Instead of adding more and more interpreters to the list which
Packit 8ea169
gets outdated after a while, we can utilize regular expressions.
Packit 8ea169
Packit 8ea169
User will still have an option to set Interpreters in config file to
Packit 8ea169
match any other interpreters.
Packit 8ea169
Packit 8ea169
The regexes should cover interpreters:
Packit 8ea169
Packit 8ea169
Python:
Packit 8ea169
 * python
Packit 8ea169
 * python2
Packit 8ea169
 * python2.7
Packit 8ea169
 * python3
Packit 8ea169
 * python3.8
Packit 8ea169
 * platform-python
Packit 8ea169
 * platform-python3
Packit 8ea169
 * platform-python3.8
Packit 8ea169
Packit 8ea169
Perl:
Packit 8ea169
 * perl
Packit 8ea169
 * perl5.30.1
Packit 8ea169
Packit 8ea169
PHP:
Packit 8ea169
 * php
Packit 8ea169
 * php-cgi
Packit 8ea169
Packit 8ea169
R
Packit 8ea169
retrace.fedoraproject.org/faf/reports/2832480
Packit 8ea169
tcl
Packit 8ea169
retrace.fedoraproject.org/faf/reports/2555398
Packit 8ea169
Packit 8ea169
The regexes should cover interpreters:
Packit 8ea169
R:
Packit 8ea169
 * R
Packit 8ea169
Packit 8ea169
tcl:
Packit 8ea169
 * tclsh
Packit 8ea169
 * tclsh8.6
Packit 8ea169
Packit 8ea169
Tests require will-crash and perl-interpreter installed.
Packit 8ea169
Packit 8ea169
Resolves: rhbz#1798494
Packit 8ea169
Packit 8ea169
Signed-off-by: Martin Kutlak <mkutlak@redhat.com>
Packit 8ea169
---
Packit 8ea169
 src/daemon/abrt-action-save-package-data.c    | 39 ++++++++-
Packit 8ea169
 1 files change, 38 insertions(+), 1 deletions(-)
Packit 8ea169
Packit 8ea169
diff --git a/src/daemon/abrt-action-save-package-data.c b/src/daemon/abrt-action-save-package-data.c
Packit 8ea169
index 21b4c97d..6ced7971 100644
Packit 8ea169
--- a/src/daemon/abrt-action-save-package-data.c
Packit 8ea169
+++ b/src/daemon/abrt-action-save-package-data.c
Packit 8ea169
@@ -17,11 +17,47 @@
Packit 8ea169
     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Packit 8ea169
 */
Packit 8ea169
 #include <fnmatch.h>
Packit 8ea169
+#include <glib.h>
Packit 8ea169
 #include "libabrt.h"
Packit 8ea169
 #include "rpm.h"
Packit 8ea169
 
Packit 8ea169
 #define GPG_CONF "gpg_keys.conf"
Packit 8ea169
 
Packit 8ea169
+/**
Packit 8ea169
+    "python3.4, python3.5, python3.6, python3.7, perl, perl5.16.2"
Packit 8ea169
+  * The regexes should cover interpreters with basename:
Packit 8ea169
+  * Python:
Packit 8ea169
+  *   python
Packit 8ea169
+  *   python2
Packit 8ea169
+  *   python3
Packit 8ea169
+  *   python2.7
Packit 8ea169
+  *   python3.8
Packit 8ea169
+  *   platform-python
Packit 8ea169
+  *   platform-python3
Packit 8ea169
+  *   platform-python3.8
Packit 8ea169
+  *
Packit 8ea169
+  * Perl:
Packit 8ea169
+  *   perl
Packit 8ea169
+  *   perl5.30.1
Packit 8ea169
+  *
Packit 8ea169
+  * PHP:
Packit 8ea169
+  *   php
Packit 8ea169
+  *   php-cgi
Packit 8ea169
+  *
Packit 8ea169
+  * R:
Packit 8ea169
+  *   R
Packit 8ea169
+  *
Packit 8ea169
+  * tcl:
Packit 8ea169
+  *   tclsh
Packit 8ea169
+  *   tclsh8.6
Packit 8ea169
+  **/
Packit 8ea169
+#define DEFAULT_INTERPRETERS_REGEX \
Packit 8ea169
+    "^(perl ([[:digit:]][.][[:digit:]]+[.][[:digit:]])? |" \
Packit 8ea169
+    "php (-cgi)? |" \
Packit 8ea169
+    "(platform-)? python ([[:digit:]]([.][[:digit:]])?)? |" \
Packit 8ea169
+    "R |" \
Packit 8ea169
+    "tclsh ([[:digit:]][.][[:digit:]])?)$"
Packit 8ea169
+
Packit 8ea169
 static bool   settings_bOpenGPGCheck = false;
Packit 8ea169
 static GList *settings_setOpenGPGPublicKeys = NULL;
Packit 8ea169
 static GList *settings_setBlackListedPkgs = NULL;
Packit 8ea169
@@ -304,7 +340,8 @@ static int SavePackageDescriptionToDebugDump(const char *dump_dir_name, const ch
Packit 8ea169
     /* if basename is known interpreter, we want to blame the running script
Packit 8ea169
      * not the interpreter
Packit 8ea169
      */
Packit 8ea169
-    if (g_list_find_custom(settings_Interpreters, basename, (GCompareFunc)g_strcmp0))
Packit 8ea169
+    if (g_regex_match_simple(DEFAULT_INTERPRETERS_REGEX, basename, G_REGEX_EXTENDED, /*MatchFlags*/0) ||
Packit 8ea169
+        g_list_find_custom(settings_Interpreters, basename, (GCompareFunc)g_strcmp0))
Packit 8ea169
     {
Packit 8ea169
         struct pkg_envra *script_pkg = get_script_name(cmdline, &executable, chroot);
Packit 8ea169
         /* executable may have changed, check it again */
Packit 8ea169
-- 
Packit 8ea169
2.25.1
Packit 8ea169