Если для вашего порта требует gettext, просто установите переменную USE_GETTEXT в значение yes, и в ваш порт добавится зависимость от devel/gettext. Кроме того, в USE_GETTEXT можно установить требуемую версию библиотеки libintl, основного компонента gettext, но такой механизм лучше не использовать. Ваш порт должен работать и с текущей версией devel/gettext.
Довольно распространенным случаем является использование в порте gettext и configure. Как правило, GNU configure способен находить gettext автоматически. Если он все же не сможет это сделать, то подсказки для размещения gettext можно передать через переменные окружения CPPFLAGS и LDFLAGS:
USE_GETTEXT= yes CPPFLAGS+= -I${LOCALBASE}/include LDFLAGS+= -L${LOCALBASE}/lib GNU_CONFIGURE= yes CONFIGURE_ENV= CPPFLAGS="${CPPFLAGS}" \ LDFLAGS="${LDFLAGS}"
Of course, the code can be more compact if there are no more flags to pass to configure:
USE_GETTEXT= yes GNU_CONFIGURE= yes CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \ LDFLAGS="-L${LOCALBASE}/lib"
Некоторые программные продукты позволяют отключать NLS, к примеру через передачу
параметра --disable-nls
сценарию configure. В этом случае, ваш порт должен использовать gettext в зависимости от статуса переключателя WITHOUT_NLS.
Для портов небольшой или средней сложности вы можете полагаться на следующую
идиому:
GNU_CONFIGURE= yes .if !defined(WITHOUT_NLS) USE_GETTEXT= yes PLIST_SUB+= NLS="" .else CONFIGURE_ARGS+= --disable-nls PLIST_SUB+= NLS="@comment " .endif
Следующий пункт в вашем списке дел разобраться, чтобы файлы каталога сообщения включались в список упаковки по условию. Часть, входящая в Makefile, уже обеспечена этой идиомой. Остальное объясняется в главе продвинутые практики pkg-plist. Вкратце, каждое вхождение %%NLS%% в pkg-plist будет заменено на ``@comment '', если NLS выключен, или пустой строкой, если включен. В результате строки, предваряемые %%NLS%%, станут комментариями в итоговом листе упаковки, если NLS выключен; иначе, префикс будет просто удален. Всё, что вам нужно, это вставить %%NLS%% перед каждым путем к файлу каталога сообщений в pkg-plist. Например:
%%NLS%%share/locale/fr/LC_MESSAGES/foobar.mo %%NLS%%share/locale/no/LC_MESSAGES/foobar.mo
В особо сложных случаях вам понадобиться использовать более продвинутые техники, чем данный рецепт, такие как динамические списки упаковки.
Существует момент, который следует учитывать при установке файлов каталогов сообщений. Целевые каталоги для размещения, расположенные под LOCALBASE/share/locale, редко когда должны создаваться и удаляться вашим портом. Для наиболее популярных языков имеются собственные каталоги, перечисленные в /etc/mtree/BSD.local.dist; таким образом, они включены в основную систему. Каталоги для множества других языков управляются с помощью порта devel/gettext. Возможно, вам понадобиться обратить внимание на его pkg-plist и посмотреть, куда ваш порт собирается установить файлы каталогов сообщений для единственного в своем роде языка.
Пред. | Начало | След. |
Использование GNU autotools | Уровень выше | Использование Perl |