summaryrefslogtreecommitdiff
path: root/eclass/pypi.eclass
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-06-15 19:39:10 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-06-15 19:39:10 +0100
commit3ba87279363a3a099c83d72faaf5b6bee1b23304 (patch)
tree7d4e3f6da46124be1284b7e40bb66a42b77eb846 /eclass/pypi.eclass
parentdb70871b2044b9bfde346d6f4027dafb0a013c4c (diff)
gentoo auto-resync : 15:06:2023 - 19:39:09
Diffstat (limited to 'eclass/pypi.eclass')
-rw-r--r--eclass/pypi.eclass128
1 files changed, 90 insertions, 38 deletions
diff --git a/eclass/pypi.eclass b/eclass/pypi.eclass
index 13dd56fa4fec..8a842c450ebc 100644
--- a/eclass/pypi.eclass
+++ b/eclass/pypi.eclass
@@ -63,6 +63,24 @@ _PYPI_ECLASS=1
# @CODE
: "${PYPI_PN:=${PN}}"
+# @FUNCTION: _pypi_normalize_name
+# @INTERNAL
+# @USAGE: <name>
+# @DESCRIPTION:
+# Internal normalization function, returns the result
+# via _PYPI_NORMALIZED_NAME variable.
+_pypi_normalize_name() {
+ local name=${1}
+ if shopt -p -q extglob; then
+ name=${name//+([._-])/_}
+ else
+ shopt -s extglob
+ name=${name//+([._-])/_}
+ shopt -u extglob
+ fi
+ _PYPI_NORMALIZED_NAME="${name,,}"
+}
+
# @FUNCTION: pypi_normalize_name
# @USAGE: <name>
# @DESCRIPTION:
@@ -75,12 +93,22 @@ _PYPI_ECLASS=1
pypi_normalize_name() {
[[ ${#} -ne 1 ]] && die "Usage: ${FUNCNAME} <name>"
- local name=${1}
- local shopt_save=$(shopt -p extglob)
- shopt -s extglob
- name=${name//+([._-])/_}
- ${shopt_save}
- echo "${name,,}"
+ local _PYPI_NORMALIZED_NAME
+ _pypi_normalize_name "${@}"
+ echo "${_PYPI_NORMALIZED_NAME}"
+}
+
+# @FUNCTION: _pypi_translate_version
+# @USAGE: <version>
+# @DESCRIPTION:
+# Internal version translation function, returns the result
+# via _PYPI_TRANSLATED_VERSION variable.
+_pypi_translate_version() {
+ local version=${1}
+ version=${version/_alpha/a}
+ version=${version/_beta/b}
+ version=${version/_rc/rc}
+ _PYPI_TRANSLATED_VERSION=${version/_p/.post}
}
# @FUNCTION: pypi_translate_version
@@ -94,12 +122,34 @@ pypi_normalize_name() {
pypi_translate_version() {
[[ ${#} -ne 1 ]] && die "Usage: ${FUNCNAME} <version>"
- local version=${1}
- version=${version/_alpha/a}
- version=${version/_beta/b}
- version=${version/_rc/rc}
- version=${version/_p/.post}
- echo "${version}"
+ local _PYPI_TRANSLATED_VERSION
+ _pypi_translate_version "${@}"
+ echo "${_PYPI_TRANSLATED_VERSION}"
+}
+
+# @FUNCTION: _pypi_sdist_url
+# @INTERNAL
+# @USAGE: [--no-normalize] [<project> [<version> [<suffix>]]]
+# @DESCRIPTION:
+# Internal sdist generated, returns the result via _PYPI_SDIST_URL
+# variable.
+_pypi_sdist_url() {
+ local normalize=1
+ if [[ ${1} == --no-normalize ]]; then
+ normalize=
+ shift
+ fi
+
+ if [[ ${#} -gt 3 ]]; then
+ die "Usage: ${FUNCNAME} [--no-normalize] <project> [<version> [<suffix>]]"
+ fi
+
+ local project=${1-"${PYPI_PN}"}
+ local version=${2-"$(pypi_translate_version "${PV}")"}
+ local suffix=${3-.tar.gz}
+ local _PYPI_NORMALIZED_NAME=${project}
+ [[ ${normalize} ]] && _pypi_normalize_name "${_PYPI_NORMALIZED_NAME}"
+ _PYPI_SDIST_URL="https://files.pythonhosted.org/packages/source/${project::1}/${project}/${_PYPI_NORMALIZED_NAME}-${version}${suffix}"
}
# @FUNCTION: pypi_sdist_url
@@ -124,23 +174,9 @@ pypi_translate_version() {
# If <format> is unspecified, it defaults to ".tar.gz". Another valid
# value is ".zip" (please remember to add a BDEPEND on app-arch/unzip).
pypi_sdist_url() {
- local normalize=1
- if [[ ${1} == --no-normalize ]]; then
- normalize=
- shift
- fi
-
- if [[ ${#} -gt 3 ]]; then
- die "Usage: ${FUNCNAME} [--no-normalize] <project> [<version> [<suffix>]]"
- fi
-
- local project=${1-"${PYPI_PN}"}
- local version=${2-"$(pypi_translate_version "${PV}")"}
- local suffix=${3-.tar.gz}
- local fn_project=${project}
- [[ ${normalize} ]] && fn_project=$(pypi_normalize_name "${project}")
- printf "https://files.pythonhosted.org/packages/source/%s" \
- "${project::1}/${project}/${fn_project}-${version}${suffix}"
+ local _PYPI_SDIST_URL
+ _pypi_sdist_url "${@}"
+ echo "${_PYPI_SDIST_URL}"
}
# @FUNCTION: pypi_wheel_name
@@ -167,11 +203,12 @@ pypi_wheel_name() {
die "Usage: ${FUNCNAME} <project> [<version> [<python-tag> [<abi-platform-tag>]]]"
fi
- local project=$(pypi_normalize_name "${1-"${PYPI_PN}"}")
+ local _PYPI_NORMALIZED_NAME
+ _pypi_normalize_name "${1:-"${PYPI_PN}"}"
local version=${2-"$(pypi_translate_version "${PV}")"}
local pytag=${3-py3}
local abitag=${4-none-any}
- echo "${project}-${version}-${pytag}-${abitag}.whl"
+ echo "${_PYPI_NORMALIZED_NAME}-${version}-${pytag}-${abitag}.whl"
}
# @FUNCTION: pypi_wheel_url
@@ -221,12 +258,27 @@ pypi_wheel_url() {
fi
}
-if [[ ${PYPI_NO_NORMALIZE} ]]; then
- SRC_URI="$(pypi_sdist_url --no-normalize)"
- S="${WORKDIR}/${PYPI_PN}-$(pypi_translate_version "${PV}")"
-else
- SRC_URI="$(pypi_sdist_url)"
- S="${WORKDIR}/$(pypi_normalize_name "${PYPI_PN}")-$(pypi_translate_version "${PV}")"
-fi
+# @FUNCTION: _pypi_set_globals
+# @INTERNAL
+# @DESCRIPTION:
+# Set global variables, SRC_URI and S.
+_pypi_set_globals() {
+ local _PYPI_SDIST_URL _PYPI_TRANSLATED_VERSION
+ _pypi_translate_version "${PV}"
+
+ if [[ ${PYPI_NO_NORMALIZE} ]]; then
+ _pypi_sdist_url --no-normalize "${PYPI_PN}" "${_PYPI_TRANSLATED_VERSION}"
+ S="${WORKDIR}/${PYPI_PN}-${_PYPI_TRANSLATED_VERSION}"
+ else
+ local _PYPI_NORMALIZED_NAME
+ _pypi_normalize_name "${PYPI_PN}"
+ _pypi_sdist_url "${PYPI_PN}" "${_PYPI_TRANSLATED_VERSION}"
+ S="${WORKDIR}/${_PYPI_NORMALIZED_NAME}-${_PYPI_TRANSLATED_VERSION}"
+ fi
+
+ SRC_URI=${_PYPI_SDIST_URL}
+}
+
+_pypi_set_globals
fi