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 для Makefile

+ +

Приложения 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 2, при условии, что они не используют + специфичную для оболочки GNOME 1 функциональность.

+ +

Оболочка GNOME 1 и все приложения, которые не работали в оболочке + GNOME 2, были удалены из дерева портов.

+ +

Для вас, как создателя порта приложения, это означает, что вы просто не + должны добавлять приложения, специфичные для GNOME 1, в дерево + портов.

+ +

Если вы хотите определить, какая версия оболочки GNOME используется на + машине пользователя, вы можете проверить значение переменной + GNOME_DESKTOP_VERSION. Значение этой переменной устанавливается в + значение "1" или "2", в зависимости от того, установлена + ли версия оболочки GNOME 1 или GNOME 2.

+ +

Опциональные зависимости GNOME

+ +

Если ваш порт может опционально использовать 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.

+ + + + +

Установка OMF

+ +

Большое количество приложений 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
+  
+ + + + +

Проблемы с libtool

+ +

Большинство, если не все, приложений 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; + + + \ No newline at end of file