summaryrefslogtreecommitdiffstats
path: root/meta/classes-recipe/pypi.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes-recipe/pypi.bbclass')
-rw-r--r--meta/classes-recipe/pypi.bbclass22
1 files changed, 18 insertions, 4 deletions
diff --git a/meta/classes-recipe/pypi.bbclass b/meta/classes-recipe/pypi.bbclass
index c6bbe8119a..eb30004a0f 100644
--- a/meta/classes-recipe/pypi.bbclass
+++ b/meta/classes-recipe/pypi.bbclass
@@ -28,16 +28,30 @@ def pypi_src_uri(d):
28 archive_downloadname = d.getVar('PYPI_ARCHIVE_NAME_PREFIX') + archive_name 28 archive_downloadname = d.getVar('PYPI_ARCHIVE_NAME_PREFIX') + archive_name
29 return 'https://files.pythonhosted.org/packages/source/%s/%s/%s;downloadfilename=%s' % (package[0], package, archive_name, archive_downloadname) 29 return 'https://files.pythonhosted.org/packages/source/%s/%s/%s;downloadfilename=%s' % (package[0], package, archive_name, archive_downloadname)
30 30
31def pypi_normalize(d):
32 """"
33 Normalize the package names to match PEP625 (https://peps.python.org/pep-0625/).
34 For non-compliant packages, maintainers can set UPSTREAM_CHECK_PYPI_PACKAGE to override the normalization
35 """
36 import re
37 return re.sub(r"[-_.]+", "-", d.getVar('PYPI_PACKAGE')).lower()
38
31PYPI_SRC_URI ?= "${@pypi_src_uri(d)}" 39PYPI_SRC_URI ?= "${@pypi_src_uri(d)}"
32 40
33HOMEPAGE ?= "https://pypi.python.org/pypi/${PYPI_PACKAGE}/" 41HOMEPAGE ?= "https://pypi.python.org/pypi/${PYPI_PACKAGE}/"
34SECTION = "devel/python" 42SECTION = "devel/python"
35SRC_URI:prepend = "${PYPI_SRC_URI} " 43SRC_URI:prepend = "${PYPI_SRC_URI} "
36S = "${WORKDIR}/${PYPI_PACKAGE}-${PV}" 44S = "${UNPACKDIR}/${PYPI_PACKAGE}-${PV}"
37 45
38# Replace any '_' characters in the pypi URI with '-'s to follow the PyPi website naming conventions 46# Replace any '_' characters in the pypi URI with '-'s to follow the PyPi website naming conventions
39UPSTREAM_CHECK_PYPI_PACKAGE ?= "${@d.getVar('PYPI_PACKAGE').replace('_', '-')}" 47UPSTREAM_CHECK_PYPI_PACKAGE ?= "${@pypi_normalize(d)}"
40UPSTREAM_CHECK_URI ?= "https://pypi.org/project/${UPSTREAM_CHECK_PYPI_PACKAGE}/" 48
41UPSTREAM_CHECK_REGEX ?= "/${UPSTREAM_CHECK_PYPI_PACKAGE}/(?P<pver>(\d+[\.\-_]*)+)/" 49# Use the simple repository API rather than the potentially unstable project URL
50# More information on the pypi API specification is avaialble here:
51# https://packaging.python.org/en/latest/specifications/simple-repository-api/
52#
53# NOTE: All URLs for the simple API MUST request canonical normalized URLs per the spec
54UPSTREAM_CHECK_URI ?= "https://pypi.org/simple/${@pypi_normalize(d)}"
55UPSTREAM_CHECK_REGEX ?= "${UPSTREAM_CHECK_PYPI_PACKAGE}-(?P<pver>(\d+[\.\-_]*)+).(tar\.gz|tgz|zip|tar\.bz2)"
42 56
43CVE_PRODUCT ?= "python:${PYPI_PACKAGE}" 57CVE_PRODUCT ?= "python:${PYPI_PACKAGE}"