From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7814) id AE4ED3858297; Wed, 31 Jan 2024 23:46:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AE4ED3858297 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1706744784; bh=HzSYOmUtT2apsQOgxiQaa60j/p56NU0wd3ves7SKAw0=; h=From:To:Subject:Date:From; b=QYSBx3pN1bl4wZkM/j6x9aHrKS9rpTiLcmv8hcGl6D8B7gyejYGqXG7x6DFBeGSeP W1cmj0D0brGd6LyhR+XpmOc8FKwdOXg051j4ymcRC/fBTEL74PzGcv/Ub5b9aEDUa5 nQfcnnyvsw4vbeZo/iLJcB3ryb+ziep+DQvT3kYg= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Fangrui Song To: glibc-cvs@sourceware.org Subject: [glibc] build-many-glibcs: relax version check to allow non-digit characters X-Act-Checkin: glibc X-Git-Author: Fangrui Song X-Git-Refname: refs/heads/master X-Git-Oldrev: da89496337b97e6a2aaf1e81d55cf998f6db1070 X-Git-Newrev: 0d70accc06a9cbb9b13004116f5fa8b1f41a7150 Message-Id: <20240131234624.AE4ED3858297@sourceware.org> Date: Wed, 31 Jan 2024 23:46:24 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0d70accc06a9cbb9b13004116f5fa8b1f41a7150 commit 0d70accc06a9cbb9b13004116f5fa8b1f41a7150 Author: Fangrui Song Date: Wed Jan 31 15:46:23 2024 -0800 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 Diff: --- scripts/build-many-glibcs.py | 16 +++++++--------- 1 file 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):