From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id B3E25138334 for ; Tue, 15 Oct 2019 22:05:57 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 14118E087D; Tue, 15 Oct 2019 22:05:54 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id AAC63E0870 for ; Tue, 15 Oct 2019 22:05:53 +0000 (UTC) Received: from tuxbrain.localnet (91-115-217-203.adsl.highway.telekom.at [91.115.217.203]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: asturm) by smtp.gentoo.org (Postfix) with ESMTPSA id 4F0C634BD94; Tue, 15 Oct 2019 22:05:52 +0000 (UTC) From: Andreas Sturmlechner To: gentoo-dev@lists.gentoo.org Cc: =?utf-8?B?TWljaGHFgiBHw7Nybnk=?= Subject: [gentoo-dev] [PATCH v2] font.eclass: Port to EAPI-7 Date: Wed, 16 Oct 2019 00:05:43 +0200 Message-ID: <1597215.ePjIQn5g5U@tuxbrain> In-Reply-To: References: <9898161.uzqcMZjEFU@tuxk10> <4600891.LxcutymfD9@tuxbrain> Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Archives-Salt: 0507a3db-18eb-4a70-befb-12d4e5f55eae X-Archives-Hash: 713cabbaa0746400832f1db71ebb715b (ignore previous mail, this time hopefully not scrambled) --- a/eclass/font.eclass +++ b/eclass/font.eclass @@ -4,16 +4,15 @@ # @ECLASS: font.eclass # @MAINTAINER: # fonts@gentoo.org -# @SUPPORTED_EAPIS: 0 1 2 3 4 5 6 +# @SUPPORTED_EAPIS: 0 1 2 3 4 5 6 7 # @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 @@ -67,18 +66,18 @@ fi # Generate Xorg font files (mkfontscale/mkfontdir). font_xfont_config() { local dir_name - if has X ${IUSE//+} && use X ; then + if in_iuse X && 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} \ + || die "failed to prepare ${FONTDIR}/${1//${S}/}" + einfo "Creating fonts.scale & fonts.dir in ${dir_name##*/}" + mkfontscale "${ED%/}/${FONTDIR}/${1//${S}/}" || eerror "failed to create fonts.scale" mkfontdir \ -e ${EPREFIX}/usr/share/fonts/encodings \ -e ${EPREFIX}/usr/share/fonts/encodings/large \ - "${ED}${FONTDIR}/${1//${S}/}" - eend $? - if [[ -e fonts.alias ]] ; then - doins fonts.alias + "${ED%/}/${FONTDIR}/${1//${S}/}" || eerror "failed to create fonts.dir" + if [[ -e fonts.alias ]]; then + doins fonts.alias || die "failed to install fonts.alias" # TODO old EAPI cleanup fi fi } @@ -91,7 +90,9 @@ font_fontconfig() { if [[ -n ${FONT_CONF[@]} ]]; then insinto /etc/fonts/conf.avail/ for conffile in "${FONT_CONF[@]}"; do - [[ -e ${conffile} ]] && doins ${conffile} + if [[ -e ${conffile} ]]; then + doins ${conffile} || die "failed to install conf file" # TODO old EAPI cleanup + fi done fi } @@ -105,20 +106,18 @@ 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 + while read -d $'\0' -r; do candidate=false otherfile=false for f in "${d}"/*; do generated=false # make sure this is a file and not a subdir [[ -e ${f} || -L ${f} ]] || continue - for g in ${genfiles}; do - if [[ ${f##*/} == ${g} ]]; then - # this is a generated file - generated=true - break - fi - done + if has ${f##*/} ${genfiles}; then + # this is a generated file + generated=true + break + fi # if the file is a generated file then we know this is a font dir (as # opposed to something like encodings or util) and a candidate for # removal. if it's not generated then it's an "otherfile". @@ -133,13 +132,14 @@ font_cleanup_dirs() { # media-fonts/font-alias. any other fonts.alias files will have # already been unmerged with their packages. for g in ${genfiles}; do - [[ ${g} != fonts.alias && ( -e ${d}/${g} || -L ${d}/${g} ) ]] \ - && rm "${d}"/${g} + if [[ ${g} != fonts.alias && ( -e ${d}/${g} || -L ${d}/${g} ) ]] ; then + rm "${d}"/${g} || eerror "failed to remove ${d}/${g}" + fi done # if there's nothing left remove the directory - find "${d}" -maxdepth 0 -type d -empty -exec rmdir '{}' \; + find "${d}" -maxdepth 0 -type d -empty -delete || eerror "failed to purge ${d}" fi - done + done < <(find -L "${EROOT%/}"/usr/share/fonts/ -type d -print0) eend 0 } @@ -162,7 +162,9 @@ 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" + if [[ -e "${EROOT%/}/${FONTDIR}/fonts.cache-1" ]] ; then + rm "${EROOT%/}/${FONTDIR}/fonts.cache-1" || die "failed to remove fonts.cache-1" + fi } # @FUNCTION: font_src_install @@ -179,7 +181,7 @@ font_src_install() { pushd "${dir}" > /dev/null insinto "${FONTDIR}/${dir//${S}/}" for suffix in ${FONT_SUFFIX}; do - doins *.${suffix} + doins *.${suffix} || die "font installation failed" # TODO old EAPI cleanup done font_xfont_config "${dir}" popd > /dev/null @@ -188,7 +190,7 @@ font_src_install() { pushd "${FONT_S}" > /dev/null insinto "${FONTDIR}" for suffix in ${FONT_SUFFIX}; do - doins *.${suffix} + doins *.${suffix} || die "font installation failed" # TODO old EAPI cleanup done font_xfont_config popd > /dev/null @@ -196,7 +198,7 @@ font_src_install() { font_fontconfig - [[ -n ${DOCS} ]] && { dodoc ${DOCS} || die "docs installation failed" ; } + [[ -n ${DOCS} ]] && { dodoc ${DOCS} || die "docs installation failed" ; } # TODO old EAPI cleanup # install common docs for commondoc in COPYRIGHT README{,.md,.txt} NEWS AUTHORS BUGS ChangeLog FONTLOG.txt; do @@ -204,36 +206,47 @@ font_src_install() { done } +# @FUNCTION: _update_fontcache +# @DESCRIPTION: +# Updates fontcache if !prefix and media-libs/fontconfig installed +_update_fontcache() { + # unreadable font files = fontconfig segfaults + find "${EROOT%/}"/usr/share/fonts/ -type f '!' -perm 0644 \ + -exec chmod -v 0644 2>/dev/null {} + || die "failed to fix font files perms" + + if [[ -z ${ROOT%/} ]] ; then + if has_version media-libs/fontconfig ; then + ebegin "Updating global fontcache" + fc-cache -fs + if ! eend $? ; then + die "failed to update global fontcache" + fi + else + einfo "Skipping fontcache update (media-libs/fontconfig not installed)" + fi + else + einfo "Skipping fontcache update (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 \ - | 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 - elog " $(basename ${conffile})" + if [[ -e "${EROOT%/}"/etc/fonts/conf.avail/${conffile##*/} ]]; then + elog " ${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,16 +254,5 @@ font_pkg_postinst() { # The font pkg_postrm function. font_pkg_postrm() { font_cleanup_dirs - - # unreadable font files = fontconfig segfaults - 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 }