pkgsrc/mk/pkginstall/fonts
jmmv 21d13ddec9 pkgsrc now deletes empty directories automatically. Fix the fonts
deinstallation script to follow this convention and purge empty directories
when there are no fonts left (and after their database has been removed).
2010-04-23 12:47:14 +00:00

115 lines
3 KiB
Text

# $NetBSD: fonts,v 1.6 2010/04/23 12:47:14 jmmv Exp $
#
# Generate a +FONTS script that updates font databases for the package.
#
case "${STAGE},$1" in
UNPACK,|UNPACK,+FONTS)
${CAT} > ./+FONTS << 'EOF'
#!@SH@
#
# +FONTS - font database management script
#
# Usage: ./+FONTS [metadatadir]
#
# This scripts rebuilds font databases needed by the package associated
# with <metadatadir>.
#
# Lines starting with "# FONTS: " are data read by this script that name
# the directories in which the font database will be rebuilt.
#
# # FONTS: /usr/pkg/lib/X11/fonts/TTF ttf
# # FONTS: /usr/pkg/lib/X11/fonts/Type1 type1
# # FONTS: /usr/pkg/lib/X11/fonts/misc x11
#
# For each FONTS entry, if the path is relative, that it is taken to be
# relative to ${PKG_PREFIX}.
#
ECHO="@ECHO@"
FIND="@FIND@"
GREP="@GREP@"
MKFONTDIR="@MKFONTDIR@"
PWD_CMD="@PWD_CMD@"
RM="@RM@"
RMDIR="@RMDIR@"
SED="@SED@"
SORT="@SORT@"
TEST="@TEST@"
TRUE="@TRUE@"
TTF_INDEX_CMD="@TTF_INDEX_CMD@"
TYPE1_INDEX_CMD="@TYPE1_INDEX_CMD@"
TYPE1_POSTINDEX_CMD="@TYPE1_POSTINDEX_CMD@"
X11_ENCODINGSDIR="@X11_ENCODINGSDIR@"
SELF=$0
CURDIR=`${PWD_CMD}`
PKG_METADATA_DIR="${1-${CURDIR}}"
: ${PKGNAME=${PKG_METADATA_DIR##*/}}
: ${PKG_PREFIX=@PREFIX@}
case "${PKG_UPDATE_FONTS_DB:-@PKG_UPDATE_FONTS_DB@}" in
[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
_PKG_UPDATE_FONTS_DB=yes
;;
[Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0)
_PKG_UPDATE_FONTS_DB=no
;;
esac
case "${FONTS_VERBOSE:-@FONTS_VERBOSE@}" in
[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
echo="${ECHO}"
;;
[Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0)
echo=":"
;;
esac
${SED} -n "/^\# FONTS: /{s/^\# FONTS: //;p;}" ${SELF} | ${SORT} -u |
while read dir font_type; do
case ${_PKG_UPDATE_FONTS_DB} in
no) continue ;;
esac
case $dir in
"") continue ;;
[!/]*) dir="${PKG_PREFIX}/$dir" ;;
esac
${TEST} -d "$dir" || continue
( $echo "${PKGNAME}: updating font database in $dir ($font_type)"
cd $dir
update_args=
post_update_cmd=
case $font_type in
[tT][tT][fF]) update_cmd="${TTF_INDEX_CMD}" ;;
[tT][yY][pP][eE]1) update_cmd="${TYPE1_INDEX_CMD}"
post_update_cmd="${TYPE1_POSTINDEX_CMD}" ;;
[xX]11) update_cmd="${MKFONTDIR}"
[ ! -z "${X11_ENCODINGSDIR}" ] && update_args="-e ${X11_ENCODINGSDIR}" ;;
esac
${TEST} -f "$update_cmd" || update_cmd="${TRUE}"
$update_cmd $update_args >/dev/null
$post_update_cmd
#
# Remove fonts databases if there are no fonts in the directory.
# We filter out the encodings.dir, fonts.{dirs,scale}, and
# Fontmap database files from the directory listing. Also remove
# the directory if it turns out to be empty.
#
if ${FIND} . -type f | ${GREP} -v "/encodings.dir" | ${GREP} -v "/fonts\.scale" | \
${GREP} -v "/fonts\.dir" | ${GREP} -v "/Fontmap" >/dev/null
then
: # Directory not empty; do nothing.
else
${RM} -f fonts.dir fonts.scale Fontmap* encodings.dir
${RMDIR} -p $dir 2>/dev/null
fi
)
done
EOF
${SED} -n "/^\# FONTS: /p" ${SELF} >> ./+FONTS
${CHMOD} +x ./+FONTS
;;
esac