public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Michał Górny" <mgorny@gentoo.org>
To: gentoo-dev@lists.gentoo.org
Subject: Re: [gentoo-dev] [PATCH] font.eclass: Port to EAPI-7
Date: Sun, 24 Mar 2019 19:41:24 +0100	[thread overview]
Message-ID: <5ccc85650ff65a817046f5d81dd3ba20b3968158.camel@gentoo.org> (raw)
In-Reply-To: <9898161.uzqcMZjEFU@tuxk10>

[-- Attachment #1: Type: text/plain, Size: 5678 bytes --]

On Sun, 2019-03-24 at 18:17 +0100, Andreas Sturmlechner wrote:
> ---
>  eclass/font.eclass | 57 +++++++++++++++++++++++-----------------------
>  1 file changed, 28 insertions(+), 29 deletions(-)

-U9999, please.  This is a huge eclass and probably requires more work
than you're showing us ;-).

> 
> 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

Would it make sense to add some error handling?  It seems silly to try
to do a few things, then report one $? for the last of them,
independently of whether previous actions succeeded or failed.

> @@ -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

Move while to primary shell, and use < <(find ...).

>  		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"

What's the point of checking the existence, if you pass '-f' to rm
anyway?

>  }
>  
>  # @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

[[ -z ${ROOT} || ${ROOT} == / ]] is valid in bash.

[[ -z ${ROOT%/} ]] is shorter.

> +		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

find ... -exec chmod ... {} +

>  
>  	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

Don't call basename if you can do the same via ${conffile##*/}.

>  				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

Likewise.  Also, wouldn't it make sense to put it inside
_update_fontcache()?  It seems identical here and in postinst.

>  
> -	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
>  }

-- 
Best regards,
Michał Górny


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 963 bytes --]

  reply	other threads:[~2019-03-24 18:41 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-24 17:17 [gentoo-dev] [PATCH] font.eclass: Port to EAPI-7 Andreas Sturmlechner
2019-03-24 18:41 ` Michał Górny [this message]
2019-04-09 19:41   ` Andreas Sturmlechner
2019-04-10 13:21     ` Michał Górny
2019-10-15 21:58       ` [gentoo-dev] [PATCH v2] " Andreas Sturmlechner
2019-10-15 22:05       ` Andreas Sturmlechner
2019-10-16  6:52         ` Michał Górny
2019-10-16 12:01       ` [gentoo-dev] [PATCH 1/2] kde.org.eclass: New eclass, split from kde5.eclass Andreas Sturmlechner
2019-10-16 12:01       ` [gentoo-dev] [PATCH 2/2] kde5.eclass: Inherit kde.org.eclass and drop moved functions/vars Andreas Sturmlechner
2019-11-04 23:30       ` [gentoo-dev] [PATCH 1/3] ecm-utils.eclass: New eclass Andreas Sturmlechner
2019-11-04 23:37         ` [gentoo-dev] [PATCH 2/3] kde5.eclass: Inherit ecm-utils.eclass and drop moved functions/vars Andreas Sturmlechner
2019-11-04 23:42           ` [gentoo-dev] [PATCH 3/3] kde5-functions.eclass: Drop functions/vars moved to ecm-utils Andreas Sturmlechner
2019-11-05 21:20         ` [gentoo-dev] [PATCH 1/3] ecm-utils.eclass: New eclass Michał Górny
2019-11-06  1:19           ` Andreas Sturmlechner
2019-11-06  7:15             ` Michał Górny
2019-11-10 13:27               ` [gentoo-dev] [PATCH v2 1/3] ecm.eclass: " Andreas Sturmlechner
2019-11-10 16:26                 ` Gokturk Yuksek
2019-07-08 20:14   ` [gentoo-dev] [PATCH] profiles: desktop: Add USE icu to make.defaults Andreas Sturmlechner
2019-07-08 20:14   ` Andreas Sturmlechner
2019-07-08 20:14   ` Andreas Sturmlechner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5ccc85650ff65a817046f5d81dd3ba20b3968158.camel@gentoo.org \
    --to=mgorny@gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox