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