Fixes include
- Setting cloexec flag on pipe files, using set_inheritable on sockets,
and close_fds=False on subprocess.Popen to work around file
descriptors not being inheritable by default in new versions of python
- Adding mitogen.exit_status variable and avoiding os.kill call so fake
'ssh' script is able to exit cleanly with correct status code
- Fixing broken os.dup call in ExternalContext._setup_master when input
and output streams have the same descriptor
- Updating fakessh module to do necessary python3 string/byte
conversions, and use updated mitogen Protocol, Stream, and Router apis
- Simplifying fakessh startup sequence so there aren't unnecessary
differences between ways control and data handles are passed, and ways
master and slave processes are initialized
- Fixing shutdown race conditions where subprocess exit handling or
stdin EOF handling could result in a truncated stdout stream
- Updating and adding a lot of docstrings and comments
- Adding Process.proc is None / is not None assertions to be clear about
which parts of fakessh.Process code are specific to the slave process,
and which parts are specific to the master process.
- Re-enabling unit test case and updating an outdated file path so it
passes
This reapplies an earlier change, when this plugin was first introduced to
Mitogen. The plugin was updated to fix
[DEPRECATION WARNING]: The '_remote_checksum()' method is deprecated.
I've elected to short-circuit the if statemtn logic, rather than
deleting/unindenting, to make the code delta much smaller. This should make it
easier to maintain/update.
Fixes#915
Attempt to fix
Collecting hdrhistogram==0.6.1 (from -r tests/ansible/requirements.txt
(line 2))
Downloading
2422ad2ad90047d3b9f73061e8696f/hdrhistogram-0.6.1.tar.gz
(61kB)
Complete output from command python setup.py egg_info:
Couldn't find index page for 'pbr' (maybe misspelled?)
sources=['src/python-codec.c'])]
File "/usr/lib/python3.5/distutils/core.py", line 108, in setup
_setup_distribution = dist = klass(attrs)
File "/tmp/venv/lib/python3.5/site-packages/setuptools/dist.py",
line 315, in __init__
self.fetch_build_eggs(attrs['setup_requires'])
File "/tmp/venv/lib/python3.5/site-packages/setuptools/dist.py",
line 361, in fetch_build_eggs
replace_conflicting=True,
File
"/tmp/venv/lib/python3.5/site-packages/pkg_resources/__init__.py", line
850, in resolve
dist = best[req.key] = env.best_match(req, ws, installer)
File
"/tmp/venv/lib/python3.5/site-packages/pkg_resources/__init__.py", line
1122, in best_match
return self.obtain(req, installer)
File
"/tmp/venv/lib/python3.5/site-packages/pkg_resources/__init__.py", line
1134, in obtain
return installer(requirement)
File "/tmp/venv/lib/python3.5/site-packages/setuptools/dist.py",
line 429, in fetch_build_egg
return cmd.easy_install(req)
File
"/tmp/venv/lib/python3.5/site-packages/setuptools/command/easy_install.py",
line 659, in easy_install
raise DistutilsError(msg)
distutils.errors.DistutilsError: Could not find suitable
distribution for Requirement.parse('pbr')
From cpuset(7):
> For masks longer than one word, a comma separator is used between
> words. Words are displayed in big-endian order, which has the most
> significant bit first. The hex digits within a word are also in
> big-endian order.