Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Oct 2013 21:02:20 +0000 (UTC)
From:      Sergey Kandaurov <pluknet@FreeBSD.org>
To:        doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org
Subject:   svn commit: r43032 - head/ru_RU.KOI8-R/books/porters-handbook
Message-ID:  <201310232102.r9NL2KLD046460@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pluknet
Date: Wed Oct 23 21:02:20 2013
New Revision: 43032
URL: http://svnweb.freebsd.org/changeset/doc/43032

Log:
  MFen r39245 -> r42833.
  Set proper svn properties.

Added:
  head/ru_RU.KOI8-R/books/porters-handbook/uses.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/versions.xml   (contents, props changed)
Modified:
  head/ru_RU.KOI8-R/books/porters-handbook/Makefile
  head/ru_RU.KOI8-R/books/porters-handbook/book.xml   (contents, props changed)

Modified: head/ru_RU.KOI8-R/books/porters-handbook/Makefile
==============================================================================
--- head/ru_RU.KOI8-R/books/porters-handbook/Makefile	Wed Oct 23 17:44:01 2013	(r43031)
+++ head/ru_RU.KOI8-R/books/porters-handbook/Makefile	Wed Oct 23 21:02:20 2013	(r43032)
@@ -27,6 +27,8 @@ INSTALL_ONLY_COMPRESSED?=
 
 # XML content
 SRCS=  book.xml
+SRCS+= uses.xml
+SRCS+= versions.xml
 
 # Entities
 #SRCS+= ../../../en_US.ISO8859-1/books/handbook/authors.ent

Modified: head/ru_RU.KOI8-R/books/porters-handbook/book.xml
==============================================================================
--- head/ru_RU.KOI8-R/books/porters-handbook/book.xml	Wed Oct 23 17:44:01 2013	(r43031)
+++ head/ru_RU.KOI8-R/books/porters-handbook/book.xml	Wed Oct 23 21:02:20 2013	(r43032)
@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="koi8-r"?>
 <!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN"
-	"../../../share/xml/freebsd45.dtd">
+	"../../../share/xml/freebsd45.dtd" [
+<!ENTITY values.uses SYSTEM "uses.xml">
+<!ENTITY values.versions SYSTEM "versions.xml">
+]>
 
 <!--
      The FreeBSD Russian Documentation Project
@@ -8,7 +11,7 @@
      $FreeBSD$
      $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/porters-handbook/book.xml,v 1.136 2006/10/20 09:25:00 marck Exp $
 
-     Original revision: r39245
+     Original revision: r42833
 -->
 
 <book lang="ru">
@@ -19,7 +22,7 @@
       <corpauthor>The FreeBSD Documentation Project</corpauthor>
     </authorgroup>
 
-    <pubdate>Апрель 2000</pubdate>
+    <pubdate>$FreeBSD$</pubdate>
 
     <copyright>
       <year>2000</year>
@@ -35,6 +38,7 @@
       <year>2010</year>
       <year>2011</year>
       <year>2012</year>
+      <year>2013</year>
       <holder role="mailto:doc@FreeBSD.org">
         The FreeBSD Documentation Project</holder>
     </copyright>
@@ -124,12 +128,7 @@
       <para>Минимальный <filename>Makefile</filename> будет выглядеть
         примерно так:</para>
 
-      <programlisting># New ports collection makefile for:   oneko
-# Date created:        5 December 1994
-# Whom:                asami
-#
-# &dollar;FreeBSD&dollar;
-#
+      <programlisting># &dollar;FreeBSD&dollar;
 
 PORTNAME=      oneko
 PORTVERSION=   1.1b
@@ -137,13 +136,21 @@ CATEGORIES=    games
 MASTER_SITES=  ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/
 
 MAINTAINER=    asami@FreeBSD.org
+COMMENT=       Cat chasing a mouse all over the screen
 
 MAN1=	       oneko.1
 MANCOMPRESSED= yes
-USE_IMAKE=     yes
 
 .include &lt;bsd.port.mk&gt;</programlisting>
 
+      <note>
+	<para>В некоторых случаях в заголовке <filename>Makefile</filename>
+	  существующего порта могут содержаться дополнительные строки,
+	  такие как название порта и дата его создания.
+	  Эта дополнительная информация была объявлена устаревшей
+	  и находится в процессе удаления.</para>
+      </note>
+
       <para>Посмотрим, сможете ли вы его понять.  Не обращайте внимание на
         содержимое строчки <literal>&dollar;FreeBSD&dollar;</literal>, она
         будет заполнена автоматически системой SVN, когда порт будет
@@ -174,12 +181,33 @@ USE_IMAKE=     yes
             из <filename>README</filename> или страниц
             справочника</emphasis>; слишком часто они не являются кратким
             описанием порта или имеют неудобный формат (например, страницы
-	    справочника выровнены пробелами).  Если портируемое приложение
-	    имеет официальную страничку Интернет, укажите ее здесь.
-	    Перед <emphasis>одним</emphasis> из сайтов добавьте слово
-	    <literal>WWW:</literal> для того, чтобы вспомогательные утилиты
-	    работали правильно.</para>
-        </note>
+	    справочника выровнены пробелами, поскольку это выглядит в
+	    особенности плохо с моноширинными шрифтами).</para>
+	</note>
+
+	<para>Хорошо составленный <filename>pkg-descr</filename>
+	  описывает порт достаточно полно, чтобы пользователю не
+	  приходилось сверяться с документацией или посещать вебсайт
+	  для понимания того, что делает данное программное обеспечение,
+	  чем оно может быть полезно или какие хорошие функции у него
+	  имеются.  Упоминание про определённые требования, такие как
+	  используемый графический инструментарий, тяжёлые зависимости,
+	  окружение для запуска или используемый язык программирования
+	  помогут пользователям определиться, будет ли этот порт для
+	  них работать.</para>
+
+	<para>Включите сюда URL официальной домашней страницы Интернет.
+	  Перед <emphasis>одним</emphasis> из сайтов (выберите основной)
+	  добавьте <literal>WWW:</literal> (с последующим единичным
+	  пробелом) для того, чтобы вспомогательные утилиты работали
+	  правильно.  Если URI является корнем сайта или каталогом,
+	  то значение должно быть дополнено косой чертой.</para>
+
+	<note>
+	  <para>Если указанная для порта веб-страница не доступна,
+	    попытайтесь сперва поискать, был ли официальный сайт
+	    перемещён, переименован или размещён в другом месте.</para>
+	</note>
 
         <para>Следующий пример показывает, как должен выглядеть ваш
 	  <filename>pkg-descr</filename>:</para>
@@ -255,6 +283,18 @@ PLIST_DIRS=     lib/X11/oneko</programli
         <para>Конечно, переменная <makevar>PLIST_DIRS</makevar> не должна
           задаваться, если порт не устанавливает никаких каталогов.</para>
 
+	<note>
+	  <para>Несколько портов могут совместно использовать общий
+	    каталог.  В этом случае <makevar>PLIST_DIRS</makevar>
+	    следует заменить на <makevar>PLIST_DIRSTRY</makevar>, так
+	    чтобы каталог удалялся только если он пуст, а иначе
+	    игнорировался.  Использование <makevar>PLIST_DIRS</makevar>
+	    и <makevar>PLIST_DIRSTRY</makevar> аналогично
+	    <literal>@dirrm</literal> и <literal>@dirrmtry</literal>
+	    в <filename>pkg-plist</filename>, описание которых
+	    входит в <xref linkend="plist-dir-cleaning"/>.</para>
+	</note>
+
         <para>Обратной стороной такого способа перечисления файлов и
           каталогов порта является невозможность использования
           последовательностей команд, описанных в &man.pkg.create.1;.
@@ -435,10 +475,11 @@ PLIST_DIRS=     lib/X11/oneko</programli
 	очереди для включения во &os;.</para>
 
       <para>Мы рассмотрим ваш порт, при необходимости вернём его обратно, а
-        затем включим порт в наше дерево.  Ваше имя также появится в списке
-	<ulink url="&url.articles.contributors;/contrib-additional.html">
-        Дополнительных контрибуторов проекта FreeBSD</ulink> и других
-	файлах.  Разве это не великолепно?!? <!-- smiley -->:-)</para>
+        затем включим порт в наше дерево.  Ваше имя также будет добавлено
+	в список <ulink
+	  url="&url.articles.contributors;/contrib-additional.html">
+	  Дополнительных контрибуторов проекта FreeBSD</ulink> и другие
+	файлы.</para>
     </sect1>
   </chapter>
 
@@ -521,12 +562,6 @@ PLIST_DIRS=     lib/X11/oneko</programli
 		<filename><makevar>WRKSRC</makevar>/configure</filename>.
 	      </para>
 	    </listitem>
-
-	    <listitem>
-	      <para>Если задана переменная <makevar>USE_IMAKE</makevar>,
-		то запускается команда <makevar>XMKMF</makevar> (по умолчанию
-		это <command>xmkmf -a</command>).</para>
-	    </listitem>
 	  </orderedlist>
 	</step>
 
@@ -534,7 +569,7 @@ PLIST_DIRS=     lib/X11/oneko</programli
 	  <para>Выполняется цель <maketarget>build</maketarget>.  Она
 	    отвечает за переход в собственный рабочий каталог порта
 	    (<makevar>WRKSRC</makevar>) и его построение.  Если задана
-	    переменная <makevar>USE_GMAKE</makevar>, будет использоваться
+	    переменная <makevar>USES= gmake</makevar>, будет использоваться
 	    GNU-версия утилиты <command>make</command>, в противном случае
 	    будет использована системная утилита
 	    <command>make</command>.</para>
@@ -759,8 +794,7 @@ PLIST_DIRS=     lib/X11/oneko</programli
 	на значение переменной.  Пример:</para>
 
       <programlisting>post-patch:
-	@${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README
-	@${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|' ${WRKSRC}/configure</programlisting>
+	@${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README</programlisting>
 
       <para>Довольно часто бывают ситуации, когда портируемое программное
 	обеспечение, особенно если основной платформой разработки является
@@ -993,6 +1027,26 @@ DOS2UNIX_REGEX=  .*\.(c|cpp|h)</programl
             (изначально это не считалось бы более новой версией, так как
             20000801 численно больше, чем 1).</para>
 
+	  <tip>
+	    <para>Результат сравнения номера версии не всегда очевиден.
+	      Для выполнения сравнения двух строк с номером версии можно
+	      использовать &man.pkg.version.1;.  Эквивалентом в
+	      <application>pkgng</application> является
+	      <command>pkg version -t</command>.  Например:</para>
+
+	    <screen>&prompt.user; <userinput>pkg_version -t 0.031 0.29</userinput>
+></screen>
+
+	    <para>Для пользователей <application>pkgng</application>:</para>
+
+	    <screen>&prompt.user; <userinput>pkg version -t 0.031 0.29</userinput>
+></screen>
+
+	    <para>Строка <literal>&gt;</literal> в выводе команды означает,
+	      что версия 0.031 считается выше, чем версия 0.29, что может
+	      быть не очевидно для того, кто выполняет портирование.</para>
+	</tip>
+
           <para>В ситуациях, подобных этой, должно быть увеличено значение
             <makevar>PORTEPOCH</makevar>.  Если значение
             <makevar>PORTEPOCH</makevar> не равно нулю, то оно добавляется к
@@ -2003,11 +2057,7 @@ PORTEPOCH=      1</programlisting>
                   поддерживает саму оконную систему.  Не помещайте сюда
                   обычные приложения для X: большинство из них должны быть
                   перенесены в другие категории <filename>x11-*</filename>
-                  (смотрите ниже).  Если ваш порт <emphasis>является</emphasis>
-                  приложением для X, задайте <makevar>USE_XLIB</makevar> (что
-                  подразумевается при использовании
-                  <makevar>USE_IMAKE</makevar>) и укажите подходящую
-	          категорию.</entry>
+		  (смотрите ниже).</entry>
 	      </row>
 
 	      <row>
@@ -3343,19 +3393,102 @@ ALWAYS_KEEP_DISTFILES=  yes
     <sect1 id="makefile-comment">
       <title><makevar>COMMENT</makevar></title>
 
-      <para>Это однострочное описание порта.  <emphasis>Пожалуйста</emphasis>,
-        не включайте сюда название пакета (или номер версии программного
-        обеспечения).  Комментарий должен начинаться с заглавной буквы и не
-        заканчиваться точкой.  Вот пример:</para>
+      <para>Содержит однострочное описание порта.  Пожалуйста, соблюдайте
+	следующие правила:</para>
+
+      <orderedlist>
+	<listitem>
+	  <para>Старайтесь делать строку COMMENT длиной не больше, чем 70
+	    символов, так как эта строка будет использована программой
+	    &man.pkg.info.1; для отображения однострочного описания
+	    порта;</para>
+	</listitem>
+
+	<listitem>
+	  <para><emphasis>Не</emphasis> включайте сюда название пакета
+	    (или номер версии программного обеспечения);</para>
+	</listitem>
+
+	<listitem>
+	  <para>Комментарий должен начинаться с заглавной буквы и не
+	    заканчиваться точкой;</para>
+	</listitem>
+
+	<listitem>
+	  <para>Не начинайте комментарий с неопределённого артикля (A
+	    или An);</para>
+	</listitem>
+
+	<listitem>
+	  <para>Имена пишутся с заглавной буквы (например, Apache,
+	    JavaScript. Perl);</para>
+	</listitem>
+
+	<listitem>
+	  <para>Для перечислений используйте английскую Оксфордскую
+	    запятую (англ. Oxford comma) (например, green,
+	    red<emphasis>,</emphasis> and blue);</para>
+	</listitem>
+
+	<listitem>
+	  <para>Используйте программу проверки орфографии.</para>
+	</listitem>
+      </orderedlist>
+
+      <para>Вот пример:</para>
 
-      <programlisting>A cat chasing a mouse all over the screen</programlisting>
+      <programlisting>Cat chasing a mouse all over the screen</programlisting>
 
       <para>В файле <filename>Makefile</filename> переменная COMMENT должна
         следовать сразу за переменной MAINTAINER.</para>
+    </sect1>
+
+    <sect1 id="makefile-portscout">
+      <title><makevar>PORTSCOUT</makevar></title>
+
+      <para><application>Portscout</application> являет собой
+	автоматизированное средство проверки доступности дистрибутивных
+	файлов для Коллекции Портов &os;, подробное описание которого
+	предоставляет <xref linkend="distfile-survey"/>.</para>
+
+      <para>Переменная <makevar>PORTSCOUT</makevar> задаёт специальные
+	условия, ограничивающие работу <application>Portscout</application>
+	-  сканера дистрибутивных файлов.</para>
+
+      <para>Ситуации, при которых следует указывать переменную
+	<makevar>PORTSCOUT</makevar>:</para>
+
+      <itemizedlist>
+	<listitem>
+	  <para>Когда должны игнорироваться дистрибутивные файлы для
+	    конкретных версий или младших ревизий.  Например, чтобы
+	    исключить из проверок новых версий дистрибутивных файлов
+	    версию <replaceable>8.2</replaceable> по причине того, что
+	    она является поломанной, добавьте следующее:</para>
+
+	  <programlisting>PORTSCOUT=	ignore:8.2</programlisting>
+
+	</listitem>
+	<listitem>
+	  <para>Когда должны проверяться конкретные версии или старшие
+	    и младшие ревизии дистрибутивных файлов.  Например, если
+	    следует ограничиться проверкой версии
+	    <replaceable>0.6.4</replaceable>, потому что более новые
+	    версии имеют проблемы совместимости с &os;, добавьте:</para>
+
+	  <programlisting>PORTSCOUT=	limit:^0\.6\.4</programlisting>
+
+	</listitem>
+	<listitem>
+	  <para>Когда URL, в которых указаны доступные версии, отличаются
+	    от URL их загрузки.  Например, чтобы привязать проверку новых
+	    версий дистрибутивных файлов к странице загрузки для порта
+	    <filename role="package">databases/pgtune</filename>,
+	    добавьте:</para>
 
-      <para>Пожалуйста, постарайтесь делать строку COMMENT длиной не больше,
-        чем 70 символов, так как эта строка будет использована программой
-	&man.pkg.info.1; для отображения однострочного описания порта.</para>
+	  <programlisting>PORTSCOUT=	site:http://pgfoundry.org/frs/?group_id=1000416</programlisting>;
+	</listitem>
+      </itemizedlist>
     </sect1>
 
     <sect1 id="makefile-depend">
@@ -3377,38 +3510,23 @@ ALWAYS_KEEP_DISTFILES=  yes
 
 	<para>Эта переменная указывает, от каких совместно используемых
 	  библиотек зависит порт.  Это список пар
-	  <replaceable>lib</replaceable>:<replaceable>dir</replaceable><optional><replaceable>:target</replaceable></optional>
+	  <replaceable>lib</replaceable>:<replaceable>dir</replaceable>
 	  где <replaceable>lib</replaceable> - это имя библиотеки,
 	  <replaceable>dir</replaceable> - это каталог, в котором можно ее
-	  найти в случае, если ее нет на машине, и
-	  <replaceable>target</replaceable> - это цель, которую нужно вызвать
-	  в этом каталоге.  Например,</para>
+	  найти в случае, если ее нет на машине.  Например,</para>
 
-	<programlisting>LIB_DEPENDS=   jpeg:${PORTSDIR}/graphics/jpeg</programlisting>
+	<programlisting>LIB_DEPENDS=   libjpeg.so:${PORTSDIR}/graphics/jpeg</programlisting>
 
 	<para>проверит наличие библиотеки jpeg с любым номером версии и
 	  перейдет в подкаталог <filename>graphics/jpeg</filename> вашего
 	  дерева портов для ее построения и установки, если библиотека
-	  отсутствует.	Часть <replaceable>target</replaceable> может быть
-	  опущена, если она равна <makevar>DEPENDS_TARGET</makevar>
-	  (по умолчанию <literal>install</literal>).</para>
-
-	<note>
-	  <para>Часть <replaceable>lib</replaceable> является регулярным
-	    выражением, которое вызывается для вывода, полученного из
-	    <command>ldconfig -r</command>.  Разрешаются такие значения, как
-	    <literal>intl.9</literal> и <literal>intl.[5-7]</literal>.
-	    Первый шаблон, <literal>intl.9</literal>, совпадает только с
-	    intl версии 9, в то время как <literal>intl.[5-7]</literal>
-	    совпадает с любым из: <literal>intl.5</literal>,
-	    <literal>intl.6</literal> и <literal>intl.7</literal>.</para>
-	</note>
+	  отсутствует.</para>
 
 	<para>Зависимость проверяется дважды, один раз внутри цели
 	  <maketarget>extract</maketarget>, а затем из цели
 	  <maketarget>install</maketarget>.  Кроме того, имя зависимости
 	  помещается в пакет, так что &man.pkg.add.1; будет
-	  автоматически его устанавливать, если его нет на пользовательской
+	  автоматически её устанавливать, если её нет на пользовательской
 	  системе.</para>
       </sect2>
 
@@ -3484,7 +3602,7 @@ ALWAYS_KEEP_DISTFILES=  yes
 	  с переменными <makevar>USE_<replaceable>*</replaceable></makevar>,
 	  которые обрабатываются в <filename>ports/Mk/bsd.*.mk</filename>
 	  для пополнения первоначальных зависимостей построения.  Например,
-	  <literal>USE_GMAKE=yes</literal> добавляет
+	  <literal>USES= gmake</literal> добавляет
 	  <filename role="package">devel/gmake</filename> в
 	  <makevar>BUILD_DEPENDS</makevar>.  Для предотвращения загрязнения
 	  <makevar>RUN_DEPENDS</makevar> подобными дополнительными
@@ -3595,6 +3713,26 @@ ALWAYS_KEEP_DISTFILES=  yes
           совпадает с <makevar>DEPENDS_TARGET</makevar>.</para>
       </sect2>
 
+      <sect2 id="uses">
+	<title><makevar>USES</makevar></title>
+
+	<para>Существует несколько параметров для определения различных
+	  видов характерных особенностей и зависимостей, которыми
+	  обладает рассматриваемый порт.  Они могут быть указаны путём
+	  добавления следующей строки в <filename>Makefile</filename>
+	  порта:</para>
+
+	<programlisting>USES= feature[:arguments]</programlisting>
+
+	<para>Для получения полного списка значений смотрите <xref
+	    linkend="uses-values"/>.</para>
+
+	<warning>
+	  <para>Значение <makevar>USES</makevar> нельзя присваивать
+	    после подключения <filename>bsd.port.pre.mk</filename>.</para>
+	</warning>
+      </sect2>
+
       <sect2 id="use-vars">
 	<title><makevar>USE_<replaceable>*</replaceable></makevar></title>
 
@@ -3614,10 +3752,11 @@ ALWAYS_KEEP_DISTFILES=  yes
 	  в <filename>/etc/make.conf</filename> <emphasis>всегда</emphasis>
 	  является ошибочным действием.  В частности, установка</para>
 
-	  <programlisting>USE_GCC=        3.4</programlisting>
+	  <programlisting>USE_GCC=X.Y</programlisting>
 
-	  <para>добавит зависимость
-	  от gcc34 к каждому порту, включая сам gcc34!</para>
+	  <para>(где X.Y соответствует версии) добавит зависимость
+	    от gccXY к каждому порту, включая и сам
+	    <literal>lang/gccXY</literal>!</para>
 	</note>
 
 	<table frame="none">
@@ -3629,7 +3768,7 @@ ALWAYS_KEEP_DISTFILES=  yes
 	      <row>
 		<entry>Переменная</entry>
 
-		<entry>Смысл</entry>
+		<entry>Значение</entry>
 	      </row>
 	    </thead>
 
@@ -3649,35 +3788,30 @@ ALWAYS_KEEP_DISTFILES=  yes
 	      </row>
 
 	      <row>
-		<entry><makevar>USE_BISON</makevar></entry>
-
-		<entry>Для построения порт использует
-                  <command>bison</command>.</entry>
-	      </row>
-
-	      <row>
-		<entry><makevar>USE_CDRTOOLS</makevar></entry>
-
-		<entry>Порт требует <application>cdrecord</application>
-		  из <filename
-		  role="package">sysutils/cdrtools</filename> или <filename
-		  role="package">sysutils/cdrtools-cjk</filename> в
-		  зависимости от предпочтений пользователя.</entry>
-	      </row>
-
-	      <row>
 		<entry><makevar>USE_GCC</makevar></entry>
 
-		<entry>Порт требует для сборки специальную версию
-		  <command>gcc</command>.  Точная версия может быть указана
-		  в значении переменной, например <literal>3.4</literal>.
-		  Минимально необходимую версию можно указать как
-		  <literal>3.4+</literal>.  <command>gcc</command> из
-		  основной системы используется в случае, если он
-		  удовлетворяет запрошенной версии, иначе производится
-		  компиляция подходящей версии <command>gcc</command> из
-		  портов с коррекций переменных <makevar>CC</makevar> и
-		  <makevar>CXX</makevar>.</entry>
+		<entry>Для сборки порта требуется GCC
+		  (<command>gcc</command> или <command>g++</command>).
+		  Некоторым портам подходит любая версия, для других
+		  требуются последние современные версии.  Обычно
+		  используется со значением <literal>any</literal> (в
+		  этом случае используется встроенный GCC в тех
+		  версиях &os;, в состав которых он всё ещё входит,
+		  или устанавливается порт
+		  <literal>lang/gcc</literal>, когда Clang является
+		  компилятором C/C++ по умолчанию) или
+		  <literal>yes</literal> (всегда используется
+		  стабильная современная версия GCC из порта
+		  <literal>lang/gcc</literal>).  Также в значении
+		  переменной можно указать точную версию, например
+		  <literal>4.7</literal>.  Минимально допустимую
+		  версию можно указать как <literal>4.6+</literal>.
+		  GCC из основной системы используется в случае, если
+		  его версия удовлетворяет запрошенной, иначе
+		  собирается подходящая версии компилятора из порта с
+		  соответствующей коррекцией переменных
+		  <makevar>CC</makevar> и <makevar>CXX</makevar>.
+		</entry>
 	      </row>
 
 	    </tbody>
@@ -3810,11 +3944,11 @@ LIB_DEPENDS=	bar:${PORTSDIR}/foo/bar
 	  <title>Корректное объявление необязательной зависимости</title>
 
 	  <programlisting>OPTIONS_DEFINE=	BAR
-BAR_DESC=	Enable bar support
+BAR_DESC=	Bar support
 
 .include &lt;bsd.port.options.mk&gt;
 
-.if ${PORTOPTIONS:MBAR}
+.if ${PORT_OPTIONS:MBAR}
 LIB_DEPENDS=	bar:${PORTSDIR}/foo/bar
 .endif</programlisting>
 	</example>
@@ -3962,13 +4096,6 @@ MASTERDIR=	${.CURDIR}/../xdvi300
       <filename>bsd.port.mk</filename> ничего дополнительно делать не
       нужно.</para>
 
-    <para>Значение переменной <makevar>MANCOMPRESSED</makevar> автоматически
-      устанавливается в <literal>yes</literal>, если переменная
-      <makevar>USE_IMAKE</makevar> задана, а
-      <makevar>NO_INSTALL_MANPAGES</makevar> нет, и в значение
-      <literal>no</literal> в противном случае.  Вам не нужно задавать ее
-      явно, если значение по умолчанию подходит вашему порту.</para>
-
     <para>Если ваш порт определяет корнем для файлов Справочника каталог,
       отличный от <makevar>PREFIX</makevar>, вы можете использовать
       переменную <makevar>MANPREFIX</makevar>, чтобы задать его явно.  Кроме
@@ -4078,7 +4205,7 @@ ${MANPREFIX}/man/de/man3/baz.3.gz</progr
 
 	  <para>Эти переменные предназначены для установки системным
 	    администратором.  Многие из них стандартизованы в файле
-	    <ulink url="http://svn.FreeBSD.org/ports/head/KNOBS?view=markup"><filename>ports/KNOBS</filename></ulink>.</para>;
+	    <ulink url="http://svnweb.FreeBSD.org/ports/head/KNOBS?view=markup"><filename>ports/KNOBS</filename></ulink>.</para>;
 
 	  <para>При создании порта не давайте имя для knob, специфичное
 	    для данного приложения.  На примере порта Avahi, используйте
@@ -4110,19 +4237,11 @@ ${MANPREFIX}/man/de/man3/baz.3.gz</progr
 	        <row>
 		  <entry>Переменная</entry>
 
-		  <entry>Значения</entry>
+		  <entry>Значение</entry>
 	        </row>
 	      </thead>
 
 	      <tbody>
-	        <row id="knobs-without-nls">
-		  <entry><makevar>WITHOUT_NLS</makevar></entry>
-
-		  <entry>Если установлена, указывает не задействовать
-		    интернационализацию, что может ускорить компиляцию.
-		    По умолчанию, интернационализация используется.</entry>
-	        </row>
-
 	        <row>
 		  <entry><makevar>WITH_OPENSSL_BASE</makevar></entry>
 
@@ -4136,15 +4255,6 @@ ${MANPREFIX}/man/de/man3/baz.3.gz</progr
 		    <filename role="package">security/openssl</filename>,
 		    даже если в базовой системе последняя версия.</entry>
 	        </row>
-
-	        <row>
-		  <entry><makevar>WITHOUT_X11</makevar></entry>
-
-		  <entry>Порты, которые могут быть собраны с поддержкой
-		    или без поддержки X, обычно собираются с поддержкой
-		    X.  Если эта переменная определена, то будет собрана
-		    версия без поддержки X.</entry>
-	        </row>
 	      </tbody>
 	    </tgroup>
 	  </table>
@@ -4157,7 +4267,7 @@ ${MANPREFIX}/man/de/man3/baz.3.gz</progr
 	      knobs для помощи конечным пользователям и для поддержания
 	      количества наименований knobs в небольшом количестве.
 	      Список популярных названий knobs можно найти в файле <ulink
-		url="http://svn.FreeBSD.org/ports/head/KNOBS?view=markup"><filename>KNOBS</filename></ulink>;
+		url="http://svnweb.FreeBSD.org/ports/head/KNOBS?view=markup"><filename>KNOBS</filename></ulink>;
 	    </para>
 
 	    <para>Названия knobs должны отражать, что это такое и что
@@ -4249,6 +4359,13 @@ OPT6_DESC=	Describe OPT6</programlisting
 	    <programlisting>OPTIONS_SINGLE=		SG1
 OPTIONS_SINGLE_SG1=	OPT3 OPT4</programlisting>
 
+	    <para><makevar>OPTIONS</makevar> можно группировать в виде
+	      переключателей, для которых разрешен выбор единственного
+	      варианта (или ни одного) в каждой группе:</para>
+
+	    <programlisting>OPTIONS_RADIO=		RG1
+OPTIONS_RADIO_RG1=	OPT7 OPT8</programlisting>
+
 	    <para><makevar>OPTIONS</makevar> также можно группировать
 	      в виде списков со множественным выбором, для которых
 	      обязан быть включен <emphasis>по крайней мере
@@ -4257,20 +4374,13 @@ OPTIONS_SINGLE_SG1=	OPT3 OPT4</programli
 	    <programlisting>OPTIONS_MULTI=		MG1
 OPTIONS_MULTI_MG1=	OPT5 OPT6</programlisting>
 
-	    <para><makevar>OPTIONS_MULTI</makevar> и
-	      <makevar>OPTIONS_SINGLE</makevar> также допускают
-	      отсутствие выбора путём включения группы в
-	      <makevar>OPTIONS_DEFINE</makevar>:</para>
-
-	    <programlisting>OPTIONS_DEFINE=		MG1
-OPTIONS_MULTI=		MG1
-OPTIONS_MULTI_MG1=	OPT5 OPT6</programlisting>
+	    <para><makevar>OPTIONS</makevar> также можно группировать
+	      в виде списков со множественным выбором, для которых
+	      могут быть включены любые параметры, включая отсутствие
+	      выбора:</para>
 
-	    <para>После этого группа требует по крайней мере один
-	      <makevar>OPTION</makevar> из <makevar>MG1</makevar>,
-	      только если выбран новый <makevar>MG1</makevar>
-	      <makevar>OPTION</makevar>.  Рекомендуется
-	      поэкспериментировать, чтобы улучшить понимание.</para>
+	    <programlisting>OPTIONS_GROUP=		GG1
+OPTIONS_GROUP_GG1=	OPT9 OPT10</programlisting>
 
 	    <para>По умолчанию <makevar>OPTIONS</makevar> находится в
 	      выключенном положении, если при этом оно также отсутствует
@@ -4314,6 +4424,15 @@ RUN_DEPENDS+=	bar:${PORTSDIR}/bar/bar
 .include &lt;bsd.port.mk&gt;</programlisting>
 	  </example>
 
+	  <example id ="ports-options-check-unset">
+	    <title>Проверка незаданных значений
+	      <makevar>OPTIONS</makevar></title>
+
+	    <programlisting>.if ! ${PORT_OPTIONS:MEXAMPLES}
+CONFIGURE_ARGS+=--without-examples
+.endif</programlisting>
+	  </example>
+
 	  <example id="ports-options-practical-use">
 	    <title>Пример реального использования
 	      <makevar>OPTIONS</makevar></title>
@@ -4349,32 +4468,42 @@ CONFIGURE_ARGS+=	--without-postgres
 LIB_DEPENDS+=	icuuc:${PORTSDIR}/devel/icu
 .endif
 
-# Check other OPTIONS
-
-.include &lt;bsd.port.mk&gt;</programlisting>
-	  </example>
-
-	  <example id="ports-options-old-style-use">
-	    <title>Использование <makevar>OPTIONS</makevar>
-	      в старом стиле</title>
-	    <programlisting>OPTIONS=      FOO "Enable option foo" On
-
-.include &lt;bsd.port.pre.mk&gt;
-
-.if defined(WITHOUT_FOO)
-CONFIGURE_ARGS+=	--without-foo
-.else
-CONFIGURE_ARGS+=	--with-foo
+.if ! ${PORT_OPTIONS:MEXAMPLES}
+CONFIGURE_ARGS+=	--without-examples
 .endif
 
-.include &lt;bsd.port.post.mk&gt;</programlisting>
+# Проверка других параметров OPTIONS
+
+.include &lt;bsd.port.mk&gt;</programlisting>
 	  </example>
+	</sect3>
 
-	  <important>
-	    <para>Такой способ использования <makevar>OPTIONS</makevar>
-	      является устаревшим, и в будущем его поддержка будет
-	      удалёна.  Не используйте этот способ для новых портов.</para>
-	  </important>
+	<sect3>
+	  <title>Параметры по умолчанию</title>
+  	  <para>Следующие параметры по умолчанию всегда включены.</para>
+          <itemizedlist>
+	    <listitem>
+	      <para><literal>DOCS</literal> &mdash; построение и установка
+		документации.</para>
+	    </listitem>
+	    <listitem>
+	      <para><literal>NLS</literal> &mdash; интернационализация.</para>
+            </listitem>
+	    <listitem>
+	      <para><literal>EXAMPLES</literal> &mdash; построение и
+		установка примеров использования.</para>
+	    </listitem>
+	    <listitem>
+	      <para><literal>IPV6</literal> &mdash; поддержка протокола
+		IPv6.</para>
+	    </listitem>
+	  </itemizedlist>
+	  <note>
+	    <para>Нет необходимости добавлять эти параметры в
+	      <makevar>OPTIONS_DEFAULT</makevar>.  Тем не менее, чтобы
+	      отобразить их в окне диалога выбора параметров, они должны
+	      быть добавлены в <makevar>OPTIONS_DEFINE</makevar>.</para>
+          </note>
 	</sect3>
       </sect2>
 
@@ -4393,7 +4522,7 @@ CONFIGURE_ARGS+=	--with-foo
 	  <title>Неправильное управление опцией</title>
 
 	  <programlisting>.if ${PORT_OPTIONS:MFOO}
-LIB_DEPENDS+=		foo:${PORTSDIR}/devel/foo
+LIB_DEPENDS+=		libfoo.so:${PORTSDIR}/devel/foo
 CONFIGURE_ARGS+=	--enable-foo
 .endif</programlisting>
 	</example>
@@ -4412,7 +4541,7 @@ CONFIGURE_ARGS+=	--enable-foo
 	  <title>Правильное управление опцией</title>
 
 	  <programlisting>.if ${PORT_OPTIONS:MFOO}
-LIB_DEPENDS+=		foo:${PORTSDIR}/devel/foo
+LIB_DEPENDS+=		libfoo.so:${PORTSDIR}/devel/foo
 CONFIGURE_ARGS+=	--enable-foo
 .else
 CONFIGURE_ARGS+=	--disable-foo
@@ -4422,148 +4551,445 @@ CONFIGURE_ARGS+=	--disable-foo
 	<para>Во втором примере библиотека libfoo отключена явным образом.
 	  Сценарий configure не включает соответствующие функции в приложении,
 	  несмотря на присутствие библиотеки в системе.</para>
-      </sect2>
 
-    </sect1>
+	<note>
+	  <para>При определенных условиях сокращенный синтаксис записи
+	    условий может вызывать проблемы со сложными конструкциями.
+	    Если вы получаете ошибки, такие как <literal>Malformed
+	      conditional</literal>, то может быть использован
+	    альтернативный синтаксис.</para>
+
+	  <programlisting>.if !empty(VARIABLE:MVALUE)
+# as an alternative to
+.if ${VARIABLE:MVALUE}</programlisting>
+	</note>
+      </sect2>
 
-    <sect1 id="makefile-wrkdir">
-      <title>Задание рабочего каталога</title>
+      <sect2>
+	<title>Вспомогательные макросы</title>
 
-      <para>Каждый порт распаковывается в рабочий каталог, который должен быть
-        доступным для записи.  В системе портов по умолчанию
-        <makevar>DISTFILES</makevar> распаковываются в каталог с именем
-        <literal>${DISTNAME}</literal>.  Другими словами, если вы
-        задали:</para>
+	<para>Существует несколько макросов, упрощающих запись условных
+	  значений, которые отличаются в зависимости от набора
+	  параметров.</para>
 
-      <programlisting>PORTNAME=      foo
-PORTVERSION=   1.0</programlisting>
+	<para>Если переменная <makevar>OPTIONS_SUB</makevar> имеет
+	  значение <literal>yes</literal>, то каждый из указанных в
+	  <makevar>OPTIONS_DEFINE</makevar> параметров будет добавлен
+	  в <makevar>PLIST_SUB</makevar>.  Следующая запись:</para>
 
-      <para>то дистрибутивные файлы порта содержат каталог верхнего уровня,
-        <filename>foo-1.0</filename>, и все файлы расположены в этом
-        каталоге.</para>
+	<programlisting>OPTIONS_DEFINE=	OPT1
+OPTIONS_SUB=	yes</programlisting>
 
-      <para>Если это не ваш случай, то имеется несколько переменных, которые
-        вы можете переопределить.</para>
+	<para>соответствует:</para>
 
-      <sect2>
-        <title><makevar>WRKSRC</makevar></title>
+	<programlisting>OPTIONS_DEFINE=	OPT1
 
-        <para>Эта переменная задаёт имя каталога, который создаётся при
-          распаковке исходных файлов приложения.  В нашем предыдущем
-          примере если бы распаковка происходила в каталог с именем
-          <filename>foo</filename> (а не
-          <filename>foo-1.0</filename>), то вы должны написать:</para>
+.include &lt;bsd.port.options.mk&gt;
 
-        <programlisting>WRKSRC=      ${WRKDIR}/foo</programlisting>
+.if ${PORT_OPTIONS:MOPT1}
+PLIST_SUB+=	OPT1=""
+.else
+PLIST_SUB+=	OPT1="@comment "
+.endif</programlisting>
 
-        <para>или, как вариант</para>
+	<para><makevar>X_CONFIGURE_ENABLE</makevar> дописывает в
+	  <makevar>CONFIGURE_ARGS</makevar> строку
+	  <literal>--enable-${X_CONFIGURE_ENABLE}</literal> или
+	  <literal>--disable-${X_CONFIGURE_ENABLE}</literal> в
+	  соответствии с состоянием <makevar>X</makevar>.  Следующая
+	  запись:</para>
 
-        <programlisting>WRKSRC=      ${WRKDIR}/${PORTNAME}</programlisting>
-      </sect2>
+	<programlisting>OPTIONS_DEFINE=	OPT1
+OPT1_CONFIGURE_ENABLE=	test</programlisting>
 
-      <sect2>
-        <title><makevar>NO_WRKSUBDIR</makevar></title>
+	<para>соответствует:</para>
 
-        <para>Если порт вообще не распаковывается ни в какой каталог, то вы
-          должны задать переменную <makevar>NO_WRKSUBDIR</makevar> для указания
-          на этот факт.</para>
+	<programlisting>OPTIONS_DEFINE=	OPT1
 
-        <programlisting>NO_WRKSUBDIR= yes</programlisting>
-      </sect2>
-    </sect1>
+.include &lt;bsd.port.options.mk&gt;
 
-    <sect1 id="conflicts">
-      <title>Разрешение конфликтов</title>
+.if ${PORT_OPTIONS:MOPT1}
+CONFIGURE_ARGS+=	--enable-test
+.else
+CONFIGURE_ARGS+=	--disable-test
+.endif</programlisting>
 
-      <para>Для регистрации конфликта между пакетами и портами используются
-	три различные переменные: <makevar>CONFLICTS</makevar>,
-	<makevar>CONFLICTS_INSTALL</makevar> и
-	<makevar>CONFLICTS_BUILD</makevar>.</para>
+	<para><makevar>X_CONFIGURE_WITH</makevar> дописывает в
+	  <makevar>CONFIGURE_ARGS</makevar> строку
+	  <literal>--with-${X_CONFIGURE_WITH}</literal> или
+	  <literal>--without-${X_CONFIGURE_WITH}</literal> в
+	  соответствии с состоянием <makevar>X</makevar>.  Следующая
+	  запись:</para>
 
-      <note>
-	<para>Переменные регистрации конфликта автоматически определяют
-	  переменную <makevar>IGNORE</makevar>, которая более подробно
-	  описана в <xref linkend="dads-noinstall"/>.</para>
-      </note>
+	<programlisting>OPTIONS_DEFINE=	OPT1
+OPT1_CONFIGURE_WITH=	test</programlisting>
 
-      <para>При удалении одного из конфликтующих портов целесообразно
-	сохранить записи <makevar>CONFLICTS</makevar> в тех других портах
-	в течении нескольких месяцев, чтобы позаботиться о тех пользователей,
-	которые обновляются от случая к случаю.</para>
+	<para>соответствует:</para>
 
-      <sect2>
-	<title><makevar>CONFLICTS_INSTALL</makevar></title>
+	<programlisting>OPTIONS_DEFINE=	OPT1
 
-	<para>Если ваш пакет не может существовать вместе с другими
-	  (из-за конфликта файлов, несовместимости времени выполнения и так
-	  далее), перечислите имена остальных пакетов в переменной
-	  <makevar>CONFLICTS_INSTALL</makevar>.  Здесь вы можете использовать
-	  шаблоны командного интерпретатора, такие как <literal>*</literal>
-	  и <literal>?</literal>.  Имена пакетов должны выглядеть так же,
-	  как в <filename>/var/db/pkg</filename>.  Пожалуйста, убедитесь,
-	  что <makevar>CONFLICTS_INSTALL</makevar> не содержит пакет самого
-	  этого порта.  В противном случае не будет работать установка с
-	  использованием переменной <makevar>FORCE_PKG_REGISTER</makevar>.
-	  Проверка CONFLICTS_INSTALL выполняется после процесса сборки и
-	  до процесса установки.</para>
-      </sect2>
+.include &lt;bsd.port.options.mk&gt;
 
-      <sect2>
-	<title><makevar>CONFLICTS_BUILD</makevar></title>
+.if ${PORT_OPTIONS:MOPT1}
+CONFIGURE_ARGS+=	--with-test
+.else
+CONFIGURE_ARGS+=	--without-test
+.endif</programlisting>
 
-	<para>Если ваш порт не может быть собран, когда уже установлен
-	  другой, перечислите имена остальных портов в переменной
-	  <makevar>CONFLICTS_BUILD</makevar>.  Здесь вы можете использовать
-	  шаблоны командного интерпретатора, такие как <literal>*</literal>
-	  и <literal>?</literal>.  Имена пакетов должны выглядеть так же,
-	  как в <filename>/var/db/pkg</filename>.  Проверка CONFLICTS_BUILD
-	  выполняется до процесса сборки.  Конфликты сборки в получаемом
-	  пакете не записываются.</para>
-      </sect2>
+	<para>Значение переменной <makevar>X_CONFIGURE_ON</makevar>
+	  будет дописано в <makevar>CONFIGURE_ARGS</makevar> в
+	  соответствии с состоянием <makevar>X</makevar>.  Следующая
+	  запись:</para>
 
-      <sect2>
-	<title><makevar>CONFLICTS</makevar></title>
+	<programlisting>OPTIONS_DEFINE=	OPT1
+OPT1_CONFIGURE_ON=	--add-test</programlisting>
 
-	<para>Если ваш порт не может быть собран, когда уже установлен
-	  другой, а получаемый пакет не может существовать вместе с другими,
-	  перечислите имена остальных пакетов в переменной
-	  <makevar>CONFLICTS</makevar>.  Здесь вы можете использовать шаблоны
-	  командного интерпретатора, такие как <literal>*</literal> и
-	  <literal>?</literal>.  Имена пакетов должны выглядеть так же, как
-	  в <filename>/var/db/pkg</filename>.  Пожалуйста, убедитесь, что
-	  <makevar>CONFLICTS</makevar> не содержит пакет самого этого порта.
-	  В противном случае не будет работать установка с использованием
-	  переменной <makevar>FORCE_PKG_REGISTER</makevar>.  Проверка
-	  CONFLICTS выполняется до процессов сборки и установки.</para>
-      </sect2>
-    </sect1>
+	<para>соответствует:</para>
 
-    <sect1 id="install">
-      <title>Установка файлов</title>
+	<programlisting>OPTIONS_DEFINE=	OPT1
 
-      <sect2 id="install-macros">
-	<title>Макросы INSTALL_*</title>
+.include &lt;bsd.port.options.mk&gt;
 
-	<para>Используйте макросы, которые есть в файле
-	  <filename>bsd.port.mk</filename> для обеспечения правильных прав
-	  доступа и владения файлов в своих целях
-	  <maketarget>*-install</maketarget>.</para>
+.if ${PORT_OPTIONS:MOPT1}
+CONFIGURE_ARGS+=	--add-test
+.endif</programlisting>
 
-	<itemizedlist>
-	  <listitem>
-	    <para><makevar>INSTALL_PROGRAM</makevar> - это команда для
-	      установки бинарных выполнимых файлов.</para>
-	  </listitem>
+	<para>Значение переменной <makevar>X_CONFIGURE_OFF</makevar>
+	  будет дописано в <makevar>CONFIGURE_ARGS</makevar> в
+	  соответствии с состоянием <makevar>X</makevar>.  Следующая
+	  запись:</para>
 
-	  <listitem>
-	    <para><makevar>INSTALL_SCRIPT</makevar> - это команда для установки
-	      выполнимых скриптов.</para>
-	  </listitem>
+	<programlisting>OPTIONS_DEFINE=	OPT1
+OPT1_CONFIGURE_OFF=	--no-test</programlisting>
 
-	  <listitem>
-	    <para><makevar>INSTALL_LIB</makevar> - это команда для установки
-	      динамических библиотек.</para>
-	  </listitem>
+	<para>соответствует:</para>
+
+	<programlisting>OPTIONS_DEFINE=	OPT1
+.include &lt;bsd.port.options.mk&gt;
+.if ! ${PORT_OPTIONS:MOPT1}
+CONFIGURE_ARGS+=	--no-test
+.endif</programlisting>
+
+	<para>Значение переменной <makevar>X_CMAKE_ON</makevar> будет
+	  дописано в <makevar>CMAKE_ARGS</makevar> в соответствии с
+	  состоянием <makevar>X</makevar>.  Следующая запись:</para>
+
+	<programlisting>OPTIONS_DEFINE=	OPT1
+OPT1_CMAKE_ON=	-DTEST:BOOL=true</programlisting>
+
+	<para>соответствует:</para>
+
+	<programlisting>OPTIONS_DEFINE=	OPT1
+
+.include &lt;bsd.port.options.mk&gt;
+
+.if ${PORT_OPTIONS:MOPT1}
+CMAKE_ARGS+=	-DTEST:BOOL=true
+.endif</programlisting>
+
+	<para>Значение переменной <makevar>X_CMAKE_OFF</makevar> будет
+	  дописано в <makevar>CMAKE_ARGS</makevar> в соответствии с
+	  состоянием <makevar>X</makevar>.  Следующая запись:</para>
+
+	<programlisting>OPTIONS_DEFINE=	OPT1
+OPT1_CMAKE_OFF=	-DTEST:BOOL=false</programlisting>
+
+	<para>соответствует:</para>
+
+	<programlisting>OPTIONS_DEFINE=	OPT1
+
+.include &lt;bsd.port.options.mk&gt;
+
+.if ! ${PORT_OPTIONS:MOPT1}
+CMAKE_ARGS+=	-DTEST:BOOL=false
+.endif</programlisting>
+
+	<para>Для любой из следующих переменных:</para>

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201310232102.r9NL2KLD046460>