mojo_run: make the port-in-use message helpful on Mac.

Fixes domokit/devtools#31.

R=tonyg@chromium.org

Review URL: https://codereview.chromium.org/1392263003 .

Cr-Mirrored-From: https://github.com/domokit/mojo
Cr-Mirrored-Commit: 6658bb77764ef3ab7ca86002d7051d7aa982a973
diff --git a/devtoolslib/http_server.py b/devtoolslib/http_server.py
index 92aa8e6..2de71e1 100644
--- a/devtoolslib/http_server.py
+++ b/devtoolslib/http_server.py
@@ -12,6 +12,7 @@
 import os.path
 import socket
 import subprocess
+import sys
 import tempfile
 import threading
 
@@ -237,8 +238,16 @@
     print 'Failed to start http server for %s on port %d: %s.' % (
         str(mappings), host_port, os.strerror(error_code))
     if error_code == errno.EADDRINUSE:
-      print ('  Run `fuser %d/tcp` to find out which process is using the port;'
-             % host_port)
-      print ('  or `fuser -k %d/tcp` terminate it.' % host_port)
+      if sys.platform == 'darwin':
+        find_cmd = 'lsof -i :%d' % host_port
+        terminate_cmd = (
+            'lsof -i :%d | grep LISTEN | awk \'{print $2}\' | xargs kill -9'
+            % host_port)
+      else:
+        find_cmd = 'fuser %d/tcp' % host_port
+        terminate_cmd = 'fuser -k %d/tcp' % host_port
+      print ('  Run `%s` to find out which process is using the port;'
+             % find_cmd)
+      print ('  or `%s` terminate it.' % terminate_cmd)
     print '---'
     raise