Initial import, synchronized with English 1.34
This commit is contained in:
parent
1bf5f7fe14
commit
1b8cbc97e6
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/www/; revision=18677
1 changed files with 307 additions and 0 deletions
307
ru/gnome/docs/porting.sgml
Normal file
307
ru/gnome/docs/porting.sgml
Normal file
|
@ -0,0 +1,307 @@
|
|||
<!--
|
||||
The FreeBSD Russian Documentation Project
|
||||
|
||||
$FreeBSDru: frdp/www/ru/gnome/docs/porting.sgml,v 1.1 2003/11/02 10:03:55 andy Exp $
|
||||
|
||||
Original revision: 1.34
|
||||
-->
|
||||
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" [
|
||||
<!ENTITY base CDATA "../../..">
|
||||
<!ENTITY date "$FreeBSD: www/en/gnome/docs/porting.sgml,v 1.34 2003/10/02 22:01:04 marcus Exp $">
|
||||
<!ENTITY title "Проект FreeBSD GNOME: Как создать порт">
|
||||
<!ENTITY % gnomeincludes SYSTEM "../includes.sgml"> %gnomeincludes;
|
||||
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
|
||||
]>
|
||||
|
||||
<html>
|
||||
&header;
|
||||
|
||||
<p>В этом документе предполагается, что вы уже знаете, как работает система
|
||||
портов, и поэтому здесь даётся только специфичные для GNOME советы и
|
||||
замечания. Инструкции общего характера можно найти в <a
|
||||
href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/index.html">
|
||||
Руководстве по созданию портов FreeBSD</a>.</p>
|
||||
|
||||
<h2>Макросы GNOME для Makefile</h2>
|
||||
|
||||
<p>Приложения GNOME во FreeBSD используют инфраструктуру <b>USE_GNOME</b>.
|
||||
Для указания того, какие компоненты системы GNOME нужны вашему порту для
|
||||
построения, просто перечислите их все списком через пробел. Например:</p>
|
||||
|
||||
<pre>
|
||||
USE_X_PREFIX= yes
|
||||
USE_GNOME= gnomeprefix gnomehack libgnomeui
|
||||
</pre>
|
||||
|
||||
<p>Компоненты <b>USE_GNOME</b> делятся на две следующие категории:</p>
|
||||
|
||||
<ul>
|
||||
<li><p><a href="gnome2_porting.html">Компоненты GNOME 2</a></p></li>
|
||||
|
||||
<li><p><a href="gnome_porting.html">Компоненты GNOME 1</a></p></li>
|
||||
</ul>
|
||||
|
||||
<!-- I'm not sold on the utility of this section -->
|
||||
|
||||
<p>Если вашему порту нужны только библиотеки <b>GTK2</b>, то кратчайшим
|
||||
способом указать на это является следующий:</p>
|
||||
|
||||
<pre>
|
||||
USE_X_PREFIX= yes
|
||||
USE_GNOME= gtk20
|
||||
</pre>
|
||||
|
||||
<p>Если вашему порту требуются только библиотеки <b>GTK1</b>, то кратчайшим
|
||||
способом указать на это является следующий:</p>
|
||||
|
||||
<pre>
|
||||
USE_X_PREFIX= yes
|
||||
USE_GNOME= gtk12
|
||||
</pre>
|
||||
|
||||
<p>Даже если ваше приложение требует только библиотеки GTK, другие компоненты
|
||||
<b>USE_GNOME</b> могут оказаться полезными. Пожалуйста, просмотрите весь
|
||||
список, чтобы удостовериться в том, что ваш порт использует все нужные
|
||||
компоненты.</p>
|
||||
|
||||
<!-- end questionable section -->
|
||||
|
||||
<p>Как только вы закончите работу над своим портом, не помешает проверить,
|
||||
что он зависит от правильного списка компоннетов. Чтобы увидеть перечень
|
||||
пакаджей, от которых действительно зависит ваш порт, воспользуйтесь
|
||||
командой <tt>make package-depends</tt>, которую нужно выдать из каталога
|
||||
вашего порта.</p>
|
||||
|
||||
<p>В облегчении создания перечня необходимых компонентов может помочь анализ
|
||||
выдачи команды <tt>make configure</tt>. В конце списка
|
||||
<tt>checking for...</tt> будет находиться строка вроде следующей:</p>
|
||||
|
||||
<pre>
|
||||
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
|
||||
</pre>
|
||||
|
||||
<p>Это список компонентов, которые используются приложением при построении.
|
||||
Обратите особое внимание на иерархический характер системы
|
||||
<b>USE_GNOME</b>; многие компоненты включаются из дургих директив
|
||||
<b>USE_GNOME</b>. В примере выше <tt>USE_GNOME= libgnomeui</tt>
|
||||
подразумевает использование <tt>libbonoboui</tt>, что приводит к
|
||||
использованию <tt>libgnomecanvas</tt>, что приводит к использованию
|
||||
<tt>libglade2</tt>, которая использует <tt>gtk20</tt>. Таким образом, даже
|
||||
если <tt>gtk+-2.0</tt> появляется в списке необходимых компонентов,
|
||||
<tt>gtk20</tt> можно исключить из списка <b>USE_GNOME</b>. Имеется
|
||||
некоторое количество других таких случаев избыточности, которые можно
|
||||
исключить из этого списка.</p>
|
||||
|
||||
<p>Для списка выше (взятого из <tt>sysutils/gok</tt>), в <tt>Makefile</tt>
|
||||
определено следующее:
|
||||
|
||||
<pre>
|
||||
USE_GNOME= gnomehack gnomeprefix libgnomeui atspi libwnck
|
||||
</pre>
|
||||
|
||||
<h2>Оболочка GNOME 1 против Оболочки GNOME 2</h2>
|
||||
|
||||
<p>Изначально была только <tt>GNOME 1</tt>. Когда появилась оболочка
|
||||
<tt>GNOME 2</tt>, была обеспечена максимальная совместимость с предыдущей
|
||||
версией, по понятным причинам. Приложения <tt>GNOME 1</tt> могли нормально
|
||||
работать в оболочке <tt>GNOME 2</tt>, при условии, что они не используют
|
||||
специфичную для оболочки <tt>GNOME 1</tt> функциональность.</p>
|
||||
|
||||
<p>Оболочка <tt>GNOME 1</tt> и все приложения, которые не работали в оболочке
|
||||
<tt>GNOME 2</tt>, были удалены из дерева портов.</p>
|
||||
|
||||
<p>Для вас, как создателя порта приложения, это означает, что вы просто не
|
||||
должны добавлять приложения, специфичные для <tt>GNOME 1</tt>, в дерево
|
||||
портов.</p>
|
||||
|
||||
<p>Если вы хотите определить, какая версия оболочки GNOME используется на
|
||||
машине пользователя, вы можете проверить значение переменной
|
||||
<b>GNOME_DESKTOP_VERSION</b>. Значение этой переменной устанавливается в
|
||||
значение <tt>"1"</tt> или <tt>"2"</tt>, в зависимости от того, установлена
|
||||
ли версия оболочки <tt>GNOME 1</tt> или <tt>GNOME 2</tt>.</p>
|
||||
|
||||
<h2>Опциональные зависимости GNOME</h2>
|
||||
|
||||
<p>Если ваш порт может опционально использовать GNOME, вы должны задать
|
||||
<tt>WANT_GNOME= yes</tt> в вашем файле Makefile, а затем проверить, задана
|
||||
ли переменная <tt>HAVE_GNOME</tt> для каждого компонента из списка выше,
|
||||
которые может использовать ваш порт. Так как это проверка выполнения
|
||||
условия, вам нужно поместить её между <tt>bsd.port.pre.mk</tt> и
|
||||
<tt>bsd.port.post.mk</tt>. Например:</p>
|
||||
|
||||
<pre>
|
||||
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>
|
||||
</pre>
|
||||
|
||||
<p>Здесь <tt>WANT_GNOME</tt> указывает системе портов на проверку
|
||||
существования различных компонент GNOME, перечисленных выше. Для каждого
|
||||
найденного компонента его имя добавляется к <tt>HAVE_GNOME</tt>. Так как
|
||||
этот порт может использовать <tt>gnomepanel</tt>, мы проверяем переменную
|
||||
<tt>HAVE_GNOME</tt> на предмет включения в неё <tt>gnomepanel</tt> (для
|
||||
выяснения более полной информации о синтаксисе make-строки
|
||||
:M<tt>pattern</tt>, пожалуйста, обратитесь к <a
|
||||
href="http://www.freebsd.org/cgi/man.cgi?query=make&apropos=0&sektion=0&manpath=FreeBSD+4.6-stable&format=html">
|
||||
страницам справочника о make(1)</a>). Если будет найден компонент
|
||||
<tt>gnomepanel</tt>, то он будет добавлен к списку зависимостей
|
||||
<tt>USE_GNOME</tt>, и будут переданы специфичные для порта
|
||||
<tt>--with-gnome</tt> <tt>CONFIGURE_ARG</tt>. В старой инфраструктуре
|
||||
GNOME переменная <tt>PKGNAMESUFFIX</tt> автоматически перенастраивалась
|
||||
на полноценный макрос <tt>USE_*</tt>. Теперь это отдано человеку,
|
||||
создающему порт. В нашем примерном порте к его имени добавляется
|
||||
<tt>-gnome</tt> для указания на то, что он строится с поддержкой GNOME.
|
||||
То же самое имеет место и для <tt>DATADIR</tt> <tt>PLIST_SUB</tt>.
|
||||
Создатель порта должен решить, когда выполнять подстановку
|
||||
<tt>DATADIR</tt>. Хорошим правилом является добавление <tt>DATADIR</tt>
|
||||
<tt>PLIST_SUB</tt> при использовании компонента <tt>gnomeprefix</tt>.</p>
|
||||
|
||||
<p><b>Замечание:</b> Вы не можете добавлять дополнительные компоненты
|
||||
<tt>USE_GNOME</tt>, используемые по умолчанию, после
|
||||
<tt>.include <bsd.port.pre.mk></tt>. Поэтому следующее использование
|
||||
будет <font color="#FF0000"><b>неправильным</b></font>:</p>
|
||||
|
||||
<pre>
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
.if ${HAVE_GNOME:Mgnomelibs}!=""
|
||||
USE_GNOME+= libgnome
|
||||
.else
|
||||
USE_GNOME+= gtk12 # ОШИБКА!
|
||||
.endif
|
||||
</pre>
|
||||
|
||||
<p>Это заставит систему построения думать, что требуется использование GNOME,
|
||||
и тогда <tt>pkg-plist</tt> будет изменён соответствующим образом, что
|
||||
приведёт к ошибке при построении пакаджа. Если вы хотите добавить
|
||||
используемые по умолчанию компоненты <tt>USE_GNOME</tt>, сделайте это
|
||||
<b>перед</b> строкой <tt> .include <bsd.port.pre.mk></tt>.</p>
|
||||
|
||||
<p>Чтобы принудительно вызвать безусловное использование опциональных
|
||||
зависимостей GNOME, вы можете добавить <tt>WITH_GNOME= yes</tt> в файл
|
||||
<tt>/etc/make.conf</tt> или в командную строку make. При этом при проверке
|
||||
зависимости от GNOME будет всегда возвращаться возвращаться положительное
|
||||
значение. Если вы хотите, чтобы система всегда возвращала отрицательный
|
||||
результат при проверке на зависимость от GNOME, вы можете добавить
|
||||
<tt>WITHOUT_GNOME= yes</tt> в <tt>/etc/make.conf</tt> или командную строку
|
||||
make.</p>
|
||||
|
||||
<p>Дополнительную информацию об инфраструктуре USE_GNOME можно найти при
|
||||
просмотре исходных текстов и комментариев в файле
|
||||
<tt>${PORTSDIR}/Mk/bsd.gnome.mk</tt>.</p>
|
||||
|
||||
<!-- End GNOME-related Makefile macros -->
|
||||
|
||||
<!-- Begin GNOME OMF -->
|
||||
<h2>Установка OMF</h2>
|
||||
|
||||
<p>Большое количество приложений GNOME (особенно приложения GNOME 2)
|
||||
устанавливают файлы Open Source Metadata Framework (OMF), которые содержат
|
||||
информацию о файлах справки для этих приложений, Эти OMF-файлы требуют
|
||||
особой обработки через ScrollKeeper для того, чтобы такие приложения, как
|
||||
Yelp могли находить справочную документацию. Для выполнения полноценной
|
||||
регистрации этих файлов OMF при установке приложений GNOME из пакаджей
|
||||
вы должны проверить, что файл <tt>pkg-plist</tt> вашего порта имеет
|
||||
следующие описания для <em>каждого</em> перечисленного файла OMF.</p>
|
||||
|
||||
<pre>
|
||||
@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
|
||||
</pre>
|
||||
|
||||
<p>К примеру:</p>
|
||||
|
||||
<pre>
|
||||
@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
|
||||
</pre>
|
||||
|
||||
<!-- End GNOME OMF -->
|
||||
|
||||
<!-- Begin GNOME libtool -->
|
||||
<h2>Проблемы с libtool</h2>
|
||||
|
||||
<p>Большинство, если не все, приложений GNOME зависит от GNU libtool. Они
|
||||
также используют систему конфигурации GNU configure. Если ваш порт
|
||||
устанавливает совместно используемые библиотеки, вы должны добавить строку
|
||||
<tt>USE_LIBTOOL= yes</tt> к Makefile вашего порта. При этом будут учтены
|
||||
все требования при использовании libtool, но это не избавит от таких вещей,
|
||||
как установка файлов .la. Для обеспечения корректной установки совместно
|
||||
используемой библиотеки не забудьте также добавить следующую строку в
|
||||
скрипт <tt>configure</tt> вашего порта непосредственно после строки
|
||||
<tt>LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"</tt>:</p>
|
||||
|
||||
<pre>
|
||||
$ac_aux_dir/ltconfig $LIBTOOL_DEPS
|
||||
</pre>
|
||||
|
||||
<p>Это отменит установку файлов .la и обеспечит передачу параметра
|
||||
<tt>${PTHREAD_LIBS}</tt> компоновщику.</p>
|
||||
|
||||
<!-- End GNOME libtool -->
|
||||
|
||||
<!-- Begin GNOME distfiles -->
|
||||
<h2>Дистрибутивные файлы</h2>
|
||||
|
||||
<p>Для отделения дистрибутивных файлов GNOME 2 от дистрибутивных файлв GNOME
|
||||
1 и для обеспечения чистоты каталога с дистрибутивными файлами, порты GNOME
|
||||
1, которые сгружают свои дистрибутивные файлы с
|
||||
<tt>${MASTER_SITE_GNOME}</tt>, должны иметь следующую строку в своём
|
||||
Makefile:</p>
|
||||
|
||||
<pre>
|
||||
DIST_SUBDIR= gnome
|
||||
</pre>
|
||||
|
||||
<p>Порты GNOME 2, которые сгружают свои дистрибутивные файлы с
|
||||
<tt>${MASTER_SITE_GNOME}</tt>, должны иметь следующую строку в своём
|
||||
Makefile:</p>
|
||||
|
||||
<pre>
|
||||
DIST_SUBDIR= gnome2
|
||||
</pre>
|
||||
|
||||
<p>Некоторые дистрибутивные файлы GNOME распространяются как в формате
|
||||
tar gzip, так и tar bzip2. Для экономии времени при сгрузке дистрибутивных
|
||||
файлов по медленным каналам связи вы должны использовать дистрибутивные
|
||||
файлы bzip2 там, где это возможно. Для этого добавьте следующую строку
|
||||
в Makefile вашего порта:</p>
|
||||
|
||||
<pre>
|
||||
USE_BZIP2= yes
|
||||
</pre>
|
||||
|
||||
<!-- End GNOME distfiles -->
|
||||
|
||||
<p>Если вам нужна помощь при работе с портом, для примера взгляните на
|
||||
некоторые из <a href="/ports/gnome.html">существующих портов</a>. К вашим
|
||||
услугам также и <a href="mailto:&email;@FreeBSD.org">список рассылки
|
||||
freebsd-gnome</a>.</p>
|
||||
|
||||
&footer;
|
||||
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue