[Buildroot] [PATCH v2 1/2] support/scripts/cve: replace distutils with looseversion
Anton Bengtsson
anton.bengtsson at plejd.com
Fri Sep 12 08:34:31 UTC 2025
The package 'distutils' was removed in Python 3.12[1] and looseversion[2]
appears to be a good drop-in replacement for distutils.version.LooseVersion.
Also added inline script requirements suitable for uv, similar to the one
added for utils/check-package in 6ffcdb52e80b63e68c890aed52ff7f4d00e079b8.
[1] https://docs.python.org/3/library/distutils.html
[2] https://pypi.org/project/looseversion
Signed-off-by: Anton Bengtsson <anton.bengtsson at plejd.com>
---
Changes v1 -> v2:
- Added inline scripts requirements for uv (suggested by Arnout)
- Added python3-looseversion to support/docker/Dockerfile (suggested by Arnout)
Signed-off-by: Anton Bengtsson <anton.bengtsson at plejd.com>
---
support/scripts/cve.py | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/support/scripts/cve.py b/support/scripts/cve.py
index ba41762fa0..524f08f48f 100755
--- a/support/scripts/cve.py
+++ b/support/scripts/cve.py
@@ -16,14 +16,20 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# /// script
+# dependencies = [
+# "looseversion==1.3.0",
+# ]
+# ///
import datetime
import os
-import distutils.version
import json
import subprocess
import sys
import operator
+from looseversion import LooseVersion
sys.path.append('utils/')
@@ -190,7 +196,7 @@ class CVE:
by this CVE.
"""
- pkg_version = distutils.version.LooseVersion(version)
+ pkg_version = LooseVersion(version)
if not hasattr(pkg_version, "version"):
print("Cannot parse package '%s' version '%s'" % (name, version))
pkg_version = None
@@ -202,7 +208,7 @@ class CVE:
# version, as they might be different due to
# <pkg>_CPE_ID_VERSION
else:
- pkg_version = distutils.version.LooseVersion(cpe_version(cpeid))
+ pkg_version = LooseVersion(cpe_version(cpeid))
for cpe in self.each_cpe():
if not cpe_matches(cpe['id'], cpeid):
@@ -214,7 +220,7 @@ class CVE:
if cpe['v_start']:
try:
- cve_affected_version = distutils.version.LooseVersion(cpe['v_start'])
+ cve_affected_version = LooseVersion(cpe['v_start'])
inrange = ops.get(cpe['op_start'])(pkg_version, cve_affected_version)
except TypeError:
return self.CVE_UNKNOWN
@@ -226,7 +232,7 @@ class CVE:
if cpe['v_end']:
try:
- cve_affected_version = distutils.version.LooseVersion(cpe['v_end'])
+ cve_affected_version = LooseVersion(cpe['v_end'])
inrange = ops.get(cpe['op_end'])(pkg_version, cve_affected_version)
except TypeError:
return self.CVE_UNKNOWN
--
2.51.0
More information about the buildroot
mailing list