diff --git a/src/python/pants/bin/BUILD b/src/python/pants/bin/BUILD index d4aafe033cdf..a94cfcd5dbd2 100644 --- a/src/python/pants/bin/BUILD +++ b/src/python/pants/bin/BUILD @@ -4,6 +4,7 @@ python_library( dependencies=[ '3rdparty/python/twitter/commons:twitter.common.collections', + '3rdparty/python:future', '3rdparty/python:setproctitle', 'src/python/pants/backend/jvm/tasks:nailgun_task', 'src/python/pants/base:build_environment', diff --git a/src/python/pants/bin/daemon_pants_runner.py b/src/python/pants/bin/daemon_pants_runner.py index a507891ed8da..effd21f3d2b8 100644 --- a/src/python/pants/bin/daemon_pants_runner.py +++ b/src/python/pants/bin/daemon_pants_runner.py @@ -10,6 +10,7 @@ import sys import termios import time +from builtins import str, zip from contextlib import contextmanager from setproctitle import setproctitle as set_process_title @@ -285,7 +286,8 @@ def post_fork_child(self): # Broadcast our process group ID (in PID form - i.e. negated) to the remote client so # they can send signals (e.g. SIGINT) to all processes in the runners process group. - NailgunProtocol.send_pid(self._socket, bytes(os.getpgrp() * -1)) + pid = str(os.getpgrp() * -1).encode('ascii') + NailgunProtocol.send_pid(self._socket, pid) # Invoke a Pants run with stdio redirected and a proxied environment. with self.nailgunned_stdio(self._socket, self._env) as finalizer,\ diff --git a/src/python/pants/bin/goal_runner.py b/src/python/pants/bin/goal_runner.py index 5ab241e812f2..3a389fd65877 100644 --- a/src/python/pants/bin/goal_runner.py +++ b/src/python/pants/bin/goal_runner.py @@ -6,6 +6,7 @@ import logging import sys +from builtins import object from pants.base.cmd_line_spec_parser import CmdLineSpecParser from pants.base.workunit import WorkUnit, WorkUnitLabel diff --git a/src/python/pants/bin/local_pants_runner.py b/src/python/pants/bin/local_pants_runner.py index eb693a251b83..ce4283b2ca18 100644 --- a/src/python/pants/bin/local_pants_runner.py +++ b/src/python/pants/bin/local_pants_runner.py @@ -5,6 +5,7 @@ from __future__ import absolute_import, division, print_function, unicode_literals import logging +from builtins import object from pants.base.build_environment import get_buildroot from pants.bin.goal_runner import GoalRunner diff --git a/src/python/pants/bin/pants_loader.py b/src/python/pants/bin/pants_loader.py index cb480a4291d0..26403736cb95 100644 --- a/src/python/pants/bin/pants_loader.py +++ b/src/python/pants/bin/pants_loader.py @@ -8,6 +8,7 @@ import locale import os import warnings +from builtins import object class PantsLoader(object): diff --git a/src/python/pants/bin/pants_runner.py b/src/python/pants/bin/pants_runner.py index 33ef40f9d9b1..c9daf098ad39 100644 --- a/src/python/pants/bin/pants_runner.py +++ b/src/python/pants/bin/pants_runner.py @@ -7,6 +7,7 @@ import logging import os import sys +from builtins import object from pants.bin.remote_pants_runner import RemotePantsRunner from pants.option.options_bootstrapper import OptionsBootstrapper diff --git a/src/python/pants/bin/remote_pants_runner.py b/src/python/pants/bin/remote_pants_runner.py index eac98eb4e82b..1a7f190385b5 100644 --- a/src/python/pants/bin/remote_pants_runner.py +++ b/src/python/pants/bin/remote_pants_runner.py @@ -8,8 +8,11 @@ import signal import sys import time +from builtins import object, str from contextlib import contextmanager +from future.utils import raise_with_traceback + from pants.console.stty_utils import STTYSettings from pants.java.nailgun_client import NailgunClient from pants.java.nailgun_protocol import NailgunProtocol @@ -122,9 +125,10 @@ def _run_pants_with_retry(self, port, retries=3): # Ensure a newline. logger.fatal('') logger.fatal('lost active connection to pantsd!') - raise self.Terminated, ( + raise_with_traceback( + self.Terminated, 'abruptly lost active connection to pantsd runner: {!r}'.format(e) - ), e.traceback + ) def _connect_and_execute(self, port): # Merge the nailgun TTY capability environment variables with the passed environment dict. diff --git a/src/python/pants/java/nailgun_protocol.py b/src/python/pants/java/nailgun_protocol.py index 2220e82c145b..3ad96e32a124 100644 --- a/src/python/pants/java/nailgun_protocol.py +++ b/src/python/pants/java/nailgun_protocol.py @@ -6,7 +6,7 @@ import os import struct -from builtins import object, str, zip +from builtins import bytes, object, str, zip import six from future.utils import binary_type @@ -87,7 +87,10 @@ class TruncatedPayloadError(TruncatedRead): @classmethod def _decode_unicode_seq(cls, seq): for item in seq: - yield item.decode('utf-8') + if isinstance(item, bytes): + yield item.decode('utf-8') + else: + yield item @classmethod def send_request(cls, sock, working_dir, command, *arguments, **environment):