Создаем порт для FreeBSD своими руками. Часть II :: Ачилов Рашид
Страница: 5 из 7 | |||
| ||||||||||||||
| ||||||||||||||
КАТЕГОРИИ КНИГПОСЛЕДНИЕ ОТЗЫВЫ О КНИГАХМихаил (19.04.2017 - 06:11:11) Антихрист666 (18.04.2017 - 21:05:58) Ладно, теперь поспешили вы... (18.04.2017 - 20:50:34) Роман (18.04.2017 - 18:12:26) АНДРЕЙ (18.04.2017 - 16:42:55) СЛУЧАЙНОЕ ПРОИЗВЕДЕНИЕ....в доме том темно и пусто, 12.08.10 - 12:38 Хотите чтобы ваше произведение или ваш любимый стишок появились здесь? добавьте его! |
Потом идет второй цикл, который устанавливает файлы примеров в каталог, который для этого предварительно создается, создается каталог документации и в него копируется файл README.FreeBSD. Команда sed подготавливает файл pkg-message к отображению. В файле, который распространяется вместе с портом присутствует макроподстановка %%EXAMPLESDIR%%, которая, перед тем как это сообщение будет показано пользователю, заменяется на значение переменной $. Чтобы не изменять оригинальный файл pkg-message (возможно, в следующий раз установка будет проходить с другим значением $), старый файл сохраняется, измененный файл удаляется, старый файл переименовывается в оригинальное имя. Порт несложный, но он демонстрирует, как можно использовать заменяющие подмишени. При создании таких портов следует быть предельно внимательными – помните, что любой каталог, не входящий в стандартное дерево каталогов, описанное в bsd.local.mk, имеет право не существовать и должен быть предварительно создан. Модификация порта OpenOffice 1.1.4 С моей точки зрения, порт для сборки OpenOffice editors/openoffice имел множество недостатков, но эти изменения я никогда не пробовал отправить во FreeBSD Team для помещения их в дерево портов. Какие изменения были внесены мной: • возможность отказаться от сборки Mozilla Suite, нужной только для работы с адресной книгой формата Mozilla; • возможность загрузить и применить последний (на тот момент) файл локализации интерфейса; • возможность загрузить и применить внешние патчи, созданные в «Инфра-Ресурс» для версии для Linux. Порт на самом деле состоит из двух файлов – editors/openoffice-1.1 и russian/openoffice. Makefile порта russian/openoffice-1.1 достаточно прост: CATEGORIES= russian .if !defined (LANG) && !defined(USE_LANG) USE_LANG= ru_RU.KOI8-R .endif LANG_LIST= ru_RU.KOI8-R uk_UA.KOI8-U LANG_PKGNAME= ru LANG_EXT= 07 LANG_CONFIGURE_ARG= RUSS MASTERDIR= ${.CURDIR}/../../editors/openoffice-1.1 USE_RUSSIAN_GSI= yes USE_INFRA_PATCHSET= yes .include "$/Makefile" При запуске make в каталоге editors/openoffice-1.1 получаем OpenOffice c английским интерфейсом и справкой, при запуске в каталоге russian/openoffice – с русским интерфейсом. Достигается это таким же образом, как любой порт включает в себя bsd.port.mk, – командой .include. Только здесь параметром команды является имя так называемого «мастер-порта», то есть порта, в котором делается вся обработка. Это очень широко распространённый прием для крупных проектов – создается один мастер-порт и несколько портов, в которых только определяются некоторые переменные. Так работают postgresql, openldap, php и множество других портов. В приведенном выше примере мной были добавлены переменные «USE_RUSSIAN_GSI=yes» и «USE_INFRA_PATCHSET=yes», использование которых будет видно в коде из основного порта. Основной порт чересчур громоздок, чтобы приводить его весь, я приведу только некоторые фрагменты. .if defined(USE_RUSSIAN_GSI) MASTER_SITES+= http://ootrans.i-rs.ru/out/:oorus .endif .if defined(USE_INFRA_PATCHSET) MASTER_SITES+= ftp://ftp.i-rs.ru/pub/openoffice/1.1.4/ru/:oorus .endif Эти строки были внесены сразу же после списка MASTER_SITES. Они задают сервера, откуда будут загружаться необходимые файлы и устанавливают группу, которая будет впоследствии связана с файлами дистрибутива. .if !defined(WITHOUT_MOZILLA) DISTFILES+= $:moz \ $:mozsrc USE_GNOME+= orbit gtk12 .endif .if defined(USE_RUSSIAN_GSI) GSI_VERSION= 2005-01-20 GSI_DIR= rusgsi DISTFILES+= gsi-$(GSI_VERSION)-sorted.txt.bz2:oorus .endif .if defined(USE_INFRA_PATCHSET) INFRA_PATCHDIR= infrapatch INFRA_PATCHEXT= OOo_1.1.4_infra_patches DISTFILES+= $.tar.gz:oorus .endif Вот именно эта доработка позволила мне уменьшить сборку порта часа на два. Задание «WITHOUT_MOZILLA=yes» исключит из списка DISTFILES файлы исходного кода Mozilla Suite, и, следовательно, загружаться они не будут. Другие условия дополняют список DISTFILES файлами, содержащими модификации интерфейса (gsi-2005-01-20-sorted.txt.bz2), и набором патчей от «Инфра-Ресурс», задают имена каталогов, в которые они будут распаковываться и привязывают их к серверу в группу oorus. # When USE_RUSSIAN_GSI was defined, ensure, that # PREBUILD_TRANSEX3 and RUSSIAN_GSI were also defined .if defined(USE_RUSSIAN_GSI) .if !defined(PREBUILD_TRANSEX3) PREBUILD_TRANSEX3= yes GSI_PREBUILD= $/$/btransex .endif .if !defined(RUSSIAN_GSI) RUSSIAN_GSI= $/$/gsi-$-sorted.txt .endif . |
ИНТЕРЕСНОЕ О ЛИТЕРАТУРЕ
ТОП 20 КНИГ
ТОП 20 АВТОРОВ
| ||||||||||||
|