[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

pkgsrc/doc/guide/files/fixes.xml: 1.70 -> 1.72



以下のページの更新をしました。ツッコミをお願いします。

pkgsrc/doc/guide/files/fixes.xml: 1.70 -> 1.72

> revision 1.72
> date: 2006/09/10 19:36:31;  author: wiz;  state: Exp;  lines: +2 -2
> Fix typo in markup.
> ----------------------------
> revision 1.71
> date: 2006/09/10 19:27:34;  author: wiz;  state: Exp;  lines: +1523 -1414
> Document PKGNAME_NOREV. Use more markup. Improve DIST_SUBDIR
> description. Add section about programming languages. Describe
> UNLIMIT_RESOURCES. Avoid extra whitespace in <para>.
> Add section about emulation packages.
> Add section about BROKEN and BROKEN_IN.

# 極悪つーか programlisting がアレなことになっとりますが

水曜日までに異議がなければ、 commit します。

原文は
http://cvsweb.de.NetBSD.org/cgi-bin/cvsweb.cgi/pkgsrc/doc/guide/files/fixes.xml?rev=1.72&content-type=text/plain
で、訳文は
http://www.na.rim.or.jp/%7Ekano/tmp/pkgsrc/doc/guide/files/fixes.xml
に置いてあります。

以下、訳と原文それぞれの、
1.70 から空白類文字を調節したものと 1.72 との差分です。

--- fixes.xml.orig	2006-12-18 22:32:26.000000000 +0900
+++ fixes.xml	2006-12-18 23:46:45.000000000 +0900
@@ -1,6 +1,6 @@
-<!-- $NetBSD: fixes.xml,v 1.70 2006/09/03 10:54:55 jmmv Exp $ -->
+<!-- $NetBSD: fixes.xml,v 1.72 2006/09/10 19:36:31 wiz Exp $ -->
 <!-- Based on english version: -->
-<!-- NetBSD: fixes.xml,v 1.70 2006/09/03 10:54:55 jmmv Exp   -->
+<!-- NetBSD: fixes.xml,v 1.72 2006/09/10 19:36:31 wiz Exp   -->
 
 <chapter id="fixes"> <?dbhtml filename="fixes.html"?>
 <title>パッケージを動くようにする</title>
@@ -216,7 +216,9 @@
 
 	<para>distfileをFTPに置いてはいけません。ソースコードやその他のdistfileのイ
 	ンターネット経由での再配布が許可されていない場合は、この変数を
-	<varname>${RESTRICTED}</varname>に設定してください。</para>
+	<varname>${RESTRICTED}</varname>に設定してください。
+	この変数を設定していない場合は、distfile が
+	ftp.NetBSD.org にミラーされます。</para>
       </listitem>
     </itemizedlist>
 
@@ -479,7 +481,7 @@
     な場合があります。元の作者による将来のバージョンと衝突しないようにするため、
     <varname>PKGREVISION=1</varname> (2, ...)を設定して、パッケージのバージョンに
     <quote>nb1</quote>, <quote>nb2</quote>, ...
-    という接尾辞をつけることができます。この<quote>nb</quote>は、pkgツール群からは<quote>.</quote>と
+    という接尾辞をつけることができます。この<quote>nb</quote>は、パッケージのツール群からは<quote>.</quote>と
     同様の扱いを受けます。たとえば、</para>
 
     <programlisting>
@@ -487,7 +489,10 @@
       PKGREVISION=    9
     </programlisting>
 
-    <para>とすると、<varname>PKGNAME</varname>は<quote>foo-17.42nb9</quote>になります。</para>
+    <para>とすると、<varname>PKGNAME</varname>は<quote>foo-17.42nb9</quote>になります。
+    たとえば <varname>DIST_SUBDIR</varname> の設定用などに、
+    <varname>PKGNAME</varname> に接尾辞 <quote>nbX</quote> がつかない、
+    元の値を使いたい場合は、<varname>PKGNAME_NOREV</varname> を使います。</para>
 
     <para>このパッケージの新しいリリース版が出た際には、
     <varname>PKGREVISION</varname>は消してください。
@@ -499,27 +504,29 @@
     </programlisting>
 
     <para>バイナリーパッケージに対して自明でない変化をおよぼす場合は、すべて、
-    PKGREVISION を上げるようにします。PKGREVISION を上げないと、
+    <varname>PKGREVISION</varname> を上げるようにします。
+    <varname>PKGREVISION</varname> を上げないと、
     変更前のバージョンをインストールしている人が、
     そのパッケージが古くなったことを知るすべがなくなってしまいます。
-    したがって、PKGREVISION を上げない変更とは、本質的に
+    したがって、<varname>PKGREVISION</varname> を上げない変更とは、本質的に
     「誰もアップグレードする必要のない自明な変更」ということであり、
-    これが PKGREVISION を上げるべきか否かを大雑把に判断する方法です。
-    PKGREVISION を上げる意味のない変更には、たとえば以下のようなものがあります。</para>
+    これが <varname>PKGREVISION</varname> を上げるべきか否かを大雑把に判断する方法です。
+    <varname>PKGREVISION</varname> を上げる意味のない変更には、たとえば以下のようなものがあります。</para>
 
     <programlisting>
-      HOMEPAGE, MAINTAINER や、Makefile 中のコメントの変更。
+      <varname>HOMEPAGE</varname>, <varname>MAINTAINER</varname>
+      や、Makefile 中のコメントの変更。
       構築変数の変更で、作成されるバイナリーパッケージに変化がない場合。
-      DESCR の変更。
-      PKG_OPTIONS の追加で、標準のオプションに変化がない場合。
+      <filename>DESCR</filename> の変更。
+      <varname>PKG_OPTIONS</varname> の追加で、標準のオプションに変化がない場合。
     </programlisting>
 
-    <para>PKGREVISION を上げる価値のある変更には、
+    <para><varname>PKGREVISION</varname> を上げる価値のある変更には、
     たとえば以下のようなものがあります。</para>
     <programlisting>
       セキュリティーの修正
       パッチファイルの変更または追加
-      PLIST の変更
+      <filename>PLIST</filename> の変更
     </programlisting>
 
     <para>依存するパッケージの ABI が変更された場合にも、
@@ -636,6 +643,9 @@
     確認後、この問題の正しい回避策は、<varname>DIST_SUBDIR</varname>
     を一意な (普通は <varname>PKGNAME_NOREV</varname>
     にもとづく) ディレクトリー名に設定することです。
+    これを設定すると、このパッケージの <varname>DISTFILES</varname> と
+    <varname>PATCHFILES</varname> はすべて、
+    distfiles ディレクトリー以下の、設定した名前のサブディレクトリーに置かれます。
     この問題がよく起きる場合は、ディレクトリー名に
     <varname>PKGNAME</varname> を使ったり
     (これにより <filename>nbX</filename> サフィックスが含まれる)、
@@ -897,6 +907,84 @@
   </sect2>
 </sect1>
 
+<sect1 id="programming-languages">
+  <title>プログラミング言語</title>
+
+  <sect2 id="basic-programming-languages">
+    <title>C, C++ および Fortran</title>
+    
+    <para>C, C++ および Fortran 言語用のコンパイラーは、
+    NetBSD の基本システムに附属しています。標準では、
+    pkgsrc はパッケージが C で書かれていると仮定し、それ以外のコンパイラーをすべて隠します
+    (ラッパーの枠組による。<xref linkend="buildlink" />参照)。</para>
+
+    <para>パッケージがどの言語のコンパイラーを必要としているかを表すには、
+    <varname>USE_LANGUAGES</varname> 変数を設定します。使うことのできる値は、
+    現在のところ、<quote>c</quote>, <quote>c++</quote>,
+    <quote>fortran</quote> (および、これらの任意の組合せ) です。標準では
+    <quote>c</quote> になります。GNU の configure スクリプトを使うパッケージでは、
+    C++ で書かれているものであっても、通常は configure 相で
+    C コンパイラーを必要とします。</para>
+  </sect2>
+
+  <sect2 id="java-programming-language">
+    <title>Java</title>
+
+    <para>プログラムが Java で書かれている場合は、pkgsrc における Java
+    の枠組を使います。パッケージは
+    <filename>../../mk/java-vm.mk</filename> をインクルードする必要があります。
+    この Makefile の断片は、以下の変数を用意してくれます。</para>
+
+    <itemizedlist>
+      <listitem><para><varname>USE_JAVA</varname> は、
+      JDK への依存性が追加されるかどうかを定義します。
+      <varname>USE_JAVA</varname> が <quote>run</quote> に設定された場合は、
+      JDK への実行時依存性があるだけです。標準では <quote>yes</quote> となり、
+      この場合は JDK への構築時依存性も追加されます。</para></listitem>
+
+      <listitem><para>パッケージが Java2 の実装を必要とすることを表すため、
+      <varname>USE_JAVA2</varname> を設定します。この変数が対応している値は、
+      <quote>yes</quote>, <quote>1.4</quote>,
+      <quote>1.5</quote> です。 <quote>yes</quote> は任意の Java2
+      の実装を受け入れます。<quote>1.4</quote> はバージョン 1.4 以上を要求し、
+      <quote>1.5</quote> はバージョン 1.5 以上のみを受け入れます。
+      この変数は標準では設定されません。</para></listitem>
+      <!-- XXX: describe PKG_JVM_DEFAULT and PKG_JVMS_ACCEPTED, but
+	   not here -->
+    </itemizedlist>
+  </sect2>
+
+  <sect2 id="perl-scripts">
+    <title>perl スクリプトを含むパッケージ</title>
+
+    <para>perl スクリプトがパッケージに含まれる場合は、
+    <varname>USE_TOOLS</varname> 変数に <quote>perl</quote> を追加し、
+    適切なインタープリターへのパスが設定されるようにするために
+    <varname>REPLACE_PERL</varname> を設定します。
+    <varname>REPLACE_PERL</varname> の値には、パスを調節する対象のスクリプトを
+    <varname>WRKSRC</varname> からの相対位置として並べたリストを含めるようにします。
+    対象のスクリプト内に現れる <filename>*/bin/perl</filename> はすべて、
+    perl の実行ファイルへのフルパスに置き換えられます。</para>
+
+    <para>特定のバージョンの perl が必要な場合は、
+    <varname>PERL5_REQD</varname> 変数をバージョン番号に設定します。
+    標準では <quote>5.0</quote> になります。</para>
+
+    <para>perl モジュールの扱いについては、
+    <xref linkend="perl-modules" />をご覧ください。</para>
+  </sect2>
+
+  <sect2 id="other-programming-languages">
+    <title>他のプログラミング言語</title>
+
+    <para>現在のところ、pkgsrc では、他のプログラミング言語に対する特別な扱いはありません。
+    その言語のコンパイラーのパッケージに
+    <filename>buildlink3.mk</filename> ファイルがある場合は、
+    このファイルをインクルードします。このファイルがない場合は、
+    適切なコンパイラーのパッケージへの (構築時) 依存性を追加するだけです。</para>
+  </sect2>
+</sect1>
+
 <sect1 id="fixes.build">
   <title><emphasis>build</emphasis> 相での問題を修正する</title>
 
@@ -1026,6 +1114,21 @@
     bmake</command> を実行すれば十分です。</para>
 
   </sect2>
+
+  <sect2 id="out-of-memory">
+    <title>メモリーが不足する</title>
+
+    <para>時には、コンパイラーの実行でオペレーティングシステム固有のソフトリミットに達するために、
+    パッケージの構築に失敗することがあります。
+    <varname>UNLIMIT_RESOURCES</varname> 変数を設定して、
+    pkgsrc に資源の制限を解除するよう伝えることができます。
+    現在のところ、使うことのできる値は、
+    <quote>datasize</quote> と <quote>stacksize</quote> (あるいは両方) です。
+    この変数を設定すると、シェル組み込みの <command>ulimit</command>
+    コマンドを実行した場合と同様に、それぞれ、
+    データセグメントのサイズとスタックのサイズの上限を、
+    ハードリミットまで引き上げます。</para>
+  </sect2>
 </sect1>
 
 <sect1 id="fixes.install">
@@ -1109,19 +1212,7 @@
     <varname>INSTALL_GAME</varname> および
     <varname>INSTALL_GAME_DATA</varname>
     の設定に応じて適切に設定されるようにします。</para>
-    </sect2>
-
-
-    <sect2 id="perl-scripts">
-      <title>perlスクリプトを含むパッケージ</title>
-
-      <para>
-        perlスクリプトがパッケージに含まれる場合は、
-        インタープリターのパスが適切に設定されるようにするために、
-        <varname>REPLACE_PERL</varname>を設定します。
-        <varname>REPLACE_PERL</varname>の設定値は、調整の対象となるスクリプトを<varname>WRKSRC</varname>からの相対位置で列挙したものにし
-        ます。</para>
-    </sect2>
+  </sect2>
 
 
   <sect2 id="hardcoded-paths">
@@ -1402,7 +1493,7 @@
 
       </listitem>
 
-      <listitem><para>PLIST を確認し、<filename>libdata/gtk-2.0</filename>
+      <listitem><para><filename>PLIST</filename> を確認し、<filename>libdata/gtk-2.0</filename>
       ディレクトリー以下の項目をすべて削除します。
       これらは自動的に処理されるものだからです。</para>
       </listitem>
@@ -1557,6 +1648,25 @@
     </orderedlist>
   </sect2>
 
+  <sect2 id="emulation-packages">
+    <title>エミュレーションによるバイナリーの実行に対応したパッケージ</title>
+
+    <para>パッケージのなかには、あるオペレーティングシステム用のバイナリーを
+    (エミュレーションに対応した) 別のオペレーティングシステム上で実行するための、
+    ライブラリーや実行ファイルを提供するものがあります。
+    例としては、NetBSD 上で Linux のバイナリーを実行するものがあげられます。</para>
+
+    <para><filename role="pkg">pkgtools/rpm2pkg</filename>
+    は、Linux の rpm パッケージの展開やパッケージ化を補助するものです。</para>
+
+    <para><varname>CHECK_SHLIBS</varname> を no に設定して、
+    インストールされた実行ファイル用のライブラリーを動的リンカーがすべて見つけられることを検査する
+    <command>check-shlibs</command> ターゲットを抑止することができます。
+    この検査では標準の動的リンカーを実行するので、
+    エミュレーションパッケージに対しては検査が失敗します。
+    エミュレーションで使われるライブラリーは、
+    標準のディレクトリーには置かれていないからです。</para>
+  </sect2>
 
   <sect2 id="hicolor-theme">
     <title>ハイカラーテーマのアイコンをインストールするパッケージ</title>
@@ -1574,7 +1684,7 @@
       </listitem>
 
       <listitem>
-	<para>PLIST を確認し、
+	<para><filename>PLIST</filename> を確認し、
 	テーマのキャッシュを参照するエントリーを削除します。</para>
       </listitem>
 
@@ -1616,7 +1726,35 @@
       PLIST がこれらを守っていることを確認する最良の方法は、<command>make
       print-PLIST</command> を使って作り直すことです。</para>
     </sect2>
+</sect1>
 
+<sect1 id="punting">
+  <title>パッケージに問題があるという印をつける</title>
+  
+  <para>場合によっては、パッケージの問題をすぐに解決できないことがあります。
+  現在のところ、
+  パッケージに問題があることを表す方法が二通りあります。</para>
+  <itemizedlist>
+    <listitem><para>一つ目の方法は、単に、壊れているという印をつけるというものです。
+    これをおこなうには、<varname>BROKEN</varname> 変数を、
+    (<varname>RESTRICTED</varname> 変数と同様に)
+    パッケージが壊れている理由に設定するだけです。
+    利用者がパッケージを構築しようとすると、
+    パッケージはその場でこのメッセージを表示して、
+    構築をしないようになります。</para></listitem>
+
+    <listitem><para>pkgsrc の凍結ごとに、凍結期間後 (ツリーが安定となり、
+    新しい pkgsrc の枝が切られた時) に、
+    最新の NetBSD リリース上の公式の枝において構築されていないパッケージは、
+    その枝において壊れているという印がつけられます。
+    これは、<varname>BROKEN_IN</varname> 変数に枝名を設定 (あるいは追加)
+    することでおこなわれます。
+    この印のついたパッケージを利用者が構築しようとして構築に失敗すると、
+    それぞれの枝においてこのパッケージは壊れているというメッセージが、
+    利用者に対して表示されます。</para></listitem>
+  </itemizedlist>
+  <para>どちらに該当するパッケージも、
+  不定期的に pkgsrc から削除されます。</para>
 </sect1>
 
 </chapter>
--- fixes.xml.orig	2006-12-17 23:35:12.000000000 +0900
+++ fixes.xml	2006-12-16 20:24:27.000000000 +0900
@@ -1,4 +1,4 @@
-<!-- $NetBSD: fixes.xml,v 1.70 2006/09/03 10:54:55 jmmv Exp $ -->
+<!-- $NetBSD: fixes.xml,v 1.72 2006/09/10 19:36:31 wiz Exp $ -->
 
 <chapter id="fixes"> <?dbhtml filename="fixes.html"?>
 <title>Making your package work</title>
@@ -221,7 +221,8 @@
 	<para>Distfiles may not be placed on FTP.  Set this variable
 	to <varname>${RESTRICTED}</varname> if re-distribution of
 	the source code or other distfile(s) via the Internet is not
-	allowed.</para>
+	allowed.  If this variable is not set, the distfile(s) will
+	be mirrored on ftp.NetBSD.org.</para>
       </listitem>
     </itemizedlist>
 
@@ -507,7 +508,7 @@
     <quote>nb1</quote>, <quote>nb2</quote>, ... suffix can be used
     on package versions by setting <varname>PKGREVISION=1</varname>
     (2, ...). The <quote>nb</quote> is treated like a
-    <quote>.</quote> by the pkg tools. e.g.</para>
+    <quote>.</quote> by the package tools. e.g.</para>
 
     <programlisting>
       DISTNAME=       foo-17.42
@@ -515,7 +516,10 @@
     </programlisting>
 
     <para>will result in a <varname>PKGNAME</varname> of
-    <quote>foo-17.42nb9</quote>.</para>
+    <quote>foo-17.42nb9</quote>. If you want to use the original
+    value of <varname>PKGNAME</varname> without the <quote>nbX</quote>
+    suffix, e.g. for setting <varname>DIST_SUBDIR</varname>, use
+    <varname>PKGNAME_NOREV</varname>.</para>
 
     <para>When a new release of the package is released, the
     <varname>PKGREVISION</varname> should be removed, e.g. on a new
@@ -525,31 +529,32 @@
       DISTNAME=       foo-17.43
     </programlisting>
 
-    <para>PKGREVISION should be incremented for any
+    <para><varname>PKGREVISION</varname> should be incremented for any
     non-trivial change in the resulting binary package.  Without a
-    PKGREVISION bump, someone with the previous
+    <varname>PKGREVISION</varname> bump, someone with the previous
     version installed has no way of knowing that their package is out
     of date.  Thus, changes without increasing
-    PKGREVISION are essentially labeled "this is so
+    <varname>PKGREVISION</varname> are essentially labeled "this is so
     trivial that no reasonable person would want to upgrade", and this
     is the rough test for when increasing
-    PKGREVISION is appropriate.  Examples of
+    <varname>PKGREVISION</varname> is appropriate.  Examples of
     changes that do not merit increasing
-    PKGREVISION are:</para>
+    <varname>PKGREVISION</varname> are:</para>
 
     <programlisting>
-      Changing HOMEPAGE, MAINTAINER, or comments in Makefile.
+      Changing <varname>HOMEPAGE</varname>, <varname>MAINTAINER</varname>,
+      or comments in Makefile.
       Changing build variables if the resulting binary package is the same.
-      Changing DESCR.
-      Adding PKG_OPTIONS if the default options don't change.
+      Changing <filename>DESCR</filename>.
+      Adding <varname>PKG_OPTIONS</varname> if the default options don't change.
     </programlisting>
 
-    <para>Examples of changes that do merit an increase to PKGREVISION
-    include:</para>
+    <para>Examples of changes that do merit an increase to
+    <varname>PKGREVISION</varname> include:</para>
     <programlisting>
       Security fixes
       Changes or additions to a patch file
-      Changes to the PLIST
+      Changes to the <filename>PLIST</filename>
     </programlisting>
 
     <para>PKGREVISION must also be incremented when dependencies have ABI
@@ -667,7 +672,10 @@
     no trojan horse or so crept in.
     Then, the correct way to work around this is to
     set <varname>DIST_SUBDIR</varname> to a unique directory name,
-    usually based on <varname>PKGNAME_NOREV</varname>. In case this
+    usually based on <varname>PKGNAME_NOREV</varname>. All
+    <varname>DISTFILES</varname> and
+    <varname>PATCHFILES</varname> for this package will be put in that 
+    subdirectory of the local distfiles directory.  In case this
     happens more often, <varname>PKGNAME</varname> can be used (thus
     including the <filename>nbX</filename> suffix) or a date stamp
     can be appended, like <varname>${PKGNAME_NOREV}-YYYYMMDD</varname>.
@@ -699,7 +707,7 @@
     both static and dynamic libraries from a set of source files,
     thus being platform-independent.</para>
 
-    <para>Here's how to use libtool in a pkg in seven simple
+    <para>Here's how to use libtool in a package in seven simple
     steps:</para>
 
     <orderedlist>
@@ -942,6 +950,85 @@
   </sect2>
 </sect1>
 
+<sect1 id="programming-languages">
+  <title>Programming languages</title>
+
+  <sect2 id="basic-programming-languages">
+    <title>C, C++, and Fortran</title>
+    
+    <para>Compilers for the C, C++, and Fortran languages comes with
+    the NetBSD base system.  By default, pkgsrc assumes that a package
+    is written in C and will hide all other compilers (via the wrapper
+    framework, see <xref linkend="buildlink" />).</para>
+
+    <para>To declare which language's compiler a package needs, set
+    the <varname>USE_LANGUAGES</varname> variable. Allowed values
+    currently are <quote>c</quote>, <quote>c++</quote>, and
+    <quote>fortran</quote> (and any combination).  The default is
+    <quote>c</quote>.  Packages using GNU configure scripts, even if
+    written in C++, usually need a C compiler for the configure
+    phase.</para>
+  </sect2>
+
+  <sect2 id="java-programming-language">
+    <title>Java</title>
+
+    <para>If a program is written in Java, use the Java framework in
+    pkgsrc.  The package must include
+    <filename>../../mk/java-vm.mk</filename>.  This Makefile fragment
+    provides the following variables:</para>
+
+    <itemizedlist>
+      <listitem><para><varname>USE_JAVA</varname> defines if a build
+      dependency on the JDK is added.  If
+      <varname>USE_JAVA</varname> is set to <quote>run</quote>, then
+      there is only a runtime dependency on the JDK.  The default is
+      <quote>yes</quote>, which also adds a build dependency on the
+      JDK.</para></listitem>
+
+      <listitem><para>Set <varname>USE_JAVA2</varname> to declare that
+      a package needs a Java2 implementation.  The supported values
+      are <quote>yes</quote>, <quote>1.4</quote>, and
+      <quote>1.5</quote>.  <quote>yes</quote> accepts any Java2
+      implementation, <quote>1.4</quote> insists on versions 1.4 or
+      above, and <quote>1.5</quote> only accepts versions 1.5 or
+      above. This variable is not set by default.</para></listitem>
+      <!-- XXX: describe PKG_JVM_DEFAULT and PKG_JVMS_ACCEPTED, but
+	   not here -->
+    </itemizedlist>
+  </sect2>
+
+  <sect2 id="perl-scripts">
+    <title>Packages containing perl scripts</title>
+
+    <para>If your package contains interpreted perl scripts, add
+    <quote>perl</quote> to the <varname>USE_TOOLS</varname> variable
+    and set <varname>REPLACE_PERL</varname> to ensure that the proper
+    interpreter path is set. <varname>REPLACE_PERL</varname> should
+    contain a list of scripts, relative to <varname>WRKSRC</varname>,
+    that you want adjusted.  Every occurrence of
+    <filename>*/bin/perl</filename> will be replaced with the full
+    path to the perl executable.</para>
+
+    <para>If a particular version of perl is needed, set the
+    <varname>PERL5_REQD</varname> variable to the version number.  The
+    default is <quote>5.0</quote>.</para>
+
+    <para>See <xref linkend="perl-modules" /> for information
+    about handling perl modules.</para>
+  </sect2>
+
+  <sect2 id="other-programming-languages">
+    <title>Other programming languages</title>
+
+    <para>Currently, there is no special handling for other languages
+    in pkgsrc.  If a compiler package provides a
+    <filename>buildlink3.mk</filename> file, include that, otherwise
+    just add a (build) dependency on the appropriate compiler
+    package.</para>
+  </sect2>
+</sect1>
+
 <sect1 id="fixes.build">
   <title>Fixing problems in the <emphasis>build</emphasis> phase</title>
 
@@ -1071,6 +1158,20 @@
     bmake</command>.</para>
 
   </sect2>
+
+  <sect2 id="out-of-memory">
+    <title>Running out of memory</title>
+
+    <para>Sometimes packages fail to build because the compiler runs
+    into an operating system specific soft limit.  With the
+    <varname>UNLIMIT_RESOURCES</varname> variable pkgsrc can be told
+    to unlimit the resources.  Currently, the allowed values are
+    <quote>datasize</quote> and <quote>stacksize</quote> (or both).
+    Setting this variable is similar to running the shell builtin
+    <command>ulimit</command> command to raise the maximum data
+    segment size or maximum stack size of a process, respectively, to
+    their hard limits.</para>
+  </sect2>
 </sect1>
 
 <sect1 id="fixes.install">
@@ -1151,19 +1252,7 @@
     access permissions but rely on <varname>INSTALL_GAME</varname> and
     <varname>INSTALL_GAME_DATA</varname> to set these
     correctly.</para>
-    </sect2>
-
-
-    <sect2 id="perl-scripts">
-      <title>Packages containing perl scripts</title>
-
-      <para>
-        If your package contains interpreted perl scripts, set
-        <varname>REPLACE_PERL</varname> to ensure that the proper
-        interpreter path is set. <varname>REPLACE_PERL</varname> should
-        contain a list of scripts, relative to
-        <varname>WRKSRC</varname>, that you want adjusted.</para>
-    </sect2>
+  </sect2>
 
 
   <sect2 id="hardcoded-paths">
@@ -1454,7 +1543,7 @@
 
       </listitem>
 
-      <listitem><para>Check the PLIST and remove
+      <listitem><para>Check the <filename>PLIST</filename> and remove
       any entries under the <filename>libdata/gtk-2.0</filename>
       directory, as they will be handled automatically.</para>
       </listitem>
@@ -1613,6 +1702,25 @@
     </orderedlist>
   </sect2>
 
+  <sect2 id="emulation-packages">
+    <title>Packages supporting running binaries in
+    emulation</title>
+
+    <para>There are some packages that provide libraries and
+    executables for running binaries from a one operating system
+    on a different one (if the latter supports it).  One example
+    is running Linux binaries on NetBSD.</para>
+
+    <para>The <filename role="pkg">pkgtools/rpm2pkg</filename>
+    helps in extracting and packaging Linux rpm packages.</para>
+
+    <para>The <varname>CHECK_SHLIBS</varname> can be set to no to
+    avoid the <command>check-shlibs</command> target, which tests
+    if all libraries for each installed executable can be found by
+    the dynamic linker.  Since the standard dynamic linker is run,
+    this fails for emulation packages, because the libraries used
+    by the emulation are not in the standard directories.</para>
+  </sect2>
 
   <sect2 id="hicolor-theme">
     <title>Packages installing hicolor theme icons</title>
@@ -1631,7 +1739,7 @@
       </listitem>
 
       <listitem>
-	<para>Check the PLIST and remove the
+	<para>Check the <filename>PLIST</filename> and remove the
 	entry that refers to the theme cache.</para>
       </listitem>
 
@@ -1673,7 +1781,34 @@
       respect to the last point is to regenerate it using <command>make
       print-PLIST</command>.</para>
     </sect2>
+</sect1>
 
+<sect1 id="punting">
+  <title>Marking packages as having problems</title>
+  
+  <para>In some cases one does not have the time to solve a problem
+  immediately.  There are currently two ways to declare that one knows
+  that a package has problems.</para>
+  <itemizedlist>
+    <listitem><para>The first way is to plainly mark it as broken.  For
+    this, one just sets the variable <varname>BROKEN</varname> to the
+    reason why the package is broken (similar to the
+    <varname>RESTRICTED</varname> variable).  A user trying to build
+    the package will immediately be shown this message, and the build
+    will not be even tried.</para></listitem>
+
+    <listitem><para>After each pkgsrc freeze period (a time when the
+    tree is stabilized and a new pkgsrc branch is cut), the packages
+    that were not building in the official branch build on the latest
+    NetBSD release will be marked as broken on that branch.  This is
+    done by setting the <varname>BROKEN_IN</varname> variable to the
+    branch name (or appending the branch name to it).  If a user tries
+    to build such a package and the build fails, the user gets a
+    message that says that the package was broken on the respective
+    branch(es).</para></listitem>
+  </itemizedlist>
+  <para>Both types of packages are removed from pkgsrc in irregular
+  intervals.</para>
 </sect1>
 
 </chapter>