In Python 3 subprocess returns bytes instead of strings. We can convert using bytes.decode, but that's not available in Python 2.5 and there doesn't seem to be a good way to test for it at runtime. Instead use a slight hack of calling subprocess with universal_newlines=True, which causes Py3k subprocess to assume the output is UTF-8 and decode accordingly (this should be fine in these cases since monotone will output a hex string and GCC will just output a version number). On Python 2 it's mostly ignored (especially as we call strip on the result anyway).
In Python 3 subprocess returns bytes instead of strings. We can
convert using bytes.decode, but that's not available in Python 2.5 and
there doesn't seem to be a good way to test for it at runtime. Instead
use a slight hack of calling subprocess with universal_newlines=True,
which causes Py3k subprocess to assume the output is UTF-8 and decode
accordingly (this should be fine in these cases since monotone will
output a hex string and GCC will just output a version number). On
Python 2 it's mostly ignored (especially as we call strip on the
result anyway).

randombit/botan,randombit/botan,Rohde-Schwarz-Cybersecurity/botan,randombit/botan,webmaster128/botan,webmaster128/botan,Rohde-Schwarz-Cybersecurity/botan,randombit/botan,webmaster128/botan,Rohde-Schwarz-Cybersecurity/botan,randombit/botan,Rohde-Schwarz-Cybersecurity/botan,Rohde-Schwarz-Cybersecurity/botan,webmaster128/botan,Rohde-Schwarz-Cybersecurity/botan,webmaster128/botan