Skip to content

Commit

Permalink
Update check_tool_requirements.py
Browse files Browse the repository at this point in the history
`distutils` is deprecated and will generate warnings when used.
Replace it with packaging.version instead.

pip3 command line invocation is replaced with importlib.metadata,
which removes dependency on pip3 being present.

Signed-off-by: Gary Guo <[email protected]>
  • Loading branch information
nbdd0121 committed Dec 21, 2023
1 parent 1777f19 commit 8a14773
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
1 change: 1 addition & 0 deletions python-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ git+https://github.com/lowRISC/edalize.git@ot
# Development version with OT-specific changes
git+https://github.com/lowRISC/fusesoc.git@ot

packaging
pyyaml
mako
junit-xml
Expand Down
19 changes: 10 additions & 9 deletions util/check_tool_requirements.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@
# SPDX-License-Identifier: Apache-2.0

import argparse
from distutils.version import StrictVersion
import logging as log
import os
import re
import shlex
import subprocess
import sys
from packaging.version import Version
from importlib.metadata import version

# Display INFO log messages and up.
log.basicConfig(level=log.INFO, format="%(levelname)s: %(message)s")
Expand Down Expand Up @@ -156,7 +157,7 @@ def check(self):
'Failed to convert requirement to semantic version: {}'
.format(err))
try:
min_sv = StrictVersion(min_semver)
min_sv = Version(min_semver)
except ValueError as err:
return (False,
'Bad semver inferred from required version ({}): {}'
Expand All @@ -174,7 +175,7 @@ def check(self):
'Failed to convert installed to semantic version: {}'
.format(err))
try:
actual_sv = StrictVersion(actual_semver)
actual_sv = Version(actual_semver)
except ValueError as err:
return (False,
'Bad semver inferred from installed version ({}): {}'
Expand Down Expand Up @@ -212,7 +213,7 @@ class VeribleToolReq(ToolReq):

def to_semver(self, version, from_req):
# Drop the hash suffix and convert into version string that
# is compatible with StrictVersion in check_version below.
# is compatible with Version in check_version below.
# Example: v0.0-808-g1e17daa -> 0.0.808
m = re.fullmatch(r'v([0-9]+)\.([0-9]+)-([0-9]+)-g[0-9a-f]+$', version)
if m is None:
Expand All @@ -237,7 +238,7 @@ def to_semver(self, version, from_req):
# already. A version always has the "2020.03" (year and month) part,
# and may also have an -SP<n> and/or -<patch> suffix.
#
# Since StrictVersion expects a 3 digit versioning scheme, we multiply
# Since Version expects a 3 digit versioning scheme, we multiply
# any SP number by 100, which should work as long as the patch version
# isn't greater than 99.
#
Expand All @@ -261,11 +262,11 @@ def to_semver(self, version, from_req):

class PyModuleToolReq(ToolReq):
'''A tool in a Python module (its version can be found by running pip)'''
version_regex = re.compile(r'Version: (.*)')

def _get_tool_cmd(self):
return ['pip3', 'show', self.tool]

# For Python modules, use metadata directly instead of call into pip3, which
# may not always be available for some systems.
def get_version(self):
return version(self.tool)

def dict_to_tool_req(path, tool, raw):
'''Parse a dict (as read from Python) as a ToolReq
Expand Down

0 comments on commit 8a14773

Please sign in to comment.