Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 22 Feb 2014 12:30:11 +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: r44029 - in head/ru_RU.KOI8-R/books/porters-handbook: . appendices keeping-up makefiles new-port pkg-files plist porting-dads porting-samplem porting-why quick-porting security slow-por...
Message-ID:  <201402221230.s1MCUB3Z037858@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pluknet
Date: Sat Feb 22 12:30:10 2014
New Revision: 44029
URL: http://svnweb.freebsd.org/changeset/doc/44029

Log:
  MFen r43840 et al.
  
  Break the porters handbook out into individual chapters.

Added:
  head/ru_RU.KOI8-R/books/porters-handbook/appendices/
  head/ru_RU.KOI8-R/books/porters-handbook/appendices/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/appendices/chapter.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/chapters.ent   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/keeping-up/
  head/ru_RU.KOI8-R/books/porters-handbook/keeping-up/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/keeping-up/chapter.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/makefiles/
  head/ru_RU.KOI8-R/books/porters-handbook/makefiles/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/makefiles/chapter.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/new-port/
  head/ru_RU.KOI8-R/books/porters-handbook/new-port/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/new-port/chapter.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/pkg-files/
  head/ru_RU.KOI8-R/books/porters-handbook/pkg-files/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/pkg-files/chapter.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/plist/
  head/ru_RU.KOI8-R/books/porters-handbook/plist/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/plist/chapter.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/porting-dads/
  head/ru_RU.KOI8-R/books/porters-handbook/porting-dads/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/porting-dads/chapter.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/porting-samplem/
  head/ru_RU.KOI8-R/books/porters-handbook/porting-samplem/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/porting-samplem/chapter.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/porting-why/
  head/ru_RU.KOI8-R/books/porters-handbook/porting-why/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/porting-why/chapter.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/quick-porting/
  head/ru_RU.KOI8-R/books/porters-handbook/quick-porting/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/quick-porting/chapter.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/security/
  head/ru_RU.KOI8-R/books/porters-handbook/security/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/security/chapter.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/slow-porting/
  head/ru_RU.KOI8-R/books/porters-handbook/slow-porting/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/slow-porting/chapter.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/special/
  head/ru_RU.KOI8-R/books/porters-handbook/special/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/special/chapter.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/testing/
  head/ru_RU.KOI8-R/books/porters-handbook/testing/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/testing/chapter.xml   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/upgrading/
  head/ru_RU.KOI8-R/books/porters-handbook/upgrading/Makefile   (contents, props changed)
  head/ru_RU.KOI8-R/books/porters-handbook/upgrading/chapter.xml   (contents, props changed)
Modified:
  head/ru_RU.KOI8-R/books/porters-handbook/Makefile
  head/ru_RU.KOI8-R/books/porters-handbook/book.xml
  head/ru_RU.KOI8-R/books/porters-handbook/uses.xml

Modified: head/ru_RU.KOI8-R/books/porters-handbook/Makefile
==============================================================================
--- head/ru_RU.KOI8-R/books/porters-handbook/Makefile	Sat Feb 22 11:36:40 2014	(r44028)
+++ head/ru_RU.KOI8-R/books/porters-handbook/Makefile	Sat Feb 22 12:30:10 2014	(r44029)
@@ -4,7 +4,7 @@
 # $FreeBSD$
 # $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/porters-handbook/Makefile,v 1.7 2003/09/26 02:34:16 andy Exp $
 #
-# Original revision: r42686
+# Original revision: r43849
 #
 
 #
@@ -27,6 +27,21 @@ INSTALL_ONLY_COMPRESSED?=
 
 # XML content
 SRCS=  book.xml
+SRCS+= porting-why/chapter.xml
+SRCS+= new-port/chapter.xml
+SRCS+= quick-porting/chapter.xml
+SRCS+= slow-porting/chapter.xml
+SRCS+= makefiles/chapter.xml
+SRCS+= special/chapter.xml
+SRCS+= plist/chapter.xml
+SRCS+= pkg-files/chapter.xml
+SRCS+= testing/chapter.xml
+SRCS+= upgrading/chapter.xml
+SRCS+= security/chapter.xml
+SRCS+= porting-dads/chapter.xml
+SRCS+= porting-samplem/chapter.xml
+SRCS+= keeping-up/chapter.xml
+SRCS+= appendices/chapter.xml
 SRCS+= uses.xml
 SRCS+= versions.xml
 
@@ -55,4 +70,14 @@ IMAGES_LIB+=	callouts/21.png
 
 DOC_PREFIX?= ${.CURDIR}/../../..
 
+# Entities
+SRCS+= chapters.ent
+
+SYMLINKS=       ${DESTDIR} index.html handbook.html
+
+# Turn on all the chapters.
+CHAPTERS?= ${SRCS:M*chapter.xml}
+
+XMLFLAGS+= ${CHAPTERS:S/\/chapter.xml//:S/^/-i chap./}
+
 .include "${DOC_PREFIX}/share/mk/doc.project.mk"

Added: head/ru_RU.KOI8-R/books/porters-handbook/appendices/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/ru_RU.KOI8-R/books/porters-handbook/appendices/Makefile	Sat Feb 22 12:30:10 2014	(r44029)
@@ -0,0 +1,17 @@
+#
+# Build the Porters Handbook with just the content from this chapter.
+#
+# $FreeBSD$
+#
+# Original revision: r43840
+#
+
+CHAPTERS=	appendices/chapter.xml
+
+VPATH=		..
+
+MASTERDOC=	${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX}
+
+DOC_PREFIX?=	${.CURDIR}/../../../..
+
+.include "../Makefile"

Added: head/ru_RU.KOI8-R/books/porters-handbook/appendices/chapter.xml
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/ru_RU.KOI8-R/books/porters-handbook/appendices/chapter.xml	Sat Feb 22 12:30:10 2014	(r44029)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="koi8-r"?>
+<!--
+     The FreeBSD Russian Documentation Project
+
+     $FreeBSD$
+
+     Original revision: r43844
+-->
+
+<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="appendices">
+
+    <title>Приложения</title>
+
+    <sect1 xml:id="uses-values">
+      <title>Значения <varname>USES</varname></title>
+
+      <table>
+	<title>Значения <varname>USES</varname></title>
+
+	<tgroup cols="3">
+	  <thead>
+	    <row>
+	      <entry>Наименование</entry>
+	      <entry>Аргументы</entry>
+	      <entry>Описание</entry>
+	    </row>
+	  </thead>
+	  <tbody valign="top">
+	    &values.uses;
+	  </tbody>
+	</tgroup>
+      </table>
+    </sect1>
+
+    <sect1 xml:id="freebsd-versions">
+      <title>Значения <literal>__FreeBSD_version</literal></title>
+
+      <para>Ниже для справки приводится перечень значений
+        <literal>__FreeBSD_version</literal> в виде, который определён в
+	<link xlink:href="http://svnweb.FreeBSD.org/base/head/sys/sys/param.h?view=markup">sys/param.h</link>:</para>;
+
+      <table frame="none">
+        <title>Значения <literal>__FreeBSD_version</literal></title>
+
+        <tgroup cols="3">
+	  <thead>
+	    <row>
+	      <entry>Значение</entry>
+	      <entry>Дата</entry>
+	      <entry>Релиз</entry>
+	    </row>
+	  </thead>
+
+	  <tbody>
+	    &values.versions;
+	  </tbody>
+	</tgroup>
+      </table>
+
+      <note>
+	<para>Заметьте, что 2.2-STABLE иногда идентифицирует себя как
+	  <quote>2.2.5-STABLE</quote> после 2.2.5-RELEASE.  Такой принцип
+	  использовался год и месяц, но мы решили изменить его на более
+	  однозначную систему нумерации старший/младший, начиная с версии
+	  2.2.	Это объясняется тем, что параллельная разработка в нескольких
+	  ветках делает непрактичным идентификацию релизов просто по их
+	  реальным датам выпуска.  Если вы сейчас делаете порт, вам не стоит
+	  заботиться о старых версиях -CURRENT; они перечислены здесь просто
+	  в информационных целях.</para>
+      </note>
+    </sect1>
+  </chapter>
+

Modified: head/ru_RU.KOI8-R/books/porters-handbook/book.xml
==============================================================================
--- head/ru_RU.KOI8-R/books/porters-handbook/book.xml	Sat Feb 22 11:36:40 2014	(r44028)
+++ head/ru_RU.KOI8-R/books/porters-handbook/book.xml	Sat Feb 22 12:30:10 2014	(r44029)
@@ -3,16 +3,20 @@
 	"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd" [
 <!ENTITY values.uses SYSTEM "uses.xml">
 <!ENTITY values.versions SYSTEM "versions.xml">
-]>
+
 <!--
      The FreeBSD Russian Documentation Project
 
      $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: r43827
+     Original revision: r43840
 -->
 
+<!ENTITY % chapters SYSTEM "chapters.ent">
+%chapters;
+]>
+
 <book xmlns="http://docbook.org/ns/docbook"
   xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
   xml:lang="ru">
@@ -59,12671 +63,19 @@
     <releaseinfo>$FreeBSD$</releaseinfo>
   </info>
 
-  <chapter xml:id="why-port">
-    <title>Введение</title>
-
-    <para>Коллекция портов &os; является способом, используемым
-      практически каждым для установки приложений ("портов") на &os;.
-      Как и почти всё остальное во &os;, эта система в основном является
-      добровольно поддерживаемым начинанием.  Важно иметь это в виду при
-      чтении данного документа.</para>
-
-    <para>Во &os; каждый может прислать новый порт либо изъявить желание
-      поддерживать существующий порт, если его никто ещё никто не
-      поддерживает&mdash;вам не нужно иметь никаких особых привилегий на
-      внесение изменений, чтобы это делать.</para>
-  </chapter>
-
-  <chapter xml:id="own-port">
-    <title>Как самому сделать новый порт</title>
-
-    <para>Итак, вы интересуетесь, как создать собственный порт или
-      обновить существующий?  Великолепно!</para>
-
-    <para>Ниже находятся некоторые указания по созданию нового порта для
-      &os;.  Если вы хотите обновить существующий порт, вы должны
-      прочесть их, а затем <xref linkend="port-upgrading"/>.</para>
-
-    <para>Если этот документ недостаточно подробен, вы должны обратиться к
-      файлу <filename>/usr/ports/Mk/bsd.port.mk</filename>, который
-      включается в make-файл каждого порта.  Он хорошо прокомментирован, и
-      даже если вы не занимаетесь хакингом make-файлов каждодневно,  из него
-      вы сможете узнать много нового.  Кроме того, конкретные вопросы можно
-      задать, послав письмо на адрес &a.ports;.</para>
-
-    <note>
-      <para>Только часть переменных
-        (<varname><replaceable>VAR</replaceable></varname>), которые могут быть
-        переопределены, описаны в этом документе.  Большинство (если не все)
-        описаны в начале файла <filename>/usr/ports/Mk/bsd.port.mk</filename>;
-        остальные, скорее всего, тоже там описаны.  Заметьте, что
-        в этом файле используется нестандартная настройка шага табуляции:
-        <application>Emacs</application> и <application>Vim</application>
-        должны распознать это при загрузке файла.  Как &man.vi.1;,
-        так и &man.ex.1; могут быть настроены на использование
-        правильного значения выдачей команды <command>:set tabstop=4</command>
-        после загрузки файла.</para>
-    </note>
-
-    <para>
-      Ищете, с чего бы начать попроще? Посмотрите на <link xlink:href="http://wiki.freebsd.org/WantedPorts">перечень запрошенных
-	портов</link>, есть ли там такие, над которыми вы можете работать.
-    </para>
-  </chapter>
-
-  <chapter xml:id="quick-porting">
-    <title>Быстрое портирование</title>
-
-    <para>В этом разделе описано, как создать новый порт на скорую руку.
-      Во многих случаях этого бывает не достаточно, так что вам нужно будет
-      прочитать документ дальше.</para>
-
-    <para>Во-первых, скачайте оригинальный tar-файл и поместите его в каталог
-      <varname>DISTDIR</varname>, который по умолчанию есть не что иное, как
-      <filename>/usr/ports/distfiles</filename>.</para>
-
-    <note>
-      <para>Здесь предполагается, что программное обеспечение компилируется
-        без проблем как есть, то есть для работы приложения на вашей системе
-        &os; не потребовалось абсолютно никаких изменений.  Если
-        требовалось что-то изменить, то вам придется обратиться также и к
-        следующему разделу.</para>
-    </note>
-
-    <note>
-      <para>Перед началом портирования рекомендуется установить
-	переменную &man.make.1; <varname>DEVELOPER</varname> в
-	<filename>/etc/make.conf</filename>.</para>
-
-      <screen>&prompt.root; <userinput>echo DEVELOPER=yes >> /etc/make.conf</userinput></screen>
-
-      <para>Эта настройка включает <quote>режим разработчика</quote>,
-	в котором отображаются предупреждения при использовании
-	устаревших конструкций и задействуются некоторые дополнительные
-	проверки при вызове команды <command>make</command>.</para>
-    </note>
-
-    <sect1 xml:id="porting-makefile">
-      <title>Создание файла <filename>Makefile</filename></title>
-
-      <para>Минимальный <filename>Makefile</filename> будет выглядеть
-        примерно так:</para>
-
-      <programlisting># &dollar;FreeBSD&dollar;
-
-PORTNAME=      oneko
-PORTVERSION=   1.1b
-CATEGORIES=    games
-MASTER_SITES=  ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/
-
-MAINTAINER=    youremail@example.com
-COMMENT=       Cat chasing a mouse all over the screen
-
-.include &lt;bsd.port.mk&gt;</programlisting>
-
-      <note>
-	<para>В некоторых случаях в заголовке <filename>Makefile</filename>
-	  существующего порта могут содержаться дополнительные строки,
-	  такие как название порта и дата его создания.
-	  Эта дополнительная информация была объявлена устаревшей
-	  и находится в процессе удаления.</para>
-      </note>
-
-      <para>Посмотрим, сможете ли вы его понять.  Не обращайте внимание на
-        содержимое строчки <literal>&dollar;FreeBSD&dollar;</literal>, она
-        будет заполнена автоматически системой
-        <application>Subversion</application>, когда порт будет
-        импортирован в наше дерево портов.  Вы можете найти более подробный
-        пример в разделе <link linkend="porting-samplem">пример
-        Makefile</link>.</para>
-    </sect1>
-
-    <sect1 xml:id="porting-desc">
-      <title>Создание информационных файлов</title>
-
-      <para>Имеется два информационных файла, которые требуются для любого
-        порта, вне зависимости от того, является ли он пакетом или нет.  Это
-        <filename>pkg-descr</filename> и <filename>pkg-plist</filename>.
-        Префикс <filename>pkg-</filename> отличает их от других файлов.</para>
-
-      <sect2>
-        <title><filename>pkg-descr</filename></title>
-
-        <para>Это более подробное краткое описание порта.  От одного до
-          нескольких абзацев, кратко описывающих, что представляет собой
-          порт, будет достаточно.</para>
-
-        <note>
-          <para>Это <emphasis>не</emphasis> руководство и не подробнейшее
-            описание того, как использовать или компилировать порт!
-            <emphasis>Пожалуйста, будьте внимательны при копировании текста
-            из <filename>README</filename> или страниц
-            справочника</emphasis>; слишком часто они не являются кратким
-            описанием порта или имеют неудобный формат (например, страницы
-	    справочника выровнены пробелами, что особенно плохо
-	    смотрится с моноширинными шрифтами).</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>
-
-        <programlisting>This is a port of oneko, in which a cat chases a poor mouse all over
-the screen.
- :
-(etc.)
-
-WWW: http://www.oneko.org/</programlisting>;
-      </sect2>
-
-      <sect2>
-        <title><filename>pkg-plist</filename></title>
-
-        <para>Здесь перечисляются все файлы, устанавливаемые портом.  Его
-          также называют <quote>списком для упаковки</quote>, потому что
-          пакет генерируется упаковкой файлов, которые здесь указаны.
-          Имена путей указываются относительно установочного префикса
-          (обычно <filename>/usr/local</filename>).
-          Если порт во время установки создает каталоги, убедитесь,
-	  что добавлены строки <literal>@dirrm</literal> для удаления
-	  каталогов при удалении пакета.</para>
-
-        <para>Вот маленький пример:</para>
-
-        <programlisting>bin/oneko
-man/man1/oneko.1.gz
-lib/X11/app-defaults/Oneko
-lib/X11/oneko/cat1.xpm
-lib/X11/oneko/cat2.xpm
-lib/X11/oneko/mouse.xpm
-@dirrm lib/X11/oneko</programlisting>
-
-        <para>Обратитесь к странице справочной системы по команде
-          &man.pkg-create.8; с подробным описанием формата списка
-          упаковки.</para>
-
-        <note>
-          <para>Рекомендуется, чтобы имена файлов в этом списке были
-	    отсортированы в алфавитном порядке.  Это позволит значительно
-	    облегчить сверку изменений при обновлении порта.</para>
-	</note>
-
-	<note>
-	  <para>Создание списка упаковки вручную может оказаться весьма
-	    трудоёмкой задачей.  Если порт устанавливает большое количество
-	    файлов, раздел об <link linkend="plist-autoplist">автоматическом построении списка
-	    упаковки</link> может помочь сэкономить время.</para>
-        </note>
-
-        <para>Существует только одно исключение, когда у порта может
-          отсутствовать <filename>pkg-plist</filename>.  Если порт
-          устанавливает лишь несколько файлов, а возможно, и каталогов, то
-          они могут быть перечислены в переменных
-          <varname>PLIST_FILES</varname> и <varname>PLIST_DIRS</varname>,
-          соответственно, внутри файла <filename>Makefile</filename> порта.
-          К примеру, мы можем обойтись без файла
-          <filename>pkg-plist</filename> у приведённого выше порта
-          <filename>oneko</filename>, добавив следующие строки в
-          <filename>Makefile</filename>:</para>
-
-        <programlisting>PLIST_FILES=    bin/oneko \
-		man/man1/oneko.1.gz \
-                lib/X11/app-defaults/Oneko \
-                lib/X11/oneko/cat1.xpm \
-                lib/X11/oneko/cat2.xpm \
-                lib/X11/oneko/mouse.xpm
-PLIST_DIRS=     lib/X11/oneko</programlisting>
-
-        <para>Конечно, переменная <varname>PLIST_DIRS</varname> не должна
-          задаваться, если порт не устанавливает никаких каталогов.</para>
-
-	<note>
-	  <para>Несколько портов могут совместно использовать общий
-	    каталог.  В этом случае <varname>PLIST_DIRS</varname>
-	    следует заменить на <varname>PLIST_DIRSTRY</varname>, так
-	    чтобы каталог удалялся только если он пуст, а иначе
-	    игнорировался.  Использование <varname>PLIST_DIRS</varname>
-	    и <varname>PLIST_DIRSTRY</varname> аналогично
-	    <literal>@dirrm</literal> и <literal>@dirrmtry</literal>
-	    в <filename>pkg-plist</filename>, описание которых
-	    входит в <xref linkend="plist-dir-cleaning"/>.</para>
-	</note>
-
-        <para>Обратной стороной такого способа перечисления файлов и
-          каталогов порта является невозможность использования
-          последовательностей команд, описанных в &man.pkg-create.8;.
-          Поэтому он подходит для простых портов, что делает их ещё более
-          простыми.  Одновременно с этим положительным моментом является
-          уменьшение количества файлов в коллекции портов.  Пожалуйста,
-          подумайте над использованием этой техники, прежде чем создавать
-          <filename>pkg-plist</filename>.</para>
-
-        <para>Далее мы увидим, как можно использовать файлы
-          <filename>pkg-plist</filename> и <varname>PLIST_FILES</varname>
-          выполнения <link linkend="plist">более сложных
-          задач</link>.</para>
-      </sect2>
-    </sect1>
-
-    <sect1 xml:id="porting-checksum">
-      <title>Создание файла с контрольной суммой</title>
-
-      <para>Просто введите команду <command>make makesum</command>.
-        Правила утилиты make автоматически сгенерируют файл
-        <filename>distinfo</filename>.</para>
-
-      <para>Если у извлекаемого файла регулярно меняется контрольная
-	сумма и вы не сомневаетесь в надежности источника (т.е. он получен
-	из CD производителя, либо ежедневно обновляется документация), то вы
-	должны указать эти файлы в переменной <varname>IGNOREFILES</varname>.
-	Тогда контрольная сумма при выполнении <command>make makesum</command>
-	для этого файла создаваться не будет, а вместо этого для него будет
-	установлено значение <literal>IGNORE</literal>.</para>
-    </sect1>
-
-    <sect1 xml:id="porting-testing">
-      <title>Тестирование порта</title>
-
-      <para>Вы должны удостовериться, что правила построения порта выполняют
-	именно то, что вы хотите, включая создание пакета для порта.  Вот
-	те важные вещи, которые вы должны проверить.</para>
-
-      <itemizedlist>
-	<listitem>
-	  <para><filename>pkg-plist</filename> не содержит ничего сверх того,
-	    что устанавливается портом</para>
-	</listitem>
-
-	<listitem>
-	  <para><filename>pkg-plist</filename> содержит абсолютно все, что
-	    устанавливается портом</para>
-	</listitem>
-
-	<listitem>
-	  <para>Порт может быть установлен с помощью
-	    указания цели <buildtarget>install</buildtarget>.  Это
-	    позволяет убедиться в правильной работе сценария
-	    установки.</para>
-	</listitem>
-
-	<listitem>
-	  <para>Порт может быть правильным образом удалён с помощью
-	    указания цели <buildtarget>deinstall</buildtarget>.  Это
-	    позволяет убедиться в правильной работе сценария
-	    удаления.</para>
-	</listitem>
-
-	<listitem>
-	  <para>Следует убедиться, что <command>make package</command>
-	    можно запустить из-под обычного пользователя (то есть,
-	    не из-под <systemitem class="username">root</systemitem>).
-	    Если это не так, в <filename>Makefile</filename> порта
-	    должно быть добавлено <literal>NEED_ROOT=yes</literal>.</para>
-	</listitem>
-      </itemizedlist>
-
-      <procedure>
-	<title>Рекомендуемый порядок проверки</title>
-
-	<step>
-	  <para><command>make stage</command></para>
-	</step>
-
-	<step>
-	  <para><command>make check-orphans</command></para>
-	</step>
-
-	<step>
-	  <para><command>make package</command></para>
-	</step>
-
-	<step>
-	  <para><command>make install</command></para>
-	</step>
-
-	<step>
-	  <para><command>make deinstall</command></para>
-	</step>
-
-	<step>
-	  <para><command>pkg add package-filename</command></para>
-	</step>
-
-	<step>
-	  <para><command>make package</command> (из-под
-	    пользователя)</para>
-	</step>
-      </procedure>
-
-      <para>Убедитесь, что на любом из этапов не выдается никаких
-	предупреждений.</para>
-
-      <para>Основательное автоматизированное тестирование может быть
-	выполнено при помощи
-	<package role="port">ports-mgmt/tinderbox</package> или
-	<package role="port">ports-mgmt/poudriere</package> из Коллекции
-	Портов.  Эти приложения используют <literal>jails</literal>,
-	в которых проверяются все перечисленные выше этапы без
-	изменения состояния основной системы.</para>
-    </sect1>
-
-    <sect1 xml:id="porting-portlint">
-      <title>Проверка вашего порта утилитой
-	<command>portlint</command></title>
-
-      <para>Будьте добры, пользуйтесь утилитой <command>portlint</command>
-	для проверки того, что ваш порт соответствует нашим рекомендациям.
-	Программа <package role="port">ports-mgmt/portlint</package>
-	является частью Коллекции
-	Портов.  В частности, вы можете захотеть проверить, правильно ли
-	сформирован файл <link linkend="porting-samplem">Makefile</link> и
-	соответствующим ли образом именован <link linkend="porting-pkgname">пакет</link>.</para>
-    </sect1>
-
-    <sect1 xml:id="porting-submitting">
-      <title>Посылка нового порта</title>
-
-      <para>Перед посылкой нового порта прочитайте раздел о том, что
-	<link linkend="porting-dads">можно и нельзя</link> делать.</para>
-
-      <para>Когда вы наконец довольны своим первым портом, единственное,
-	что осталось сделать, это включить его в основное дерево портов
-	&os; и осчастливить этим всех остальных.  Нам не нужен ни
-	каталог <filename>work</filename>, ни пакет
-	<filename>pkgname.tgz</filename>, так что удалите их прямо
-	сейчас.</para>
-
-	<para>Затем получите файл &man.shar.1;.  Предполагая, что порт
-	называется oneko, перейдите в каталог выше, где находится
-	каталог <literal>oneko</literal>, и наберите:
-	<command>shar `find oneko` &gt; oneko.shar</command></para>
-
-      <para>Включите <filename>oneko.shar</filename> в сообщение об
-	ошибке и пошлите его с помощью &man.send-pr.1;.  Обратитесь к
-	разделу <link
-	  xlink:href="&url.articles.contributing;/contrib-how.html#CONTRIB-GENERAL">
-        Сообщения об ошибках и общие замечания</link> для получения
-        подробной информации о &man.send-pr.1;).</para>
-
-      <para>Укажите в сообщении категорию <literal>ports</literal> и
-	класс <literal>change-request</literal>.
-	<emphasis>Не</emphasis> указывайте, что сообщение имеет статус
-	<literal>confidential</literal>!  Добавьте краткое описание
-	программы в поле <quote>Description</quote> отправляемого PR
-	(например, содержимое <varname>COMMENT</varname> в сокращённом
-	варианте) и сам файл в виде архива <filename>.shar</filename>
-	в поле <quote>Fix</quote>.</para>
-
-      <note>
-	<para>Хорошее описание в заголовке сообщения о проблеме
-	  значительно облегчает работу коммиттеров портов.  Для новых
-	  портов мы предпочитаем нечто вроде <quote>New port:
-	    &lt;категория&gt;/&lt;название порта&gt; &lt;краткое
-	    описание порта&gt;</quote>.  Следование этой схеме
-	  упрощает и ускоряет начало работы по добавлению нового
-	  порта.</para>
-      </note>
-
-      <para>Повторим ещё раз, что <emphasis>не нужно включать ни оригинальный
-	файл с дистрибутивом, ни каталог <filename>work</filename>,
-	ни пакет, построенный вами командой
-	<command>make package</command></emphasis>; для новых портов
-	используйте &man.shar.1;, но не &man.diff.1;.</para>
-
-      <para>После отправки порта, пожалуйста, потерпите.  Время,
-	необходимое для включения нового порта во &os;, может занимать
-	от нескольких дней до нескольких месяцев.  <link
-	  xlink:href="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?category=ports">;
-	Здесь</link> можно увидеть список ожидающих PR для портов.</para>
-
-      <para>После рассмотрения нового порта мы при необходимости вам
-	ответим, а затем включим порт в наше дерево.  Ваше имя также
-	будет добавлено в список <link
-	  xlink:href="&url.articles.contributors;/contrib-additional.html">
-	  Дополнительных контрибуторов проекта &os;</link> и другие
-	файлы.</para>
-    </sect1>
-  </chapter>
-
-  <chapter xml:id="slow">
-    <title>Медленное портирование</title>
-
-    <para>Итак, все оказалось не так уж и просто, и порт потребовал
-      некоторых модификаций для того, чтобы заставить его работать.  В этом
-      разделе мы расскажем, шаг за шагом, как его модифицировать, чтобы он
-      работал с нашей системой портов.</para>
-
-    <sect1 xml:id="slow-work">
-      <title>Как всё это работает</title>
-
-      <para>Во-первых, когда пользователь дает в своем каталоге с портом
-	команду <command>make</command>, происходит целая череда событий.
-	Во время чтения этого текста может оказаться полезным иметь файл
-	<filename>bsd.port.mk</filename> открытым в другом окне, что сильно
-	поможет в их понимании.</para>
-
-      <para>Но не волнуйтесь сильно, если вы не до конца понимаете, что
-	делается в <filename>bsd.port.mk</filename>, не так уж много людей
-	его понимает... <!-- smiley --><emphasis>:-&gt;</emphasis></para>
-
-      <procedure>
-	<step>
-	  <para>Запускается цель <buildtarget>fetch</buildtarget>.  Цель
-	    <buildtarget>fetch</buildtarget> отвечает за то, что архив исходных
-	    текстов имеется в наличии локально в каталоге
-	    <varname>DISTDIR</varname>.  Если цель
-	    <buildtarget>fetch</buildtarget> не может найти требуемые файлы в
-	    каталоге <varname>DISTDIR</varname>, то они будут искаться по
-	    указателю URL <varname>MASTER_SITES</varname>, который
-	    устанавливается в Makefile, а также на наших FTP зеркалах,
-            куда мы по возможности помещаем дистрибутивные файлы для архива.
-	    Затем она попытается сгрузить указанный файл с помощью
-	    <varname>FETCH</varname>, полагая, что запрашивающая машина имеет
-	    прямое подключение к Интернет.  Если файл скачается удачно, то
-	    он будет помещен в каталог <varname>DISTDIR</varname> для
-	    последующего использования и обработки.</para>
-	</step>
-
-	<step>
-	  <para>Выполняется цель <buildtarget>extract</buildtarget>.  Она ищет
-	    дистрибутивный файл порта (как правило, tar-архив
-	    <command>gzip</command>) в
-	    каталоге <varname>DISTDIR</varname> и распаковывает его во
-	    временный каталог, задаваемый переменной
-	    <varname>WRKDIR</varname> (по умолчанию
-	    <filename>work</filename>).</para>
-	</step>
-
-	<step>
-	  <para>Выполняется цель <buildtarget>patch</buildtarget>.  Во-первых,
-	    применяются все патчи, заданные переменной
-	    <varname>PATCHFILES</varname>.  Во-вторых, если какие-либо файлы с
-            патчами, носящие имена
-            <filename>patch-*</filename>, имеются в
-	    подкаталоге <varname>PATCHDIR</varname> (по умолчанию это каталог
-            <filename>files</filename>), то они применяются в этот момент в
-            алфавитном порядке.</para>
-	</step>
-
-	<step>
-	  <para>Запускается цель <buildtarget>configure</buildtarget>.  Здесь
-	    может выполняться любая из многих различных вещей.</para>
-
-	  <orderedlist>
-	    <listitem>
-	      <para>Если существует скрипт
-		<filename>scripts/configure</filename>, то он запускается.
-	      </para>
-	    </listitem>
-
-	    <listitem>
-	      <para>Если задана переменная <varname>HAS_CONFIGURE</varname>
-		или <varname>GNU_CONFIGURE</varname>, то запускается скрипт
-		<filename>WRKSRC/configure</filename>.
-	      </para>
-	    </listitem>
-	  </orderedlist>
-	</step>
-
-	<step>
-	  <para>Выполняется цель <buildtarget>build</buildtarget>.  Она
-	    отвечает за переход в собственный рабочий каталог порта
-	    (<varname>WRKSRC</varname>) и его построение.</para>
-	</step>
-
-	<step>
-	  <para>Выполняется цель <buildtarget>stage</buildtarget>.
-	    Конечный набор построенных файлов помещается во временный
-	    каталог (<varname>STAGEDIR</varname>, смотрите
-	    <xref linkend="staging"/>).  Иерархия этого
-	    каталога отражает иерархию каталогов системы, в которую
-	    данный пакет будет устанавливаться.</para>
-	</step>
-
-	<step>
-	  <para>Выполняется цель <buildtarget>install</buildtarget>.
-	    В систему копируются файлы, перечисленные в pkg-plist
-	    порта.</para>
-	</step>
-      </procedure>
-
-      <para>Выше перечислены стандартные действия.  Кроме того, вы сами
-	можете определить цели
-	<buildtarget>pre-<replaceable>что-то</replaceable></buildtarget> или
-	<buildtarget>post-<replaceable>что-то</replaceable></buildtarget>,
-	или создать скрипты с такими именами в подкаталоге
-	<filename>scripts</filename>, и они будут запущены до или после
-	выполнения действий по умолчанию.</para>
-
-      <para>Например, если у вас есть цель
-	<buildtarget>post-extract</buildtarget>, определённая в вашем файле
-	<filename>Makefile</filename> и файл <filename>pre-build</filename> в
-        подкаталоге
-	<filename>scripts</filename>, то после выполнения обычных действий по
-	распаковке, будет вызвана цель <buildtarget>post-extract</buildtarget>
-	а скрипт <filename>pre-build</filename> будет выполнен перед
-	запуском стандартных правил построения.  Рекомендуется использовать
-	цели из <filename>Makefile</filename>, если действия достаточно
-	просты, потому что в дальнейшем будет проще определить, какие
-	нестандартные действия требует порт.</para>
-
-      <para>Действия по умолчанию выполняются целями
-	<buildtarget>do-<replaceable>что-то</replaceable></buildtarget> из
-	<filename>bsd.port.mk</filename>.  Например, команды для
-	распаковки порта находятся в цели
-	<buildtarget>do-extract</buildtarget>.  Если вам не хватает цели по
-	умолчанию, вы можете ее исправить, переопределив цель
-	<buildtarget>do-<replaceable>something</replaceable></buildtarget>
-	в вашем файле <filename>Makefile</filename>.</para>
-
-      <note>
-	<para><quote>Основные</quote> цели (к примеру,
-	  <buildtarget>extract</buildtarget>, <buildtarget>configure</buildtarget>
-          и так далее) не делают ничего больше,
-	  чем проверяют успешность завершения всех предыдущих шагов и
-	  вызывают настоящие цели или скрипты, и их не нужно менять.  Если
-	  вам нужно изменить распаковку, исправляйте
-	  <buildtarget>do-extract</buildtarget>, но никогда не меняйте способ
-          работы <buildtarget>extract</buildtarget>!  Кроме того, цель
-	  <buildtarget>post-deinstall</buildtarget> является недействительной
-	  и не выполняется инфраструктурой портов.</para>
-      </note>
-
-      <para>Теперь, когда вы представляете, что происходит, когда
-	пользователь набирает команду <command>make install</command>,
-	давайте пройдемся
-	через шаги, рекомендуемые для создания настоящего порта.</para>
-    </sect1>
-
-    <sect1 xml:id="slow-sources">
-      <title>Получение исходного кода</title>
-
-      <para>Получите оригинальные исходные тексты (обычно) в виде
-	упакованного tar-архива
-	(<filename>foo.tar.gz</filename> или
-	<filename>foo.tar.bz2</filename>)
-	и скопируйте его в каталог <varname>DISTDIR</varname>.	Всегда
-	используйте исходные тексты <emphasis>основной ветки
-	разработки</emphasis> везде, где это возможно.</para>
-
-      <para>Вам потребуется задать значение переменной
-        <varname>MASTER_SITES</varname> так, чтобы оно указывало на
-        местоположение оригинального tar-архива.  В файле
-        <filename>bsd.sites.mk</filename> вы найдёте краткие обозначения
-        для большинства популярных сайтов.  Пожалуйста, используйте эти
-        сайты&mdash;и соответствующие определения&mdash;везде, где это
-        возможно, чтобы избежать проблем повторения одной и той же информации
-        в базе источников.  Так как эти сайты со временем меняются, для
-        всех причастных поддержка становится настоящим кошмаром.</para>
-
-      <para>Если вы не можете найти FTP/HTTP сайт с хорошим подключением к
-	сети, или находите только сайты, которые имеют раздражающе
-	нестандартные форматы, то можете захотеть поместить копию на надежный
-	сервер FTP или HTTP, который вам доступен (например, ваша домашняя
-	страница).</para>
-
-      <para>Если вы не можете найти доступного и надёжного места для
-	помещения дистрибутивного файла, то мы сами сможем разместить его на
-        сервере <systemitem>ftp.FreeBSD.org</systemitem>; однако это наименее
-        рекомендуемое решение.  Дистрибутивный файл должен
-        быть помещён в каталог <filename>~/public_distfiles/</filename>
-        одного из пользователей машины <systemitem>freefall</systemitem>.  Попросите
-        того, кто коммиттил ваш порт, сделать это.  Этот человек также задаст
-        переменной <varname>MASTER_SITES</varname> значение
-        <varname>MASTER_SITE_LOCAL</varname>, а в переменной
-        <varname>MASTER_SITE_SUBDIR</varname> укажет своё имя пользователя
-        с машины <systemitem>freefall</systemitem>.</para>
-
-      <para>Если дистрибутивные файлы вашего порта постоянно меняются по
-	неизвестным причинам без изменения версий со стороны автора, остаётся
-        только поместить дистрибутив на вашу домашнюю Web-страницу и указать
-        её первой в списке <varname>MASTER_SITES</varname>.  Если можете,
-        попытайтесь договориться с автором порта об этом; это действительно
-        помогает в достижении некоторого управления исходным кодом.
-        Размещение собственной версии поможет избежать появления ошибок у
-        пользователей типа <errorname>checksum mismatch</errorname>, а
-	также уменьшит нагрузку на людей, сопровождающих наш FTP-сервер.
-	Также, если у порта имеется только один основной сервер, то
-	рекомендуется поместить архивную копию на свой сайт и указать его в
-	списке <varname>MASTER_SITES</varname> вторым.</para>
-
-      <para>Если вашему порту требуются дополнительные `патчи', доступные
-	в Интернет, скачайте также и их, поместив в каталог
-	<varname>DISTDIR</varname>.  Не волнуйтесь, если они находятся не
-	на том же сайте, откуда взят дистрибутивный архив, мы умеем
-	обрабатывать такие ситуации (смотрите описание <link linkend="porting-patchfiles">PATCHFILES</link> ниже).</para>
-    </sect1>
-
-    <sect1 xml:id="slow-modifying">
-      <title>Модификация порта</title>
-
-      <para>Распакуйте копию дистрибутивного файла в отдельный каталог и
-	внесите изменения, которые необходимы для того, чтобы порт
-	компилировался нормально в текущей версии &os;.
-	<emphasis>Тщательно отслеживайте</emphasis> все, что вы делаете,
-	этот процесс вам предстоит автоматизировать.  Все, включая удаление,
-	добавление или модификацию в файлах должны будут выполняться
-	автоматически с помощью скриптов или файлов патчей, когда вы
-	завершите работу над портом.</para>
-
-      <para>Если вашему порту во время компиляции, установки и настройки
-	требуется довольно много взаимодействовать с пользователем, то
-	посмотрите на один из классических скриптов
-	<application>Configure</application> Лэрри Уолла (Larry Wall) и
-	сделайте сами что-либо подобное.  Предназначение новой коллекции
-	портов - это сделать каждое приложение в стиле
-	<quote>plug-and-play</quote> настолько, насколько это вообще возможно
-	для конечного пользователя при минимальном использовании дискового
-	пространства.</para>
-
-      <note>
-	<para>Если явно не указано обратное, то патчи, скрипты и другие
-	  файлы, которые вы создали и предоставили для Коллекции Портов
-	  &os;, неявно подпадают под стандартные условия лицензии
-	  BSD.</para>
-      </note>
-    </sect1>
-
-    <sect1 xml:id="slow-patch">
-      <title>Создание патчей</title>
-
-      <para>Файлы, которые добавлялись или изменялись в процессе создания
-	порта, могут быть выявлены программой &man.diff.1;,
-        а результат работы этой программы может быть в дальнейшем передан
-	программе &man.patch.1;.  Такое действие с обычным файлом
-	подразумевает сохранение копии файла с первоначальным содержимым
-	перед внесением каких-либо изменений.</para>
-
-      <screen>&prompt.user; <userinput>cp <replaceable>file</replaceable> <replaceable>file</replaceable>.orig</userinput></screen>
-
-      <para>Патчи сохраняются в виде файлов с именем
-	<filename>patch-*</filename>, где
-	<replaceable>*</replaceable> обозначает путь к файлу,
-	к которому применяется патч, такой как
-        <filename>patch-Imakefile</filename> или
-        <filename>patch-src-config.h</filename>.</para>
-
-      <para>После того как файл был изменён, используется &man.diff.1;
-	для получения разницы между первоначальной и изменённой
-	версиями.  Параметр <option>-u</option> указывает &man.diff.1;
-	выводить разницу в <quote>унифицированном</quote> формате,
-	который также является предпочтительным.</para>
-
-      <screen>&prompt.user; <userinput>diff -u <replaceable>file</replaceable>.orig <replaceable>file</replaceable> &gt; patch-<replaceable>pathname-file</replaceable></userinput></screen>
-
-      <para>Для порождении патчей для новых добавляемых файлов
-	используется параметр <option>-N</option>, который заставляет
-	&man.diff.1; трактовать несуществующие прежде файлы как если
-	бы они существовали, но имели пустое содержимое:</para>
-
-      <screen>&prompt.user; <userinput>diff -u -N <replaceable>newfile</replaceable>.orig <replaceable>newfile</replaceable> &gt; patch-<replaceable>pathname-newfile</replaceable></userinput></screen>
-
-      <para>Файлы с патчами помещаются в
-        каталоге <varname>PATCHDIR</varname>
-	(как правило, это <filename class="directory">files/</filename>),
-	откуда они будут взяты автоматически.  Все патчи обязаны быть сделаны
-	относительно каталога <varname>WRKSRC</varname> (как правило,
-	это каталог, в который распаковывается исходный архив и где будет
-	выполняться построение).  Для упрощения внесения изменений и
-	обновлений избегайте наличия более чем одного патча для
-	одного и того же файла (например, патчей
-	<filename>patch-file</filename> и <filename>patch-file2</filename>,
-	оба меняющих файл <filename>WRKSRC/foobar.c</filename>).
-	Обратите внимание, что если путь к изменяемому файлу содержит символ
-	подчеркивания (<literal>_</literal>), то патч должен содержать в своем
-	имени два подчеркивания вместо одного.  Например, для применения патча
-	на файл с именем <filename>src/freeglut_joystick.c</filename>
-	соответствующий патч следует назвать
-	<filename>patch-src-freeglut__joystick.c</filename>.</para>
-
-      <para>Пожалуйста, используйте для именования патчей только символы
-	<literal>[-+._a-zA-Z0-9]</literal>.  Не используйте любые другие
-	символы, кроме этих.  Не называйте патчи как
-	<filename>patch-aa</filename> или <filename>patch-ab</filename>,
-	всегда ссылайтесь на путь и название файла в названиях самих
-	патчей.</para>
-
-      <para>Существует альтернативный упрощённый способ создания
-	патчей для существующих файлов.  Первые шаги те же самые:
-	создание копии неизменённого файла с расширением
-	<filename>.orig</filename> и внесение изменений.  После этого
-	используйте <command>make makepatch</command>, чтобы обновить
-	файлы с патчами в каталоге <filename>files</filename> данного
-	порта.</para>
-
-      <para>Не помещайте строки RCS в патчи.
-	<application>Subversion</application> будет изменять их при
-	помещении файлов в дерево портов, и когда мы будем их оттуда
-	извлекать, они будут уже другие, поэтому применение патчей
-	окончится неудачей.  Строчки RCS предваряются знаком доллара
-	(<literal>&dollar;</literal>), и обычно начинаются с
-	<literal>&dollar;Id</literal> или
-	<literal>&dollar;RCS</literal>.</para>
-
-      <para>Использование параметра рекурсии (<option>-r</option>) с командой
-	&man.diff.1; для генерации патчей - это хорошо, но всё же,
-	пожалуйста, смотрите на получающиеся патчи, чтобы убедиться в
-	отсутствии ненужного мусора.  В частности, diff-разниц между двумя
-	резервными копиями файлов, файлы <filename>Makefile</filename>, когда
-	как порт использует <command>Imake</command> или
-	GNU-версию программы <command>configure</command>, и так далее,
-	не нужны, и должны быть удалены.  Если было необходимо
-	отредактировать файл <filename>configure.in</filename> и
-	запустить <command>autoconf</command> для перегенерации
-	<command>configure</command>, не нужно включать файлы diff для
-	<command>configure</command> (они частенько вырастают до нескольких
-	тысяч строк!).  Вместо этого задайте
-	<literal>USE_AUTOTOOLS=autoconf:261</literal> и
-	включите diff-файл для <filename>configure.in</filename>.</para>
-
-      <para>Старайтесь минимизировать в патчах объём
-	нефункциональных изменений с пустыми символами.  В мире Открытого
-	Исходного Кода является распространенным совместное использование
-	проектами больших объемов кодовой базы, но с различными стилями
-	и правилами отступов.  При копировании работающей функциональной
-	части из одного проекта для исправления похожей области в другом,
-	будьте аккуратны, пожалуйста: получаемый однострочный патч
-	может указаться полон нефункциональных изменений.  Это не только
-	увеличивает размер репозитория <application>Subversion</application>,
-	но также усложняет поиск того,
-	что конкретно вызвало проблему и что вообще поменялось.</para>
-
-      <para>Если нужно удалить файл, сделайте это при выполнении цели
-	<buildtarget>post-extract</buildtarget>, вместо того чтобы
-	оформлять это как часть патча.</para>
-
-      <para>Простые перемещения могут быть выполнены непосредственно из
-	<filename>Makefile</filename> порта с использованием &man.sed.1; в
-	режиме in-place.  Это удобно, когда при изменении используется
-	значение переменной:</para>
-
-      <programlisting>post-patch:
-	@${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README</programlisting>
-
-      <para>Довольно часто в исходных файлах портируемого программного
-	обеспечения используется конвенция CR/LF.  Это может стать
-	причиной проблем с дальнейшей упаковкой, предупреждениями
-	компилятора или выполнением скриптов (таких как
-	<literal>/bin/sh^M not found</literal>).  Для быстрого
-	преобразования всех файлов из CR/LF просто в LF добавьте
-	в <filename>Makefile</filename>	порта эту запись:</para>
-
-      <programlisting>USES=	dos2unix</programlisting>
-
-      <para>Может быть задан точный список преобразуемых файлов:</para>
-
-      <programlisting>USES=	dos2unix
-DOS2UNIX_FILES=	util.c util.h</programlisting>
-
-      <para>Используйте <varname>DOS2UNIX_REGEX</varname>, чтобы
-	преобразовать группу файлов в разных подкаталогах.
-	Его параметром является регулярное выражение, совместимое с
-	&man.find.1;.  Подробнее о формате в &man.re.format.7;.
-	Такой вариант удобен для преобразования всех файлов заданного
-	расширения.  Для примера, преобразуем все исходные файлы,
-	не затрагивая двоичные файлы:</para>
-

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



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