summaryrefslogtreecommitdiff
path: root/eclass/pypi.eclass
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2023-03-18 16:19:15 +0100
committerMichał Górny <mgorny@gentoo.org>2023-03-21 06:33:50 +0100
commitf36f134cbeb012ce50449f8089e9a46fa9e03c64 (patch)
tree53f98272880b05fd208a0dc6e19046b1699e8e7b /eclass/pypi.eclass
parent17774331ffeacba1f7d46e05a100fadad1029f11 (diff)
downloadgentoo-f36f134cbeb012ce50449f8089e9a46fa9e03c64.tar.gz
gentoo-f36f134cbeb012ce50449f8089e9a46fa9e03c64.tar.bz2
gentoo-f36f134cbeb012ce50449f8089e9a46fa9e03c64.zip
pypi.eclass: Introduce PYPI_PN to override the default project name
Introduce a convenience PYPI_PN variable that can be used to override the default project name. This is meant to be used primarily when upstream project name does not conform to Gentoo package naming rules, e.g. contains dots or uppercase letters. For example, instead of: SRC_URI="$(pypi_sdist_url --no-normalize "${PN/-/.}")" S=${WORKDIR}/${P/-/.} one can now specify: PYPI_NO_NORMALIZE=1 PYPI_PN=${PN/-/.} For PEP 625-conformant packages, instead of: SRC_URI="$(pypi_sdist_url "${PN/-/.}")" one can use: PYPI_PN=${PN/-/.} There's not much gain space-wise but it avoids having to specify the name twice. This can particularly be helpful for package names using PascalCase. Closes: https://github.com/gentoo/gentoo/pull/30210 Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'eclass/pypi.eclass')
-rw-r--r--eclass/pypi.eclass35
1 files changed, 24 insertions, 11 deletions
diff --git a/eclass/pypi.eclass b/eclass/pypi.eclass
index 79007a2ad0ed..ca3b6f67803d 100644
--- a/eclass/pypi.eclass
+++ b/eclass/pypi.eclass
@@ -50,6 +50,19 @@ _PYPI_ECLASS=1
# When set to a non-empty value, disables project name normalization
# for the default SRC_URI and S values.
+# @ECLASS_VARIABLE: PYPI_PN
+# @PRE_INHERIT
+# @DESCRIPTION:
+# The PyPI project name. This should be overriden scarcely, generally
+# when upstream project name does not conform to Gentoo naming rules,
+# e.g. when it contains dots or uppercase letters.
+#
+# Example use:
+# @CODE
+# PYPI_PN=${PN/-/.}
+# @CODE
+: ${PYPI_PN:=${PN}}
+
# @FUNCTION: pypi_normalize_name
# @USAGE: <name>
# @DESCRIPTION:
@@ -99,9 +112,9 @@ pypi_translate_version() {
# generated using build systems that did not follow PEP 625
# (i.e. the sdist name contains uppercase letters, hyphens or dots).
#
-# If <package> is unspecified, it defaults to ${PN}. The package name
-# is normalized according to the specification unless `--no-normalize`
-# is passed.
+# If <package> is unspecified, it defaults to ${PYPI_PN}. The package
+# name is normalized according to the specification unless
+# `--no-normalize` is passed.
#
# If <version> is unspecified, it defaults to ${PV} translated
# via pypi_translate_version. If it is specified, then it is used
@@ -121,7 +134,7 @@ pypi_sdist_url() {
die "Usage: ${FUNCNAME} [--no-normalize] <project> [<version> [<suffix>]]"
fi
- local project=${1-"${PN}"}
+ local project=${1-"${PYPI_PN}"}
local version=${2-"$(pypi_translate_version "${PV}")"}
local suffix=${3-.tar.gz}
local fn_project=${project}
@@ -135,8 +148,8 @@ pypi_sdist_url() {
# @DESCRIPTION:
# Output the wheel filename for the specified project/version tuple.
#
-# If <package> is unspecified, it defaults to ${PN}. The package name
-# is normalized according to the wheel specification.
+# If <package> is unspecified, it defaults to ${PYPI_PN}. The package
+# name is normalized according to the wheel specification.
#
# If <version> is unspecified, it defaults to ${PV} translated
# via pypi_translate_version. If it is specified, then it is used
@@ -154,7 +167,7 @@ pypi_wheel_name() {
die "Usage: ${FUNCNAME} <project> [<version> [<python-tag> [<abi-platform-tag>]]]"
fi
- local project=$(pypi_normalize_name "${1-"${PN}"}")
+ local project=$(pypi_normalize_name "${1-"${PYPI_PN}"}")
local version=${2-"$(pypi_translate_version "${PV}")"}
local pytag=${3-py3}
local abitag=${4-none-any}
@@ -172,7 +185,7 @@ pypi_wheel_name() {
# the wheel contents will be unpacked straight into ${WORKDIR}.
# You need to add a BDEPEND on app-arch/unzip.
#
-# If <package> is unspecified, it defaults to ${PN}.
+# If <package> is unspecified, it defaults to ${PYPI_PN}.
#
# If <version> is unspecified, it defaults to ${PV} translated
# via pypi_translate_version. If it is specified, then it is used
@@ -197,7 +210,7 @@ pypi_wheel_url() {
fi
local filename=$(pypi_wheel_name "${@}")
- local project=${1-"${PN}"}
+ local project=${1-"${PYPI_PN}"}
local version=${2-"$(pypi_translate_version "${PV}")"}
local pytag=${3-py3}
printf "https://files.pythonhosted.org/packages/%s" \
@@ -210,10 +223,10 @@ pypi_wheel_url() {
if [[ ${PYPI_NO_NORMALIZE} ]]; then
SRC_URI="$(pypi_sdist_url --no-normalize)"
- S="${WORKDIR}/${PN}-$(pypi_translate_version "${PV}")"
+ S="${WORKDIR}/${PYPI_PN}-$(pypi_translate_version "${PV}")"
else
SRC_URI="$(pypi_sdist_url)"
- S="${WORKDIR}/$(pypi_normalize_name "${PN}")-$(pypi_translate_version "${PV}")"
+ S="${WORKDIR}/$(pypi_normalize_name "${PYPI_PN}")-$(pypi_translate_version "${PV}")"
fi
fi