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