Michal Toman d5ccd13
From d344a5ade872ba59ab18fdc73bff1de6ddf1fbc9 Mon Sep 17 00:00:00 2001
Michal Toman d5ccd13
From: Michal Toman <michal.toman@gmail.com>
Michal Toman d5ccd13
Date: Wed, 11 Mar 2015 09:23:36 +0000
Michal Toman d5ccd13
Subject: [PATCH] fix the invocation of mock shell
Michal Toman d5ccd13
Michal Toman d5ccd13
Formerly mock shell has taken all the excessive arguments
Michal Toman d5ccd13
from the command line and merged them into the resulting
Michal Toman d5ccd13
command executed in the chrooted shell. This changed
Michal Toman d5ccd13
and mock shell now only accepts a single command line
Michal Toman d5ccd13
argument - the whole command line to be forwarded to
Michal Toman d5ccd13
the chrooted shell.
Michal Toman d5ccd13
Michal Toman d5ccd13
Signed-off-by: Michal Toman <michal.toman@gmail.com>
Michal Toman d5ccd13
---
Michal Toman d5ccd13
 src/lib/retrace.py        | 12 ++++++------
Michal Toman d5ccd13
 src/retrace-server-worker | 24 ++++++++++++------------
Michal Toman d5ccd13
 2 files changed, 18 insertions(+), 18 deletions(-)
Michal Toman d5ccd13
Michal Toman d5ccd13
diff --git a/src/lib/retrace.py b/src/lib/retrace.py
Michal Toman d5ccd13
index 772b638..392d1cd 100644
Michal Toman d5ccd13
--- a/src/lib/retrace.py
Michal Toman d5ccd13
+++ b/src/lib/retrace.py
Michal Toman d5ccd13
@@ -419,21 +419,21 @@ def run_gdb(savedir):
Michal Toman d5ccd13
 
Michal Toman d5ccd13
     with open(os.devnull, "w") as null:
Michal Toman d5ccd13
         child = Popen(["/usr/bin/mock", "shell", "--configdir", savedir,
Michal Toman d5ccd13
-                       "--", "ls", "'%s'" % executable],
Michal Toman d5ccd13
+                       "--", "ls '%s'" % executable],
Michal Toman d5ccd13
                        stdout=PIPE, stderr=null)
Michal Toman d5ccd13
         output = child.communicate()[0]
Michal Toman d5ccd13
         if output.strip() != executable:
Michal Toman d5ccd13
             raise Exception("The appropriate package set could not be installed")
Michal Toman d5ccd13
 
Michal Toman d5ccd13
         chmod = call(["/usr/bin/mock", "shell", "--configdir", savedir,
Michal Toman d5ccd13
-                      "--", "/bin/chmod", "a+r", "'%s'" % executable],
Michal Toman d5ccd13
+                      "--", "/bin/chmod a+r '%s'" % executable],
Michal Toman d5ccd13
                       stdout=null, stderr=null)
Michal Toman d5ccd13
 
Michal Toman d5ccd13
         if chmod != 0:
Michal Toman d5ccd13
             raise Exception, "Unable to chmod the executable"
Michal Toman d5ccd13
 
Michal Toman d5ccd13
         child = Popen(["/usr/bin/mock", "shell", "--configdir", savedir,
Michal Toman d5ccd13
-                       "--", "ls", "'%s'" % EXPLOITABLE_PLUGIN_PATH],
Michal Toman d5ccd13
+                       "--", "ls '%s'" % EXPLOITABLE_PLUGIN_PATH],
Michal Toman d5ccd13
                        stdout=PIPE, stderr=null)
Michal Toman d5ccd13
         add_exploitable = child.communicate()[0].strip() == EXPLOITABLE_PLUGIN_PATH
Michal Toman d5ccd13
 
Michal Toman d5ccd13
@@ -461,13 +461,13 @@ def run_gdb(savedir):
Michal Toman d5ccd13
             raise Exception("Unable to copy GDB launcher into chroot")
Michal Toman d5ccd13
 
Michal Toman d5ccd13
         chmod = call(["/usr/bin/mock", "--configdir", savedir, "shell",
Michal Toman d5ccd13
-                      "--", "/bin/chmod", "a+rx", "/var/spool/abrt/gdb.sh"],
Michal Toman d5ccd13
+                      "--", "/bin/chmod a+rx /var/spool/abrt/gdb.sh"],
Michal Toman d5ccd13
                      stdout=null, stderr=null)
Michal Toman d5ccd13
         if chmod:
Michal Toman d5ccd13
             raise Exception("Unable to chmod GDB launcher")
Michal Toman d5ccd13
 
Michal Toman d5ccd13
         child = Popen(["/usr/bin/mock", "shell", "--configdir", savedir,
Michal Toman d5ccd13
-                       "--", "su", "mockbuild", "-c", "'/bin/sh /var/spool/abrt/gdb.sh'",
Michal Toman d5ccd13
+                       "--", "su mockbuild -c '/bin/sh /var/spool/abrt/gdb.sh'",
Michal Toman d5ccd13
                        # redirect GDB's stderr, ignore mock's stderr
Michal Toman d5ccd13
                        "2>&1"], stdout=PIPE, stderr=null)
Michal Toman d5ccd13
 
Michal Toman d5ccd13
@@ -712,7 +712,7 @@ def prepare_debuginfo(vmcore, chroot=None, kernelver=None):
Michal Toman d5ccd13
     if chroot:
Michal Toman d5ccd13
         with open(os.devnull, "w") as null:
Michal Toman d5ccd13
             child = Popen(["/usr/bin/mock", "--configdir", chroot, "shell",
Michal Toman d5ccd13
-                           "--", "crash", "-s", vmcore, vmlinux],
Michal Toman d5ccd13
+                           "--", "crash -s %s %s" % (vmcore, vmlinux)],
Michal Toman d5ccd13
                            stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
     else:
Michal Toman d5ccd13
         child = Popen(["crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=STDOUT)
Michal Toman d5ccd13
diff --git a/src/retrace-server-worker b/src/retrace-server-worker
Michal Toman d5ccd13
index dd1e10f..931888a 100755
Michal Toman d5ccd13
--- a/src/retrace-server-worker
Michal Toman d5ccd13
+++ b/src/retrace-server-worker
Michal Toman d5ccd13
@@ -335,10 +335,10 @@ def start_retrace():
Michal Toman d5ccd13
     retrace_run(25, ["/usr/bin/mock", "init", "--configdir", task.get_savedir()])
Michal Toman d5ccd13
     if CONFIG["UseFafPackages"]:
Michal Toman d5ccd13
         retrace_run(26, ["/usr/bin/mock", "--configdir", task.get_savedir(), "shell", "--",
Michal Toman d5ccd13
-                         "bash", "-c", "'for PKG in /packages/*; do rpm2cpio \\$PKG | " \
Michal Toman d5ccd13
-                         "cpio -muid --quiet; done'"])
Michal Toman d5ccd13
+                         "bash -c 'for PKG in /packages/*; "
Michal Toman d5ccd13
+                         "do rpm2cpio $PKG | cpio -muid --quiet; done'"])
Michal Toman d5ccd13
     retrace_run(27, ["/usr/bin/mock", "--configdir", task.get_savedir(), "shell",
Michal Toman d5ccd13
-                     "--", "chgrp", "-R", "mockbuild", "/var/spool/abrt/crash"])
Michal Toman d5ccd13
+                     "--", "chgrp -R mockbuild /var/spool/abrt/crash"])
Michal Toman d5ccd13
 
Michal Toman d5ccd13
     # generate backtrace
Michal Toman d5ccd13
     task.set_status(STATUS_BACKTRACE)
Michal Toman d5ccd13
@@ -405,7 +405,7 @@ def mock_find_vmlinux(cfgdir, candidates):
Michal Toman d5ccd13
     with open(os.devnull, "w") as null:
Michal Toman d5ccd13
         for cand in candidates:
Michal Toman d5ccd13
             child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
Michal Toman d5ccd13
-                           "test", "-f", cand, "&&", "echo", cand], stdout=PIPE, stderr=null)
Michal Toman d5ccd13
+                           "test -f %s && echo %s" % (cand, cand)], stdout=PIPE, stderr=null)
Michal Toman d5ccd13
             output = child.communicate()[0].strip()
Michal Toman d5ccd13
             child.wait()
Michal Toman d5ccd13
             if output == cand:
Michal Toman d5ccd13
@@ -517,14 +517,14 @@ def start_vmcore():
Michal Toman d5ccd13
             # generate the log
Michal Toman d5ccd13
             with open(os.devnull, "w") as null:
Michal Toman d5ccd13
                 child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
Michal Toman d5ccd13
-                               "crash", "--minimal", "-s", vmcore, vmlinux],
Michal Toman d5ccd13
+                               "crash --minimal -s %s %s" % (vmcore, vmlinux)],
Michal Toman d5ccd13
                               stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
                 kernellog = child.communicate("log\nquit\n")[0]
Michal Toman d5ccd13
                 if child.wait():
Michal Toman d5ccd13
                     log_warn("crash 'log' exitted with %d" % child.returncode)
Michal Toman d5ccd13
 
Michal Toman d5ccd13
                 child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
Michal Toman d5ccd13
-                               "crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
+                               "crash -s %s %s" % (vmcore, vmlinux)], stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
                 crash_bt_a = child.communicate("bt -a\nquit\n")[0]
Michal Toman d5ccd13
                 if child.wait():
Michal Toman d5ccd13
                     log_warn("crash 'bt -a' exitted with %d" % child.returncode)
Michal Toman d5ccd13
@@ -533,7 +533,7 @@ def start_vmcore():
Michal Toman d5ccd13
                 crash_kmem_f = None
Michal Toman d5ccd13
                 if CONFIG["VmcoreRunKmem"] == 1:
Michal Toman d5ccd13
                     child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
Michal Toman d5ccd13
-                                   "crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
+                                   "crash -s %s %s" % (vmcore, vmlinux)], stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
                     crash_kmem_f = child.communicate("kmem -f\nquit\n")[0]
Michal Toman d5ccd13
                     if child.wait():
Michal Toman d5ccd13
                         log_warn("crash 'kmem -f' exitted with %d" % child.returncode)
Michal Toman d5ccd13
@@ -541,7 +541,7 @@ def start_vmcore():
Michal Toman d5ccd13
 
Michal Toman d5ccd13
                 if CONFIG["VmcoreRunKmem"] == 2:
Michal Toman d5ccd13
                     child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
Michal Toman d5ccd13
-                                   "crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
+                                   "crash -s %s %s" % (vmcore, vmlinux)], stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
                     crash_kmem_f = child.communicate("set hash off\nkmem -f\nset hash on\nquit\n")[0]
Michal Toman d5ccd13
                     if child.wait():
Michal Toman d5ccd13
                         log_warn("crash 'kmem -f' exitted with %d" % child.returncode)
Michal Toman d5ccd13
@@ -550,28 +550,28 @@ def start_vmcore():
Michal Toman d5ccd13
                 crash_kmem_z = None
Michal Toman d5ccd13
                 if CONFIG["VmcoreRunKmem"] == 3:
Michal Toman d5ccd13
                     child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
Michal Toman d5ccd13
-                                   "crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
+                                   "crash -s %s %s" % (vmcore, vmlinux)], stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
                     crash_kmem_z = child.communicate("kmem -z\nquit\n")[0]
Michal Toman d5ccd13
                     if child.wait():
Michal Toman d5ccd13
                         log_warn("crash 'kmem -z' exitted with %d" % child.returncode)
Michal Toman d5ccd13
                         crash_kmem_z = None
Michal Toman d5ccd13
 
Michal Toman d5ccd13
                 child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
Michal Toman d5ccd13
-                               "crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
+                               "crash -s %s %s" % (vmcore, vmlinux)], stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
                 crash_sys = child.communicate("sys\nquit\n")[0]
Michal Toman d5ccd13
                 if child.wait():
Michal Toman d5ccd13
                     log_warn("crash 'sys' exitted with %d" % child.returncode)
Michal Toman d5ccd13
                     crash_sys = None
Michal Toman d5ccd13
 
Michal Toman d5ccd13
                 child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
Michal Toman d5ccd13
-                               "crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
+                               "crash -s %s %s" % (vmcore, vmlinux)], stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
                 crash_sys_c = child.communicate("sys -c\nquit\n")[0]
Michal Toman d5ccd13
                 if child.wait():
Michal Toman d5ccd13
                     log_warn("crash 'sys -c' exitted with %d" % child.returncode)
Michal Toman d5ccd13
                     crash_sys_c = None
Michal Toman d5ccd13
 
Michal Toman d5ccd13
                 child = Popen(["/usr/bin/mock", "--configdir", cfgdir, "shell", "--",
Michal Toman d5ccd13
-                               "crash", "-s", vmcore, vmlinux], stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
+                               "crash -s %s %s" % (vmcore, vmlinux)], stdin=PIPE, stdout=PIPE, stderr=null)
Michal Toman d5ccd13
                 crash_foreach_bt = child.communicate("foreach bt\nquit\n")[0]
Michal Toman d5ccd13
                 if child.wait():
Michal Toman d5ccd13
                     log_warn("crash 'foreach bt' exitted with %d" % child.returncode)
Michal Toman d5ccd13
-- 
Michal Toman d5ccd13
2.1.0
Michal Toman d5ccd13