aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2024-01-31 15:46:23 -0800
committerFangrui Song <maskray@google.com>2024-01-31 15:46:23 -0800
commit0d70accc06a9cbb9b13004116f5fa8b1f41a7150 (patch)
tree0dec3ae61ea57a3664396c09f0c71e23c0d1c310 /scripts
parentda89496337b97e6a2aaf1e81d55cf998f6db1070 (diff)
downloadglibc-0d70accc06a9cbb9b13004116f5fa8b1f41a7150.tar
glibc-0d70accc06a9cbb9b13004116f5fa8b1f41a7150.tar.gz
glibc-0d70accc06a9cbb9b13004116f5fa8b1f41a7150.tar.bz2
glibc-0d70accc06a9cbb9b13004116f5fa8b1f41a7150.zip
build-many-glibcs: relax version check to allow non-digit characters
A version string may contain non-digit characters, commonly found in built-from-VCS tools, e.g. ``` git version 2.39.GIT git version 2.43.0.493.gbc7ee2e5e1 ``` `int()` will raise a ValueError, leading to a spurious 'missing'. Reviewed-by: DJ Delorie <dj@redhat.com>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/build-many-glibcs.py16
1 files changed, 7 insertions, 9 deletions
diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
index 784c80d132..84418e8de1 100755
--- a/scripts/build-many-glibcs.py
+++ b/scripts/build-many-glibcs.py
@@ -1888,7 +1888,7 @@ def get_parser():
return parser
-def get_version_common(progname,line,word,delchars,arg1):
+def get_version_common(progname,line,word,arg1):
try:
out = subprocess.run([progname, arg1],
stdout=subprocess.PIPE,
@@ -1896,13 +1896,12 @@ def get_version_common(progname,line,word,delchars,arg1):
stdin=subprocess.DEVNULL,
check=True, universal_newlines=True)
v = out.stdout.splitlines()[line].split()[word]
- if delchars:
- v = v.replace(delchars,'')
+ v = re.match(r'[0-9]+(.[0-9]+)*', v).group()
return [int(x) for x in v.split('.')]
except:
return 'missing';
-def get_version_common_stderr(progname,line,word,delchars,arg1):
+def get_version_common_stderr(progname,line,word,arg1):
try:
out = subprocess.run([progname, arg1],
stdout=subprocess.DEVNULL,
@@ -1910,20 +1909,19 @@ def get_version_common_stderr(progname,line,word,delchars,arg1):
stdin=subprocess.DEVNULL,
check=True, universal_newlines=True)
v = out.stderr.splitlines()[line].split()[word]
- if delchars:
- v = v.replace(delchars,'')
+ v = re.match(r'[0-9]+(.[0-9]+)*', v).group()
return [int(x) for x in v.split('.')]
except:
return 'missing';
def get_version(progname):
- return get_version_common (progname, 0, -1, None, '--version');
+ return get_version_common(progname, 0, -1, '--version');
def get_version_awk(progname):
- return get_version_common (progname, 0, 2, ',', '--version');
+ return get_version_common(progname, 0, 2, '--version');
def get_version_bzip2(progname):
- return get_version_common_stderr (progname, 0, 6, ',', '-h');
+ return get_version_common_stderr(progname, 0, 6, '-h');
def check_version(ver, req):
for v, r in zip(ver, req):