hghave: add a check for docker support
This currently refuses to operate if on a non-Linux host. I suspect
that Docker running on FreeBSD 11 or on an Illumos derivative would
work fine, but I don't have ready access to such a system.
On OS X using boot2docker (I used a hacky xhyve-based one for
testing), it won't work because $TESTTEMP doesn't end up inside the
set of directories that get forwarded to the boot2docker VM, so you
can't actually drop debs in the $TESTTEMP at all. It would be possible
(probably even trivial) to hack around this by using a randomly-named
temporary directory inside the working directory, but that seems
unlikely to be useful enough to justify the ugliness.
--- a/tests/hghave.py Tue Aug 25 00:03:15 2015 -0400
+++ b/tests/hghave.py Tue Aug 25 00:06:41 2015 -0400
@@ -414,6 +414,23 @@
def has_osx():
return sys.platform == 'darwin'
+@check("docker", "docker support")
+def has_docker():
+ pat = r'A self-sufficient runtime for linux containers\.'
+ if matchoutput('docker --help', pat):
+ if 'linux' not in sys.platform:
+ # TODO: in theory we should be able to test docker-based
+ # package creation on non-linux using boot2docker, but in
+ # practice that requires extra coordination to make sure
+ # $TESTTEMP is going to be visible at the same path to the
+ # boot2docker VM. If we figure out how to verify that, we
+ # can use the following instead of just saying False:
+ # return 'DOCKER_HOST' in os.environ
+ return False
+
+ return True
+ return False
+
@check("debhelper", "debian packaging tools")
def has_debhelper():
dpkg = matchoutput('dpkg --version',