Rename SUPPORT_PYTHON_ABIS to PYTHON_MULTIPLE_ABIS and RESTRICT_PYTHON_ABIS to PYTHON_RESTRICTED_ABIS in EAPI >=4. (Patch by Arfrever. Backported from Progress Overlay.) --- python.eclass +++ python.eclass @@ -91,14 +91,18 @@ } _python_package_supporting_installation_for_multiple_python_abis() { - if has "${EAPI:-0}" 0 1 2 3 4; then - if [[ -n "${SUPPORT_PYTHON_ABIS}" ]]; then + if has "${EAPI:-0}" 0 1 2 3; then + if [[ -n "${PYTHON_MULTIPLE_ABIS}" || -n "${SUPPORT_PYTHON_ABIS}" ]]; then return 0 else return 1 fi else - die "${FUNCNAME}(): Support for EAPI=\"${EAPI}\" not implemented" + if [[ -n "${PYTHON_MULTIPLE_ABIS}" ]]; then + return 0 + else + return 1 + fi fi } @@ -698,10 +702,25 @@ # =========== FUNCTIONS FOR PACKAGES SUPPORTING INSTALLATION FOR MULTIPLE PYTHON ABIS ============ # ================================================================================================ -# @ECLASS-VARIABLE: SUPPORT_PYTHON_ABIS +if ! has "${EAPI:-0}" 0 1 2 3; then + if [[ -n "${SUPPORT_PYTHON_ABIS}" ]]; then + eerror "Use PYTHON_MULTIPLE_ABIS variable instead of SUPPORT_PYTHON_ABIS variable." + die "SUPPORT_PYTHON_ABIS variable is banned" + fi + if [[ -n "${RESTRICT_PYTHON_ABIS}" ]]; then + eerror "Use PYTHON_RESTRICTED_ABIS variable instead of RESTRICT_PYTHON_ABIS variable." + die "RESTRICT_PYTHON_ABIS variable is banned" + fi +fi + +# @ECLASS-VARIABLE: PYTHON_MULTIPLE_ABIS # @DESCRIPTION: -# Set this in EAPI <= 4 to indicate that current package supports installation for -# multiple Python ABIs. +# Set this to indicate that current package supports installation for multiple Python ABIs. + +# @ECLASS-VARIABLE: PYTHON_RESTRICTED_ABIS +# @DESCRIPTION: +# Space-separated list of Python ABI patterns. Support for Python ABIs matching any Python ABI +# patterns specified in this list is disabled. # @ECLASS-VARIABLE: PYTHON_TESTS_RESTRICTED_ABIS # @DESCRIPTION: @@ -788,6 +807,21 @@ _python_initial_sanity_checks + if has "${EAPI:-0}" 0 1 2 3; then + if [[ -z "${PYTHON_RESTRICTED_ABIS}" && -n "${RESTRICT_PYTHON_ABIS}" ]]; then + PYTHON_RESTRICTED_ABIS="${RESTRICT_PYTHON_ABIS}" + fi + else + if [[ -n "${SUPPORT_PYTHON_ABIS}" ]]; then + eerror "Use PYTHON_MULTIPLE_ABIS variable instead of SUPPORT_PYTHON_ABIS variable." + die "SUPPORT_PYTHON_ABIS variable is banned" + fi + if [[ -n "${RESTRICT_PYTHON_ABIS}" ]]; then + eerror "Use PYTHON_RESTRICTED_ABIS variable instead of RESTRICT_PYTHON_ABIS variable." + die "RESTRICT_PYTHON_ABIS variable is banned" + fi + fi + if [[ "$(declare -p PYTHON_ABIS 2> /dev/null)" != "declare -x PYTHON_ABIS="* ]] && has "${EAPI:-0}" 0 1 2 3 4; then local PYTHON_ABI @@ -807,7 +841,7 @@ cpython_enabled="1" fi - if ! _python_check_python_abi_matching --patterns-list "${PYTHON_ABI}" "${RESTRICT_PYTHON_ABIS}"; then + if ! _python_check_python_abi_matching --patterns-list "${PYTHON_ABI}" "${PYTHON_RESTRICTED_ABIS}"; then export PYTHON_ABIS+="${PYTHON_ABIS:+ }${PYTHON_ABI}" fi done @@ -837,13 +871,13 @@ support_python_major_version="0" for PYTHON_ABI in "${_CPYTHON2_GLOBALLY_SUPPORTED_ABIS[@]}"; do - if ! _python_check_python_abi_matching --patterns-list "${PYTHON_ABI}" "${RESTRICT_PYTHON_ABIS}"; then + if ! _python_check_python_abi_matching --patterns-list "${PYTHON_ABI}" "${PYTHON_RESTRICTED_ABIS}"; then support_python_major_version="1" break fi done if [[ "${support_python_major_version}" == "1" ]]; then - if _python_check_python_abi_matching --patterns-list "${python2_version}" "${RESTRICT_PYTHON_ABIS}"; then + if _python_check_python_abi_matching --patterns-list "${python2_version}" "${PYTHON_RESTRICTED_ABIS}"; then die "Active version of CPython 2 is not supported by ${CATEGORY}/${PF}" fi else @@ -860,13 +894,13 @@ support_python_major_version="0" for PYTHON_ABI in "${_CPYTHON3_GLOBALLY_SUPPORTED_ABIS[@]}"; do - if ! _python_check_python_abi_matching --patterns-list "${PYTHON_ABI}" "${RESTRICT_PYTHON_ABIS}"; then + if ! _python_check_python_abi_matching --patterns-list "${PYTHON_ABI}" "${PYTHON_RESTRICTED_ABIS}"; then support_python_major_version="1" break fi done if [[ "${support_python_major_version}" == "1" ]]; then - if _python_check_python_abi_matching --patterns-list "${python3_version}" "${RESTRICT_PYTHON_ABIS}"; then + if _python_check_python_abi_matching --patterns-list "${python3_version}" "${PYTHON_RESTRICTED_ABIS}"; then die "Active version of CPython 3 is not supported by ${CATEGORY}/${PF}" fi else