commit:     20f13fc2b967d676455e78874b3a3317539da520
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sun May 18 14:41:18 2014 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sun May 18 14:41:18 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/emacs.git;a=commit;h=20f13fc2

elisp-common.eclass: Die on errors in elisp-site-regen.

* elisp-common.eclass (elisp-site-regen): Die on errors.

---
 eclass/ChangeLog           |  2 ++
 eclass/elisp-common.eclass | 31 +++++++++++++++----------------
 2 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/eclass/ChangeLog b/eclass/ChangeLog
index 34ffa34..a246178 100644
--- a/eclass/ChangeLog
+++ b/eclass/ChangeLog
@@ -1,5 +1,7 @@
 2014-05-18  Ulrich Müller  <u...@gentoo.org>
 
+       * elisp-common.eclass (elisp-site-regen): Die on errors.
+
        * elisp-common.eclass (elisp-site-regen): Look for site-init files
        only in site-gentoo.d subdirectory.
 

diff --git a/eclass/elisp-common.eclass b/eclass/elisp-common.eclass
index 12bbc00..bf01c83 100644
--- a/eclass/elisp-common.eclass
+++ b/eclass/elisp-common.eclass
@@ -349,31 +349,27 @@ elisp-site-file-install() {
 
 elisp-site-regen() {
        local sitelisp=${ROOT}${EPREFIX}${SITELISP}
-       local sf i null="" page=$'\f'
+       local sf i ret=0 null="" page=$'\f'
        local -a sflist
 
-       if [[ ! -d ${sitelisp} ]]; then
-               eerror "elisp-site-regen: Directory ${sitelisp} does not exist"
-               return 1
-       fi
-
-       if [[ ! -d ${T} ]]; then
-               eerror "elisp-site-regen: Temporary directory ${T} does not 
exist"
-               return 1
-       fi
-
        if [[ ${EBUILD_PHASE} = *rm && ! -e ${sitelisp}/site-gentoo.el ]]; then
                ewarn "Refusing to create site-gentoo.el in ${EBUILD_PHASE} 
phase."
                return 0
        fi
 
+       [[ -d ${sitelisp} ]] \
+               || die "elisp-site-regen: Directory ${sitelisp} does not exist"
+
+       [[ -d ${T} ]] \
+               || die "elisp-site-regen: Temporary directory ${T} does not 
exist"
+
        ebegin "Regenerating site-gentoo.el for GNU Emacs (${EBUILD_PHASE})"
 
        for sf in "${sitelisp}"/site-gentoo.d/[0-9][0-9]*.el; do
                [[ -r ${sf} ]] && sflist+=("${sf}")
        done
 
-       cat <<-EOF >"${T}"/site-gentoo.el
+       cat <<-EOF >"${T}"/site-gentoo.el || ret=$?
        ;;; site-gentoo.el --- site initialisation for Gentoo-installed packages
 
        ;;; Commentary:
@@ -383,8 +379,8 @@ elisp-site-regen() {
        ;;; Code:
        EOF
        # Use sed instead of cat here, since files may miss a trailing newline.
-       sed '$q' "${sflist[@]}" </dev/null >>"${T}"/site-gentoo.el
-       cat <<-EOF >>"${T}"/site-gentoo.el
+       sed '$q' "${sflist[@]}" </dev/null >>"${T}"/site-gentoo.el || ret=$?
+       cat <<-EOF >>"${T}"/site-gentoo.el || ret=$?
 
        ${page}
        (provide 'site-gentoo)
@@ -397,7 +393,10 @@ elisp-site-regen() {
        ;;; site-gentoo.el ends here
        EOF
 
-       if cmp -s "${sitelisp}"/site-gentoo.el "${T}"/site-gentoo.el; then
+       if [[ ${ret} -ne 0 ]]; then
+               eend ${ret} "elisp-site-regen: Writing site-gentoo.el failed."
+               die
+       elif cmp -s "${sitelisp}"/site-gentoo.el "${T}"/site-gentoo.el; then
                # This prevents outputting unnecessary text when there
                # was actually no change.
                # A case is a remerge where we have doubled output.
@@ -406,7 +405,7 @@ elisp-site-regen() {
                einfo "... no changes."
        else
                mv "${T}"/site-gentoo.el "${sitelisp}"/site-gentoo.el
-               eend
+               eend $? "elisp-site-regen: Replacing site-gentoo.el failed" || 
die
                case ${#sflist[@]} in
                        0) [[ ${PN} = emacs-common-gentoo ]] \
                                || ewarn "... Huh? No site initialisation files 
found." ;;

Reply via email to