From 325898f3f2951bbde07da47888175c427b11ddc3 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Mon, 8 May 2017 16:18:02 +0800
Subject: [PATCH 03/11] support infinit timeout

Upstream-Status: Pending

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 blivet/util.py | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/blivet/util.py b/blivet/util.py
index 05a253c..d6804be 100644
--- a/blivet/util.py
+++ b/blivet/util.py
@@ -157,6 +157,7 @@ class Path(str):
     def __hash__(self):
         return self._path.__hash__()
 
+# timeout = -1 means infinite timeout, always wait.
 def timeout_command(argv, timeout, *args, **kwargs):
     """call shell-command and either return its output or kill it
     if it doesn't normally exit within timeout seconds and return None"""
@@ -168,7 +169,7 @@ def timeout_command(argv, timeout, *args, **kwargs):
         while proc.poll() is None:
             time.sleep(0.1)
             now = datetime.datetime.now()
-            if (now - start).seconds> timeout:
+            if timeout != -1 and (now - start).seconds> timeout:
                 os.kill(proc.pid, signal.SIGKILL)
                 os.waitpid(-1, os.WNOHANG)
                 program_log.debug("%d seconds timeout" % timeout)
@@ -182,7 +183,7 @@ def timeout_command(argv, timeout, *args, **kwargs):
     program_log.debug("Return code: %d", proc.returncode)
     return (proc.returncode, proc.stdout.read())
 
-def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=False, binary_output=False):
+def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=False, binary_output=False, timeout=10):
     if env_prune is None:
         env_prune = []
 
@@ -191,7 +192,10 @@ def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=Fa
             os.chroot(root)
 
     with program_log_lock:  # pylint: disable=not-context-manager
-        program_log.info("Running... %s", " ".join(argv))
+        if timeout != -1:
+            program_log.info("Running... %s", " ".join(argv))
+        else:
+            program_log.info("Running... %s ...infinite timeout", " ".join(argv))
 
         env = os.environ.copy()
         env.update({"LC_ALL": "C",
@@ -204,7 +208,7 @@ def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=Fa
         else:
             stderr_dir = subprocess.PIPE
 
-        res, out = timeout_command(argv, 10,
+        res, out = timeout_command(argv, timeout,
                                    stdin=stdin,
                                    stdout=subprocess.PIPE,
                                    stderr=stderr_dir,
-- 
2.7.4

