From: Andreas Sturmlechner <asturm@gentoo.org>
To: gentoo-dev@lists.gentoo.org
Cc: "Michał Górny" <mgorny@gentoo.org>
Subject: [gentoo-dev] [PATCH v2] font.eclass: Port to EAPI-7
Date: Wed, 16 Oct 2019 00:05:43 +0200 [thread overview]
Message-ID: <1597215.ePjIQn5g5U@tuxbrain> (raw)
In-Reply-To: <f1402d79825b7caa8b8139dc953fec17046fb573.camel@gentoo.org>
(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
}
next prev parent reply other threads:[~2019-10-15 22:05 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
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 [this message]
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=1597215.ePjIQn5g5U@tuxbrain \
--to=asturm@gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
--cc=mgorny@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