diff --git a/ru/gnome/docs/porting.sgml b/ru/gnome/docs/porting.sgml new file mode 100644 index 0000000000..6d77e30361 --- /dev/null +++ b/ru/gnome/docs/porting.sgml @@ -0,0 +1,307 @@ + + + + + + %gnomeincludes; + %includes; +]> + + + &header; + +
В этом документе предполагается, что вы уже знаете, как работает система + портов, и поэтому здесь даётся только специфичные для GNOME советы и + замечания. Инструкции общего характера можно найти в + Руководстве по созданию портов FreeBSD.
+ +Приложения GNOME во FreeBSD используют инфраструктуру USE_GNOME. + Для указания того, какие компоненты системы GNOME нужны вашему порту для + построения, просто перечислите их все списком через пробел. Например:
+ ++USE_X_PREFIX= yes +USE_GNOME= gnomeprefix gnomehack libgnomeui ++ +
Компоненты USE_GNOME делятся на две следующие категории:
+ +Если вашему порту нужны только библиотеки GTK2, то кратчайшим + способом указать на это является следующий:
+ ++USE_X_PREFIX= yes +USE_GNOME= gtk20 ++ +
Если вашему порту требуются только библиотеки GTK1, то кратчайшим + способом указать на это является следующий:
+ ++USE_X_PREFIX= yes +USE_GNOME= gtk12 ++ +
Даже если ваше приложение требует только библиотеки GTK, другие компоненты + USE_GNOME могут оказаться полезными. Пожалуйста, просмотрите весь + список, чтобы удостовериться в том, что ваш порт использует все нужные + компоненты.
+ + + +Как только вы закончите работу над своим портом, не помешает проверить, + что он зависит от правильного списка компоннетов. Чтобы увидеть перечень + пакаджей, от которых действительно зависит ваш порт, воспользуйтесь + командой make package-depends, которую нужно выдать из каталога + вашего порта.
+ +В облегчении создания перечня необходимых компонентов может помочь анализ + выдачи команды make configure. В конце списка + checking for... будет находиться строка вроде следующей:
+ ++checking for libgnomeui-2.0 >= 2.0.0 cspi-1.0 >= 1.1.7 +libspi-1.0 >= 1.1.7 libbonobo-2.0 >= 2.0.0 atk >= 1.0.0 +gtk+-2.0 >= 2.0.0 gail libwnck-1.0 esound... yes ++ +
Это список компонентов, которые используются приложением при построении. + Обратите особое внимание на иерархический характер системы + USE_GNOME; многие компоненты включаются из дургих директив + USE_GNOME. В примере выше USE_GNOME= libgnomeui + подразумевает использование libbonoboui, что приводит к + использованию libgnomecanvas, что приводит к использованию + libglade2, которая использует gtk20. Таким образом, даже + если gtk+-2.0 появляется в списке необходимых компонентов, + gtk20 можно исключить из списка USE_GNOME. Имеется + некоторое количество других таких случаев избыточности, которые можно + исключить из этого списка.
+ +Для списка выше (взятого из sysutils/gok), в Makefile + определено следующее: + +
+USE_GNOME= gnomehack gnomeprefix libgnomeui atspi libwnck ++ +
Изначально была только GNOME 1. Когда появилась оболочка + GNOME 2, была обеспечена максимальная совместимость с предыдущей + версией, по понятным причинам. Приложения GNOME 1 могли нормально + работать в оболочке GNOME 2, при условии, что они не используют + специфичную для оболочки GNOME 1 функциональность.
+ +Оболочка GNOME 1 и все приложения, которые не работали в оболочке + GNOME 2, были удалены из дерева портов.
+ +Для вас, как создателя порта приложения, это означает, что вы просто не + должны добавлять приложения, специфичные для GNOME 1, в дерево + портов.
+ +Если вы хотите определить, какая версия оболочки GNOME используется на + машине пользователя, вы можете проверить значение переменной + GNOME_DESKTOP_VERSION. Значение этой переменной устанавливается в + значение "1" или "2", в зависимости от того, установлена + ли версия оболочки GNOME 1 или GNOME 2.
+ +Если ваш порт может опционально использовать GNOME, вы должны задать + WANT_GNOME= yes в вашем файле Makefile, а затем проверить, задана + ли переменная HAVE_GNOME для каждого компонента из списка выше, + которые может использовать ваш порт. Так как это проверка выполнения + условия, вам нужно поместить её между bsd.port.pre.mk и + bsd.port.post.mk. Например:
+ ++WANT_GNOME= yes + +.include <bsd.port.pre.mk> + +.if ${HAVE_GNOME:Mgnomepanel}!="" + USE_GNOME+= gnomeprefix gnomepanel + CONFIGURE_ARGS+= --with-gnome + PKGNAMESUFFIX= -gnome + PLIST_SUB= DATADIR="share/gnome" +.else + CONFIGURE_ARGS+= --without-gnome + PLIST_SUB= DATADIR="share" +.endif + +.include <bsd.port.post.mk> ++ +
Здесь WANT_GNOME указывает системе портов на проверку + существования различных компонент GNOME, перечисленных выше. Для каждого + найденного компонента его имя добавляется к HAVE_GNOME. Так как + этот порт может использовать gnomepanel, мы проверяем переменную + HAVE_GNOME на предмет включения в неё gnomepanel (для + выяснения более полной информации о синтаксисе make-строки + :Mpattern, пожалуйста, обратитесь к + страницам справочника о make(1)). Если будет найден компонент + gnomepanel, то он будет добавлен к списку зависимостей + USE_GNOME, и будут переданы специфичные для порта + --with-gnome CONFIGURE_ARG. В старой инфраструктуре + GNOME переменная PKGNAMESUFFIX автоматически перенастраивалась + на полноценный макрос USE_*. Теперь это отдано человеку, + создающему порт. В нашем примерном порте к его имени добавляется + -gnome для указания на то, что он строится с поддержкой GNOME. + То же самое имеет место и для DATADIR PLIST_SUB. + Создатель порта должен решить, когда выполнять подстановку + DATADIR. Хорошим правилом является добавление DATADIR + PLIST_SUB при использовании компонента gnomeprefix.
+ +Замечание: Вы не можете добавлять дополнительные компоненты + USE_GNOME, используемые по умолчанию, после + .include <bsd.port.pre.mk>. Поэтому следующее использование + будет неправильным:
+ ++.include <bsd.port.pre.mk> + +.if ${HAVE_GNOME:Mgnomelibs}!="" + USE_GNOME+= libgnome +.else + USE_GNOME+= gtk12 # ОШИБКА! +.endif ++ +
Это заставит систему построения думать, что требуется использование GNOME, + и тогда pkg-plist будет изменён соответствующим образом, что + приведёт к ошибке при построении пакаджа. Если вы хотите добавить + используемые по умолчанию компоненты USE_GNOME, сделайте это + перед строкой .include <bsd.port.pre.mk>.
+ +Чтобы принудительно вызвать безусловное использование опциональных + зависимостей GNOME, вы можете добавить WITH_GNOME= yes в файл + /etc/make.conf или в командную строку make. При этом при проверке + зависимости от GNOME будет всегда возвращаться возвращаться положительное + значение. Если вы хотите, чтобы система всегда возвращала отрицательный + результат при проверке на зависимость от GNOME, вы можете добавить + WITHOUT_GNOME= yes в /etc/make.conf или командную строку + make.
+ +Дополнительную информацию об инфраструктуре USE_GNOME можно найти при + просмотре исходных текстов и комментариев в файле + ${PORTSDIR}/Mk/bsd.gnome.mk.
+ + + + +Большое количество приложений GNOME (особенно приложения GNOME 2) + устанавливают файлы Open Source Metadata Framework (OMF), которые содержат + информацию о файлах справки для этих приложений, Эти OMF-файлы требуют + особой обработки через ScrollKeeper для того, чтобы такие приложения, как + Yelp могли находить справочную документацию. Для выполнения полноценной + регистрации этих файлов OMF при установке приложений GNOME из пакаджей + вы должны проверить, что файл pkg-plist вашего порта имеет + следующие описания для каждого перечисленного файла OMF.
+ ++@exec scrollkeeper-install -q \ + %D/path/to/help_file.omf \ + 2>/dev/null || /usr/bin/true +@unexec scrollkeeper-uninstall -q \ + %D/path/to/help_file.omf \ + 2>/dev/null || /usr/bin/true ++ +
К примеру:
+ ++@exec scrollkeeper-install -q \ + %D/share/gnome/bug-buddy/bug-buddy-C.omf \ + 2>/dev/null || /usr/bin/true +@unexec scrollkeeper-uninstall -q \ + %D/share/gnome/bug-buddy/bug-buddy-C.omf \ + 2>/dev/null || /usr/bin/true ++ + + + +
Большинство, если не все, приложений GNOME зависит от GNU libtool. Они + также используют систему конфигурации GNU configure. Если ваш порт + устанавливает совместно используемые библиотеки, вы должны добавить строку + USE_LIBTOOL= yes к Makefile вашего порта. При этом будут учтены + все требования при использовании libtool, но это не избавит от таких вещей, + как установка файлов .la. Для обеспечения корректной установки совместно + используемой библиотеки не забудьте также добавить следующую строку в + скрипт configure вашего порта непосредственно после строки + LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh":
+ ++$ac_aux_dir/ltconfig $LIBTOOL_DEPS ++ +
Это отменит установку файлов .la и обеспечит передачу параметра + ${PTHREAD_LIBS} компоновщику.
+ + + + +Для отделения дистрибутивных файлов GNOME 2 от дистрибутивных файлв GNOME + 1 и для обеспечения чистоты каталога с дистрибутивными файлами, порты GNOME + 1, которые сгружают свои дистрибутивные файлы с + ${MASTER_SITE_GNOME}, должны иметь следующую строку в своём + Makefile:
+ ++DIST_SUBDIR= gnome ++ +
Порты GNOME 2, которые сгружают свои дистрибутивные файлы с + ${MASTER_SITE_GNOME}, должны иметь следующую строку в своём + Makefile:
+ ++DIST_SUBDIR= gnome2 ++ +
Некоторые дистрибутивные файлы GNOME распространяются как в формате + tar gzip, так и tar bzip2. Для экономии времени при сгрузке дистрибутивных + файлов по медленным каналам связи вы должны использовать дистрибутивные + файлы bzip2 там, где это возможно. Для этого добавьте следующую строку + в Makefile вашего порта:
+ ++USE_BZIP2= yes ++ + + +
Если вам нужна помощь при работе с портом, для примера взгляните на + некоторые из существующих портов. К вашим + услугам также и список рассылки + freebsd-gnome.
+ + &footer; + + +