diff options
| author | Michał Górny <mgorny@gentoo.org> | 2023-03-18 16:19:15 +0100 |
|---|---|---|
| committer | Michał Górny <mgorny@gentoo.org> | 2023-03-21 06:33:50 +0100 |
| commit | f36f134cbeb012ce50449f8089e9a46fa9e03c64 (patch) | |
| tree | 53f98272880b05fd208a0dc6e19046b1699e8e7b /eclass/pypi.eclass | |
| parent | 17774331ffeacba1f7d46e05a100fadad1029f11 (diff) | |
| download | gentoo-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.eclass | 35 |
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 |
