diff options
author | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2017-01-10 16:31:19 -0200 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2017-01-11 10:30:40 -0200 |
commit | 64235ccc11175e6d4186a8fa911816cd7674d453 (patch) | |
tree | ac5e842ff4a67c0ad20228c2e6488d2c793f9ece | |
parent | 77847b5cc352c04b7d8d8b84c7dd5e7091c1aaec (diff) | |
download | glibc-64235ccc11175e6d4186a8fa911816cd7674d453.tar glibc-64235ccc11175e6d4186a8fa911816cd7674d453.tar.gz glibc-64235ccc11175e6d4186a8fa911816cd7674d453.tar.bz2 glibc-64235ccc11175e6d4186a8fa911816cd7674d453.zip |
Make build-many-glibcs.py work on python3.2
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).
This patch make build-many-glibcs.py work with python 3.2 by
adding fallback implementation to python 3.5 facilities if they
are not present.
Checked building a x86_64-linux-gnu toolchain with python 3.2.
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.
-rw-r--r-- | ChangeLog | 5 | ||||
-rwxr-xr-x | scripts/build-many-glibcs.py | 37 |
2 files changed, 42 insertions, 0 deletions
@@ -1,3 +1,8 @@ +2017-01-11 Szabolcs Nagy <szabolcs.nagy@arm.com> + + * scripts/build-many-glibcs.py (os.cpu_count): Add compatibility definition. + (re.fullmatch, subprocess.run): Likewise. + 2016-01-11 Siddhesh Poyarekar <siddhesh@sourceware.org> * po/libc.pot: Regenerate. diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py index 60a7874875..d27e70b8bd 100755 --- a/scripts/build-many-glibcs.py +++ b/scripts/build-many-glibcs.py @@ -49,6 +49,43 @@ import sys import time import urllib.request +try: + os.cpu_count +except: + import multiprocessing + os.cpu_count = lambda: multiprocessing.cpu_count() + +try: + re.fullmatch +except: + re.fullmatch = lambda p,s,f=0: re.match(p+"\\Z",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.""" |