[Lldb-commits] [PATCH] D64251: Don't depend on psutil on AIX

Dan Liew via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Fri Jul 5 13:47:29 PDT 2019

delcypher added inline comments.

Comment at: llvm/utils/lit/lit/LitConfig.py:93
             # See lit.util.killProcessAndChildren()
-            try:
-                import psutil  # noqa: F401
-            except ImportError:
-                self.fatal("Setting a timeout per test requires the"
-                           " Python psutil module but it could not be"
-                           " found. Try installing it via pip or via"
-                           " your operating system's package manager.")
+            if platform.system() != 'AIX':
+                try:
If we're going to start specializing how we support this feature on different problems then I think we need to refactor this so we don't have a platform specific code littered throughout the lit code base.

There probably should be a function that determines if `killProcessAndChildren()` is supported. Here's a sketch

def killProcessAndChildrenIsSupported():
      Returns a tuple (<supported> , <error message>)
       `<supported>` is True if `killProcessAndChildren()` is supported on the current host, returns False otherwise.
      `<error message>` is an empty string if `<supported>` is True, otherwise is contains a string describing why the function is not supported.
    if platform.system() == 'AIX':
       return (True, "")
       import psutil
       return (True, "")
     except ImportError:
        return (False, "Python psutil module could not be found")

This `killProcessAndChildrenIsSupported()` function can then called in any place where we currently try to do `import psutil`. This hides the platform specific logic that you are trying to introduce here.

Comment at: llvm/utils/lit/lit/util.py:440
+        from subprocess import call
+        call('kill -kill $(ps -o pid= -L{})'.format(pid), shell=True)
+    else:
This `from` statement seems unnecessary given that we already have `subprocess` imported and we just use `call()` once in this context. I'd rather this was just

subprocess.call('kill -kill $(ps -o pid= -L{})'.format(pid), shell=True)

  rG LLVM Github Monorepo



More information about the lldb-commits mailing list