[devel] RPM macros fonts

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Вс Апр 2 18:22:21 MSD 2006


On Sun, Apr 02, 2006 at 04:42:55PM +0400, Dmitry V. Levin wrote:
> На оба этих вопроса у меня такой ответ: чем больше будет перенесено из
> макроса во внешний скрипт, тем лучше, поскольку при необходимости внести
> изменения сделать это будет существенно проще и быстрее, ибо не потребуется
> пересобирать пакеты.

Хорошо, займёмся переписыванием макросов в виде скриптов по образу и
подобию info-install:

/usr/sbin/install_fonts:
-----------------------------------------------------------------------
#!/bin/sh -e

PROG=install_fonts

Fatal()
{
        echo "$PROG: $*" >&2
        exit 1
}

Usage()
{
	cat >&2 <<EOF
install_fonts - register new fonts in various subsystems.

Usage: $PROG [options] DIR...

Valid options are:
  --bitmap                   install X11 bitmap fonts (*.pcf)
  --type1                    install Type 1 fonts (*.pfa, *.pfb)
  --ttf                      install TrueType fonts (*.ttf)
  --otf                      install OpenType fonts (*.otf)
  --first                    put font directory first in the font path

EOF
	[ -n "$1" ] && exit "$1" || exit
}

TEMP=`getopt -n "$PROG" -o h -l help,bitmap,type1,ttf,otf,first -- "$@"` || Usage 1
eval set -- "$TEMP"

bitmap=
type1=
ttf=
otf=
first=
while :; do
	case "$1" in
		--bitmap)
			bitmap=1
			shift
			;;
		--type1)
			type1=1
			shift
			;;
		--ttf)
			ttf=1
			shift
			;;
		--otf)
			otf=1
			shift
			;;
		--first)
			first="-f"
			shift
			;;
		-h|--help)
			Usage 0
			;;
		--)
			shift
			break
			;;
		*)
			Fatal "$PROG: unrecognized option: $1"
			;;
	esac
done

for dir in "$@"; do
	if [ -n "$ttf$otf" ]; then
		/usr/sbin/ttmkfdir -d "$dir" -o "$dir"/fonts.scale 2>/dev/null ||:
	fi
	if [ -n "$type1" ]; then
		/usr/bin/mkfontscale "$dir" ||:
	fi
	/usr/bin/mkfontdir "$dir" ||:
	/usr/bin/fc-cache "$dir" ||:
	/usr/sbin/chkfontpath -q $first -a "$dir" ||:
done
-----------------------------------------------------------------------

/usr/sbin/uninstall_fonts:
-----------------------------------------------------------------------
#!/bin/sh -e

PROG=uninstall_fonts

if ! [ "$RPM_INSTALL_ARG1" -ge 0 ] 2>/dev/null; then
	echo "$PROG: invalid or undefined variable: RPM_INSTALL_ARG1" >&2
	exit 1
fi

[ "$RPM_INSTALL_ARG1" -eq 0 ] || exit 0
for dir in "$@"; do
	/usr/sbin/chkfontpath -q -r "$dir" ||:
done
-----------------------------------------------------------------------

Макросы (кроме %_*dir):
-----------------------------------------------------------------------
%add_bitmap_font_path()		%_sbindir/install_fonts --bitmap %1
%add_type1_font_path()		%_sbindir/install_fonts --type1 %1
%add_ttf_font_path()		%_sbindir/install_fonts --ttf %1
%add_otf_font_path()		%_sbindir/install_fonts --otf %1
%add_bitmap_font_path_first()	%_sbindir/install_fonts --bitmap --first %1
%remove_font_path()		%_sbindir/uninstall_fonts %1
-----------------------------------------------------------------------

Как назвать пакет со скриптами - alt-fonts-install?  (Просто
fonts-install будет мешаться среди прочих fonts-$TYPE-$NAME - или
пусть там и торчит?)
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 191 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20060402/1dfa817d/attachment-0001.bin>


Подробная информация о списке рассылки Devel