aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2017-01-10 16:31:19 -0200
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2017-01-11 10:30:40 -0200
commit64235ccc11175e6d4186a8fa911816cd7674d453 (patch)
treeac5e842ff4a67c0ad20228c2e6488d2c793f9ece
parent77847b5cc352c04b7d8d8b84c7dd5e7091c1aaec (diff)
downloadglibc-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--ChangeLog5
-rwxr-xr-xscripts/build-many-glibcs.py37
2 files changed, 42 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index e1cb0378f6..4f87985cdb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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."""