From 853b6d7883e58f7c75cf866e917fb54f514b4a5b Mon Sep 17 00:00:00 2001 From: Matan Breizman Date: Thu, 12 Jan 2023 09:16:00 +0000 Subject: [PATCH] mgr/prometheus: use vendored "packaging" instead * Note: The cherry-pick is altered, the original commit couldn't be cherry-picked as is since we introduced some changes in the organization of the debian dir (ceph-mgr-modules-core.requires doesn't exist yet). All the packages listed in main's ceph-mgr-modules-core.requires are marked as pkg.ceph.check in P/Q debian/control. Therefore, python3-pkg-resources is listed as in debian/control. instead of using the top-level "packaging" module, use the one vendored by setuptools. packaging python module provides versioning defined by PEP-440. but python3-packaging is provided by CentOS8 powertools repo, which is not enabled by default. and in CentOS9, this package is provided by AppStream instead of BaseOS. as prometheus mgr module is included by ceph-mgr-module-core, it would be desirable if our user can install ceph-mgr-module-core without enabling powertools or AppStream repo on a CentOS or its derivative distros. fortunately, setuptools vendors packaging module. and both CentOS8 and CentOS9 provide python3-setuptools in their BaseOS repos. in this change, instead of using "packging" module, we use the venderored one, which is in turn embedded in pkg_resources. this python module is provided by python3-setuptools on CentOS distros, and python3-pkg-resources on Debian and its derivatives the packaging recipes are updated accordingly to reflect the new runtime dependency. Signed-off-by: Kefu Chai (cherry picked from commit cf6089200d96fc56b08ee17a4e31f19823370dc8) Signed-off-by: Matan Breizman --- ceph.spec.in | 1 + debian/control | 1 + src/pybind/mgr/prometheus/module.py | 3 ++- src/pybind/mgr/requirements-required.txt | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ceph.spec.in b/ceph.spec.in index 0a0f4ca1198bc..2b5a4f36151aa 100644 --- a/ceph.spec.in +++ b/ceph.spec.in @@ -651,6 +651,7 @@ Requires: python%{python3_pkgversion}-pecan Requires: python%{python3_pkgversion}-pyOpenSSL Requires: python%{python3_pkgversion}-requests Requires: python%{python3_pkgversion}-dateutil +Requires: python%{python3_pkgversion}-setuptools %if 0%{?fedora} || 0%{?rhel} >= 8 Requires: python%{python3_pkgversion}-cherrypy Requires: python%{python3_pkgversion}-pyyaml diff --git a/debian/control b/debian/control index cbb5ccaa4d850..bc5ac8dd014ae 100644 --- a/debian/control +++ b/debian/control @@ -93,6 +93,7 @@ Build-Depends: automake, tox , python3-coverage , python3-dateutil , + python3-pkg-resources , python3-openssl , python3-prettytable , python3-requests , diff --git a/src/pybind/mgr/prometheus/module.py b/src/pybind/mgr/prometheus/module.py index 9074944f0034a..e127a83568a7d 100644 --- a/src/pybind/mgr/prometheus/module.py +++ b/src/pybind/mgr/prometheus/module.py @@ -1,6 +1,6 @@ import cherrypy from collections import defaultdict -from packaging.version import Version +from pkg_resources import packaging # type: ignore import json import math import os @@ -32,6 +32,7 @@ DEFAULT_PORT = 9283 # ipv6 isn't yet configured / supported and CherryPy throws an uncaught # exception. if cherrypy is not None: + Version = packaging.version.Version v = Version(cherrypy.__version__) # the issue was fixed in 3.2.3. it's present in 3.2.2 (current version on # centos:7) and back to at least 3.0.0. diff --git a/src/pybind/mgr/requirements-required.txt b/src/pybind/mgr/requirements-required.txt index 1c4bbf4710b96..1fad65c626f86 100644 --- a/src/pybind/mgr/requirements-required.txt +++ b/src/pybind/mgr/requirements-required.txt @@ -12,5 +12,6 @@ pytest-cov==2.7.1 pyyaml requests-mock scipy +setuptools werkzeug natsort -- 2.39.5