commit:     3a6c1dbbb68093c139b9fdb0420cf5e913c7cfe6
Author:     Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 14 07:48:22 2023 +0000
Commit:     Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Mon Jul 17 08:03:10 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3a6c1dbb

docs.eclass: define missing python_check_deps()

and remove some code duplication

Closes: https://bugs.gentoo.org/910278
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> gentoo.org>

 eclass/docs.eclass | 59 ++++++++++++++++++++++++++++++------------------------
 1 file changed, 33 insertions(+), 26 deletions(-)

diff --git a/eclass/docs.eclass b/eclass/docs.eclass
index da598226bfc0..1aa4937a6363 100644
--- a/eclass/docs.eclass
+++ b/eclass/docs.eclass
@@ -186,21 +186,36 @@ initialize_git_repo() {
        fi
 }
 
-# @FUNCTION: python_append_deps
+# @FUNCTION: _docs_set_python_deps
 # @INTERNAL
 # @DESCRIPTION:
-# Appends [\${PYTHON_USEDEP}] to all dependencies
-# for python based DOCS_BUILDERs such as mkdocs or
-# sphinx.
-python_append_deps() {
+# Add python_gen_any_dep or python_gen_cond_dep
+# to DOCS_DEPEND and define python_check_deps
+_docs_set_python_deps() {
        debug-print-function ${FUNCNAME}
 
-       local temp
+       local deps=${@}
+       python_check_deps() {
+               use doc || return 0
+
+               local dep
+               for dep in ${deps[@]}; do
+                       python_has_version "${dep}[${PYTHON_USEDEP}]" ||
+                               return 1
+               done
+       }
+
+       local deps_appended
        local dep
-       for dep in ${DOCS_DEPEND[@]}; do
-               temp+=" ${dep}[\${PYTHON_USEDEP}]"
+       for dep in ${deps[@]}; do
+               deps_appended+=" ${dep}[\${PYTHON_USEDEP}]"
        done
-       DOCS_DEPEND=${temp}
+
+       if [[ ${_PYTHON_SINGLE_R1_ECLASS} ]]; then
+               DOCS_DEPEND=$(python_gen_cond_dep "${deps_appended}")
+       else
+               DOCS_DEPEND=$(python_gen_any_dep "${deps_appended}")
+       fi
 }
 
 # @FUNCTION: sphinx_deps
@@ -212,8 +227,8 @@ sphinx_deps() {
 
        : "${DOCS_AUTODOC:=1}"
 
-       deps="dev-python/sphinx[\${PYTHON_USEDEP}]
-                       ${DOCS_DEPEND}"
+       deps="dev-python/sphinx
+               ${DOCS_DEPEND}"
        if [[ ${DOCS_AUTODOC} == 0 ]]; then
                if [[ -n "${DOCS_DEPEND}" ]]; then
                        die "${FUNCNAME}: do not set DOCS_AUTODOC to 0 if 
external plugins are used"
@@ -221,11 +236,8 @@ sphinx_deps() {
        elif [[ ${DOCS_AUTODOC} != 0 && ${DOCS_AUTODOC} != 1 ]]; then
                die "${FUNCNAME}: DOCS_AUTODOC should be set to 0 or 1"
        fi
-       if [[ ${_PYTHON_SINGLE_R1_ECLASS} ]]; then
-               DOCS_DEPEND="$(python_gen_cond_dep "${deps}")"
-       else
-               DOCS_DEPEND="$(python_gen_any_dep "${deps}")"
-       fi
+
+       _docs_set_python_deps ${deps}
 }
 
 # @FUNCTION: sphinx_compile
@@ -276,19 +288,16 @@ mkdocs_deps() {
 
        : "${DOCS_AUTODOC:=0}"
 
-       deps="dev-python/mkdocs[\${PYTHON_USEDEP}]
-                       ${DOCS_DEPEND}"
+       deps="dev-python/mkdocs
+               ${DOCS_DEPEND}"
        if [[ ${DOCS_AUTODOC} == 1 ]]; then
-               deps="dev-python/mkautodoc[\${PYTHON_USEDEP}]
+               deps="dev-python/mkautodoc
                                ${deps}"
        elif [[ ${DOCS_AUTODOC} != 0 && ${DOCS_AUTODOC} != 1 ]]; then
                die "${FUNCNAME}: DOCS_AUTODOC should be set to 0 or 1"
        fi
-       if [[ ${_PYTHON_SINGLE_R1_ECLASS} ]]; then
-               DOCS_DEPEND="$(python_gen_cond_dep "${deps}")"
-       else
-               DOCS_DEPEND="$(python_gen_any_dep "${deps}")"
-       fi
+
+       _docs_set_python_deps ${deps}
 }
 
 # @FUNCTION: mkdocs_compile
@@ -404,11 +413,9 @@ IUSE+=" doc"
 # Call the correct setup function
 case ${DOCS_BUILDER} in
        "sphinx")
-               python_append_deps
                sphinx_deps
                ;;
        "mkdocs")
-               python_append_deps
                mkdocs_deps
                ;;
        "doxygen")

Reply via email to