commit:     c2af4e0908ddaf86a16bc10853534f16e02ff52a
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 14 04:25:15 2015 +0000
Commit:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Fri Aug 14 04:25:15 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c2af4e09

app-portage/eclass-manpages: pass up exit codes to the caller

This will let us make errors in the docs fatal in the ebuild if we want.

 app-portage/eclass-manpages/files/eclass-to-manpage.awk | 12 ++++++++++--
 app-portage/eclass-manpages/files/eclass-to-manpage.sh  | 12 +++++++++++-
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/app-portage/eclass-manpages/files/eclass-to-manpage.awk 
b/app-portage/eclass-manpages/files/eclass-to-manpage.awk
index 979ad10..cc21a73 100644
--- a/app-portage/eclass-manpages/files/eclass-to-manpage.awk
+++ b/app-portage/eclass-manpages/files/eclass-to-manpage.awk
@@ -79,6 +79,10 @@ function fail(text) {
        _stderr_msg(text, "error")
        exit(1)
 }
+function xfail(text) {
+       _stderr_msg(text, "error (ignoring)")
+       exit(77)
+}
 
 function eat_line() {
        ret = $0
@@ -392,8 +396,12 @@ BEGIN {
                        state = "funcvar"
                } else if ($0 == "# @DEAD") {
                        eclass = "dead"
-                       exit(10)
+                       exit(77)
                } else if ($0 == "# @eclass-begin") {
+                       # White list old eclasses that haven't been updated so 
we can block
+                       # new ones from being added to the tree.
+                       if (eclass == "")
+                               xfail("java documentation not supported")
                        fail("java documentation not supported")
                } else if ($0 ~ /^# @/)
                        warn("Unexpected tag in \"" state "\" state: " $0)
@@ -414,7 +422,7 @@ BEGIN {
 #
 END {
        if (eclass == "")
-               fail("eclass not documented yet (no @ECLASS found)")
+               xfail("eclass not documented yet (no @ECLASS found)")
        else if (eclass != "dead")
                handle_footer()
 }

diff --git a/app-portage/eclass-manpages/files/eclass-to-manpage.sh 
b/app-portage/eclass-manpages/files/eclass-to-manpage.sh
index da97e37..d41de42 100755
--- a/app-portage/eclass-manpages/files/eclass-to-manpage.sh
+++ b/app-portage/eclass-manpages/files/eclass-to-manpage.sh
@@ -22,6 +22,7 @@ fi
 
 [[ $# -eq 0 ]] && set -- "${ECLASSDIR}"/*.eclass
 
+ret=0
 for e in "$@" ; do
        set -- \
        ${AWK} \
@@ -29,8 +30,17 @@ for e in "$@" ; do
                -f "${FILESDIR}"/eclass-to-manpage.awk \
                ${e}
        if [[ ${AWK} == "gawk" ]] ; then
-               "$@" > ${e##*/}.5 || rm -f ${e##*/}.5
+               "$@" > ${e##*/}.5
+               tret=$?
+               if [[ ${tret} -ne 0 ]] ; then
+                       rm -f ${e##*/}.5
+                       if [[ ${tret} -ne 77 ]] ; then
+                               echo "FAIL: ${e}"
+                               ret=1
+                       fi
+               fi
        else
                "$@"
        fi
 done
+exit ${ret}

Reply via email to