make build-many-glibcs.py work on python3.2
Commit Message
I used this patch to run the new build script with python3.2, it may be worth
adding this hack if python3.5 is not widespread (might work with older python,
i haven't tested that).
2016-11-22 Szabolcs Nagy <szabolcs.nagy@arm.com>
* scripts/build-many-glibcs.py (os.cpu_count): Add compatibility definition.
(re.fullmatch, subprocess.run): Likewise.
Comments
On Tue, 22 Nov 2016, Szabolcs Nagy wrote:
> +try:
> + os.cpu_count
> +except:
> + os.cpu_count = lambda: 1
multiprocessing.cpu_count may be a better fallback.
> +try:
> + re.fullmatch
> +except:
> + re.fullmatch = lambda p,s,f=0: re.match("^"+p+"$",s,f)
You don't need the ^ since match means match at the start of the string.
And \Z corresponds more accurately to fullmatch semantics than $.
(I think the principle of including such compatibility code is fine if
people want to use the script with older Python 3.x. I don't have
anything older than 3.4 (the version on Ubuntu 14.04) to hand for testing
such compatibility code myself.)
@@ -40,6 +40,42 @@ import subprocess
import sys
import urllib.request
+try:
+ os.cpu_count
+except:
+ os.cpu_count = lambda: 1
+
+try:
+ re.fullmatch
+except:
+ re.fullmatch = lambda p,s,f=0: re.match("^"+p+"$",s,f)
+
+try:
+ subprocess.run
+except:
+ class _CompletedProcess:
+ def __init__(self, args, returncode, stdout=None, stderr=None):
+ self.args = args
+ self.returncode = returncode
+ self.stdout = stdout
+ self.stderr = stderr
+
+ def _run(*popenargs, input=None, timeout=None, check=False, **kwargs):
+ assert(timeout is None)
+ with subprocess.Popen(*popenargs, **kwargs) as process:
+ try:
+ stdout, stderr = process.communicate(input)
+ except:
+ process.kill()
+ process.wait()
+ raise
+ returncode = process.poll()
+ if check and returncode:
+ raise subprocess.CalledProcessError(returncode, popenargs)
+ return _CompletedProcess(popenargs, returncode, stdout, stderr)
+
+ subprocess.run = _run
+
class Context(object):
"""The global state associated with builds in a given directory."""