Включаем Bytecode Interpreter в пакете freetype в некоторых дистрибутивах Версия для печати   


Аннотация
Создаем пакет freetype с включенным Bytecode Interpreter в дистрибутивах Fedora Core 5/6 и Slackware 10.2.

Ключевые слова: freetype, Bytecode Interpreter, Fedore Core 5/6, Slackware 10.2

Авторы: Logvinon, San АНДРЕЕВ

Введение
Известно, что из-за лиценцизионных ограничений пакет freetype поставляется без использования Bytecode Interpreter, также считается, что его наличие улучшает рендеринг TrueType шрифтов (символы отрисовываются аккуратнее, без "мазни"). Как его включить при сборке из исходников описано много где, поэтому озаботимся подготовкой пакета.

1. Подготовка
Если у Вас не готово окружение для сборки пакетов, то с этого надо начать. Хотя весь процесс и описан в Fedora Core 5 Release Notes, кратко его повторю:

su -c 'yum install fedora-rpmdevtools'
fedora-buildrpmtree
su -c 'yum install yum-utils'

В домашнем каталоге будет создано дерево ${HOME}/rpmbuild/ со всеми необходимыми для rpmbuild подкаталогами. В дальнейшем данная структура Вам пригодится для пересборки пакетов, да и для сборки kernel.

Для Slackware необходимо взять исходный код пакета и скрипта его сборки либо с дистрибутивного CD (source/x/x11/[freetype-2.1.9.tar.bz2, freetype2.build]), либо с одного из зеркал Slackware (напр. с :).

2. Теперь вперед к нашей цели.

Загружаем пакет с исходниками freetype:
cd ${HOME}/rpmbuild/SRPMS
yumdownloader --source --enablerepo=core-source freetype


Инсталируем исходники:
rpm -Uhv freetype-2.1.10-5.2.1.src.rpm
Эта команда запишет содержимое RPM пакета в ${HOME}/rpmbuild/SOURCES и ${HOME}/rpmbuild/SPECS.

Далее, основная смысловая работа, правим SPEC-файл:
cd ../SPECS
vi freetype.spec

В начале файла находим строку:
% define without_bytecode_interpreter    1

Пробела,после символа '%' - нет!

и заменяем 1 на 0, т.е. строка должна выглядеть так:
% define without_bytecode_interpreter    0

Аналогично, пробела после символа '%' быть не должно.

Всё! Собираем пакет:
QA_RPATHS=$[ 0x0010 ] rpmbuild -bb --target $(uname -m) freetype.spec


Результат нашего труда найдём в:
cd ../RPMS/$(uname -m)


Для Slackware последовательность иная. Кладем куда-нибудь архив с исходниками и скриптом сборки, напр. в моем случае это /home/san/src/freetype. Переходим в этот каталог и распаковываем архив:
$ tar -xjf freetype-2.1.9.tar.bz2

Теперь надо включить заветный Bytecode Interpreter, для чего надо подправить файл include/freetype/config/ftoption.h в строке 439, которую надо раскомментировать и привести к такому виду:
#define  TT_CONFIG_OPTION_BYTECODE_INTERPRETER


После этого надо немного "подлечить" скрипт сборки, потому как он нашу распаковку архива благополучно игнорирует. В нем надо закомментировать строки 42-44, должно получиться что-то вроде такого:
#cd /tmp
#rm -rf freetype-$VERSION
#tar xjvf $CWD/freetype-$VERSION.tar.bz2

После этого надо дать ему права на выполнение -
$ chmod +x freetype2.build

и запустить на выполнение от имени root (у себя я это делаю через sudo):
$ sudo freetype2.build

Скрипт сделает все сам, только без готового пакета на выходе. :) Если вам нужен еще и пакет, то надо зайти в распакованный каталог исходников и воспользоваться утилитой checkinstall (инсталлятором при установке системы она обычно не ставится, ее надо искать в extra и устанавливать самостоятельно).

Использованные источники:
1. Fedora Core 5 Release Notes

Опубликовал: Alexey Dmitriev
Дата: 05.07.2006
постоянный адрес статьи: http://linuxportal.ru/entry.php/P2275_0_3_0/