---
 eclass/font.eclass | 57 +++++++++++++++++++++++-----------------------
 1 file changed, 28 insertions(+), 29 deletions(-)

diff --git a/eclass/font.eclass b/eclass/font.eclass
index 58ec9e3..622f143 100644
--- a/eclass/font.eclass
+++ b/eclass/font.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2015 Gentoo Foundation
+# Copyright 1999-2019 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 # @ECLASS: font.eclass
@@ -7,12 +7,11 @@
 # @BLURB: Eclass to make font installation uniform
 
 case ${EAPI:-0} in
-       0|1|2|3|4|5|6) ;;
-       *)             die "EAPI ${EAPI} is not supported by font.eclass." ;;
+       0|1|2|3|4|5|6) inherit eutils ;;
+       7) ;;
+       *) die "EAPI ${EAPI} is not supported by font.eclass." ;;
 esac
 
-inherit eutils
-
 EXPORT_FUNCTIONS pkg_setup src_install pkg_postinst pkg_postrm
 
 # @ECLASS-VARIABLE: FONT_SUFFIX
@@ -68,12 +67,12 @@ font_xfont_config() {
        if has X ${IUSE//+} && use X ; then
                dir_name="${1:-${FONT_PN}}"
                ebegin "Creating fonts.scale & fonts.dir in ${dir_name##*/}"
-               rm -f 
"${ED}${FONTDIR}/${1//${S}/}"/{fonts.{dir,scale},encodings.dir}
-               mkfontscale "${ED}${FONTDIR}/${1//${S}/}"
+               rm -f 
"${ED%/}/${FONTDIR}/${1//${S}/}"/{fonts.{dir,scale},encodings.dir}
+               mkfontscale "${ED%/}/${FONTDIR}/${1//${S}/}"
                mkfontdir \
                        -e ${EPREFIX}/usr/share/fonts/encodings \
                        -e ${EPREFIX}/usr/share/fonts/encodings/large \
-                       "${ED}${FONTDIR}/${1//${S}/}"
+                       "${ED%/}/${FONTDIR}/${1//${S}/}"
                eend $?
                if [[ -e fonts.alias ]] ; then
                        doins fonts.alias
@@ -103,7 +102,7 @@ font_cleanup_dirs() {
        local d f g generated candidate otherfile
 
        ebegin "Cleaning up font directories"
-       find -L "${EROOT}"usr/share/fonts/ -type d -print0 | while read -d 
$'\0' d; do
+       find -L "${EROOT%/}"/usr/share/fonts/ -type d -print0 | while read -d 
$'\0' d; do
                candidate=false
                otherfile=false
                for f in "${d}"/*; do
@@ -160,7 +159,7 @@ font_pkg_setup() {
 
        # make sure we get no collisions
        # setup is not the nicest place, but preinst doesn't cut it
-       [[ -e "${EROOT}/${FONTDIR}/fonts.cache-1" ]] && rm -f 
"${EROOT}/${FONTDIR}/fonts.cache-1"
+       [[ -e "${EROOT%/}/${FONTDIR}/fonts.cache-1" ]] && rm -f 
"${EROOT%/}/${FONTDIR}/fonts.cache-1"
 }
 
 # @FUNCTION: font_src_install
@@ -202,36 +201,42 @@ font_src_install() {
        done
 }
 
+# @FUNCTION: _update_fontcache
+# @DESCRIPTION:
+# Updates fontcache if !prefix and media-libs/fontconfig installed
+_update_fontcache() {
+       # TODO: cleanup after <EAPI-7 is banned
+       if has_version media-libs/fontconfig && { [[ -z ${ROOT} ]] || [[ 
${ROOT} == / ]] ; } then
+               ebegin "Updating global fontcache"
+               fc-cache -fs
+               eend $?
+       else
+               einfo "Skipping fontcache update (media-libs/fontconfig is not 
installed or ROOT != /)"
+       fi
+}
+
 # @FUNCTION: font_pkg_postinst
 # @DESCRIPTION:
 # The font pkg_postinst function.
 font_pkg_postinst() {
        # unreadable font files = fontconfig segfaults
-       find "${EROOT}"usr/share/fonts/ -type f '!' -perm 0644 -print0 \
+       find "${EROOT%/}"/usr/share/fonts/ -type f '!' -perm 0644 -print0 \
                | xargs -0 chmod -v 0644 2>/dev/null
 
        if [[ -n ${FONT_CONF[@]} ]]; then
                local conffile
-               echo
                elog "The following fontconfig configuration files have been 
installed:"
                elog
                for conffile in "${FONT_CONF[@]}"; do
-                       if [[ -e ${EROOT}etc/fonts/conf.avail/$(basename 
${conffile}) ]]; then
+                       if [[ -e ${EROOT%/}/etc/fonts/conf.avail/$(basename 
${conffile}) ]]; then
                                elog "  $(basename ${conffile})"
                        fi
                done
                elog
                elog "Use \`eselect fontconfig\` to enable/disable them."
-               echo
        fi
 
-       if has_version media-libs/fontconfig && [[ ${ROOT} == / ]]; then
-               ebegin "Updating global fontcache"
-               fc-cache -fs
-               eend $?
-       else
-               einfo "Skipping fontcache update (media-libs/fontconfig is not 
installed or ROOT != /)"
-       fi
+       _update_fontcache
 }
 
 # @FUNCTION: font_pkg_postrm
@@ -241,14 +246,8 @@ font_pkg_postrm() {
        font_cleanup_dirs
 
        # unreadable font files = fontconfig segfaults
-       find "${EROOT}"usr/share/fonts/ -type f '!' -perm 0644 -print0 \
+       find "${EROOT%/}"/usr/share/fonts/ -type f '!' -perm 0644 -print0 \
                | xargs -0 chmod -v 0644 2>/dev/null
 
-       if has_version media-libs/fontconfig && [[ ${ROOT} == / ]]; then
-               ebegin "Updating global fontcache"
-               fc-cache -fs
-               eend $?
-       else
-               einfo "Skipping fontcache update (media-libs/fontconfig is not 
installed or ROOT != /)"
-       fi
+       _update_fontcache
 }
-- 
2.21.0





Reply via email to