diff options
-rw-r--r-- | doc/pkgsrc.html | 1590 | ||||
-rw-r--r-- | doc/pkgsrc.txt | 806 |
2 files changed, 1431 insertions, 965 deletions
diff --git a/doc/pkgsrc.html b/doc/pkgsrc.html index 850945adf06..757b5a150ac 100644 --- a/doc/pkgsrc.html +++ b/doc/pkgsrc.html @@ -19,8 +19,8 @@ alink="#0000FF"> <div class="titlepage"> <div> <div> - <h1 class="title"><a name="id2510574" id= - "id2510574"></a>The pkgsrc guide</h1> + <h1 class="title"><a name="id2598171" id= + "id2598171"></a>The pkgsrc guide</h1> </div> <div> @@ -66,8 +66,8 @@ alink="#0000FF"> </div> <div xmlns="http://www.w3.org/TR/xhtml1/transitional"> - <p xmlns="" class="pubdate">$NetBSD: pkgsrc.xml,v 1.4 - 2005/05/07 22:28:47 wiz Exp $</p> + <p xmlns="" class="pubdate">$NetBSD: pkgsrc.xml,v 1.5 + 2005/05/10 00:27:43 rillig Exp $</p> </div> <div> @@ -93,7 +93,7 @@ alink="#0000FF"> <dd> <dl> - <dt><span class="sect1"><a href="#id2623537">1.1. + <dt><span class="sect1"><a href="#id2568707">1.1. Introduction</a></span></dt> <dt><span class="sect1"><a href="#overview">1.2. @@ -117,13 +117,13 @@ alink="#0000FF"> <dd> <dl> - <dt><span class="sect1"><a href="#id2569236">2.1. + <dt><span class="sect1"><a href="#id2569429">2.1. As tar file</a></span></dt> - <dt><span class="sect1"><a href="#id2569252">2.2. + <dt><span class="sect1"><a href="#id2569445">2.2. Via SUP</a></span></dt> - <dt><span class="sect1"><a href="#id2569420">2.3. + <dt><span class="sect1"><a href="#id2569477">2.3. Via CVS</a></span></dt> </dl> </dd> @@ -133,35 +133,35 @@ alink="#0000FF"> <dd> <dl> - <dt><span class="sect1"><a href="#id2569530">3.1. + <dt><span class="sect1"><a href="#id2569587">3.1. Bootstrapping pkgsrc</a></span></dt> - <dt><span class="sect1"><a href="#id2569712">3.2. + <dt><span class="sect1"><a href="#id2569768">3.2. Platform specific notes</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2569718">3.2.1. Darwin (Mac OS + "#id2569774">3.2.1. Darwin (Mac OS X)</a></span></dt> <dt><span class="sect2"><a href= - "#id2569880">3.2.2. FreeBSD</a></span></dt> + "#id2569937">3.2.2. FreeBSD</a></span></dt> <dt><span class="sect2"><a href= - "#id2570324">3.2.3. Interix</a></span></dt> + "#id2570449">3.2.3. Interix</a></span></dt> <dt><span class="sect2"><a href= - "#id2570557">3.2.4. IRIX</a></span></dt> + "#id2570750">3.2.4. IRIX</a></span></dt> <dt><span class="sect2"><a href= - "#id2570654">3.2.5. Linux</a></span></dt> + "#id2570848">3.2.5. Linux</a></span></dt> <dt><span class="sect2"><a href= - "#id2570723">3.2.6. OpenBSD</a></span></dt> + "#id2570916">3.2.6. OpenBSD</a></span></dt> <dt><span class="sect2"><a href= - "#id2570835">3.2.7. Solaris</a></span></dt> + "#id2571028">3.2.7. Solaris</a></span></dt> </dl> </dd> </dl> @@ -179,38 +179,38 @@ alink="#0000FF"> <dd> <dl> <dt><span class="sect2"><a href= - "#id2571040">4.1.1. Where to get binary + "#id2571164">4.1.1. Where to get binary packages</a></span></dt> <dt><span class="sect2"><a href= - "#id2571080">4.1.2. How to use binary + "#id2571273">4.1.2. How to use binary packages</a></span></dt> <dt><span class="sect2"><a href= - "#id2571256">4.1.3. A word of + "#id2571381">4.1.3. A word of warning</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2571336">4.2. + <dt><span class="sect1"><a href="#id2571393">4.2. Building packages from source</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2571346">4.2.1. + "#id2571948">4.2.1. Requirements</a></span></dt> <dt><span class="sect2"><a href= - "#id2571366">4.2.2. Fetching + "#id2571969">4.2.2. Fetching distfiles</a></span></dt> <dt><span class="sect2"><a href= - "#id2571418">4.2.3. How to build and + "#id2572021">4.2.3. How to build and install</a></span></dt> <dt><span class="sect2"><a href= - "#id2623831">4.2.4. Selecting the + "#id2623888">4.2.4. Selecting the compiler</a></span></dt> </dl> </dd> @@ -222,10 +222,10 @@ alink="#0000FF"> <dd> <dl> - <dt><span class="sect1"><a href="#id2623917">5.1. + <dt><span class="sect1"><a href="#id2623974">5.1. Building a single binary package</a></span></dt> - <dt><span class="sect1"><a href="#id2623995">5.2. + <dt><span class="sect1"><a href="#id2624052">5.2. Settings for creation of binary packages</a></span></dt> @@ -239,26 +239,26 @@ alink="#0000FF"> Configuration</a></span></dt> <dt><span class="sect2"><a href= - "#id2624142">5.3.2. Other environmental + "#id2624199">5.3.2. Other environmental considerations</a></span></dt> <dt><span class="sect2"><a href= - "#id2624183">5.3.3. Operation</a></span></dt> + "#id2624240">5.3.3. Operation</a></span></dt> <dt><span class="sect2"><a href= - "#id2624252">5.3.4. What it + "#id2624377">5.3.4. What it does</a></span></dt> <dt><span class="sect2"><a href= - "#id2624309">5.3.5. Disk space + "#id2624434">5.3.5. Disk space requirements</a></span></dt> <dt><span class="sect2"><a href= - "#id2624336">5.3.6. Setting up a sandbox for + "#id2624460">5.3.6. Setting up a sandbox for chroot'ed builds</a></span></dt> <dt><span class="sect2"><a href= - "#id2624865">5.3.7. Building a partial set of + "#id2624989">5.3.7. Building a partial set of packages</a></span></dt> <dt><span class="sect2"><a href= @@ -267,14 +267,14 @@ alink="#0000FF"> </dl> </dd> - <dt><span class="sect1"><a href="#id2625321">5.4. + <dt><span class="sect1"><a href="#id2625378">5.4. Creating a multiple CD-ROM packages collection</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2625336">5.4.1. Example of + "#id2625393">5.4.1. Example of cdpack</a></span></dt> </dl> </dd> @@ -286,54 +286,54 @@ alink="#0000FF"> <dd> <dl> - <dt><span class="sect1"><a href="#id2625528">6.1. + <dt><span class="sect1"><a href="#id2625585">6.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> - <dt><span class="sect1"><a href="#id2625662">6.2. + <dt><span class="sect1"><a href="#id2625787">6.2. Where's the pkgviews documentation?</a></span></dt> <dt><span class="sect1"><a href= "#faq-pkgtools">6.3. Utilities for package management (pkgtools)</a></span></dt> - <dt><span class="sect1"><a href="#id2625984">6.4. + <dt><span class="sect1"><a href="#id2626040">6.4. How to use pkgsrc as non-root</a></span></dt> - <dt><span class="sect1"><a href="#id2625995">6.5. + <dt><span class="sect1"><a href="#id2626052">6.5. How to resume transfers when fetching distfiles?</a></span></dt> - <dt><span class="sect1"><a href="#id2626045">6.6. + <dt><span class="sect1"><a href="#id2626102">6.6. How can I install/use XFree86 from pkgsrc?</a></span></dt> - <dt><span class="sect1"><a href="#id2626073">6.7. + <dt><span class="sect1"><a href="#id2626130">6.7. How can I install/use X.org from pkgsrc?</a></span></dt> - <dt><span class="sect1"><a href="#id2626101">6.8. + <dt><span class="sect1"><a href="#id2626157">6.8. How to fetch files from behind a firewall</a></span></dt> - <dt><span class="sect1"><a href="#id2626115">6.9. + <dt><span class="sect1"><a href="#id2626171">6.9. How do I tell <span><strong class="command">make fetch</strong></span> to do passive FTP?</a></span></dt> - <dt><span class="sect1"><a href="#id2626166">6.10. + <dt><span class="sect1"><a href="#id2626222">6.10. How to fetch all distfiles at once</a></span></dt> - <dt><span class="sect1"><a href="#id2626313">6.11. + <dt><span class="sect1"><a href="#id2626438">6.11. What does “<span class="quote">Don't know how to make /usr/share/tmac/tmac.andoc</span>” mean?</a></span></dt> - <dt><span class="sect1"><a href="#id2626352">6.12. + <dt><span class="sect1"><a href="#id2626476">6.12. What does “<span class="quote">Could not find bsd.own.mk</span>” mean?</a></span></dt> - <dt><span class="sect1"><a href="#id2626409">6.13. + <dt><span class="sect1"><a href="#id2626534">6.13. Using 'sudo' with pkgsrc</a></span></dt> <dt><span class="sect1"><a href="#faq.conf">6.14. @@ -353,98 +353,130 @@ alink="#0000FF"> <dd> <dl> - <dt><span class="chapter"><a href="#components">7. + <dt><span class="chapter"><a href="#makefile">7. + Programming in <code class= + "filename">Makefile</code>s</a></span></dt> + + <dd> + <dl> + <dt><span class="sect1"><a href= + "#makefile.variables">7.1. <code class= + "filename">Makefile</code> + variables</a></span></dt> + + <dt><span class="sect1"><a href= + "#makefile.code">7.2. Code snippets</a></span></dt> + + <dd> + <dl> + <dt><span class="sect2"><a href= + "#id2627092">7.2.1. Adding things to a + list</a></span></dt> + + <dt><span class="sect2"><a href= + "#id2627101">7.2.2. Converting an internal list + into an external list</a></span></dt> + + <dt><span class="sect2"><a href= + "#id2627188">7.2.3. Passing variables to a + shell command</a></span></dt> + </dl> + </dd> + </dl> + </dd> + + <dt><span class="chapter"><a href="#components">8. Package components - files, directories and contents</a></span></dt> <dd> <dl> <dt><span class="sect1"><a href= - "#components.Makefile">7.1. <code class= + "#components.Makefile">8.1. <code class= "filename">Makefile</code></a></span></dt> <dt><span class="sect1"><a href= - "#components.distinfo">7.2. <code class= + "#components.distinfo">8.2. <code class= "filename">distinfo</code></a></span></dt> <dt><span class="sect1"><a href= - "#components.patches">7.3. + "#components.patches">8.3. patches/*</a></span></dt> - <dt><span class="sect1"><a href="#id2627489">7.4. + <dt><span class="sect1"><a href="#id2627883">8.4. Other mandatory files</a></span></dt> <dt><span class="sect1"><a href= - "#components.optional">7.5. Optional + "#components.optional">8.5. Optional files</a></span></dt> - <dt><span class="sect1"><a href="#id2627614">7.6. + <dt><span class="sect1"><a href="#id2628146">8.6. <code class="filename">work*</code></a></span></dt> - <dt><span class="sect1"><a href="#id2627770">7.7. + <dt><span class="sect1"><a href="#id2628233">8.7. <code class= "filename">files/*</code></a></span></dt> </dl> </dd> - <dt><span class="chapter"><a href="#plist">8. PLIST + <dt><span class="chapter"><a href="#plist">9. PLIST issues</a></span></dt> <dd> <dl> - <dt><span class="sect1"><a href="#id2627961">8.1. + <dt><span class="sect1"><a href="#id2628288">9.1. RCS ID</a></span></dt> - <dt><span class="sect1"><a href="#id2627976">8.2. + <dt><span class="sect1"><a href="#id2628302">9.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> - <dt><span class="sect1"><a href="#print-PLIST">8.3. + <dt><span class="sect1"><a href="#print-PLIST">9.3. Tweaking output of <span><strong class= "command">make print-PLIST</strong></span></a></span></dt> - <dt><span class="sect1"><a href="#plist.misc">8.4. + <dt><span class="sect1"><a href="#plist.misc">9.4. Variable substitution in PLIST</a></span></dt> - <dt><span class="sect1"><a href="#id2628297">8.5. + <dt><span class="sect1"><a href="#id2628692">9.5. Manpage-compression</a></span></dt> - <dt><span class="sect1"><a href="#id2628339">8.6. + <dt><span class="sect1"><a href="#id2628733">9.6. Changing PLIST source with <code class= "varname">PLIST_SRC</code></a></span></dt> - <dt><span class="sect1"><a href="#id2628363">8.7. + <dt><span class="sect1"><a href="#id2628758">9.7. Platform specific and differing PLISTs</a></span></dt> <dt><span class="sect1"><a href= - "#faq.common-dirs">8.8. Sharing directories between + "#faq.common-dirs">9.8. Sharing directories between packages</a></span></dt> </dl> </dd> - <dt><span class="chapter"><a href="#buildlink">9. + <dt><span class="chapter"><a href="#buildlink">10. Buildlink methodology</a></span></dt> <dd> <dl> - <dt><span class="sect1"><a href="#id2628562">9.1. + <dt><span class="sect1"><a href="#id2629025">10.1. Converting packages to use buildlink3</a></span></dt> - <dt><span class="sect1"><a href="#id2628948">9.2. + <dt><span class="sect1"><a href="#id2629206">10.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2629017">9.2.1. Anatomy of a buildlink3.mk + "#id2629344">10.2.1. Anatomy of a buildlink3.mk file</a></span></dt> <dt><span class="sect2"><a href= - "#id2629458">9.2.2. Updating <code class= + "#id2629921">10.2.2. Updating <code class= "varname">BUILDLINK_DEPENDS.<em class= "replaceable"><code>pkg</code></em></code> in <code class="filename">buildlink3.mk</code> @@ -452,261 +484,261 @@ alink="#0000FF"> </dl> </dd> - <dt><span class="sect1"><a href="#id2629537">9.3. + <dt><span class="sect1"><a href="#id2630000">10.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2629618">9.3.1. Anatomy of a <code class= + "#id2630081">10.3.1. Anatomy of a <code class= "filename">builtin.mk</code> file</a></span></dt> <dt><span class="sect2"><a href= - "#id2629913">9.3.2. Global preferences for + "#id2630240">10.3.2. Global preferences for native or pkgsrc software</a></span></dt> </dl> </dd> </dl> </dd> - <dt><span class="chapter"><a href="#options">10. + <dt><span class="chapter"><a href="#options">11. Options handling</a></span></dt> <dd> <dl> - <dt><span class="sect1"><a href="#id2629986">10.1. + <dt><span class="sect1"><a href="#id2630312">11.1. Global default options</a></span></dt> - <dt><span class="sect1"><a href="#id2630001">10.2. + <dt><span class="sect1"><a href="#id2630327">11.2. Converting packages to use <code class= "filename">bsd.options.mk</code></a></span></dt> </dl> </dd> - <dt><span class="chapter"><a href="#build">11. The + <dt><span class="chapter"><a href="#build">12. The build process</a></span></dt> <dd> <dl> <dt><span class="sect1"><a href= - "#build.prefix">11.1. Program + "#build.prefix">12.1. Program location</a></span></dt> - <dt><span class="sect1"><a href="#id2630624">11.2. + <dt><span class="sect1"><a href="#id2631086">12.2. Main targets</a></span></dt> <dt><span class="sect1"><a href= - "#build.helpful-targets">11.3. Other helpful + "#build.helpful-targets">12.3. Other helpful targets</a></span></dt> </dl> </dd> - <dt><span class="chapter"><a href="#fixes">12. Notes on + <dt><span class="chapter"><a href="#fixes">13. Notes on fixes for packages</a></span></dt> <dd> <dl> - <dt><span class="sect1"><a href="#id2632120">12.1. + <dt><span class="sect1"><a href="#id2632515">13.1. General operation</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2632123">12.1.1. How to pull in variables + "#id2632518">13.1.1. How to pull in variables from /etc/mk.conf</a></span></dt> <dt><span class="sect2"><a href= - "#id2632275">12.1.2. Restricted + "#id2632601">13.1.2. Restricted packages</a></span></dt> <dt><span class="sect2"><a href= - "#dependencies">12.1.3. Handling + "#dependencies">13.1.3. Handling dependencies</a></span></dt> <dt><span class="sect2"><a href= - "#id2632728">12.1.4. Handling conflicts with + "#id2633123">13.1.4. Handling conflicts with other packages</a></span></dt> <dt><span class="sect2"><a href= - "#id2632846">12.1.5. Packages that cannot or + "#id2633173">13.1.5. Packages that cannot or should not be built</a></span></dt> <dt><span class="sect2"><a href= - "#id2632872">12.1.6. Packages which should not + "#id2633198">13.1.6. Packages which should not be deleted, once installed</a></span></dt> <dt><span class="sect2"><a href= - "#security-handling">12.1.7. Handling packages + "#security-handling">13.1.7. Handling packages with security problems</a></span></dt> <dt><span class="sect2"><a href= - "#id2632964">12.1.8. How to handle compiler + "#id2633290">13.1.8. How to handle compiler bugs</a></span></dt> <dt><span class="sect2"><a href= - "#id2633054">12.1.9. How to handle incrementing + "#id2633313">13.1.9. How to handle incrementing versions when fixing an existing package</a></span></dt> <dt><span class="sect2"><a href= - "#id2633104">12.1.10. Portability of + "#id2633362">13.1.10. Portability of packages</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2633128">12.2. + <dt><span class="sect1"><a href="#id2633386">13.2. Possible downloading issues</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2633131">12.2.1. Packages whose distfiles + "#id2633389">13.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> <dt><span class="sect2"><a href= - "#id2633194">12.2.2. How to handle modified + "#id2633452">13.2.2. How to handle modified distfiles with the 'old' name</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2633206">12.3. + <dt><span class="sect1"><a href="#id2633601">13.3. Configuration gotchas</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#fixes.libtool">12.3.1. Shared libraries - + "#fixes.libtool">13.3.1. Shared libraries - libtool</a></span></dt> <dt><span class="sect2"><a href= - "#id2633640">12.3.2. Using libtool on GNU + "#id2634035">13.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> <dt><span class="sect2"><a href= - "#id2633721">12.3.3. GNU + "#id2634184">13.3.3. GNU Autoconf/Automake</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2633834">12.4. + <dt><span class="sect1"><a href="#id2634229">13.4. Building considerations</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2633837">12.4.1. CPP + "#id2634232">13.4.1. CPP defines</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2633867">12.5. + <dt><span class="sect1"><a href="#id2634262">13.5. Package specific actions</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2633870">12.5.1. Package configuration + "#id2634265">13.5.1. Package configuration files</a></span></dt> <dt><span class="sect2"><a href= - "#id2633973">12.5.2. User + "#id2634436">13.5.2. User interaction</a></span></dt> <dt><span class="sect2"><a href= - "#id2634018">12.5.3. Handling + "#id2634549">13.5.3. Handling licenses</a></span></dt> <dt><span class="sect2"><a href= - "#id2634169">12.5.4. Creating an account from a + "#id2634632">13.5.4. Creating an account from a package</a></span></dt> <dt><span class="sect2"><a href= - "#id2634231">12.5.5. Installing score + "#id2634694">13.5.5. Installing score files</a></span></dt> <dt><span class="sect2"><a href= - "#id2634411">12.5.6. Packages providing login + "#id2634738">13.5.6. Packages providing login shells</a></span></dt> <dt><span class="sect2"><a href= - "#id2634469">12.5.7. Packages containing perl + "#id2634795">13.5.7. Packages containing perl scripts</a></span></dt> <dt><span class="sect2"><a href= - "#id2634555">12.5.8. Packages with hardcoded + "#id2634813">13.5.8. Packages with hardcoded paths to other interpreters</a></span></dt> <dt><span class="sect2"><a href= - "#id2634577">12.5.9. Packages installing perl + "#id2634835">13.5.9. Packages installing perl modules</a></span></dt> <dt><span class="sect2"><a href= - "#faq.info-files">12.5.10. Packages installing + "#faq.info-files">13.5.10. Packages installing info files</a></span></dt> <dt><span class="sect2"><a href= - "#id2634865">12.5.11. Packages installing + "#id2635123">13.5.11. Packages installing GConf2 data files</a></span></dt> <dt><span class="sect2"><a href= - "#id2634965">12.5.12. Packages installing + "#id2635360">13.5.12. Packages installing scrollkeeper data files</a></span></dt> <dt><span class="sect2"><a href= - "#id2635016">12.5.13. Packages installing X11 + "#id2635411">13.5.13. Packages installing X11 fonts</a></span></dt> <dt><span class="sect2"><a href= - "#id2635063">12.5.14. Packages installing GTK2 + "#id2635526">13.5.14. Packages installing GTK2 modules</a></span></dt> <dt><span class="sect2"><a href= - "#id2635201">12.5.15. Packages installing SGML + "#id2635595">13.5.15. Packages installing SGML or XML data</a></span></dt> <dt><span class="sect2"><a href= - "#id2635253">12.5.16. Packages installing + "#id2635648">13.5.16. Packages installing extensions to the MIME database</a></span></dt> <dt><span class="sect2"><a href= - "#id2635323">12.5.17. Packages using + "#id2635718">13.5.17. Packages using intltool</a></span></dt> <dt><span class="sect2"><a href= - "#id2635337">12.5.18. Packages installing + "#id2635732">13.5.18. Packages installing startup scripts</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2635358">12.6. + <dt><span class="sect1"><a href="#id2635753">13.6. Feedback to the author</a></span></dt> </dl> </dd> - <dt><span class="chapter"><a href="#debug">13. + <dt><span class="chapter"><a href="#debug">14. Debugging</a></span></dt> - <dt><span class="chapter"><a href="#submit">14. + <dt><span class="chapter"><a href="#submit">15. Submitting and Committing</a></span></dt> <dd> <dl> - <dt><span class="sect1"><a href="#id2635957">14.1. + <dt><span class="sect1"><a href="#id2636215">15.1. Submitting your packages</a></span></dt> - <dt><span class="sect1"><a href="#id2636014">14.2. + <dt><span class="sect1"><a href="#id2636273">15.2. Committing: Importing a package into CVS</a></span></dt> - <dt><span class="sect1"><a href="#id2636077">14.3. + <dt><span class="sect1"><a href="#id2636540">15.3. Updating a package to a newer version</a></span></dt> - <dt><span class="sect1"><a href="#id2636097">14.4. + <dt><span class="sect1"><a href="#id2636560">15.4. Moving a package in pkgsrc</a></span></dt> </dl> </dd> @@ -718,27 +750,27 @@ alink="#0000FF"> <dd> <dl> - <dt><span class="sect1"><a href="#id2636323">A.1. + <dt><span class="sect1"><a href="#id2636786">A.1. files</a></span></dt> <dd> <dl> - <dt><span class="sect2"><a href="#id2636326">A.1.1. + <dt><span class="sect2"><a href="#id2636789">A.1.1. Makefile</a></span></dt> - <dt><span class="sect2"><a href="#id2636333">A.1.2. + <dt><span class="sect2"><a href="#id2636796">A.1.2. DESCR</a></span></dt> - <dt><span class="sect2"><a href="#id2636348">A.1.3. + <dt><span class="sect2"><a href="#id2636811">A.1.3. PLIST</a></span></dt> - <dt><span class="sect2"><a href="#id2636356">A.1.4. + <dt><span class="sect2"><a href="#id2636819">A.1.4. Checking a package with <span><strong class= "command">pkglint</strong></span></a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2636465">A.2. Steps + <dt><span class="sect1"><a href="#id2636859">A.2. Steps for building, installing, packaging</a></span></dt> </dl> </dd> @@ -764,10 +796,10 @@ alink="#0000FF"> <dd> <dl> - <dt><span class="sect1"><a href="#id2637111">D.1. + <dt><span class="sect1"><a href="#id2637574">D.1. Targets</a></span></dt> - <dt><span class="sect1"><a href="#id2637517">D.2. + <dt><span class="sect1"><a href="#id2637776">D.2. Procedure</a></span></dt> </dl> </dd> @@ -788,7 +820,7 @@ alink="#0000FF"> <p><b>Table of Contents</b></p> <dl> - <dt><span class="sect1"><a href="#id2623537">1.1. + <dt><span class="sect1"><a href="#id2568707">1.1. Introduction</a></span></dt> <dt><span class="sect1"><a href="#overview">1.2. @@ -807,8 +839,8 @@ alink="#0000FF"> <div> <div> <h2 class="title" style="clear: both"><a name= - "id2623537" id= - "id2623537"></a>1.1. Introduction</h2> + "id2568707" id= + "id2568707"></a>1.1. Introduction</h2> </div> </div> </div> @@ -1118,13 +1150,13 @@ alink="#0000FF"> <dd> <dl> - <dt><span class="sect1"><a href="#id2569236">2.1. As + <dt><span class="sect1"><a href="#id2569429">2.1. As tar file</a></span></dt> - <dt><span class="sect1"><a href="#id2569252">2.2. Via + <dt><span class="sect1"><a href="#id2569445">2.2. Via SUP</a></span></dt> - <dt><span class="sect1"><a href="#id2569420">2.3. Via + <dt><span class="sect1"><a href="#id2569477">2.3. Via CVS</a></span></dt> </dl> </dd> @@ -1134,35 +1166,35 @@ alink="#0000FF"> <dd> <dl> - <dt><span class="sect1"><a href="#id2569530">3.1. + <dt><span class="sect1"><a href="#id2569587">3.1. Bootstrapping pkgsrc</a></span></dt> - <dt><span class="sect1"><a href="#id2569712">3.2. + <dt><span class="sect1"><a href="#id2569768">3.2. Platform specific notes</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2569718">3.2.1. Darwin (Mac OS + "#id2569774">3.2.1. Darwin (Mac OS X)</a></span></dt> <dt><span class="sect2"><a href= - "#id2569880">3.2.2. FreeBSD</a></span></dt> + "#id2569937">3.2.2. FreeBSD</a></span></dt> <dt><span class="sect2"><a href= - "#id2570324">3.2.3. Interix</a></span></dt> + "#id2570449">3.2.3. Interix</a></span></dt> <dt><span class="sect2"><a href= - "#id2570557">3.2.4. IRIX</a></span></dt> + "#id2570750">3.2.4. IRIX</a></span></dt> <dt><span class="sect2"><a href= - "#id2570654">3.2.5. Linux</a></span></dt> + "#id2570848">3.2.5. Linux</a></span></dt> <dt><span class="sect2"><a href= - "#id2570723">3.2.6. OpenBSD</a></span></dt> + "#id2570916">3.2.6. OpenBSD</a></span></dt> <dt><span class="sect2"><a href= - "#id2570835">3.2.7. Solaris</a></span></dt> + "#id2571028">3.2.7. Solaris</a></span></dt> </dl> </dd> </dl> @@ -1180,37 +1212,37 @@ alink="#0000FF"> <dd> <dl> <dt><span class="sect2"><a href= - "#id2571040">4.1.1. Where to get binary + "#id2571164">4.1.1. Where to get binary packages</a></span></dt> <dt><span class="sect2"><a href= - "#id2571080">4.1.2. How to use binary + "#id2571273">4.1.2. How to use binary packages</a></span></dt> <dt><span class="sect2"><a href= - "#id2571256">4.1.3. A word of + "#id2571381">4.1.3. A word of warning</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2571336">4.2. + <dt><span class="sect1"><a href="#id2571393">4.2. Building packages from source</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2571346">4.2.1. Requirements</a></span></dt> + "#id2571948">4.2.1. Requirements</a></span></dt> <dt><span class="sect2"><a href= - "#id2571366">4.2.2. Fetching + "#id2571969">4.2.2. Fetching distfiles</a></span></dt> <dt><span class="sect2"><a href= - "#id2571418">4.2.3. How to build and + "#id2572021">4.2.3. How to build and install</a></span></dt> <dt><span class="sect2"><a href= - "#id2623831">4.2.4. Selecting the + "#id2623888">4.2.4. Selecting the compiler</a></span></dt> </dl> </dd> @@ -1222,10 +1254,10 @@ alink="#0000FF"> <dd> <dl> - <dt><span class="sect1"><a href="#id2623917">5.1. + <dt><span class="sect1"><a href="#id2623974">5.1. Building a single binary package</a></span></dt> - <dt><span class="sect1"><a href="#id2623995">5.2. + <dt><span class="sect1"><a href="#id2624052">5.2. Settings for creation of binary packages</a></span></dt> @@ -1239,25 +1271,25 @@ alink="#0000FF"> Configuration</a></span></dt> <dt><span class="sect2"><a href= - "#id2624142">5.3.2. Other environmental + "#id2624199">5.3.2. Other environmental considerations</a></span></dt> <dt><span class="sect2"><a href= - "#id2624183">5.3.3. Operation</a></span></dt> + "#id2624240">5.3.3. Operation</a></span></dt> <dt><span class="sect2"><a href= - "#id2624252">5.3.4. What it does</a></span></dt> + "#id2624377">5.3.4. What it does</a></span></dt> <dt><span class="sect2"><a href= - "#id2624309">5.3.5. Disk space + "#id2624434">5.3.5. Disk space requirements</a></span></dt> <dt><span class="sect2"><a href= - "#id2624336">5.3.6. Setting up a sandbox for + "#id2624460">5.3.6. Setting up a sandbox for chroot'ed builds</a></span></dt> <dt><span class="sect2"><a href= - "#id2624865">5.3.7. Building a partial set of + "#id2624989">5.3.7. Building a partial set of packages</a></span></dt> <dt><span class="sect2"><a href= @@ -1266,14 +1298,14 @@ alink="#0000FF"> </dl> </dd> - <dt><span class="sect1"><a href="#id2625321">5.4. + <dt><span class="sect1"><a href="#id2625378">5.4. Creating a multiple CD-ROM packages collection</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2625336">5.4.1. Example of + "#id2625393">5.4.1. Example of cdpack</a></span></dt> </dl> </dd> @@ -1285,52 +1317,52 @@ alink="#0000FF"> <dd> <dl> - <dt><span class="sect1"><a href="#id2625528">6.1. Are + <dt><span class="sect1"><a href="#id2625585">6.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> - <dt><span class="sect1"><a href="#id2625662">6.2. + <dt><span class="sect1"><a href="#id2625787">6.2. Where's the pkgviews documentation?</a></span></dt> <dt><span class="sect1"><a href="#faq-pkgtools">6.3. Utilities for package management (pkgtools)</a></span></dt> - <dt><span class="sect1"><a href="#id2625984">6.4. How + <dt><span class="sect1"><a href="#id2626040">6.4. How to use pkgsrc as non-root</a></span></dt> - <dt><span class="sect1"><a href="#id2625995">6.5. How + <dt><span class="sect1"><a href="#id2626052">6.5. How to resume transfers when fetching distfiles?</a></span></dt> - <dt><span class="sect1"><a href="#id2626045">6.6. How + <dt><span class="sect1"><a href="#id2626102">6.6. How can I install/use XFree86 from pkgsrc?</a></span></dt> - <dt><span class="sect1"><a href="#id2626073">6.7. How + <dt><span class="sect1"><a href="#id2626130">6.7. How can I install/use X.org from pkgsrc?</a></span></dt> - <dt><span class="sect1"><a href="#id2626101">6.8. How + <dt><span class="sect1"><a href="#id2626157">6.8. How to fetch files from behind a firewall</a></span></dt> - <dt><span class="sect1"><a href="#id2626115">6.9. How + <dt><span class="sect1"><a href="#id2626171">6.9. How do I tell <span><strong class="command">make fetch</strong></span> to do passive FTP?</a></span></dt> - <dt><span class="sect1"><a href="#id2626166">6.10. + <dt><span class="sect1"><a href="#id2626222">6.10. How to fetch all distfiles at once</a></span></dt> - <dt><span class="sect1"><a href="#id2626313">6.11. + <dt><span class="sect1"><a href="#id2626438">6.11. What does “<span class="quote">Don't know how to make /usr/share/tmac/tmac.andoc</span>” mean?</a></span></dt> - <dt><span class="sect1"><a href="#id2626352">6.12. + <dt><span class="sect1"><a href="#id2626476">6.12. What does “<span class="quote">Could not find bsd.own.mk</span>” mean?</a></span></dt> - <dt><span class="sect1"><a href="#id2626409">6.13. + <dt><span class="sect1"><a href="#id2626534">6.13. Using 'sudo' with pkgsrc</a></span></dt> <dt><span class="sect1"><a href="#faq.conf">6.14. @@ -1360,13 +1392,13 @@ alink="#0000FF"> <p><b>Table of Contents</b></p> <dl> - <dt><span class="sect1"><a href="#id2569236">2.1. As + <dt><span class="sect1"><a href="#id2569429">2.1. As tar file</a></span></dt> - <dt><span class="sect1"><a href="#id2569252">2.2. Via + <dt><span class="sect1"><a href="#id2569445">2.2. Via SUP</a></span></dt> - <dt><span class="sect1"><a href="#id2569420">2.3. Via + <dt><span class="sect1"><a href="#id2569477">2.3. Via CVS</a></span></dt> </dl> </div> @@ -1380,7 +1412,7 @@ alink="#0000FF"> <div> <div> <h2 class="title" style="clear: both"><a name= - "id2569236" id="id2569236"></a>2.1. As tar + "id2569429" id="id2569429"></a>2.1. As tar file</h2> </div> </div> @@ -1398,7 +1430,7 @@ alink="#0000FF"> <div> <div> <h2 class="title" style="clear: both"><a name= - "id2569252" id="id2569252"></a>2.2. Via + "id2569445" id="id2569445"></a>2.2. Via SUP</h2> </div> </div> @@ -1424,7 +1456,7 @@ release=pkgsrc <div> <div> <h2 class="title" style="clear: both"><a name= - "id2569420" id="id2569420"></a>2.3. Via + "id2569477" id="id2569477"></a>2.3. Via CVS</h2> </div> </div> @@ -1481,33 +1513,33 @@ release=pkgsrc <p><b>Table of Contents</b></p> <dl> - <dt><span class="sect1"><a href="#id2569530">3.1. + <dt><span class="sect1"><a href="#id2569587">3.1. Bootstrapping pkgsrc</a></span></dt> - <dt><span class="sect1"><a href="#id2569712">3.2. + <dt><span class="sect1"><a href="#id2569768">3.2. Platform specific notes</a></span></dt> <dd> <dl> - <dt><span class="sect2"><a href="#id2569718">3.2.1. + <dt><span class="sect2"><a href="#id2569774">3.2.1. Darwin (Mac OS X)</a></span></dt> - <dt><span class="sect2"><a href="#id2569880">3.2.2. + <dt><span class="sect2"><a href="#id2569937">3.2.2. FreeBSD</a></span></dt> - <dt><span class="sect2"><a href="#id2570324">3.2.3. + <dt><span class="sect2"><a href="#id2570449">3.2.3. Interix</a></span></dt> - <dt><span class="sect2"><a href="#id2570557">3.2.4. + <dt><span class="sect2"><a href="#id2570750">3.2.4. IRIX</a></span></dt> - <dt><span class="sect2"><a href="#id2570654">3.2.5. + <dt><span class="sect2"><a href="#id2570848">3.2.5. Linux</a></span></dt> - <dt><span class="sect2"><a href="#id2570723">3.2.6. + <dt><span class="sect2"><a href="#id2570916">3.2.6. OpenBSD</a></span></dt> - <dt><span class="sect2"><a href="#id2570835">3.2.7. + <dt><span class="sect2"><a href="#id2571028">3.2.7. Solaris</a></span></dt> </dl> </dd> @@ -1519,8 +1551,8 @@ release=pkgsrc <div> <div> <h2 class="title" style="clear: both"><a name= - "id2569530" id= - "id2569530"></a>3.1. Bootstrapping pkgsrc</h2> + "id2569587" id= + "id2569587"></a>3.1. Bootstrapping pkgsrc</h2> </div> </div> </div> @@ -1610,7 +1642,7 @@ release=pkgsrc <div> <div> <h2 class="title" style="clear: both"><a name= - "id2569712" id="id2569712"></a>3.2. Platform + "id2569768" id="id2569768"></a>3.2. Platform specific notes</h2> </div> </div> @@ -1623,8 +1655,8 @@ release=pkgsrc <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2569718" id= - "id2569718"></a>3.2.1. Darwin (Mac OS + <h3 class="title"><a name="id2569774" id= + "id2569774"></a>3.2.1. Darwin (Mac OS X)</h3> </div> </div> @@ -1756,8 +1788,8 @@ release=pkgsrc <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2569880" id= - "id2569880"></a>3.2.2. FreeBSD</h3> + <h3 class="title"><a name="id2569937" id= + "id2569937"></a>3.2.2. FreeBSD</h3> </div> </div> </div> @@ -1813,8 +1845,8 @@ release=pkgsrc <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2570324" id= - "id2570324"></a>3.2.3. Interix</h3> + <h3 class="title"><a name="id2570449" id= + "id2570449"></a>3.2.3. Interix</h3> </div> </div> </div> @@ -1995,8 +2027,8 @@ interix:kP=\E[S:kN=\E[T:kH=\E[U:dc@:DC@:tc=pcansi: <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2570557" id= - "id2570557"></a>3.2.4. IRIX</h3> + <h3 class="title"><a name="id2570750" id= + "id2570750"></a>3.2.4. IRIX</h3> </div> </div> </div> @@ -2076,8 +2108,8 @@ PKGSRC_COMPILER=mipspro <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2570654" id= - "id2570654"></a>3.2.5. Linux</h3> + <h3 class="title"><a name="id2570848" id= + "id2570848"></a>3.2.5. Linux</h3> </div> </div> </div> @@ -2154,8 +2186,8 @@ ICCBASE=/opt/icc <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2570723" id= - "id2570723"></a>3.2.6. OpenBSD</h3> + <h3 class="title"><a name="id2570916" id= + "id2570916"></a>3.2.6. OpenBSD</h3> </div> </div> </div> @@ -2221,8 +2253,8 @@ ICCBASE=/opt/icc <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2570835" id= - "id2570835"></a>3.2.7. Solaris</h3> + <h3 class="title"><a name="id2571028" id= + "id2571028"></a>3.2.7. Solaris</h3> </div> </div> </div> @@ -2266,8 +2298,8 @@ ICCBASE=/opt/icc <div class="titlepage"> <div> <div> - <h4 class="title"><a name="id2570934" id= - "id2570934"></a>3.2.7.1. If you are using + <h4 class="title"><a name="id2571059" id= + "id2571059"></a>3.2.7.1. If you are using gcc</h4> </div> </div> @@ -2296,8 +2328,8 @@ ICCBASE=/opt/icc <div class="titlepage"> <div> <div> - <h4 class="title"><a name="id2570955" id= - "id2570955"></a>3.2.7.2. If you are using + <h4 class="title"><a name="id2571080" id= + "id2571080"></a>3.2.7.2. If you are using Sun WorkShop</h4> </div> </div> @@ -2374,32 +2406,32 @@ CFLAGS= -xtarget=ultra -xarch=v9 <dd> <dl> - <dt><span class="sect2"><a href="#id2571040">4.1.1. + <dt><span class="sect2"><a href="#id2571164">4.1.1. Where to get binary packages</a></span></dt> - <dt><span class="sect2"><a href="#id2571080">4.1.2. + <dt><span class="sect2"><a href="#id2571273">4.1.2. How to use binary packages</a></span></dt> - <dt><span class="sect2"><a href="#id2571256">4.1.3. + <dt><span class="sect2"><a href="#id2571381">4.1.3. A word of warning</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2571336">4.2. + <dt><span class="sect1"><a href="#id2571393">4.2. Building packages from source</a></span></dt> <dd> <dl> - <dt><span class="sect2"><a href="#id2571346">4.2.1. + <dt><span class="sect2"><a href="#id2571948">4.2.1. Requirements</a></span></dt> - <dt><span class="sect2"><a href="#id2571366">4.2.2. + <dt><span class="sect2"><a href="#id2571969">4.2.2. Fetching distfiles</a></span></dt> - <dt><span class="sect2"><a href="#id2571418">4.2.3. + <dt><span class="sect2"><a href="#id2572021">4.2.3. How to build and install</a></span></dt> - <dt><span class="sect2"><a href="#id2623831">4.2.4. + <dt><span class="sect2"><a href="#id2623888">4.2.4. Selecting the compiler</a></span></dt> </dl> </dd> @@ -2426,8 +2458,8 @@ CFLAGS= -xtarget=ultra -xarch=v9 <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2571040" id= - "id2571040"></a>4.1.1. Where to get binary + <h3 class="title"><a name="id2571164" id= + "id2571164"></a>4.1.1. Where to get binary packages</h3> </div> </div> @@ -2458,8 +2490,8 @@ CFLAGS= -xtarget=ultra -xarch=v9 <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2571080" id= - "id2571080"></a>4.1.2. How to use binary + <h3 class="title"><a name="id2571273" id= + "id2571273"></a>4.1.2. How to use binary packages</h3> </div> </div> @@ -2529,8 +2561,8 @@ CFLAGS= -xtarget=ultra -xarch=v9 <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2571256" id= - "id2571256"></a>4.1.3. A word of + <h3 class="title"><a name="id2571381" id= + "id2571381"></a>4.1.3. A word of warning</h3> </div> </div> @@ -2553,7 +2585,7 @@ CFLAGS= -xtarget=ultra -xarch=v9 <div> <div> <h2 class="title" style="clear: both"><a name= - "id2571336" id="id2571336"></a>4.2. Building + "id2571393" id="id2571393"></a>4.2. Building packages from source</h2> </div> </div> @@ -2568,8 +2600,8 @@ CFLAGS= -xtarget=ultra -xarch=v9 <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2571346" id= - "id2571346"></a>4.2.1. Requirements</h3> + <h3 class="title"><a name="id2571948" id= + "id2571948"></a>4.2.1. Requirements</h3> </div> </div> </div> @@ -2588,8 +2620,8 @@ CFLAGS= -xtarget=ultra -xarch=v9 <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2571366" id= - "id2571366"></a>4.2.2. Fetching + <h3 class="title"><a name="id2571969" id= + "id2571969"></a>4.2.2. Fetching distfiles</h3> </div> </div> @@ -2630,8 +2662,8 @@ CFLAGS= -xtarget=ultra -xarch=v9 <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2571418" id= - "id2571418"></a>4.2.3. How to build and + <h3 class="title"><a name="id2572021" id= + "id2572021"></a>4.2.3. How to build and install</h3> </div> </div> @@ -2799,8 +2831,8 @@ CFLAGS= -xtarget=ultra -xarch=v9 <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2623831" id= - "id2623831"></a>4.2.4. Selecting the + <h3 class="title"><a name="id2623888" id= + "id2623888"></a>4.2.4. Selecting the compiler</h3> </div> </div> @@ -2900,10 +2932,10 @@ CFLAGS= -xtarget=ultra -xarch=v9 <p><b>Table of Contents</b></p> <dl> - <dt><span class="sect1"><a href="#id2623917">5.1. + <dt><span class="sect1"><a href="#id2623974">5.1. Building a single binary package</a></span></dt> - <dt><span class="sect1"><a href="#id2623995">5.2. + <dt><span class="sect1"><a href="#id2624052">5.2. Settings for creation of binary packages</a></span></dt> @@ -2916,23 +2948,23 @@ CFLAGS= -xtarget=ultra -xarch=v9 "#binary.configuration">5.3.1. Configuration</a></span></dt> - <dt><span class="sect2"><a href="#id2624142">5.3.2. + <dt><span class="sect2"><a href="#id2624199">5.3.2. Other environmental considerations</a></span></dt> - <dt><span class="sect2"><a href="#id2624183">5.3.3. + <dt><span class="sect2"><a href="#id2624240">5.3.3. Operation</a></span></dt> - <dt><span class="sect2"><a href="#id2624252">5.3.4. + <dt><span class="sect2"><a href="#id2624377">5.3.4. What it does</a></span></dt> - <dt><span class="sect2"><a href="#id2624309">5.3.5. + <dt><span class="sect2"><a href="#id2624434">5.3.5. Disk space requirements</a></span></dt> - <dt><span class="sect2"><a href="#id2624336">5.3.6. + <dt><span class="sect2"><a href="#id2624460">5.3.6. Setting up a sandbox for chroot'ed builds</a></span></dt> - <dt><span class="sect2"><a href="#id2624865">5.3.7. + <dt><span class="sect2"><a href="#id2624989">5.3.7. Building a partial set of packages</a></span></dt> <dt><span class="sect2"><a href= @@ -2941,13 +2973,13 @@ CFLAGS= -xtarget=ultra -xarch=v9 </dl> </dd> - <dt><span class="sect1"><a href="#id2625321">5.4. + <dt><span class="sect1"><a href="#id2625378">5.4. Creating a multiple CD-ROM packages collection</a></span></dt> <dd> <dl> - <dt><span class="sect2"><a href="#id2625336">5.4.1. + <dt><span class="sect2"><a href="#id2625393">5.4.1. Example of cdpack</a></span></dt> </dl> </dd> @@ -2959,7 +2991,7 @@ CFLAGS= -xtarget=ultra -xarch=v9 <div> <div> <h2 class="title" style="clear: both"><a name= - "id2623917" id="id2623917"></a>5.1. Building a + "id2623974" id="id2623974"></a>5.1. Building a single binary package</h2> </div> </div> @@ -3003,8 +3035,8 @@ CFLAGS= -xtarget=ultra -xarch=v9 class="pkgname">misc/figlet</a> example.</p> <p>See <a href="#submit" title= - "Chapter 14. Submitting and Committing">Chapter - 14, <i>Submitting and Committing</i></a> for information + "Chapter 15. Submitting and Committing">Chapter + 15, <i>Submitting and Committing</i></a> for information on how to submit such a binary package.</p> </div> @@ -3013,14 +3045,14 @@ CFLAGS= -xtarget=ultra -xarch=v9 <div> <div> <h2 class="title" style="clear: both"><a name= - "id2623995" id="id2623995"></a>5.2. Settings + "id2624052" id="id2624052"></a>5.2. Settings for creation of binary packages</h2> </div> </div> </div> <p>See <a href="#build.helpful-targets" title= - "11.3. Other helpful targets">Section 11.3, + "12.3. Other helpful targets">Section 12.3, “Other helpful targets”</a>.</p> </div> @@ -3095,8 +3127,8 @@ _ACCEPTABLE= yes <div class="titlepage"> <div> <div> - <h4 class="title"><a name="id2624060" id= - "id2624060"></a>5.3.1.2. <code class= + <h4 class="title"><a name="id2624117" id= + "id2624117"></a>5.3.1.2. <code class= "filename">build.conf</code></h4> </div> </div> @@ -3121,8 +3153,8 @@ _ACCEPTABLE= yes <div class="titlepage"> <div> <div> - <h4 class="title"><a name="id2624097" id= - "id2624097"></a>5.3.1.3. <code class= + <h4 class="title"><a name="id2624153" id= + "id2624153"></a>5.3.1.3. <code class= "filename">pre-build.local</code></h4> </div> </div> @@ -3156,8 +3188,8 @@ _ACCEPTABLE= yes <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2624142" id= - "id2624142"></a>5.3.2. Other environmental + <h3 class="title"><a name="id2624199" id= + "id2624199"></a>5.3.2. Other environmental considerations</h3> </div> </div> @@ -3198,8 +3230,8 @@ fi <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2624183" id= - "id2624183"></a>5.3.3. Operation</h3> + <h3 class="title"><a name="id2624240" id= + "id2624240"></a>5.3.3. Operation</h3> </div> </div> </div> @@ -3245,8 +3277,8 @@ fi <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2624252" id= - "id2624252"></a>5.3.4. What it does</h3> + <h3 class="title"><a name="id2624377" id= + "id2624377"></a>5.3.4. What it does</h3> </div> </div> </div> @@ -3304,8 +3336,8 @@ fi <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2624309" id= - "id2624309"></a>5.3.5. Disk space + <h3 class="title"><a name="id2624434" id= + "id2624434"></a>5.3.5. Disk space requirements</h3> </div> </div> @@ -3347,8 +3379,8 @@ fi <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2624336" id= - "id2624336"></a>5.3.6. Setting up a sandbox + <h3 class="title"><a name="id2624460" id= + "id2624460"></a>5.3.6. Setting up a sandbox for chroot'ed builds</h3> </div> </div> @@ -3537,8 +3569,8 @@ fi <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2624865" id= - "id2624865"></a>5.3.7. Building a partial + <h3 class="title"><a name="id2624989" id= + "id2624989"></a>5.3.7. Building a partial set of packages</h3> </div> </div> @@ -3731,7 +3763,7 @@ nbftp% <strong class="userinput"><code>chmod 755 .</code></strong> <div> <div> <h2 class="title" style="clear: both"><a name= - "id2625321" id="id2625321"></a>5.4. Creating a + "id2625378" id="id2625378"></a>5.4. Creating a multiple CD-ROM packages collection</h2> </div> </div> @@ -3754,8 +3786,8 @@ nbftp% <strong class="userinput"><code>chmod 755 .</code></strong> <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2625336" id= - "id2625336"></a>5.4.1. Example of + <h3 class="title"><a name="id2625393" id= + "id2625393"></a>5.4.1. Example of cdpack</h3> </div> </div> @@ -3828,51 +3860,51 @@ nbftp% <strong class="userinput"><code>chmod 755 .</code></strong> <p><b>Table of Contents</b></p> <dl> - <dt><span class="sect1"><a href="#id2625528">6.1. Are + <dt><span class="sect1"><a href="#id2625585">6.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> - <dt><span class="sect1"><a href="#id2625662">6.2. + <dt><span class="sect1"><a href="#id2625787">6.2. Where's the pkgviews documentation?</a></span></dt> <dt><span class="sect1"><a href="#faq-pkgtools">6.3. Utilities for package management (pkgtools)</a></span></dt> - <dt><span class="sect1"><a href="#id2625984">6.4. How + <dt><span class="sect1"><a href="#id2626040">6.4. How to use pkgsrc as non-root</a></span></dt> - <dt><span class="sect1"><a href="#id2625995">6.5. How + <dt><span class="sect1"><a href="#id2626052">6.5. How to resume transfers when fetching distfiles?</a></span></dt> - <dt><span class="sect1"><a href="#id2626045">6.6. How + <dt><span class="sect1"><a href="#id2626102">6.6. How can I install/use XFree86 from pkgsrc?</a></span></dt> - <dt><span class="sect1"><a href="#id2626073">6.7. How + <dt><span class="sect1"><a href="#id2626130">6.7. How can I install/use X.org from pkgsrc?</a></span></dt> - <dt><span class="sect1"><a href="#id2626101">6.8. How + <dt><span class="sect1"><a href="#id2626157">6.8. How to fetch files from behind a firewall</a></span></dt> - <dt><span class="sect1"><a href="#id2626115">6.9. How + <dt><span class="sect1"><a href="#id2626171">6.9. How do I tell <span><strong class="command">make fetch</strong></span> to do passive FTP?</a></span></dt> - <dt><span class="sect1"><a href="#id2626166">6.10. How + <dt><span class="sect1"><a href="#id2626222">6.10. How to fetch all distfiles at once</a></span></dt> - <dt><span class="sect1"><a href="#id2626313">6.11. What + <dt><span class="sect1"><a href="#id2626438">6.11. What does “<span class="quote">Don't know how to make /usr/share/tmac/tmac.andoc</span>” mean?</a></span></dt> - <dt><span class="sect1"><a href="#id2626352">6.12. What + <dt><span class="sect1"><a href="#id2626476">6.12. What does “<span class="quote">Could not find bsd.own.mk</span>” mean?</a></span></dt> - <dt><span class="sect1"><a href="#id2626409">6.13. + <dt><span class="sect1"><a href="#id2626534">6.13. Using 'sudo' with pkgsrc</a></span></dt> <dt><span class="sect1"><a href="#faq.conf">6.14. @@ -3894,7 +3926,7 @@ nbftp% <strong class="userinput"><code>chmod 755 .</code></strong> <div> <div> <h2 class="title" style="clear: both"><a name= - "id2625528" id="id2625528"></a>6.1. Are there + "id2625585" id="id2625585"></a>6.1. Are there any mailing lists for pkg-related discussion?</h2> </div> </div> @@ -3953,7 +3985,7 @@ nbftp% <strong class="userinput"><code>chmod 755 .</code></strong> <div> <div> <h2 class="title" style="clear: both"><a name= - "id2625662" id="id2625662"></a>6.2. Where's + "id2625787" id="id2625787"></a>6.2. Where's the pkgviews documentation?</h2> </div> </div> @@ -4208,7 +4240,7 @@ nbftp% <strong class="userinput"><code>chmod 755 .</code></strong> <div> <div> <h2 class="title" style="clear: both"><a name= - "id2625984" id="id2625984"></a>6.4. How to use + "id2626040" id="id2626040"></a>6.4. How to use pkgsrc as non-root</h2> </div> </div> @@ -4226,7 +4258,7 @@ nbftp% <strong class="userinput"><code>chmod 755 .</code></strong> <div> <div> <h2 class="title" style="clear: both"><a name= - "id2625995" id="id2625995"></a>6.5. How to + "id2626052" id="id2626052"></a>6.5. How to resume transfers when fetching distfiles?</h2> </div> </div> @@ -4269,7 +4301,7 @@ nbftp% <strong class="userinput"><code>chmod 755 .</code></strong> <div> <div> <h2 class="title" style="clear: both"><a name= - "id2626045" id="id2626045"></a>6.6. How can I + "id2626102" id="id2626102"></a>6.6. How can I install/use XFree86 from pkgsrc?</h2> </div> </div> @@ -4292,7 +4324,7 @@ nbftp% <strong class="userinput"><code>chmod 755 .</code></strong> <div> <div> <h2 class="title" style="clear: both"><a name= - "id2626073" id="id2626073"></a>6.7. How can I + "id2626130" id="id2626130"></a>6.7. How can I install/use X.org from pkgsrc?</h2> </div> </div> @@ -4315,7 +4347,7 @@ nbftp% <strong class="userinput"><code>chmod 755 .</code></strong> <div> <div> <h2 class="title" style="clear: both"><a name= - "id2626101" id="id2626101"></a>6.8. How to + "id2626157" id="id2626157"></a>6.8. How to fetch files from behind a firewall</h2> </div> </div> @@ -4340,7 +4372,7 @@ http_proxy=http://orpheus.amdahl.com:80/ <div> <div> <h2 class="title" style="clear: both"><a name= - "id2626115" id="id2626115"></a>6.9. How do I + "id2626171" id="id2626171"></a>6.9. How do I tell <span><strong class="command">make fetch</strong></span> to do passive FTP?</h2> </div> @@ -4374,7 +4406,7 @@ ${LOCALBASE}/bin/ftp <div> <div> <h2 class="title" style="clear: both"><a name= - "id2626166" id="id2626166"></a>6.10. How to + "id2626222" id="id2626222"></a>6.10. How to fetch all distfiles at once</h2> </div> </div> @@ -4447,7 +4479,7 @@ ${LOCALBASE}/bin/ftp <div> <div> <h2 class="title" style="clear: both"><a name= - "id2626313" id="id2626313"></a>6.11. What does + "id2626438" id="id2626438"></a>6.11. What does “<span class="quote">Don't know how to make /usr/share/tmac/tmac.andoc</span>” mean?</h2> </div> @@ -4479,7 +4511,7 @@ ${LOCALBASE}/bin/ftp <div> <div> <h2 class="title" style="clear: both"><a name= - "id2626352" id="id2626352"></a>6.12. What does + "id2626476" id="id2626476"></a>6.12. What does “<span class="quote">Could not find bsd.own.mk</span>” mean?</h2> </div> @@ -4508,7 +4540,7 @@ ${LOCALBASE}/bin/ftp <div> <div> <h2 class="title" style="clear: both"><a name= - "id2626409" id="id2626409"></a>6.13. Using + "id2626534" id="id2626534"></a>6.13. Using 'sudo' with pkgsrc</h2> </div> </div> @@ -4756,94 +4788,125 @@ CONF_FILES= ${EGDIR}/Muttrc ${PKG_SYSCONFDIR}/Muttrc <p><b>Table of Contents</b></p> <dl> - <dt><span class="chapter"><a href="#components">7. + <dt><span class="chapter"><a href="#makefile">7. + Programming in <code class= + "filename">Makefile</code>s</a></span></dt> + + <dd> + <dl> + <dt><span class="sect1"><a href= + "#makefile.variables">7.1. <code class= + "filename">Makefile</code> variables</a></span></dt> + + <dt><span class="sect1"><a href="#makefile.code">7.2. + Code snippets</a></span></dt> + + <dd> + <dl> + <dt><span class="sect2"><a href= + "#id2627092">7.2.1. Adding things to a + list</a></span></dt> + + <dt><span class="sect2"><a href= + "#id2627101">7.2.2. Converting an internal list + into an external list</a></span></dt> + + <dt><span class="sect2"><a href= + "#id2627188">7.2.3. Passing variables to a shell + command</a></span></dt> + </dl> + </dd> + </dl> + </dd> + + <dt><span class="chapter"><a href="#components">8. Package components - files, directories and contents</a></span></dt> <dd> <dl> <dt><span class="sect1"><a href= - "#components.Makefile">7.1. <code class= + "#components.Makefile">8.1. <code class= "filename">Makefile</code></a></span></dt> <dt><span class="sect1"><a href= - "#components.distinfo">7.2. <code class= + "#components.distinfo">8.2. <code class= "filename">distinfo</code></a></span></dt> <dt><span class="sect1"><a href= - "#components.patches">7.3. patches/*</a></span></dt> + "#components.patches">8.3. patches/*</a></span></dt> - <dt><span class="sect1"><a href="#id2627489">7.4. + <dt><span class="sect1"><a href="#id2627883">8.4. Other mandatory files</a></span></dt> <dt><span class="sect1"><a href= - "#components.optional">7.5. Optional + "#components.optional">8.5. Optional files</a></span></dt> - <dt><span class="sect1"><a href="#id2627614">7.6. + <dt><span class="sect1"><a href="#id2628146">8.6. <code class="filename">work*</code></a></span></dt> - <dt><span class="sect1"><a href="#id2627770">7.7. + <dt><span class="sect1"><a href="#id2628233">8.7. <code class="filename">files/*</code></a></span></dt> </dl> </dd> - <dt><span class="chapter"><a href="#plist">8. PLIST + <dt><span class="chapter"><a href="#plist">9. PLIST issues</a></span></dt> <dd> <dl> - <dt><span class="sect1"><a href="#id2627961">8.1. RCS + <dt><span class="sect1"><a href="#id2628288">9.1. RCS ID</a></span></dt> - <dt><span class="sect1"><a href="#id2627976">8.2. + <dt><span class="sect1"><a href="#id2628302">9.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> - <dt><span class="sect1"><a href="#print-PLIST">8.3. + <dt><span class="sect1"><a href="#print-PLIST">9.3. Tweaking output of <span><strong class="command">make print-PLIST</strong></span></a></span></dt> - <dt><span class="sect1"><a href="#plist.misc">8.4. + <dt><span class="sect1"><a href="#plist.misc">9.4. Variable substitution in PLIST</a></span></dt> - <dt><span class="sect1"><a href="#id2628297">8.5. + <dt><span class="sect1"><a href="#id2628692">9.5. Manpage-compression</a></span></dt> - <dt><span class="sect1"><a href="#id2628339">8.6. + <dt><span class="sect1"><a href="#id2628733">9.6. Changing PLIST source with <code class= "varname">PLIST_SRC</code></a></span></dt> - <dt><span class="sect1"><a href="#id2628363">8.7. + <dt><span class="sect1"><a href="#id2628758">9.7. Platform specific and differing PLISTs</a></span></dt> <dt><span class="sect1"><a href= - "#faq.common-dirs">8.8. Sharing directories between + "#faq.common-dirs">9.8. Sharing directories between packages</a></span></dt> </dl> </dd> - <dt><span class="chapter"><a href="#buildlink">9. + <dt><span class="chapter"><a href="#buildlink">10. Buildlink methodology</a></span></dt> <dd> <dl> - <dt><span class="sect1"><a href="#id2628562">9.1. + <dt><span class="sect1"><a href="#id2629025">10.1. Converting packages to use buildlink3</a></span></dt> - <dt><span class="sect1"><a href="#id2628948">9.2. + <dt><span class="sect1"><a href="#id2629206">10.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2629017">9.2.1. Anatomy of a buildlink3.mk + "#id2629344">10.2.1. Anatomy of a buildlink3.mk file</a></span></dt> <dt><span class="sect2"><a href= - "#id2629458">9.2.2. Updating <code class= + "#id2629921">10.2.2. Updating <code class= "varname">BUILDLINK_DEPENDS.<em class= "replaceable"><code>pkg</code></em></code> in <code class="filename">buildlink3.mk</code> @@ -4851,257 +4914,257 @@ CONF_FILES= ${EGDIR}/Muttrc ${PKG_SYSCONFDIR}/Muttrc </dl> </dd> - <dt><span class="sect1"><a href="#id2629537">9.3. + <dt><span class="sect1"><a href="#id2630000">10.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2629618">9.3.1. Anatomy of a <code class= + "#id2630081">10.3.1. Anatomy of a <code class= "filename">builtin.mk</code> file</a></span></dt> <dt><span class="sect2"><a href= - "#id2629913">9.3.2. Global preferences for native - or pkgsrc software</a></span></dt> + "#id2630240">10.3.2. Global preferences for + native or pkgsrc software</a></span></dt> </dl> </dd> </dl> </dd> - <dt><span class="chapter"><a href="#options">10. Options + <dt><span class="chapter"><a href="#options">11. Options handling</a></span></dt> <dd> <dl> - <dt><span class="sect1"><a href="#id2629986">10.1. + <dt><span class="sect1"><a href="#id2630312">11.1. Global default options</a></span></dt> - <dt><span class="sect1"><a href="#id2630001">10.2. + <dt><span class="sect1"><a href="#id2630327">11.2. Converting packages to use <code class= "filename">bsd.options.mk</code></a></span></dt> </dl> </dd> - <dt><span class="chapter"><a href="#build">11. The build + <dt><span class="chapter"><a href="#build">12. The build process</a></span></dt> <dd> <dl> - <dt><span class="sect1"><a href="#build.prefix">11.1. + <dt><span class="sect1"><a href="#build.prefix">12.1. Program location</a></span></dt> - <dt><span class="sect1"><a href="#id2630624">11.2. + <dt><span class="sect1"><a href="#id2631086">12.2. Main targets</a></span></dt> <dt><span class="sect1"><a href= - "#build.helpful-targets">11.3. Other helpful + "#build.helpful-targets">12.3. Other helpful targets</a></span></dt> </dl> </dd> - <dt><span class="chapter"><a href="#fixes">12. Notes on + <dt><span class="chapter"><a href="#fixes">13. Notes on fixes for packages</a></span></dt> <dd> <dl> - <dt><span class="sect1"><a href="#id2632120">12.1. + <dt><span class="sect1"><a href="#id2632515">13.1. General operation</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2632123">12.1.1. How to pull in variables + "#id2632518">13.1.1. How to pull in variables from /etc/mk.conf</a></span></dt> <dt><span class="sect2"><a href= - "#id2632275">12.1.2. Restricted + "#id2632601">13.1.2. Restricted packages</a></span></dt> <dt><span class="sect2"><a href= - "#dependencies">12.1.3. Handling + "#dependencies">13.1.3. Handling dependencies</a></span></dt> <dt><span class="sect2"><a href= - "#id2632728">12.1.4. Handling conflicts with + "#id2633123">13.1.4. Handling conflicts with other packages</a></span></dt> <dt><span class="sect2"><a href= - "#id2632846">12.1.5. Packages that cannot or + "#id2633173">13.1.5. Packages that cannot or should not be built</a></span></dt> <dt><span class="sect2"><a href= - "#id2632872">12.1.6. Packages which should not be + "#id2633198">13.1.6. Packages which should not be deleted, once installed</a></span></dt> <dt><span class="sect2"><a href= - "#security-handling">12.1.7. Handling packages + "#security-handling">13.1.7. Handling packages with security problems</a></span></dt> <dt><span class="sect2"><a href= - "#id2632964">12.1.8. How to handle compiler + "#id2633290">13.1.8. How to handle compiler bugs</a></span></dt> <dt><span class="sect2"><a href= - "#id2633054">12.1.9. How to handle incrementing + "#id2633313">13.1.9. How to handle incrementing versions when fixing an existing package</a></span></dt> <dt><span class="sect2"><a href= - "#id2633104">12.1.10. Portability of + "#id2633362">13.1.10. Portability of packages</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2633128">12.2. + <dt><span class="sect1"><a href="#id2633386">13.2. Possible downloading issues</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2633131">12.2.1. Packages whose distfiles + "#id2633389">13.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> <dt><span class="sect2"><a href= - "#id2633194">12.2.2. How to handle modified + "#id2633452">13.2.2. How to handle modified distfiles with the 'old' name</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2633206">12.3. + <dt><span class="sect1"><a href="#id2633601">13.3. Configuration gotchas</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#fixes.libtool">12.3.1. Shared libraries - + "#fixes.libtool">13.3.1. Shared libraries - libtool</a></span></dt> <dt><span class="sect2"><a href= - "#id2633640">12.3.2. Using libtool on GNU + "#id2634035">13.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> <dt><span class="sect2"><a href= - "#id2633721">12.3.3. GNU + "#id2634184">13.3.3. GNU Autoconf/Automake</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2633834">12.4. + <dt><span class="sect1"><a href="#id2634229">13.4. Building considerations</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2633837">12.4.1. CPP defines</a></span></dt> + "#id2634232">13.4.1. CPP defines</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2633867">12.5. + <dt><span class="sect1"><a href="#id2634262">13.5. Package specific actions</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2633870">12.5.1. Package configuration + "#id2634265">13.5.1. Package configuration files</a></span></dt> <dt><span class="sect2"><a href= - "#id2633973">12.5.2. User + "#id2634436">13.5.2. User interaction</a></span></dt> <dt><span class="sect2"><a href= - "#id2634018">12.5.3. Handling + "#id2634549">13.5.3. Handling licenses</a></span></dt> <dt><span class="sect2"><a href= - "#id2634169">12.5.4. Creating an account from a + "#id2634632">13.5.4. Creating an account from a package</a></span></dt> <dt><span class="sect2"><a href= - "#id2634231">12.5.5. Installing score + "#id2634694">13.5.5. Installing score files</a></span></dt> <dt><span class="sect2"><a href= - "#id2634411">12.5.6. Packages providing login + "#id2634738">13.5.6. Packages providing login shells</a></span></dt> <dt><span class="sect2"><a href= - "#id2634469">12.5.7. Packages containing perl + "#id2634795">13.5.7. Packages containing perl scripts</a></span></dt> <dt><span class="sect2"><a href= - "#id2634555">12.5.8. Packages with hardcoded + "#id2634813">13.5.8. Packages with hardcoded paths to other interpreters</a></span></dt> <dt><span class="sect2"><a href= - "#id2634577">12.5.9. Packages installing perl + "#id2634835">13.5.9. Packages installing perl modules</a></span></dt> <dt><span class="sect2"><a href= - "#faq.info-files">12.5.10. Packages installing + "#faq.info-files">13.5.10. Packages installing info files</a></span></dt> <dt><span class="sect2"><a href= - "#id2634865">12.5.11. Packages installing GConf2 + "#id2635123">13.5.11. Packages installing GConf2 data files</a></span></dt> <dt><span class="sect2"><a href= - "#id2634965">12.5.12. Packages installing + "#id2635360">13.5.12. Packages installing scrollkeeper data files</a></span></dt> <dt><span class="sect2"><a href= - "#id2635016">12.5.13. Packages installing X11 + "#id2635411">13.5.13. Packages installing X11 fonts</a></span></dt> <dt><span class="sect2"><a href= - "#id2635063">12.5.14. Packages installing GTK2 + "#id2635526">13.5.14. Packages installing GTK2 modules</a></span></dt> <dt><span class="sect2"><a href= - "#id2635201">12.5.15. Packages installing SGML or + "#id2635595">13.5.15. Packages installing SGML or XML data</a></span></dt> <dt><span class="sect2"><a href= - "#id2635253">12.5.16. Packages installing + "#id2635648">13.5.16. Packages installing extensions to the MIME database</a></span></dt> <dt><span class="sect2"><a href= - "#id2635323">12.5.17. Packages using + "#id2635718">13.5.17. Packages using intltool</a></span></dt> <dt><span class="sect2"><a href= - "#id2635337">12.5.18. Packages installing startup + "#id2635732">13.5.18. Packages installing startup scripts</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2635358">12.6. + <dt><span class="sect1"><a href="#id2635753">13.6. Feedback to the author</a></span></dt> </dl> </dd> - <dt><span class="chapter"><a href="#debug">13. + <dt><span class="chapter"><a href="#debug">14. Debugging</a></span></dt> - <dt><span class="chapter"><a href="#submit">14. + <dt><span class="chapter"><a href="#submit">15. Submitting and Committing</a></span></dt> <dd> <dl> - <dt><span class="sect1"><a href="#id2635957">14.1. + <dt><span class="sect1"><a href="#id2636215">15.1. Submitting your packages</a></span></dt> - <dt><span class="sect1"><a href="#id2636014">14.2. + <dt><span class="sect1"><a href="#id2636273">15.2. Committing: Importing a package into CVS</a></span></dt> - <dt><span class="sect1"><a href="#id2636077">14.3. + <dt><span class="sect1"><a href="#id2636540">15.3. Updating a package to a newer version</a></span></dt> - <dt><span class="sect1"><a href="#id2636097">14.4. + <dt><span class="sect1"><a href="#id2636560">15.4. Moving a package in pkgsrc</a></span></dt> </dl> </dd> @@ -5112,8 +5175,275 @@ CONF_FILES= ${EGDIR}/Muttrc ${PKG_SYSCONFDIR}/Muttrc <div class="titlepage"> <div> <div> + <h2 class="title"><a name="makefile" id= + "makefile"></a>Chapter 7. Programming in + <code class="filename">Makefile</code>s</h2> + </div> + </div> + </div> + + <div class="toc"> + <p><b>Table of Contents</b></p> + + <dl> + <dt><span class="sect1"><a href= + "#makefile.variables">7.1. <code class= + "filename">Makefile</code> variables</a></span></dt> + + <dt><span class="sect1"><a href="#makefile.code">7.2. + Code snippets</a></span></dt> + + <dd> + <dl> + <dt><span class="sect2"><a href="#id2627092">7.2.1. + Adding things to a list</a></span></dt> + + <dt><span class="sect2"><a href="#id2627101">7.2.2. + Converting an internal list into an external + list</a></span></dt> + + <dt><span class="sect2"><a href="#id2627188">7.2.3. + Passing variables to a shell + command</a></span></dt> + </dl> + </dd> + </dl> + </div> + + <p>WARNING: The <a href= + "http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-current"> + <span class="citerefentry"><span class= + "refentrytitle">make</span>(1)</span></a> man page is + wrong. After the man page has been corrected, this chapter + will be updated. Until that, don't take it too serious.</p> + + <p>Pkgsrc consists of many <code class= + "filename">Makefile</code> fragments, each of which forms a + well-defined part of the pkgsrc system. Using the <a href= + "http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-current"> + <span class="citerefentry"><span class= + "refentrytitle">make</span>(1)</span></a> system as a + programming language for a big system like pkgsrc requires + some discipline to keep the code correct and + understandable.</p> + + <p>The basic ingredients for <code class= + "filename">Makefile</code> programming are variables (which + are actually macros) and shell commands. Among these shell + commands may even be more complex ones like <a href= + "http://netbsd.gw.com/cgi-bin/man-cgi?awk+1+NetBSD-current"> + <span class="citerefentry"><span class= + "refentrytitle">awk</span>(1)</span></a> programs. To make + sure that every shell command runs as intended it is + necessary to quote all variables correctly when they are + used.</p> + + <p>This chapter describes some patterns, that appear quite + often in <code class="filename">Makefile</code>s, including + the pitfalls that come along with them.</p> + + <div class="sect1" lang="en" xml:lang="en"> + <div class="titlepage"> + <div> + <div> + <h2 class="title" style="clear: both"><a name= + "makefile.variables" id= + "makefile.variables"></a>7.1. <code class= + "filename">Makefile</code> variables</h2> + </div> + </div> + </div> + + <p>A restriction common to all types of variables is that + they can neither contain a newline character nor the '\0' + character nor the '#' character. The effects of the + backslash character is not documented, so you should not + use it at the moment. As the $ is used to get values of a + <code class="filename">Makefile</code> variable, it must + be quoted as $$.</p> + + <p>There are several types of variables that must be + handled differently.</p> + + <div class="itemizedlist"> + <ul type="disc"> + <li> + <p><span class="emphasis"><em>Simple + values</em></span> (which I will call atoms) can + contain any string, which does not have to be + quoted in any way. All other types are somewhat + restricted in their possible values.</p> + </li> + + <li> + <p><span class="emphasis"><em>Internal + lists</em></span> are lists that are never exported + to any shell command. Their elements are separated + by whitespace. Therefore the elements themselves + cannot have embedded whitespace. Any other + characters are allowed. Internal lists can be used + in <code class="varname">.for</code> loops. + Examples are <code class="varname">DEPENDS</code>, + <code class="varname">BUILD_DEPENDS</code>.</p> + </li> + + <li> + <p><span class="emphasis"><em>External + lists</em></span> are lists that may be exported to + a shell command. Their elements can contain any + characters, including whitespace. That's why they + cannot be used in <code class="varname">.for</code> + loops. Examples are <code class= + "varname">DISTFILES</code>, <code class= + "varname">MASTER_SITES</code>.</p> + </li> + </ul> + </div> + </div> + + <div class="sect1" lang="en" xml:lang="en"> + <div class="titlepage"> + <div> + <div> + <h2 class="title" style="clear: both"><a name= + "makefile.code" id= + "makefile.code"></a>7.2. Code snippets</h2> + </div> + </div> + </div> + + <p>This section presents you with some code snippets you + should use in your own code. If you don't find anything + appropriate here, you should test your code and add it + here.</p> + + <div class="sect2" lang="en" xml:lang="en"> + <div class="titlepage"> + <div> + <div> + <h3 class="title"><a name="id2627092" id= + "id2627092"></a>7.2.1. Adding things to a + list</h3> + </div> + </div> + </div> + <pre class="programlisting"> +ATOM= foo * bar `date` +INT_LIST= # empty +ANOTHER_INT_LIST= apache-[0-9]*:../../www/apache +EXT_LIST= # empty +ANOTHER_EXT_LIST= a=b c=d + +INT_LIST+= ${ATOM} # 1 +INT_LIST+= ${ANOTHER_INT_LIST} # 2 +EXT_LIST+= ${ATOM:Q} # 3 +EXT_LIST+= ${ANOTHER_EXT_LIST} # 4 + +</pre> + + <p>When you add an atom to an external list (example + 3), it must be quoted. In all other cases, you must not + add a quoting level. You must not merge internal and + external lists, unless you are sure that all entries + are correctly interpreted in both lists.</p> + </div> + + <div class="sect2" lang="en" xml:lang="en"> + <div class="titlepage"> + <div> + <div> + <h3 class="title"><a name="id2627101" id= + "id2627101"></a>7.2.2. Converting an + internal list into an external list</h3> + </div> + </div> + </div> + <pre class="programlisting"> +EXT_LIST= # empty +.for i in ${INT_LIST} +EXT_LIST+= ${i:Q} +.endfor + +</pre> + + <p>This code converts the internal list <code class= + "varname">INT_LIST</code> into the external list + <code class="varname">EXT_LIST</code>. As the elements + of an internal list are unquoted they must be quoted + here.</p> + </div> + + <div class="sect2" lang="en" xml:lang="en"> + <div class="titlepage"> + <div> + <div> + <h3 class="title"><a name="id2627188" id= + "id2627188"></a>7.2.3. Passing variables to + a shell command</h3> + </div> + </div> + </div> + <pre class="programlisting"> +ATOM= foo bar < > * `date` $$HOME ' " +EXT_LIST= atom=${ATOM:Q} x=second\ item + +all: + echo ${ATOM} # 1 + echo "${ATOM}" # 2 + echo "${ATOM:Q}" # 3 + echo ${ATOM:Q} # 4 + echo x${ATOM:Q} | sed 1s,.,, # 5 + env ${EXT_LIST} /bin/sh -c 'echo "$$atom"; echo "$$x"' + +</pre> + + <p>Example 1 leads to a syntax error in the shell, as + the characters are just copied.</p> + + <p>Example 2 leads to a syntax error too, and when you + leave out the last " character from <code class= + "varname">${ATOM}</code> the <a href= + "http://netbsd.gw.com/cgi-bin/man-cgi?date+1+NetBSD-current"> + <span class="citerefentry"><span class= + "refentrytitle">date</span>(1)</span></a> would be + executed. The <code class="varname">$HOME</code> shell + variable would be evaluated, too.</p> + + <p>Example 3 would output precede each space character + with a backslash (or not), depending on the + implementation of the <a href= + "http://netbsd.gw.com/cgi-bin/man-cgi?echo+1+NetBSD-current"> + <span class="citerefentry"><span class= + "refentrytitle">echo</span>(1)</span></a> command.</p> + + <p>Example 4 handles correctly every string that does + not start with a dash. In that case, the result depends + on the implementation of the <a href= + "http://netbsd.gw.com/cgi-bin/man-cgi?echo+1+NetBSD-current"> + <span class="citerefentry"><span class= + "refentrytitle">echo</span>(1)</span></a> command. As + long as you can guarantee that your input does not + start with a dash this form is appropriate.</p> + + <p>Example 5 handles even the case of a leading dash + correctly.</p> + + <p>The <code class="varname">EXT_LIST</code> does not + need to be quoted because the quoting has already be + done when adding elements to the list.</p> + + <p>As internal lists shall not be passed to the shell, + there is no example for it.</p> + </div> + </div> + </div> + + <div class="chapter" lang="en" xml:lang="en"> + <div class="titlepage"> + <div> + <div> <h2 class="title"><a name="components" id= - "components"></a>Chapter 7. Package + "components"></a>Chapter 8. Package components - files, directories and contents</h2> </div> </div> @@ -5124,27 +5454,27 @@ CONF_FILES= ${EGDIR}/Muttrc ${PKG_SYSCONFDIR}/Muttrc <dl> <dt><span class="sect1"><a href= - "#components.Makefile">7.1. <code class= + "#components.Makefile">8.1. <code class= "filename">Makefile</code></a></span></dt> <dt><span class="sect1"><a href= - "#components.distinfo">7.2. <code class= + "#components.distinfo">8.2. <code class= "filename">distinfo</code></a></span></dt> <dt><span class="sect1"><a href= - "#components.patches">7.3. patches/*</a></span></dt> + "#components.patches">8.3. patches/*</a></span></dt> - <dt><span class="sect1"><a href="#id2627489">7.4. Other + <dt><span class="sect1"><a href="#id2627883">8.4. Other mandatory files</a></span></dt> <dt><span class="sect1"><a href= - "#components.optional">7.5. Optional + "#components.optional">8.5. Optional files</a></span></dt> - <dt><span class="sect1"><a href="#id2627614">7.6. + <dt><span class="sect1"><a href="#id2628146">8.6. <code class="filename">work*</code></a></span></dt> - <dt><span class="sect1"><a href="#id2627770">7.7. + <dt><span class="sect1"><a href="#id2628233">8.7. <code class="filename">files/*</code></a></span></dt> </dl> </div> @@ -5159,7 +5489,7 @@ CONF_FILES= ${EGDIR}/Muttrc ${PKG_SYSCONFDIR}/Muttrc <div> <h2 class="title" style="clear: both"><a name= "components.Makefile" id= - "components.Makefile"></a>7.1. <code class= + "components.Makefile"></a>8.1. <code class= "filename">Makefile</code></h2> </div> </div> @@ -5333,8 +5663,8 @@ converters games mbone print x11 <li> <p>If the package installs any info files, see <a href="#faq.info-files" title= - "12.5.10. Packages installing info files">Section - 12.5.10, “Packages installing info + "13.5.10. Packages installing info files">Section + 13.5.10, “Packages installing info files”</a>.</p> </li> @@ -5370,7 +5700,7 @@ converters games mbone print x11 <div> <h2 class="title" style="clear: both"><a name= "components.distinfo" id= - "components.distinfo"></a>7.2. <code class= + "components.distinfo"></a>8.2. <code class= "filename">distinfo</code></h2> </div> </div> @@ -5415,7 +5745,7 @@ converters games mbone print x11 patches found in the <code class= "filename">patches/</code> directory (see <a href= "#components.patches" title= - "7.3. patches/*">Section 7.3, + "8.3. patches/*">Section 8.3, “patches/*”</a>) for the package is also stored in the <code class="filename">distinfo</code> file. This is a message digest/checksum of all lines in @@ -5432,7 +5762,7 @@ converters games mbone print x11 <div> <h2 class="title" style="clear: both"><a name= "components.patches" id= - "components.patches"></a>7.3. patches/*</h2> + "components.patches"></a>8.3. patches/*</h2> </div> </div> </div> @@ -5493,7 +5823,7 @@ converters games mbone print x11 <span><strong class="command">make makepatchsum</strong></span> command, see <a href= "#components.distinfo" title= - "7.2. distinfo">Section 7.2, + "8.2. distinfo">Section 8.2, “<code class="filename">distinfo</code>”</a>.</p> <p>Patch files that are distributed by the author or @@ -5523,7 +5853,7 @@ converters games mbone print x11 <div> <div> <h2 class="title" style="clear: both"><a name= - "id2627489" id="id2627489"></a>7.4. Other + "id2627883" id="id2627883"></a>8.4. Other mandatory files</h2> </div> </div> @@ -5553,7 +5883,7 @@ converters games mbone print x11 entered in this file, to control the creation and deletion of directories, and the location of inserted files. See <a href="#plist" title= - "Chapter 8. PLIST issues">Chapter 8, + "Chapter 9. PLIST issues">Chapter 9, <i>PLIST issues</i></a> for more information.</p> </dd> </dl> @@ -5566,7 +5896,7 @@ converters games mbone print x11 <div> <h2 class="title" style="clear: both"><a name= "components.optional" id= - "components.optional"></a>7.5. Optional + "components.optional"></a>8.5. Optional files</h2> </div> </div> @@ -5647,8 +5977,8 @@ MESSAGE_SUBST+= SOMEVAR="somevalue" <div> <div> <h2 class="title" style="clear: both"><a name= - "id2627614" id= - "id2627614"></a>7.6. <code class= + "id2628146" id= + "id2628146"></a>8.6. <code class= "filename">work*</code></h2> </div> </div> @@ -5708,8 +6038,8 @@ WRKSRC= ${WRKDIR}/${DISTNAME}/unix <div> <div> <h2 class="title" style="clear: both"><a name= - "id2627770" id= - "id2627770"></a>7.7. <code class= + "id2628233" id= + "id2628233"></a>8.7. <code class= "filename">files/*</code></h2> </div> </div> @@ -5732,7 +6062,7 @@ WRKSRC= ${WRKDIR}/${DISTNAME}/unix <div> <div> <h2 class="title"><a name="plist" id= - "plist"></a>Chapter 8. PLIST issues</h2> + "plist"></a>Chapter 9. PLIST issues</h2> </div> </div> </div> @@ -5741,31 +6071,31 @@ WRKSRC= ${WRKDIR}/${DISTNAME}/unix <p><b>Table of Contents</b></p> <dl> - <dt><span class="sect1"><a href="#id2627961">8.1. RCS + <dt><span class="sect1"><a href="#id2628288">9.1. RCS ID</a></span></dt> - <dt><span class="sect1"><a href="#id2627976">8.2. + <dt><span class="sect1"><a href="#id2628302">9.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> - <dt><span class="sect1"><a href="#print-PLIST">8.3. + <dt><span class="sect1"><a href="#print-PLIST">9.3. Tweaking output of <span><strong class="command">make print-PLIST</strong></span></a></span></dt> - <dt><span class="sect1"><a href="#plist.misc">8.4. + <dt><span class="sect1"><a href="#plist.misc">9.4. Variable substitution in PLIST</a></span></dt> - <dt><span class="sect1"><a href="#id2628297">8.5. + <dt><span class="sect1"><a href="#id2628692">9.5. Manpage-compression</a></span></dt> - <dt><span class="sect1"><a href="#id2628339">8.6. + <dt><span class="sect1"><a href="#id2628733">9.6. Changing PLIST source with <code class= "varname">PLIST_SRC</code></a></span></dt> - <dt><span class="sect1"><a href="#id2628363">8.7. + <dt><span class="sect1"><a href="#id2628758">9.7. Platform specific and differing PLISTs</a></span></dt> - <dt><span class="sect1"><a href="#faq.common-dirs">8.8. + <dt><span class="sect1"><a href="#faq.common-dirs">9.8. Sharing directories between packages</a></span></dt> </dl> </div> @@ -5788,7 +6118,7 @@ WRKSRC= ${WRKDIR}/${DISTNAME}/unix <div> <div> <h2 class="title" style="clear: both"><a name= - "id2627961" id="id2627961"></a>8.1. RCS + "id2628288" id="id2628288"></a>9.1. RCS ID</h2> </div> </div> @@ -5806,8 +6136,8 @@ WRKSRC= ${WRKDIR}/${DISTNAME}/unix <div> <div> <h2 class="title" style="clear: both"><a name= - "id2627976" id= - "id2627976"></a>8.2. Semi-automatic + "id2628302" id= + "id2628302"></a>9.2. Semi-automatic <code class="filename">PLIST</code> generation</h2> </div> </div> @@ -5817,7 +6147,7 @@ WRKSRC= ${WRKDIR}/${DISTNAME}/unix print-PLIST</strong></span> command to output a PLIST that matches any new files since the package was extracted. See <a href="#build.helpful-targets" title= - "11.3. Other helpful targets">Section 11.3, + "12.3. Other helpful targets">Section 12.3, “Other helpful targets”</a> for more information on this target.</p> </div> @@ -5828,7 +6158,7 @@ WRKSRC= ${WRKDIR}/${DISTNAME}/unix <div> <h2 class="title" style="clear: both"><a name= "print-PLIST" id= - "print-PLIST"></a>8.3. Tweaking output of + "print-PLIST"></a>9.3. Tweaking output of <span><strong class="command">make print-PLIST</strong></span></h2> </div> @@ -5837,7 +6167,7 @@ WRKSRC= ${WRKDIR}/${DISTNAME}/unix <p>If you have used any of the *-dirs packages, as explained in <a href="#faq.common-dirs" title= - "8.8. Sharing directories between packages">Section 8.8, + "9.8. Sharing directories between packages">Section 9.8, “Sharing directories between packages”</a>, you may have noticed that <span><strong class= "command">make print-PLIST</strong></span> outputs a set @@ -5877,7 +6207,7 @@ WRKSRC= ${WRKDIR}/${DISTNAME}/unix <div> <div> <h2 class="title" style="clear: both"><a name= - "plist.misc" id="plist.misc"></a>8.4. Variable + "plist.misc" id="plist.misc"></a>9.4. Variable substitution in PLIST</h2> </div> </div> @@ -5985,7 +6315,7 @@ WRKSRC= ${WRKDIR}/${DISTNAME}/unix variable in the following way, similar to <code class= "varname">MESSAGE_SUBST</code> (see <a href= "#components.optional" title= - "7.5. Optional files">Section 7.5, + "8.5. Optional files">Section 8.5, “Optional files”</a>):</p> <pre class="programlisting"> PLIST_SUBST+= SOMEVAR="somevalue" @@ -6001,8 +6331,8 @@ PLIST_SUBST+= SOMEVAR="somevalue" <div> <div> <h2 class="title" style="clear: both"><a name= - "id2628297" id= - "id2628297"></a>8.5. Manpage-compression</h2> + "id2628692" id= + "id2628692"></a>9.5. Manpage-compression</h2> </div> </div> </div> @@ -6026,7 +6356,7 @@ PLIST_SUBST+= SOMEVAR="somevalue" <div> <div> <h2 class="title" style="clear: both"><a name= - "id2628339" id="id2628339"></a>8.6. Changing + "id2628733" id="id2628733"></a>9.6. Changing PLIST source with <code class= "varname">PLIST_SRC</code></h2> </div> @@ -6049,7 +6379,7 @@ PLIST_SUBST+= SOMEVAR="somevalue" <div> <div> <h2 class="title" style="clear: both"><a name= - "id2628363" id="id2628363"></a>8.7. Platform + "id2628758" id="id2628758"></a>9.7. Platform specific and differing PLISTs</h2> </div> </div> @@ -6094,7 +6424,7 @@ PLIST_SUBST+= SOMEVAR="somevalue" <div> <h2 class="title" style="clear: both"><a name= "faq.common-dirs" id= - "faq.common-dirs"></a>8.8. Sharing directories + "faq.common-dirs"></a>9.8. Sharing directories between packages</h2> </div> </div> @@ -6184,7 +6514,7 @@ PLIST_SUBST+= SOMEVAR="somevalue" <div> <div> <h2 class="title"><a name="buildlink" id= - "buildlink"></a>Chapter 9. Buildlink + "buildlink"></a>Chapter 10. Buildlink methodology</h2> </div> </div> @@ -6194,20 +6524,21 @@ PLIST_SUBST+= SOMEVAR="somevalue" <p><b>Table of Contents</b></p> <dl> - <dt><span class="sect1"><a href="#id2628562">9.1. + <dt><span class="sect1"><a href="#id2629025">10.1. Converting packages to use buildlink3</a></span></dt> - <dt><span class="sect1"><a href="#id2628948">9.2. + <dt><span class="sect1"><a href="#id2629206">10.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> <dd> <dl> - <dt><span class="sect2"><a href="#id2629017">9.2.1. - Anatomy of a buildlink3.mk file</a></span></dt> + <dt><span class="sect2"><a href= + "#id2629344">10.2.1. Anatomy of a buildlink3.mk + file</a></span></dt> - <dt><span class="sect2"><a href="#id2629458">9.2.2. - Updating <code class= + <dt><span class="sect2"><a href= + "#id2629921">10.2.2. Updating <code class= "varname">BUILDLINK_DEPENDS.<em class= "replaceable"><code>pkg</code></em></code> in <code class="filename">buildlink3.mk</code> @@ -6215,19 +6546,19 @@ PLIST_SUBST+= SOMEVAR="somevalue" </dl> </dd> - <dt><span class="sect1"><a href="#id2629537">9.3. + <dt><span class="sect1"><a href="#id2630000">10.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> <dd> <dl> - <dt><span class="sect2"><a href="#id2629618">9.3.1. - Anatomy of a <code class= + <dt><span class="sect2"><a href= + "#id2630081">10.3.1. Anatomy of a <code class= "filename">builtin.mk</code> file</a></span></dt> - <dt><span class="sect2"><a href="#id2629913">9.3.2. - Global preferences for native or pkgsrc - software</a></span></dt> + <dt><span class="sect2"><a href= + "#id2630240">10.3.2. Global preferences for native + or pkgsrc software</a></span></dt> </dl> </dd> </dl> @@ -6276,8 +6607,9 @@ PLIST_SUBST+= SOMEVAR="somevalue" <div> <div> <h2 class="title" style="clear: both"><a name= - "id2628562" id="id2628562"></a>9.1. Converting - packages to use buildlink3</h2> + "id2629025" id= + "id2629025"></a>10.1. Converting packages to + use buildlink3</h2> </div> </div> </div> @@ -6421,7 +6753,7 @@ DEPENDS+= foo>=1.1.0:../../category/foo <div> <div> <h2 class="title" style="clear: both"><a name= - "id2628948" id="id2628948"></a>9.2. Writing + "id2629206" id="id2629206"></a>10.2. Writing <code class="filename">buildlink3.mk</code> files</h2> </div> @@ -6461,9 +6793,9 @@ DEPENDS+= foo>=1.1.0:../../category/foo <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2629017" id= - "id2629017"></a>9.2.1. Anatomy of a buildlink3.mk - file</h3> + <h3 class="title"><a name="id2629344" id= + "id2629344"></a>10.2.1. Anatomy of a + buildlink3.mk file</h3> </div> </div> </div> @@ -6692,8 +7024,8 @@ BUILDLINK_DEPTH:= ${BUILDLINK_DEPTH:S/+$//} <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2629458" id= - "id2629458"></a>9.2.2. Updating <code class= + <h3 class="title"><a name="id2629921" id= + "id2629921"></a>10.2.2. Updating <code class= "varname">BUILDLINK_DEPENDS.<em class= "replaceable"><code>pkg</code></em></code> in <code class="filename">buildlink3.mk</code> @@ -6745,15 +7077,15 @@ BUILDLINK_DEPTH:= ${BUILDLINK_DEPTH:S/+$//} want to cause unneeded package deletions and rebuilds. In many cases, new versions of packages work just fine with older dependencies. See <a href="#dependencies" - title="12.1.3. Handling dependencies">Section - 12.1.3, “Handling dependencies”</a> and + title="13.1.3. Handling dependencies">Section + 13.1.3, “Handling dependencies”</a> and <a href="#buildlink" title= - "Chapter 9. Buildlink methodology">Chapter 9, - <i>Buildlink methodology</i></a> for more information - about dependencies on other packages, including the - <code class="varname">BUILDLINK_RECOMMENDED</code> and - <code class="varname">RECOMMENDED</code> - definitions.</p> + "Chapter 10. Buildlink methodology">Chapter + 10, <i>Buildlink methodology</i></a> for more + information about dependencies on other packages, + including the <code class= + "varname">BUILDLINK_RECOMMENDED</code> and <code class= + "varname">RECOMMENDED</code> definitions.</p> </div> </div> @@ -6762,7 +7094,7 @@ BUILDLINK_DEPTH:= ${BUILDLINK_DEPTH:S/+$//} <div> <div> <h2 class="title" style="clear: both"><a name= - "id2629537" id="id2629537"></a>9.3. Writing + "id2630000" id="id2630000"></a>10.3. Writing <code class="filename">builtin.mk</code> files</h2> </div> </div> @@ -6814,8 +7146,8 @@ BUILDLINK_DEPTH:= ${BUILDLINK_DEPTH:S/+$//} <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2629618" id= - "id2629618"></a>9.3.1. Anatomy of a + <h3 class="title"><a name="id2630081" id= + "id2630081"></a>10.3.1. Anatomy of a <code class="filename">builtin.mk</code> file</h3> </div> @@ -6940,8 +7272,8 @@ CHECK_BUILTIN.foo?= no <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2629913" id= - "id2629913"></a>9.3.2. Global preferences + <h3 class="title"><a name="id2630240" id= + "id2630240"></a>10.3.2. Global preferences for native or pkgsrc software</h3> </div> </div> @@ -6989,7 +7321,7 @@ CHECK_BUILTIN.foo?= no <div> <div> <h2 class="title"><a name="options" id= - "options"></a>Chapter 10. Options + "options"></a>Chapter 11. Options handling</h2> </div> </div> @@ -6999,10 +7331,10 @@ CHECK_BUILTIN.foo?= no <p><b>Table of Contents</b></p> <dl> - <dt><span class="sect1"><a href="#id2629986">10.1. + <dt><span class="sect1"><a href="#id2630312">11.1. Global default options</a></span></dt> - <dt><span class="sect1"><a href="#id2630001">10.2. + <dt><span class="sect1"><a href="#id2630327">11.2. Converting packages to use <code class= "filename">bsd.options.mk</code></a></span></dt> </dl> @@ -7022,7 +7354,7 @@ CHECK_BUILTIN.foo?= no <div> <div> <h2 class="title" style="clear: both"><a name= - "id2629986" id="id2629986"></a>10.1. Global + "id2630312" id="id2630312"></a>11.1. Global default options</h2> </div> </div> @@ -7040,8 +7372,8 @@ CHECK_BUILTIN.foo?= no <div> <div> <h2 class="title" style="clear: both"><a name= - "id2630001" id= - "id2630001"></a>10.2. Converting packages to + "id2630327" id= + "id2630327"></a>11.2. Converting packages to use <code class= "filename">bsd.options.mk</code></h2> </div> @@ -7191,7 +7523,7 @@ CONFIGURE_ARGS+= --enable-sasl=${BUILDLINK_PREFIX.sasl} <div> <div> <h2 class="title"><a name="build" id= - "build"></a>Chapter 11. The build + "build"></a>Chapter 12. The build process</h2> </div> </div> @@ -7201,14 +7533,14 @@ CONFIGURE_ARGS+= --enable-sasl=${BUILDLINK_PREFIX.sasl} <p><b>Table of Contents</b></p> <dl> - <dt><span class="sect1"><a href="#build.prefix">11.1. + <dt><span class="sect1"><a href="#build.prefix">12.1. Program location</a></span></dt> - <dt><span class="sect1"><a href="#id2630624">11.2. Main + <dt><span class="sect1"><a href="#id2631086">12.2. Main targets</a></span></dt> <dt><span class="sect1"><a href= - "#build.helpful-targets">11.3. Other helpful + "#build.helpful-targets">12.3. Other helpful targets</a></span></dt> </dl> </div> @@ -7231,7 +7563,7 @@ CONFIGURE_ARGS+= --enable-sasl=${BUILDLINK_PREFIX.sasl} <div> <h2 class="title" style="clear: both"><a name= "build.prefix" id= - "build.prefix"></a>11.1. Program location</h2> + "build.prefix"></a>12.1. Program location</h2> </div> </div> </div> @@ -7252,10 +7584,10 @@ CONFIGURE_ARGS+= --enable-sasl=${BUILDLINK_PREFIX.sasl} be put into the various places in the program's source where paths to these files are encoded. See <a href= "#components.patches" title= - "7.3. patches/*">Section 7.3, + "8.3. patches/*">Section 8.3, “patches/*”</a> and <a href="#fixes.libtool" title= - "12.3.1. Shared libraries - libtool">Section 12.3.1, + "13.3.1. Shared libraries - libtool">Section 13.3.1, “Shared libraries - libtool”</a> for more details.</p> @@ -7406,7 +7738,7 @@ GTKDIR_DEFAULT= ${LOCALBASE} <div> <div> <h2 class="title" style="clear: both"><a name= - "id2630624" id="id2630624"></a>11.2. Main + "id2631086" id="id2631086"></a>12.2. Main targets</h2> </div> </div> @@ -7533,7 +7865,7 @@ ${FETCH_CMD} ${FETCH_BEFORE_ARGS} ${site}${file} ${FETCH_AFTER_ARGS} handed in <code class= "varname">PATCH_DIST_ARGS</code>. See <a href= "#components.patches" title= - "7.3. patches/*">Section 7.3, + "8.3. patches/*">Section 8.3, “patches/*”</a> for more details.</p> <p>By default <a href= @@ -7657,7 +7989,7 @@ make build <div> <h2 class="title" style="clear: both"><a name= "build.helpful-targets" id= - "build.helpful-targets"></a>11.3. Other + "build.helpful-targets"></a>12.3. Other helpful targets</h2> </div> </div> @@ -8097,7 +8429,7 @@ make build won't catch them!</p> <p>See <a href="#print-PLIST" title= - "8.3. Tweaking output of make print-PLIST">Section 8.3, + "9.3. Tweaking output of make print-PLIST">Section 9.3, “Tweaking output of <span><strong class= "command">make print-PLIST</strong></span>”</a> for more @@ -8175,7 +8507,7 @@ make build <div> <div> <h2 class="title"><a name="fixes" id= - "fixes"></a>Chapter 12. Notes on fixes for + "fixes"></a>Chapter 13. Notes on fixes for packages</h2> </div> </div> @@ -8185,179 +8517,179 @@ make build <p><b>Table of Contents</b></p> <dl> - <dt><span class="sect1"><a href="#id2632120">12.1. + <dt><span class="sect1"><a href="#id2632515">13.1. General operation</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2632123">12.1.1. How to pull in variables from + "#id2632518">13.1.1. How to pull in variables from /etc/mk.conf</a></span></dt> <dt><span class="sect2"><a href= - "#id2632275">12.1.2. Restricted + "#id2632601">13.1.2. Restricted packages</a></span></dt> <dt><span class="sect2"><a href= - "#dependencies">12.1.3. Handling + "#dependencies">13.1.3. Handling dependencies</a></span></dt> <dt><span class="sect2"><a href= - "#id2632728">12.1.4. Handling conflicts with other + "#id2633123">13.1.4. Handling conflicts with other packages</a></span></dt> <dt><span class="sect2"><a href= - "#id2632846">12.1.5. Packages that cannot or should + "#id2633173">13.1.5. Packages that cannot or should not be built</a></span></dt> <dt><span class="sect2"><a href= - "#id2632872">12.1.6. Packages which should not be + "#id2633198">13.1.6. Packages which should not be deleted, once installed</a></span></dt> <dt><span class="sect2"><a href= - "#security-handling">12.1.7. Handling packages with + "#security-handling">13.1.7. Handling packages with security problems</a></span></dt> <dt><span class="sect2"><a href= - "#id2632964">12.1.8. How to handle compiler + "#id2633290">13.1.8. How to handle compiler bugs</a></span></dt> <dt><span class="sect2"><a href= - "#id2633054">12.1.9. How to handle incrementing + "#id2633313">13.1.9. How to handle incrementing versions when fixing an existing package</a></span></dt> <dt><span class="sect2"><a href= - "#id2633104">12.1.10. Portability of + "#id2633362">13.1.10. Portability of packages</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2633128">12.2. + <dt><span class="sect1"><a href="#id2633386">13.2. Possible downloading issues</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2633131">12.2.1. Packages whose distfiles + "#id2633389">13.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> <dt><span class="sect2"><a href= - "#id2633194">12.2.2. How to handle modified + "#id2633452">13.2.2. How to handle modified distfiles with the 'old' name</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2633206">12.3. + <dt><span class="sect1"><a href="#id2633601">13.3. Configuration gotchas</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#fixes.libtool">12.3.1. Shared libraries - + "#fixes.libtool">13.3.1. Shared libraries - libtool</a></span></dt> <dt><span class="sect2"><a href= - "#id2633640">12.3.2. Using libtool on GNU packages + "#id2634035">13.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> <dt><span class="sect2"><a href= - "#id2633721">12.3.3. GNU + "#id2634184">13.3.3. GNU Autoconf/Automake</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2633834">12.4. + <dt><span class="sect1"><a href="#id2634229">13.4. Building considerations</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2633837">12.4.1. CPP defines</a></span></dt> + "#id2634232">13.4.1. CPP defines</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2633867">12.5. + <dt><span class="sect1"><a href="#id2634262">13.5. Package specific actions</a></span></dt> <dd> <dl> <dt><span class="sect2"><a href= - "#id2633870">12.5.1. Package configuration + "#id2634265">13.5.1. Package configuration files</a></span></dt> <dt><span class="sect2"><a href= - "#id2633973">12.5.2. User + "#id2634436">13.5.2. User interaction</a></span></dt> <dt><span class="sect2"><a href= - "#id2634018">12.5.3. Handling + "#id2634549">13.5.3. Handling licenses</a></span></dt> <dt><span class="sect2"><a href= - "#id2634169">12.5.4. Creating an account from a + "#id2634632">13.5.4. Creating an account from a package</a></span></dt> <dt><span class="sect2"><a href= - "#id2634231">12.5.5. Installing score + "#id2634694">13.5.5. Installing score files</a></span></dt> <dt><span class="sect2"><a href= - "#id2634411">12.5.6. Packages providing login + "#id2634738">13.5.6. Packages providing login shells</a></span></dt> <dt><span class="sect2"><a href= - "#id2634469">12.5.7. Packages containing perl + "#id2634795">13.5.7. Packages containing perl scripts</a></span></dt> <dt><span class="sect2"><a href= - "#id2634555">12.5.8. Packages with hardcoded paths + "#id2634813">13.5.8. Packages with hardcoded paths to other interpreters</a></span></dt> <dt><span class="sect2"><a href= - "#id2634577">12.5.9. Packages installing perl + "#id2634835">13.5.9. Packages installing perl modules</a></span></dt> <dt><span class="sect2"><a href= - "#faq.info-files">12.5.10. Packages installing info + "#faq.info-files">13.5.10. Packages installing info files</a></span></dt> <dt><span class="sect2"><a href= - "#id2634865">12.5.11. Packages installing GConf2 + "#id2635123">13.5.11. Packages installing GConf2 data files</a></span></dt> <dt><span class="sect2"><a href= - "#id2634965">12.5.12. Packages installing + "#id2635360">13.5.12. Packages installing scrollkeeper data files</a></span></dt> <dt><span class="sect2"><a href= - "#id2635016">12.5.13. Packages installing X11 + "#id2635411">13.5.13. Packages installing X11 fonts</a></span></dt> <dt><span class="sect2"><a href= - "#id2635063">12.5.14. Packages installing GTK2 + "#id2635526">13.5.14. Packages installing GTK2 modules</a></span></dt> <dt><span class="sect2"><a href= - "#id2635201">12.5.15. Packages installing SGML or + "#id2635595">13.5.15. Packages installing SGML or XML data</a></span></dt> <dt><span class="sect2"><a href= - "#id2635253">12.5.16. Packages installing + "#id2635648">13.5.16. Packages installing extensions to the MIME database</a></span></dt> <dt><span class="sect2"><a href= - "#id2635323">12.5.17. Packages using + "#id2635718">13.5.17. Packages using intltool</a></span></dt> <dt><span class="sect2"><a href= - "#id2635337">12.5.18. Packages installing startup + "#id2635732">13.5.18. Packages installing startup scripts</a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2635358">12.6. + <dt><span class="sect1"><a href="#id2635753">13.6. Feedback to the author</a></span></dt> </dl> </div> @@ -8367,7 +8699,7 @@ make build <div> <div> <h2 class="title" style="clear: both"><a name= - "id2632120" id="id2632120"></a>12.1. General + "id2632515" id="id2632515"></a>13.1. General operation</h2> </div> </div> @@ -8377,8 +8709,8 @@ make build <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2632123" id= - "id2632123"></a>12.1.1. How to pull in + <h3 class="title"><a name="id2632518" id= + "id2632518"></a>13.1.1. How to pull in variables from /etc/mk.conf</h3> </div> </div> @@ -8438,8 +8770,8 @@ CFLAGS+= -your -flags <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2632275" id= - "id2632275"></a>12.1.2. Restricted + <h3 class="title"><a name="id2632601" id= + "id2632601"></a>13.1.2. Restricted packages</h3> </div> </div> @@ -8518,7 +8850,7 @@ CFLAGS+= -your -flags <div> <div> <h3 class="title"><a name="dependencies" id= - "dependencies"></a>12.1.3. Handling + "dependencies"></a>13.1.3. Handling dependencies</h3> </div> </div> @@ -8533,7 +8865,7 @@ CFLAGS+= -your -flags "filename">buildlink3.mk</code>, which is the preferred way to handle dependencies, and which uses the variables named above. See <a href="#buildlink" title= - "Chapter 9. Buildlink methodology">Chapter 9, + "Chapter 10. Buildlink methodology">Chapter 10, <i>Buildlink methodology</i></a> for more information.</p> @@ -8671,8 +9003,8 @@ RECOMMENDED+= tiff>=3.6.1:../../graphics/tiff vulnerabilities file as well as setting <code class="varname">RECOMMENDED</code>, see <a href="#security-handling" title= - "12.1.7. Handling packages with security problems"> - Section 12.1.7, “Handling packages with + "13.1.7. Handling packages with security problems"> + Section 13.1.7, “Handling packages with security problems”</a> for more information.</p> </li> @@ -8746,8 +9078,8 @@ pre-clean: <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2632728" id= - "id2632728"></a>12.1.4. Handling conflicts + <h3 class="title"><a name="id2633123" id= + "id2633123"></a>13.1.4. Handling conflicts with other packages</h3> </div> </div> @@ -8794,8 +9126,8 @@ CONFLICTS= Xaw3d-[0-9]* <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2632846" id= - "id2632846"></a>12.1.5. Packages that cannot + <h3 class="title"><a name="id2633173" id= + "id2633173"></a>13.1.5. Packages that cannot or should not be built</h3> </div> </div> @@ -8826,8 +9158,8 @@ CONFLICTS= Xaw3d-[0-9]* <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2632872" id= - "id2632872"></a>12.1.6. Packages which + <h3 class="title"><a name="id2633198" id= + "id2633198"></a>13.1.6. Packages which should not be deleted, once installed</h3> </div> </div> @@ -8852,7 +9184,7 @@ CONFLICTS= Xaw3d-[0-9]* <div> <div> <h3 class="title"><a name="security-handling" id= - "security-handling"></a>12.1.7. Handling + "security-handling"></a>13.1.7. Handling packages with security problems</h3> </div> </div> @@ -8876,7 +9208,7 @@ CONFLICTS= Xaw3d-[0-9]* "varname">BUILDLINK_RECOMMENDED.<em class= "replaceable"><code>pkg</code></em></code> entry should be considered. See <a href="#buildlink" title= - "Chapter 9. Buildlink methodology">Chapter 9, + "Chapter 10. Buildlink methodology">Chapter 10, <i>Buildlink methodology</i></a> for more information about writing <code class= "filename">buildlink3.mk</code> files and <code class= @@ -8890,8 +9222,8 @@ CONFLICTS= Xaw3d-[0-9]* <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2632964" id= - "id2632964"></a>12.1.8. How to handle + <h3 class="title"><a name="id2633290" id= + "id2633290"></a>13.1.8. How to handle compiler bugs</h3> </div> </div> @@ -8916,8 +9248,8 @@ CONFLICTS= Xaw3d-[0-9]* <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2633054" id= - "id2633054"></a>12.1.9. How to handle + <h3 class="title"><a name="id2633313" id= + "id2633313"></a>13.1.9. How to handle incrementing versions when fixing an existing package</h3> </div> @@ -8957,8 +9289,8 @@ DISTNAME= foo-17.43 <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2633104" id= - "id2633104"></a>12.1.10. Portability of + <h3 class="title"><a name="id2633362" id= + "id2633362"></a>13.1.10. Portability of packages</h3> </div> </div> @@ -8974,8 +9306,8 @@ DISTNAME= foo-17.43 <div class="titlepage"> <div> <div> - <h4 class="title"><a name="id2633109" id= - "id2633109"></a>12.1.10.1. ${INSTALL}, + <h4 class="title"><a name="id2633367" id= + "id2633367"></a>13.1.10.1. ${INSTALL}, ${INSTALL_DATA_DIR}, ...</h4> </div> </div> @@ -9000,7 +9332,7 @@ ${INSTALL_DATA_DIR} ${PREFIX}/dir2 <div> <div> <h2 class="title" style="clear: both"><a name= - "id2633128" id="id2633128"></a>12.2. Possible + "id2633386" id="id2633386"></a>13.2. Possible downloading issues</h2> </div> </div> @@ -9010,8 +9342,8 @@ ${INSTALL_DATA_DIR} ${PREFIX}/dir2 <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2633131" id= - "id2633131"></a>12.2.1. Packages whose + <h3 class="title"><a name="id2633389" id= + "id2633389"></a>13.2.1. Packages whose distfiles aren't available for plain downloading</h3> </div> @@ -9072,8 +9404,8 @@ ${INSTALL_DATA_DIR} ${PREFIX}/dir2 <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2633194" id= - "id2633194"></a>12.2.2. How to handle + <h3 class="title"><a name="id2633452" id= + "id2633452"></a>13.2.2. How to handle modified distfiles with the 'old' name</h3> </div> </div> @@ -9102,8 +9434,8 @@ ${INSTALL_DATA_DIR} ${PREFIX}/dir2 <div> <div> <h2 class="title" style="clear: both"><a name= - "id2633206" id= - "id2633206"></a>12.3. Configuration + "id2633601" id= + "id2633601"></a>13.3. Configuration gotchas</h2> </div> </div> @@ -9114,7 +9446,7 @@ ${INSTALL_DATA_DIR} ${PREFIX}/dir2 <div> <div> <h3 class="title"><a name="fixes.libtool" id= - "fixes.libtool"></a>12.3.1. Shared libraries + "fixes.libtool"></a>13.3.1. Shared libraries - libtool</h3> </div> </div> @@ -9322,8 +9654,8 @@ ${LIBTOOL} --mode=install ${BSD_INSTALL_DATA} ${SOMELIB:.a=.la} ${PREFIX}/lib <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2633640" id= - "id2633640"></a>12.3.2. Using libtool on GNU + <h3 class="title"><a name="id2634035" id= + "id2634035"></a>13.3.2. Using libtool on GNU packages that already support libtool</h3> </div> </div> @@ -9401,8 +9733,8 @@ ${LIBTOOL} --mode=install ${BSD_INSTALL_DATA} ${SOMELIB:.a=.la} ${PREFIX}/lib <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2633721" id= - "id2633721"></a>12.3.3. GNU + <h3 class="title"><a name="id2634184" id= + "id2634184"></a>13.3.3. GNU Autoconf/Automake</h3> </div> </div> @@ -9468,7 +9800,7 @@ pre-configure: <div> <div> <h2 class="title" style="clear: both"><a name= - "id2633834" id="id2633834"></a>12.4. Building + "id2634229" id="id2634229"></a>13.4. Building considerations</h2> </div> </div> @@ -9478,8 +9810,8 @@ pre-configure: <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2633837" id= - "id2633837"></a>12.4.1. CPP defines</h3> + <h3 class="title"><a name="id2634232" id= + "id2634232"></a>13.4.1. CPP defines</h3> </div> </div> </div> @@ -9518,7 +9850,7 @@ pre-configure: <div> <div> <h2 class="title" style="clear: both"><a name= - "id2633867" id="id2633867"></a>12.5. Package + "id2634262" id="id2634262"></a>13.5. Package specific actions</h2> </div> </div> @@ -9528,8 +9860,8 @@ pre-configure: <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2633870" id= - "id2633870"></a>12.5.1. Package + <h3 class="title"><a name="id2634265" id= + "id2634265"></a>13.5.1. Package configuration files</h3> </div> </div> @@ -9601,8 +9933,8 @@ pre-configure: <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2633973" id= - "id2633973"></a>12.5.2. User + <h3 class="title"><a name="id2634436" id= + "id2634436"></a>13.5.2. User interaction</h3> </div> </div> @@ -9651,8 +9983,8 @@ INTERACTIVE_STAGE= configure install <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2634018" id= - "id2634018"></a>12.5.3. Handling + <h3 class="title"><a name="id2634549" id= + "id2634549"></a>13.5.3. Handling licenses</h3> </div> </div> @@ -9726,8 +10058,8 @@ ACCEPTABLE_LICENSES+=graphviz-license <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2634169" id= - "id2634169"></a>12.5.4. Creating an account + <h3 class="title"><a name="id2634632" id= + "id2634632"></a>13.5.4. Creating an account from a package</h3> </div> </div> @@ -9781,8 +10113,8 @@ user:group[:[userid][:[description][:[home][:shell]]]] <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2634231" id= - "id2634231"></a>12.5.5. Installing score + <h3 class="title"><a name="id2634694" id= + "id2634694"></a>13.5.5. Installing score files</h3> </div> </div> @@ -9819,8 +10151,8 @@ user:group[:[userid][:[description][:[home][:shell]]]] <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2634411" id= - "id2634411"></a>12.5.6. Packages providing + <h3 class="title"><a name="id2634738" id= + "id2634738"></a>13.5.6. Packages providing login shells</h3> </div> </div> @@ -9855,8 +10187,8 @@ user:group[:[userid][:[description][:[home][:shell]]]] <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2634469" id= - "id2634469"></a>12.5.7. Packages containing + <h3 class="title"><a name="id2634795" id= + "id2634795"></a>13.5.7. Packages containing perl scripts</h3> </div> </div> @@ -9874,8 +10206,8 @@ user:group[:[userid][:[description][:[home][:shell]]]] <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2634555" id= - "id2634555"></a>12.5.8. Packages with + <h3 class="title"><a name="id2634813" id= + "id2634813"></a>13.5.8. Packages with hardcoded paths to other interpreters</h3> </div> </div> @@ -9901,8 +10233,8 @@ user:group[:[userid][:[description][:[home][:shell]]]] <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2634577" id= - "id2634577"></a>12.5.9. Packages installing + <h3 class="title"><a name="id2634835" id= + "id2634835"></a>13.5.9. Packages installing perl modules</h3> </div> </div> @@ -9945,7 +10277,7 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div> <div> <h3 class="title"><a name="faq.info-files" id= - "faq.info-files"></a>12.5.10. Packages + "faq.info-files"></a>13.5.10. Packages installing info files</h3> </div> </div> @@ -10041,8 +10373,8 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2634865" id= - "id2634865"></a>12.5.11. Packages installing + <h3 class="title"><a name="id2635123" id= + "id2635123"></a>13.5.11. Packages installing GConf2 data files</h3> </div> </div> @@ -10116,8 +10448,8 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2634965" id= - "id2634965"></a>12.5.12. Packages installing + <h3 class="title"><a name="id2635360" id= + "id2635360"></a>13.5.12. Packages installing scrollkeeper data files</h3> </div> </div> @@ -10161,8 +10493,8 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2635016" id= - "id2635016"></a>12.5.13. Packages installing + <h3 class="title"><a name="id2635411" id= + "id2635411"></a>13.5.13. Packages installing X11 fonts</h3> </div> </div> @@ -10199,8 +10531,8 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2635063" id= - "id2635063"></a>12.5.14. Packages installing + <h3 class="title"><a name="id2635526" id= + "id2635526"></a>13.5.14. Packages installing GTK2 modules</h3> </div> </div> @@ -10266,8 +10598,8 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2635201" id= - "id2635201"></a>12.5.15. Packages installing + <h3 class="title"><a name="id2635595" id= + "id2635595"></a>13.5.15. Packages installing SGML or XML data</h3> </div> </div> @@ -10328,8 +10660,8 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2635253" id= - "id2635253"></a>12.5.16. Packages installing + <h3 class="title"><a name="id2635648" id= + "id2635648"></a>13.5.16. Packages installing extensions to the MIME database</h3> </div> </div> @@ -10387,8 +10719,8 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2635323" id= - "id2635323"></a>12.5.17. Packages using + <h3 class="title"><a name="id2635718" id= + "id2635718"></a>13.5.17. Packages using intltool</h3> </div> </div> @@ -10411,8 +10743,8 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2635337" id= - "id2635337"></a>12.5.18. Packages installing + <h3 class="title"><a name="id2635732" id= + "id2635732"></a>13.5.18. Packages installing startup scripts</h3> </div> </div> @@ -10435,7 +10767,7 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div> <div> <h2 class="title" style="clear: both"><a name= - "id2635358" id="id2635358"></a>12.6. Feedback + "id2635753" id="id2635753"></a>13.6. Feedback to the author</h2> </div> </div> @@ -10459,7 +10791,7 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div> <div> <h2 class="title"><a name="debug" id= - "debug"></a>Chapter 13. Debugging</h2> + "debug"></a>Chapter 14. Debugging</h2> </div> </div> </div> @@ -10558,7 +10890,7 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <p>Look at the <code class= "filename">Makefile</code>, fix if necessary; see <a href="#components.Makefile" title= - "7.1. Makefile">Section 7.1, + "8.1. Makefile">Section 8.1, “<code class= "filename">Makefile</code>”</a>.</p> </li> @@ -10649,7 +10981,7 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <li> <p>Submit (or commit, if you have cvs access); see <a href="#submit" title= - "Chapter 14. Submitting and Committing">Chapter 14, + "Chapter 15. Submitting and Committing">Chapter 15, <i>Submitting and Committing</i></a>.</p> </li> </ul> @@ -10661,7 +10993,7 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div> <div> <h2 class="title"><a name="submit" id= - "submit"></a>Chapter 14. Submitting and + "submit"></a>Chapter 15. Submitting and Committing</h2> </div> </div> @@ -10671,17 +11003,17 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <p><b>Table of Contents</b></p> <dl> - <dt><span class="sect1"><a href="#id2635957">14.1. + <dt><span class="sect1"><a href="#id2636215">15.1. Submitting your packages</a></span></dt> - <dt><span class="sect1"><a href="#id2636014">14.2. + <dt><span class="sect1"><a href="#id2636273">15.2. Committing: Importing a package into CVS</a></span></dt> - <dt><span class="sect1"><a href="#id2636077">14.3. + <dt><span class="sect1"><a href="#id2636540">15.3. Updating a package to a newer version</a></span></dt> - <dt><span class="sect1"><a href="#id2636097">14.4. + <dt><span class="sect1"><a href="#id2636560">15.4. Moving a package in pkgsrc</a></span></dt> </dl> </div> @@ -10691,8 +11023,8 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div> <div> <h2 class="title" style="clear: both"><a name= - "id2635957" id= - "id2635957"></a>14.1. Submitting your + "id2636215" id= + "id2636215"></a>15.1. Submitting your packages</h2> </div> </div> @@ -10725,7 +11057,7 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <p>First, check that your package is complete, compiles and runs well; see <a href="#debug" title= - "Chapter 13. Debugging">Chapter 13, + "Chapter 14. Debugging">Chapter 14, <i>Debugging</i></a> and the rest of this document. Next, generate an uuencoded gzipped <a href= "http://netbsd.gw.com/cgi-bin/man-cgi?tar+1+NetBSD-current"> @@ -10761,8 +11093,8 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div> <div> <h2 class="title" style="clear: both"><a name= - "id2636014" id= - "id2636014"></a>14.2. Committing: Importing a + "id2636273" id= + "id2636273"></a>15.2. Committing: Importing a package into CVS</h2> </div> </div> @@ -10818,7 +11150,7 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div> <div> <h2 class="title" style="clear: both"><a name= - "id2636077" id="id2636077"></a>14.3. Updating + "id2636540" id="id2636540"></a>15.3. Updating a package to a newer version</h2> </div> </div> @@ -10869,7 +11201,7 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div> <div> <h2 class="title" style="clear: both"><a name= - "id2636097" id="id2636097"></a>14.4. Moving a + "id2636560" id="id2636560"></a>15.4. Moving a package in pkgsrc</h2> </div> </div> @@ -10970,27 +11302,27 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <p><b>Table of Contents</b></p> <dl> - <dt><span class="sect1"><a href="#id2636323">A.1. + <dt><span class="sect1"><a href="#id2636786">A.1. files</a></span></dt> <dd> <dl> - <dt><span class="sect2"><a href="#id2636326">A.1.1. + <dt><span class="sect2"><a href="#id2636789">A.1.1. Makefile</a></span></dt> - <dt><span class="sect2"><a href="#id2636333">A.1.2. + <dt><span class="sect2"><a href="#id2636796">A.1.2. DESCR</a></span></dt> - <dt><span class="sect2"><a href="#id2636348">A.1.3. + <dt><span class="sect2"><a href="#id2636811">A.1.3. PLIST</a></span></dt> - <dt><span class="sect2"><a href="#id2636356">A.1.4. + <dt><span class="sect2"><a href="#id2636819">A.1.4. Checking a package with <span><strong class= "command">pkglint</strong></span></a></span></dt> </dl> </dd> - <dt><span class="sect1"><a href="#id2636465">A.2. Steps + <dt><span class="sect1"><a href="#id2636859">A.2. Steps for building, installing, packaging</a></span></dt> </dl> </div> @@ -11008,7 +11340,7 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div> <div> <h2 class="title" style="clear: both"><a name= - "id2636323" id="id2636323"></a>A.1. files</h2> + "id2636786" id="id2636786"></a>A.1. files</h2> </div> </div> </div> @@ -11017,8 +11349,8 @@ PERL5_PACKLIST= ${PERL5_SITEARCH}/auto/Pg/.packlist <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2636326" id= - "id2636326"></a>A.1.1. Makefile</h3> + <h3 class="title"><a name="id2636789" id= + "id2636789"></a>A.1.1. Makefile</h3> </div> </div> </div> @@ -11045,8 +11377,8 @@ INFO_FILES= bison.info <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2636333" id= - "id2636333"></a>A.1.2. DESCR</h3> + <h3 class="title"><a name="id2636796" id= + "id2636796"></a>A.1.2. DESCR</h3> </div> </div> </div> @@ -11062,8 +11394,8 @@ of the NetBSD source tree is beyond me. <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2636348" id= - "id2636348"></a>A.1.3. PLIST</h3> + <h3 class="title"><a name="id2636811" id= + "id2636811"></a>A.1.3. PLIST</h3> </div> </div> </div> @@ -11080,8 +11412,8 @@ share/bison.hairy <div class="titlepage"> <div> <div> - <h3 class="title"><a name="id2636356" id= - "id2636356"></a>A.1.4. Checking a package with + <h3 class="title"><a name="id2636819" id= + "id2636819"></a>A.1.4. Checking a package with <span><strong class= "command">pkglint</strong></span></h3> </div> @@ -11100,10 +11432,6 @@ share/bison.hairy <pre class="screen"> <code class="prompt">$</code> <strong class= "userinput"><code>pkglint</code></strong> -OK: checking ./DESCR. -OK: checking Makefile. -OK: checking distinfo. -OK: checking patches/patch-aa. looks fine. </pre> @@ -11119,7 +11447,7 @@ looks fine. <div> <div> <h2 class="title" style="clear: both"><a name= - "id2636465" id="id2636465"></a>A.2. Steps for + "id2636859" id="id2636859"></a>A.2. Steps for building, installing, packaging</h2> </div> </div> @@ -11141,8 +11469,8 @@ looks fine. <p>Create <code class="filename">Makefile</code>, <code class="filename">DESCR</code> and <code class= "filename">PLIST</code> (see <a href="#components" title= - "Chapter 7. Package components - files, directories and contents"> - Chapter 7, <i>Package components - files, directories and + "Chapter 8. Package components - files, directories and contents"> + Chapter 8, <i>Package components - files, directories and contents</i></a>) then continue with fetching the distfile:</p> <pre class="screen"> @@ -11537,10 +11865,10 @@ Registering depends:. <p><b>Table of Contents</b></p> <dl> - <dt><span class="sect1"><a href="#id2637111">D.1. + <dt><span class="sect1"><a href="#id2637574">D.1. Targets</a></span></dt> - <dt><span class="sect1"><a href="#id2637517">D.2. + <dt><span class="sect1"><a href="#id2637776">D.2. Procedure</a></span></dt> </dl> </div> @@ -11553,7 +11881,7 @@ Registering depends:. <div> <div> <h2 class="title" style="clear: both"><a name= - "id2637111" id="id2637111"></a>D.1. Targets</h2> + "id2637574" id="id2637574"></a>D.1. Targets</h2> </div> </div> </div> @@ -11604,8 +11932,8 @@ Registering depends:. <div> <div> <h2 class="title" style="clear: both"><a name= - "id2637517" id= - "id2637517"></a>D.2. Procedure</h2> + "id2637776" id= + "id2637776"></a>D.2. Procedure</h2> </div> </div> </div> diff --git a/doc/pkgsrc.txt b/doc/pkgsrc.txt index 9be7232bf02..04e91623990 100644 --- a/doc/pkgsrc.txt +++ b/doc/pkgsrc.txt @@ -14,7 +14,7 @@ The pkgsrc Developers Copyright (C) 1994-2004 The NetBSD Foundation, Inc -$NetBSD: pkgsrc.xml,v 1.4 2005/05/07 22:28:47 wiz Exp $ +$NetBSD: pkgsrc.xml,v 1.5 2005/05/10 00:27:43 rillig Exp $ Abstract @@ -109,113 +109,122 @@ I. The pkgsrc user's guide II. The pkgsrc developer's guide - 7. Package components - files, directories and contents + 7. Programming in Makefiles - 7.1. Makefile - 7.2. distinfo - 7.3. patches/* - 7.4. Other mandatory files - 7.5. Optional files - 7.6. work* - 7.7. files/* + 7.1. Makefile variables + 7.2. Code snippets - 8. PLIST issues + 7.2.1. Adding things to a list + 7.2.2. Converting an internal list into an external list + 7.2.3. Passing variables to a shell command - 8.1. RCS ID - 8.2. Semi-automatic PLIST generation - 8.3. Tweaking output of make print-PLIST - 8.4. Variable substitution in PLIST - 8.5. Manpage-compression - 8.6. Changing PLIST source with PLIST_SRC - 8.7. Platform specific and differing PLISTs - 8.8. Sharing directories between packages + 8. Package components - files, directories and contents - 9. Buildlink methodology + 8.1. Makefile + 8.2. distinfo + 8.3. patches/* + 8.4. Other mandatory files + 8.5. Optional files + 8.6. work* + 8.7. files/* - 9.1. Converting packages to use buildlink3 - 9.2. Writing buildlink3.mk files + 9. PLIST issues - 9.2.1. Anatomy of a buildlink3.mk file - 9.2.2. Updating BUILDLINK_DEPENDS.pkg in buildlink3.mk files + 9.1. RCS ID + 9.2. Semi-automatic PLIST generation + 9.3. Tweaking output of make print-PLIST + 9.4. Variable substitution in PLIST + 9.5. Manpage-compression + 9.6. Changing PLIST source with PLIST_SRC + 9.7. Platform specific and differing PLISTs + 9.8. Sharing directories between packages - 9.3. Writing builtin.mk files + 10. Buildlink methodology - 9.3.1. Anatomy of a builtin.mk file - 9.3.2. Global preferences for native or pkgsrc software + 10.1. Converting packages to use buildlink3 + 10.2. Writing buildlink3.mk files - 10. Options handling + 10.2.1. Anatomy of a buildlink3.mk file + 10.2.2. Updating BUILDLINK_DEPENDS.pkg in buildlink3.mk files - 10.1. Global default options - 10.2. Converting packages to use bsd.options.mk + 10.3. Writing builtin.mk files - 11. The build process + 10.3.1. Anatomy of a builtin.mk file + 10.3.2. Global preferences for native or pkgsrc software - 11.1. Program location - 11.2. Main targets - 11.3. Other helpful targets + 11. Options handling - 12. Notes on fixes for packages + 11.1. Global default options + 11.2. Converting packages to use bsd.options.mk - 12.1. General operation + 12. The build process - 12.1.1. How to pull in variables from /etc/mk.conf - 12.1.2. Restricted packages - 12.1.3. Handling dependencies - 12.1.4. Handling conflicts with other packages - 12.1.5. Packages that cannot or should not be built - 12.1.6. Packages which should not be deleted, once installed - 12.1.7. Handling packages with security problems - 12.1.8. How to handle compiler bugs - 12.1.9. How to handle incrementing versions when fixing an existing + 12.1. Program location + 12.2. Main targets + 12.3. Other helpful targets + + 13. Notes on fixes for packages + + 13.1. General operation + + 13.1.1. How to pull in variables from /etc/mk.conf + 13.1.2. Restricted packages + 13.1.3. Handling dependencies + 13.1.4. Handling conflicts with other packages + 13.1.5. Packages that cannot or should not be built + 13.1.6. Packages which should not be deleted, once installed + 13.1.7. Handling packages with security problems + 13.1.8. How to handle compiler bugs + 13.1.9. How to handle incrementing versions when fixing an existing package - 12.1.10. Portability of packages + 13.1.10. Portability of packages - 12.2. Possible downloading issues + 13.2. Possible downloading issues - 12.2.1. Packages whose distfiles aren't available for plain + 13.2.1. Packages whose distfiles aren't available for plain downloading - 12.2.2. How to handle modified distfiles with the 'old' name + 13.2.2. How to handle modified distfiles with the 'old' name - 12.3. Configuration gotchas + 13.3. Configuration gotchas - 12.3.1. Shared libraries - libtool - 12.3.2. Using libtool on GNU packages that already support libtool - 12.3.3. GNU Autoconf/Automake + 13.3.1. Shared libraries - libtool + 13.3.2. Using libtool on GNU packages that already support libtool + 13.3.3. GNU Autoconf/Automake - 12.4. Building considerations + 13.4. Building considerations - 12.4.1. CPP defines + 13.4.1. CPP defines - 12.5. Package specific actions + 13.5. Package specific actions - 12.5.1. Package configuration files - 12.5.2. User interaction - 12.5.3. Handling licenses - 12.5.4. Creating an account from a package - 12.5.5. Installing score files - 12.5.6. Packages providing login shells - 12.5.7. Packages containing perl scripts - 12.5.8. Packages with hardcoded paths to other interpreters - 12.5.9. Packages installing perl modules - 12.5.10. Packages installing info files - 12.5.11. Packages installing GConf2 data files - 12.5.12. Packages installing scrollkeeper data files - 12.5.13. Packages installing X11 fonts - 12.5.14. Packages installing GTK2 modules - 12.5.15. Packages installing SGML or XML data - 12.5.16. Packages installing extensions to the MIME database - 12.5.17. Packages using intltool - 12.5.18. Packages installing startup scripts + 13.5.1. Package configuration files + 13.5.2. User interaction + 13.5.3. Handling licenses + 13.5.4. Creating an account from a package + 13.5.5. Installing score files + 13.5.6. Packages providing login shells + 13.5.7. Packages containing perl scripts + 13.5.8. Packages with hardcoded paths to other interpreters + 13.5.9. Packages installing perl modules + 13.5.10. Packages installing info files + 13.5.11. Packages installing GConf2 data files + 13.5.12. Packages installing scrollkeeper data files + 13.5.13. Packages installing X11 fonts + 13.5.14. Packages installing GTK2 modules + 13.5.15. Packages installing SGML or XML data + 13.5.16. Packages installing extensions to the MIME database + 13.5.17. Packages using intltool + 13.5.18. Packages installing startup scripts - 12.6. Feedback to the author + 13.6. Feedback to the author - 13. Debugging - 14. Submitting and Committing + 14. Debugging + 15. Submitting and Committing - 14.1. Submitting your packages - 14.2. Committing: Importing a package into CVS - 14.3. Updating a package to a newer version - 14.4. Moving a package in pkgsrc + 15.1. Submitting your packages + 15.2. Committing: Importing a package into CVS + 15.3. Updating a package to a newer version + 15.4. Moving a package in pkgsrc A. A simple example package: bison @@ -1167,12 +1176,12 @@ manipulate it. Binary packages are created by default in /usr/pkgsrc/packages, in the form of a gzipped tar file. See Section B.2, "Packaging figlet" for a continuation of the above misc/figlet example. -See Chapter 14, Submitting and Committing for information on how to submit such +See Chapter 15, Submitting and Committing for information on how to submit such a binary package. 5.2. Settings for creation of binary packages -See Section 11.3, "Other helpful targets". +See Section 12.3, "Other helpful targets". 5.3. Doing a bulk build of all packages @@ -1880,129 +1889,262 @@ The pkgsrc developer's guide Table of Contents -7. Package components - files, directories and contents +7. Programming in Makefiles + + 7.1. Makefile variables + 7.2. Code snippets + + 7.2.1. Adding things to a list + 7.2.2. Converting an internal list into an external list + 7.2.3. Passing variables to a shell command + +8. Package components - files, directories and contents - 7.1. Makefile - 7.2. distinfo - 7.3. patches/* - 7.4. Other mandatory files - 7.5. Optional files - 7.6. work* - 7.7. files/* + 8.1. Makefile + 8.2. distinfo + 8.3. patches/* + 8.4. Other mandatory files + 8.5. Optional files + 8.6. work* + 8.7. files/* -8. PLIST issues +9. PLIST issues - 8.1. RCS ID - 8.2. Semi-automatic PLIST generation - 8.3. Tweaking output of make print-PLIST - 8.4. Variable substitution in PLIST - 8.5. Manpage-compression - 8.6. Changing PLIST source with PLIST_SRC - 8.7. Platform specific and differing PLISTs - 8.8. Sharing directories between packages + 9.1. RCS ID + 9.2. Semi-automatic PLIST generation + 9.3. Tweaking output of make print-PLIST + 9.4. Variable substitution in PLIST + 9.5. Manpage-compression + 9.6. Changing PLIST source with PLIST_SRC + 9.7. Platform specific and differing PLISTs + 9.8. Sharing directories between packages -9. Buildlink methodology +10. Buildlink methodology - 9.1. Converting packages to use buildlink3 - 9.2. Writing buildlink3.mk files + 10.1. Converting packages to use buildlink3 + 10.2. Writing buildlink3.mk files - 9.2.1. Anatomy of a buildlink3.mk file - 9.2.2. Updating BUILDLINK_DEPENDS.pkg in buildlink3.mk files + 10.2.1. Anatomy of a buildlink3.mk file + 10.2.2. Updating BUILDLINK_DEPENDS.pkg in buildlink3.mk files - 9.3. Writing builtin.mk files + 10.3. Writing builtin.mk files - 9.3.1. Anatomy of a builtin.mk file - 9.3.2. Global preferences for native or pkgsrc software + 10.3.1. Anatomy of a builtin.mk file + 10.3.2. Global preferences for native or pkgsrc software -10. Options handling +11. Options handling - 10.1. Global default options - 10.2. Converting packages to use bsd.options.mk + 11.1. Global default options + 11.2. Converting packages to use bsd.options.mk -11. The build process +12. The build process - 11.1. Program location - 11.2. Main targets - 11.3. Other helpful targets + 12.1. Program location + 12.2. Main targets + 12.3. Other helpful targets -12. Notes on fixes for packages +13. Notes on fixes for packages - 12.1. General operation + 13.1. General operation - 12.1.1. How to pull in variables from /etc/mk.conf - 12.1.2. Restricted packages - 12.1.3. Handling dependencies - 12.1.4. Handling conflicts with other packages - 12.1.5. Packages that cannot or should not be built - 12.1.6. Packages which should not be deleted, once installed - 12.1.7. Handling packages with security problems - 12.1.8. How to handle compiler bugs - 12.1.9. How to handle incrementing versions when fixing an existing + 13.1.1. How to pull in variables from /etc/mk.conf + 13.1.2. Restricted packages + 13.1.3. Handling dependencies + 13.1.4. Handling conflicts with other packages + 13.1.5. Packages that cannot or should not be built + 13.1.6. Packages which should not be deleted, once installed + 13.1.7. Handling packages with security problems + 13.1.8. How to handle compiler bugs + 13.1.9. How to handle incrementing versions when fixing an existing package - 12.1.10. Portability of packages + 13.1.10. Portability of packages + + 13.2. Possible downloading issues + + 13.2.1. Packages whose distfiles aren't available for plain downloading + 13.2.2. How to handle modified distfiles with the 'old' name + + 13.3. Configuration gotchas + + 13.3.1. Shared libraries - libtool + 13.3.2. Using libtool on GNU packages that already support libtool + 13.3.3. GNU Autoconf/Automake + + 13.4. Building considerations + + 13.4.1. CPP defines + + 13.5. Package specific actions + + 13.5.1. Package configuration files + 13.5.2. User interaction + 13.5.3. Handling licenses + 13.5.4. Creating an account from a package + 13.5.5. Installing score files + 13.5.6. Packages providing login shells + 13.5.7. Packages containing perl scripts + 13.5.8. Packages with hardcoded paths to other interpreters + 13.5.9. Packages installing perl modules + 13.5.10. Packages installing info files + 13.5.11. Packages installing GConf2 data files + 13.5.12. Packages installing scrollkeeper data files + 13.5.13. Packages installing X11 fonts + 13.5.14. Packages installing GTK2 modules + 13.5.15. Packages installing SGML or XML data + 13.5.16. Packages installing extensions to the MIME database + 13.5.17. Packages using intltool + 13.5.18. Packages installing startup scripts + + 13.6. Feedback to the author + +14. Debugging +15. Submitting and Committing + + 15.1. Submitting your packages + 15.2. Committing: Importing a package into CVS + 15.3. Updating a package to a newer version + 15.4. Moving a package in pkgsrc + +Chapter 7. Programming in Makefiles + +Table of Contents + +7.1. Makefile variables +7.2. Code snippets + + 7.2.1. Adding things to a list + 7.2.2. Converting an internal list into an external list + 7.2.3. Passing variables to a shell command + +WARNING: The make(1) man page is wrong. After the man page has been corrected, +this chapter will be updated. Until that, don't take it too serious. + +Pkgsrc consists of many Makefile fragments, each of which forms a well-defined +part of the pkgsrc system. Using the make(1) system as a programming language +for a big system like pkgsrc requires some discipline to keep the code correct +and understandable. + +The basic ingredients for Makefile programming are variables (which are +actually macros) and shell commands. Among these shell commands may even be +more complex ones like awk(1) programs. To make sure that every shell command +runs as intended it is necessary to quote all variables correctly when they are +used. + +This chapter describes some patterns, that appear quite often in Makefiles, +including the pitfalls that come along with them. + +7.1. Makefile variables + +A restriction common to all types of variables is that they can neither contain +a newline character nor the '\0' character nor the '#' character. The effects +of the backslash character is not documented, so you should not use it at the +moment. As the $ is used to get values of a Makefile variable, it must be +quoted as $$. + +There are several types of variables that must be handled differently. + + * Simple values (which I will call atoms) can contain any string, which does + not have to be quoted in any way. All other types are somewhat restricted + in their possible values. + + * Internal lists are lists that are never exported to any shell command. + Their elements are separated by whitespace. Therefore the elements + themselves cannot have embedded whitespace. Any other characters are + allowed. Internal lists can be used in .for loops. Examples are DEPENDS, + BUILD_DEPENDS. + + * External lists are lists that may be exported to a shell command. Their + elements can contain any characters, including whitespace. That's why they + cannot be used in .for loops. Examples are DISTFILES, MASTER_SITES. + +7.2. Code snippets + +This section presents you with some code snippets you should use in your own +code. If you don't find anything appropriate here, you should test your code +and add it here. + +7.2.1. Adding things to a list + +ATOM= foo * bar `date` +INT_LIST= # empty +ANOTHER_INT_LIST= apache-[0-9]*:../../www/apache +EXT_LIST= # empty +ANOTHER_EXT_LIST= a=b c=d + +INT_LIST+= ${ATOM} # 1 +INT_LIST+= ${ANOTHER_INT_LIST} # 2 +EXT_LIST+= ${ATOM:Q} # 3 +EXT_LIST+= ${ANOTHER_EXT_LIST} # 4 + + +When you add an atom to an external list (example 3), it must be quoted. In all +other cases, you must not add a quoting level. You must not merge internal and +external lists, unless you are sure that all entries are correctly interpreted +in both lists. + +7.2.2. Converting an internal list into an external list + +EXT_LIST= # empty +.for i in ${INT_LIST} +EXT_LIST+= ${i:Q} +.endfor + + +This code converts the internal list INT_LIST into the external list EXT_LIST. +As the elements of an internal list are unquoted they must be quoted here. - 12.2. Possible downloading issues +7.2.3. Passing variables to a shell command - 12.2.1. Packages whose distfiles aren't available for plain downloading - 12.2.2. How to handle modified distfiles with the 'old' name +ATOM= foo bar < > * `date` $$HOME ' " +EXT_LIST= atom=${ATOM:Q} x=second\ item - 12.3. Configuration gotchas +all: + echo ${ATOM} # 1 + echo "${ATOM}" # 2 + echo "${ATOM:Q}" # 3 + echo ${ATOM:Q} # 4 + echo x${ATOM:Q} | sed 1s,.,, # 5 + env ${EXT_LIST} /bin/sh -c 'echo "$$atom"; echo "$$x"' - 12.3.1. Shared libraries - libtool - 12.3.2. Using libtool on GNU packages that already support libtool - 12.3.3. GNU Autoconf/Automake - 12.4. Building considerations +Example 1 leads to a syntax error in the shell, as the characters are just +copied. - 12.4.1. CPP defines +Example 2 leads to a syntax error too, and when you leave out the last " +character from ${ATOM} the date(1) would be executed. The $HOME shell variable +would be evaluated, too. - 12.5. Package specific actions +Example 3 would output precede each space character with a backslash (or not), +depending on the implementation of the echo(1) command. - 12.5.1. Package configuration files - 12.5.2. User interaction - 12.5.3. Handling licenses - 12.5.4. Creating an account from a package - 12.5.5. Installing score files - 12.5.6. Packages providing login shells - 12.5.7. Packages containing perl scripts - 12.5.8. Packages with hardcoded paths to other interpreters - 12.5.9. Packages installing perl modules - 12.5.10. Packages installing info files - 12.5.11. Packages installing GConf2 data files - 12.5.12. Packages installing scrollkeeper data files - 12.5.13. Packages installing X11 fonts - 12.5.14. Packages installing GTK2 modules - 12.5.15. Packages installing SGML or XML data - 12.5.16. Packages installing extensions to the MIME database - 12.5.17. Packages using intltool - 12.5.18. Packages installing startup scripts +Example 4 handles correctly every string that does not start with a dash. In +that case, the result depends on the implementation of the echo(1) command. As +long as you can guarantee that your input does not start with a dash this form +is appropriate. - 12.6. Feedback to the author +Example 5 handles even the case of a leading dash correctly. -13. Debugging -14. Submitting and Committing +The EXT_LIST does not need to be quoted because the quoting has already be done +when adding elements to the list. - 14.1. Submitting your packages - 14.2. Committing: Importing a package into CVS - 14.3. Updating a package to a newer version - 14.4. Moving a package in pkgsrc +As internal lists shall not be passed to the shell, there is no example for it. -Chapter 7. Package components - files, directories and contents +Chapter 8. Package components - files, directories and contents Table of Contents -7.1. Makefile -7.2. distinfo -7.3. patches/* -7.4. Other mandatory files -7.5. Optional files -7.6. work* -7.7. files/* +8.1. Makefile +8.2. distinfo +8.3. patches/* +8.4. Other mandatory files +8.5. Optional files +8.6. work* +8.7. files/* Whenever you're preparing a package, there are a number of files involved which are described in the following sections. -7.1. Makefile +8.1. Makefile Building, installation and creation of a binary package are all controlled by the package's Makefile. The Makefile describes various things about a package, @@ -2098,7 +2240,7 @@ Please pay attention to the following gotchas: * Replace /usr/local with "${PREFIX}" in all files (see patches, below). - * If the package installs any info files, see Section 12.5.10, "Packages + * If the package installs any info files, see Section 13.5.10, "Packages installing info files". * Set MAINTAINER to be yourself. If you really can't maintain the package for @@ -2111,7 +2253,7 @@ Please pay attention to the following gotchas: * Be sure to set the COMMENT variable to a short description of the package, not containing the pkg's name. -7.2. distinfo +8.2. distinfo Most important, the mandatory message digest, or checksum, of all the distfiles needed for the package to compile, confirming they match the original file @@ -2131,12 +2273,12 @@ should be taken when upgrading such a package to ensure distfile information is not lost. The message digest/checksum for all the official patches found in the patches/ -directory (see Section 7.3, "patches/*") for the package is also stored in the +directory (see Section 8.3, "patches/*") for the package is also stored in the distinfo file. This is a message digest/checksum of all lines in the patch file except the NetBSD RCS Id. This file is generated by invoking make makepatchsum (or make mps if you're in a hurry). -7.3. patches/* +8.3. patches/* This directory contains files that are used by the patch(1) command to modify the sources as distributed in the distribution file into a form that will @@ -2167,7 +2309,7 @@ easily compare the new set of patches with the previously existing one with patchdiff. When you have finished a package, remember to generate the checksums for the -patch files by using the make makepatchsum command, see Section 7.2, "distinfo" +patch files by using the make makepatchsum command, see Section 8.2, "distinfo" . Patch files that are distributed by the author or other maintainers can be @@ -2182,7 +2324,7 @@ pkgsrc/graphics/png, keep it in $LOCALPATCHES/graphics/png/mypatch. All files in the named directory are expected to be patch files, and they are applied after pkgsrc patches are applied. -7.4. Other mandatory files +8.4. Other mandatory files DESCR @@ -2196,10 +2338,10 @@ PLIST This file governs the files that are installed on your system: all the binaries, manual pages, etc. There are other directives which may be entered in this file, to control the creation and deletion of directories, - and the location of inserted files. See Chapter 8, PLIST issues for more + and the location of inserted files. See Chapter 9, PLIST issues for more information. -7.5. Optional files +8.5. Optional files INSTALL @@ -2229,7 +2371,7 @@ MESSAGE replaces "${SOMEVAR}" with "somevalue" in MESSAGE. -7.6. work* +8.6. work* When you type make the distribution files are unpacked into this directory. It can be removed by running make clean. Besides the sources, this directory is @@ -2253,7 +2395,7 @@ same pkgsrc tree should be used on several different platforms, the variable OBJMACHINE can be set in /etc/mk.conf to attach the platform to the directory name, e.g. work.i386 or work.sparc. -7.7. files/* +8.7. files/* If you have any files that you wish to be placed in the package prior to configuration or building, you could place these files here and use a "${CP}" @@ -2261,18 +2403,18 @@ command in the "pre-configure" target to achieve this. Alternatively, you could simply diff the file against /dev/null and use the patch mechanism to manage the creation of this file. -Chapter 8. PLIST issues +Chapter 9. PLIST issues Table of Contents -8.1. RCS ID -8.2. Semi-automatic PLIST generation -8.3. Tweaking output of make print-PLIST -8.4. Variable substitution in PLIST -8.5. Manpage-compression -8.6. Changing PLIST source with PLIST_SRC -8.7. Platform specific and differing PLISTs -8.8. Sharing directories between packages +9.1. RCS ID +9.2. Semi-automatic PLIST generation +9.3. Tweaking output of make print-PLIST +9.4. Variable substitution in PLIST +9.5. Manpage-compression +9.6. Changing PLIST source with PLIST_SRC +9.7. Platform specific and differing PLISTs +9.8. Sharing directories between packages The PLIST file contains a package's "packing list", i.e. a list of files that belong to the package (relative to the ${PREFIX} directory it's been installed @@ -2280,21 +2422,21 @@ in) plus some additional statements - see the pkg_create(1) manpage for a full list. This chapter addresses some issues that need attention when dealing with the PLIST file (or files, see below!). -8.1. RCS ID +9.1. RCS ID Be sure to add a RCS ID line as the first thing in any PLIST file you write: @comment $NetBSD$ -8.2. Semi-automatic PLIST generation +9.2. Semi-automatic PLIST generation You can use the make print-PLIST command to output a PLIST that matches any new -files since the package was extracted. See Section 11.3, "Other helpful +files since the package was extracted. See Section 12.3, "Other helpful targets" for more information on this target. -8.3. Tweaking output of make print-PLIST +9.3. Tweaking output of make print-PLIST -If you have used any of the *-dirs packages, as explained in Section 8.8, +If you have used any of the *-dirs packages, as explained in Section 9.8, "Sharing directories between packages", you may have noticed that make print-PLIST outputs a set of @comments instead of real @dirrm lines. You can also do this for specific directories and files, so that the results of that @@ -2317,7 +2459,7 @@ converted to @comments: PRINT_PLIST_AWK+= /^@dirrm share\/specific/ { print "@comment " $$0; next; } -8.4. Variable substitution in PLIST +9.4. Variable substitution in PLIST A number of variables are substituted automatically in PLISTs when a package is installed on a system. This includes the following variables: @@ -2360,13 +2502,13 @@ bsd.pkg.mk (and search for PLIST_SUBST). If you want to change other variables not listed above, you can add variables and their expansions to this variable in the following way, similar to -MESSAGE_SUBST (see Section 7.5, "Optional files"): +MESSAGE_SUBST (see Section 8.5, "Optional files"): PLIST_SUBST+= SOMEVAR="somevalue" This replaces all occurrences of "${SOMEVAR}" in the PLIST with "somevalue". -8.5. Manpage-compression +9.5. Manpage-compression Manpages should be installed in compressed form if MANZ is set (in bsd.own.mk), and uncompressed otherwise. To handle this in the PLIST file, the suffix ".gz" @@ -2374,13 +2516,13 @@ is appended/removed automatically for manpages according to MANZ and MANCOMPRESSED being set or not, see above for details. This modification of the PLIST file is done on a copy of it, not PLIST itself. -8.6. Changing PLIST source with PLIST_SRC +9.6. Changing PLIST source with PLIST_SRC To use one or more files as source for the PLIST used in generating the binary package, set the variable PLIST_SRC to the names of that file(s). The files are later concatenated using cat(1), and order of things is important. -8.7. Platform specific and differing PLISTs +9.7. Platform specific and differing PLISTs Some packages decide to install a different set of files based on the operating system being used. These differences can be automatically handled by using the @@ -2396,7 +2538,7 @@ following files: * PLIST.common_end -8.8. Sharing directories between packages +9.8. Sharing directories between packages A "shared directory" is a directory where multiple (and unrelated) packages install files. These directories are problematic because you have to add @@ -2446,20 +2588,20 @@ Note that, even if your package is using $X11BASE, it must not depend on the *-x11-dirs packages. Just specify the name without that part and pkgsrc (in particular, mk/dirs.mk) will take care of it. -Chapter 9. Buildlink methodology +Chapter 10. Buildlink methodology Table of Contents -9.1. Converting packages to use buildlink3 -9.2. Writing buildlink3.mk files +10.1. Converting packages to use buildlink3 +10.2. Writing buildlink3.mk files - 9.2.1. Anatomy of a buildlink3.mk file - 9.2.2. Updating BUILDLINK_DEPENDS.pkg in buildlink3.mk files + 10.2.1. Anatomy of a buildlink3.mk file + 10.2.2. Updating BUILDLINK_DEPENDS.pkg in buildlink3.mk files -9.3. Writing builtin.mk files +10.3. Writing builtin.mk files - 9.3.1. Anatomy of a builtin.mk file - 9.3.2. Global preferences for native or pkgsrc software + 10.3.1. Anatomy of a builtin.mk file + 10.3.2. Global preferences for native or pkgsrc software Buildlink is a framework in pkgsrc that controls what headers and libraries are seen by a package's configure and build processes. This is implemented in a two @@ -2480,7 +2622,7 @@ note that the normal system header and library paths, e.g. /usr/include, /usr/ lib, etc., are always searched -- buildlink3 is designed to insulate the package build from non-system-supplied software. -9.1. Converting packages to use buildlink3 +10.1. Converting packages to use buildlink3 The process of converting packages to use the buildlink3 framework ("bl3ifying") is fairly straightforward. The things to keep in mind are: @@ -2537,7 +2679,7 @@ issues: The comments in those buildlink3.mk files provide a more complete description of how to use them properly. -9.2. Writing buildlink3.mk files +10.2. Writing buildlink3.mk files A package's buildlink3.mk file is included by Makefiles to indicate the need to compile and link against header files and libraries provided by the package. A @@ -2552,7 +2694,7 @@ following command will generate a good starting point for buildlink3.mk files: % cd pkgsrc/category/pkgdir % createbuildlink -3 >buildlink3.mk -9.2.1. Anatomy of a buildlink3.mk file +10.2.1. Anatomy of a buildlink3.mk file The following real-life example buildlink3.mk is taken from pkgsrc/graphics/ tiff: @@ -2647,7 +2789,7 @@ dependencies. Including these buildlink3.mk files means that the headers and libraries for these dependencies are also symlinked into ${BUILDLINK_DIR} whenever the pkg buildlink3.mk file is included. -9.2.2. Updating BUILDLINK_DEPENDS.pkg in buildlink3.mk files +10.2.2. Updating BUILDLINK_DEPENDS.pkg in buildlink3.mk files There are two situations that require increasing the dependency listed in BUILDLINK_DEPENDS.pkg after a package update: @@ -2668,11 +2810,11 @@ libraries. Please take careful consideration before adjusting BUILDLINK_DEPENDS.pkg as we don't want to cause unneeded package deletions and rebuilds. In many cases, new versions of packages work just fine with older dependencies. See Section -12.1.3, "Handling dependencies" and Chapter 9, Buildlink methodology for more +13.1.3, "Handling dependencies" and Chapter 10, Buildlink methodology for more information about dependencies on other packages, including the BUILDLINK_RECOMMENDED and RECOMMENDED definitions. -9.3. Writing builtin.mk files +10.3. Writing builtin.mk files Some packages in pkgsrc install headers and libraries that coincide with headers and libraries present in the base system. Aside from a buildlink3.mk @@ -2690,7 +2832,7 @@ The only requirements of a builtin.mk file for pkg are: 3. It should be written to allow multiple inclusion. This is very important and takes careful attention to Makefile coding. -9.3.1. Anatomy of a builtin.mk file +10.3.1. Anatomy of a builtin.mk file The following is the recommended template for builtin.mk files: @@ -2759,7 +2901,7 @@ the value of USE_BUILTIN.pkg set in the previous section. This typically includes, e.g., adding additional dependency restrictions and listing additional files to symlink into ${BUILDLINK_DIR} (via BUILDLINK_FILES.pkg). -9.3.2. Global preferences for native or pkgsrc software +10.3.2. Global preferences for native or pkgsrc software When building packages, it's possible to choose whether to set a global preference for using either the built-in (native) version or the pkgsrc version @@ -2780,12 +2922,12 @@ all but the most basic bits on a NetBSD system, you can set: A package must have a builtin.mk file to be listed in PREFER_NATIVE, otherwise it is simply ignored in that list. -Chapter 10. Options handling +Chapter 11. Options handling Table of Contents -10.1. Global default options -10.2. Converting packages to use bsd.options.mk +11.1. Global default options +11.2. Converting packages to use bsd.options.mk Many packages have the ability to be built to support different sets of features. bsd.options.mk is a framework in pkgsrc that provides generic @@ -2794,13 +2936,13 @@ can be built. It's possible for the user to specify exactly which sets of options will be built into a package or to allow a set of global default options apply. -10.1. Global default options +11.1. Global default options Global default options are listed in PKG_DEFAULT_OPTIONS, which is a list of the options that should be built into every package if that option is supported. This variable should be set in /etc/mk.conf. -10.2. Converting packages to use bsd.options.mk +11.2. Converting packages to use bsd.options.mk The following example shows how bsd.options.mk should be used in a package Makefile, or in a file, e.g. options.mk, that is included by the main package @@ -2890,13 +3032,13 @@ should be clear documentation on what turning on the option will do in the comments preceding each section. The correct way to check for an option is to check whether it is listed in PKG_OPTIONS. -Chapter 11. The build process +Chapter 12. The build process Table of Contents -11.1. Program location -11.2. Main targets -11.3. Other helpful targets +12.1. Program location +12.2. Main targets +12.3. Other helpful targets The basic steps for building a program are always the same. First the program's source (distfile) must be brought to the local system and then extracted. After @@ -2906,7 +3048,7 @@ binaries, etc. can be put into place on the system. These are exactly the steps performed by the NetBSD package system, which is implemented as a series of targets in a central Makefile, pkgsrc/mk/bsd.pkg.mk. -11.1. Program location +12.1. Program location Before outlining the process performed by the NetBSD package system in the next section, here's a brief discussion on where programs are installed, and which @@ -2916,7 +3058,7 @@ The automatic variable PREFIX indicates where all files of the final program shall be installed. It is usually set to LOCALBASE (/usr/pkg), or CROSSBASE for pkgs in the "cross" category. The value of PREFIX needs to be put into the various places in the program's source where paths to these files are encoded. -See Section 7.3, "patches/*" and Section 12.3.1, "Shared libraries - libtool" +See Section 8.3, "patches/*" and Section 13.3.1, "Shared libraries - libtool" for more details. When choosing which of these variables to use, follow the following rules: @@ -2982,7 +3124,7 @@ When choosing which of these variables to use, follow the following rules: the exception that manual pages go into ${PREFIX}/man, not ${PREFIX}/share/ man. -11.2. Main targets +12.2. Main targets The main targets used during the build process defined in bsd.pkg.mk are: @@ -3041,7 +3183,7 @@ patch $PKGPATH (e.g. /usr/local/patches/graphics/png) are applied. Patchfiles ending in .Z or .gz are uncompressed before they are applied, files ending in .orig or .rej are ignored. Any special options to patch(1) can be handed - in PATCH_DIST_ARGS. See Section 7.3, "patches/*" for more details. + in PATCH_DIST_ARGS. See Section 8.3, "patches/*" for more details. By default patch(1) is given special args to make it fail if the patches apply with some lines of fuzz. Please fix (regen) the patches so that they @@ -3101,7 +3243,7 @@ make patch make configure make build -11.3. Other helpful targets +12.3. Other helpful targets pre/post-* @@ -3305,7 +3447,7 @@ print-PLIST file access times, be sure to add these files manually to your PLIST, as the "find -newer" command used by this target won't catch them! - See Section 8.3, "Tweaking output of make print-PLIST" for more information + See Section 9.3, "Tweaking output of make print-PLIST" for more information on this target. bulk-package @@ -3337,64 +3479,64 @@ bulk-install Beware that this target may deinstall all packages installed on a system! -Chapter 12. Notes on fixes for packages +Chapter 13. Notes on fixes for packages Table of Contents -12.1. General operation +13.1. General operation - 12.1.1. How to pull in variables from /etc/mk.conf - 12.1.2. Restricted packages - 12.1.3. Handling dependencies - 12.1.4. Handling conflicts with other packages - 12.1.5. Packages that cannot or should not be built - 12.1.6. Packages which should not be deleted, once installed - 12.1.7. Handling packages with security problems - 12.1.8. How to handle compiler bugs - 12.1.9. How to handle incrementing versions when fixing an existing package - 12.1.10. Portability of packages + 13.1.1. How to pull in variables from /etc/mk.conf + 13.1.2. Restricted packages + 13.1.3. Handling dependencies + 13.1.4. Handling conflicts with other packages + 13.1.5. Packages that cannot or should not be built + 13.1.6. Packages which should not be deleted, once installed + 13.1.7. Handling packages with security problems + 13.1.8. How to handle compiler bugs + 13.1.9. How to handle incrementing versions when fixing an existing package + 13.1.10. Portability of packages -12.2. Possible downloading issues +13.2. Possible downloading issues - 12.2.1. Packages whose distfiles aren't available for plain downloading - 12.2.2. How to handle modified distfiles with the 'old' name + 13.2.1. Packages whose distfiles aren't available for plain downloading + 13.2.2. How to handle modified distfiles with the 'old' name -12.3. Configuration gotchas +13.3. Configuration gotchas - 12.3.1. Shared libraries - libtool - 12.3.2. Using libtool on GNU packages that already support libtool - 12.3.3. GNU Autoconf/Automake + 13.3.1. Shared libraries - libtool + 13.3.2. Using libtool on GNU packages that already support libtool + 13.3.3. GNU Autoconf/Automake -12.4. Building considerations +13.4. Building considerations - 12.4.1. CPP defines + 13.4.1. CPP defines -12.5. Package specific actions +13.5. Package specific actions - 12.5.1. Package configuration files - 12.5.2. User interaction - 12.5.3. Handling licenses - 12.5.4. Creating an account from a package - 12.5.5. Installing score files - 12.5.6. Packages providing login shells - 12.5.7. Packages containing perl scripts - 12.5.8. Packages with hardcoded paths to other interpreters - 12.5.9. Packages installing perl modules - 12.5.10. Packages installing info files - 12.5.11. Packages installing GConf2 data files - 12.5.12. Packages installing scrollkeeper data files - 12.5.13. Packages installing X11 fonts - 12.5.14. Packages installing GTK2 modules - 12.5.15. Packages installing SGML or XML data - 12.5.16. Packages installing extensions to the MIME database - 12.5.17. Packages using intltool - 12.5.18. Packages installing startup scripts + 13.5.1. Package configuration files + 13.5.2. User interaction + 13.5.3. Handling licenses + 13.5.4. Creating an account from a package + 13.5.5. Installing score files + 13.5.6. Packages providing login shells + 13.5.7. Packages containing perl scripts + 13.5.8. Packages with hardcoded paths to other interpreters + 13.5.9. Packages installing perl modules + 13.5.10. Packages installing info files + 13.5.11. Packages installing GConf2 data files + 13.5.12. Packages installing scrollkeeper data files + 13.5.13. Packages installing X11 fonts + 13.5.14. Packages installing GTK2 modules + 13.5.15. Packages installing SGML or XML data + 13.5.16. Packages installing extensions to the MIME database + 13.5.17. Packages using intltool + 13.5.18. Packages installing startup scripts -12.6. Feedback to the author +13.6. Feedback to the author -12.1. General operation +13.1. General operation -12.1.1. How to pull in variables from /etc/mk.conf +13.1.1. How to pull in variables from /etc/mk.conf The problem with package-defined variables that can be overridden via MAKECONF or /etc/mk.conf is that make(1) expands a variable as it is used, but evaluates @@ -3421,7 +3563,7 @@ Using CFLAGS= (i.e. without the "+") may lead to problems with packages that need to add their own flags. Also, you may want to take a look at the devel/ cpuflags package if you're interested in optimization for the current CPU. -12.1.2. Restricted packages +13.1.2. Restricted packages Some licenses restrict how software may be re-distributed. In order to satisfy these restrictions, the package system defines five make variables that can be @@ -3460,13 +3602,13 @@ Please note that the use of NO_PACKAGE, IGNORE, NO_CDROM, or other generic make variables to denote restrictions is deprecated, because they unconditionally prevent users from generating binary packages! -12.1.3. Handling dependencies +13.1.3. Handling dependencies Your package may depend on some other package being present - and there are various ways of expressing this dependency. pkgsrc supports the BUILD_DEPENDS and DEPENDS definitions, as well as dependencies via buildlink3.mk, which is the preferred way to handle dependencies, and which uses the variables named -above. See Chapter 9, Buildlink methodology for more information. +above. See Chapter 10, Buildlink methodology for more information. The basic difference between the two variables is as follows: The DEPENDS definition registers that pre-requisite in the binary package so it will be @@ -3540,7 +3682,7 @@ version numbers recognized by pkg_info(1). different versions of binary packages installed. For security fixes, please update the package vulnerabilities file as well - as setting RECOMMENDED, see Section 12.1.7, "Handling packages with + as setting RECOMMENDED, see Section 13.1.7, "Handling packages with security problems" for more information. 4. If your package needs some executable to be able to run correctly and if @@ -3575,7 +3717,7 @@ gettext package. The latter adds a build dependency on either an installed version of an older gettext package, or if it isn't, installs the devel/ gettext-m4 package. -12.1.4. Handling conflicts with other packages +13.1.4. Handling conflicts with other packages Your package may conflict with other packages a user might already have installed on his system, e.g. if your package installs the same set of files @@ -3597,7 +3739,7 @@ Packages will automatically conflict with other packages with the name prefix and a different version string. "Xaw3d-1.5" e.g. will automatically conflict with the older version "Xaw3d-1.3". -12.1.5. Packages that cannot or should not be built +13.1.5. Packages that cannot or should not be built There are several reasons why a package might be instructed to not build under certain circumstances. If the package builds and runs on most platforms, the @@ -3611,7 +3753,7 @@ PKG_FAIL_REASON to a descriptive message. IGNORE is deprecated because it didn't provide enough information to determine whether the build should fail. -12.1.6. Packages which should not be deleted, once installed +13.1.6. Packages which should not be deleted, once installed To ensure that a package may not be deleted, once it has been installed, the PKG_PRESERVE definition should be set in the package Makefile. This will be @@ -3619,7 +3761,7 @@ carried into any binary package that is made from this pkgsrc entry. A "preserved" package will not be deleted using pkg_delete(1) unless the "-f" option is used. -12.1.7. Handling packages with security problems +13.1.7. Handling packages with security problems When a vulnerability is found, this should be noted in localsrc/security/ advisories/pkg-vulnerabilities, and after the commit of that file, it should be @@ -3627,14 +3769,14 @@ copied to both /pub/NetBSD/packages/distfiles/pkg-vulnerabilities and /pub/ NetBSD/packages/distfiles/vulnerabilities on ftp.NetBSD.org using localsrc/ security/advisories/Makefile. In addition, if a buildlink3.mk file exists for an affected package, bumping PKGREVISION and creating a corresponding -BUILDLINK_RECOMMENDED.pkg entry should be considered. See Chapter 9, Buildlink +BUILDLINK_RECOMMENDED.pkg entry should be considered. See Chapter 10, Buildlink methodology for more information about writing buildlink3.mk files and BUILDLINK_* definitions. Also, if the fix should be applied to the stable pkgsrc branch, be sure to submit a pullup request! -12.1.8. How to handle compiler bugs +13.1.8. How to handle compiler bugs Some source files trigger bugs in the compiler, based on combinations of compiler version and architecture and almost always relation to optimisation @@ -3645,7 +3787,7 @@ Typically a workaround involves testing the MACHINE_ARCH and compiler version, disabling optimisation for that file/MACHINE_ARCH/compiler combination, and documenting it in pkgsrc/doc/HACKS. See that file for a number of examples! -12.1.9. How to handle incrementing versions when fixing an existing package +13.1.9. How to handle incrementing versions when fixing an existing package When making fixes to an existing package it can be useful to change the version number in PKGNAME. To avoid conflicting with future versions by the original @@ -3663,14 +3805,14 @@ like: DISTNAME= foo-17.43 -12.1.10. Portability of packages +13.1.10. Portability of packages One appealing feature of pkgsrc is that it runs on many different platforms. As a result, it is important to ensure, where possible, that packages in pkgsrc are portable. There are some particular details you should pay attention to while working on pkgsrc. -12.1.10.1. ${INSTALL}, ${INSTALL_DATA_DIR}, ... +13.1.10.1. ${INSTALL}, ${INSTALL_DATA_DIR}, ... The BSD-compatible install supplied with some operating systems will not perform more than one operation at a time. As such, you should call "${INSTALL} @@ -3679,9 +3821,9 @@ perform more than one operation at a time. As such, you should call "${INSTALL} ${INSTALL_DATA_DIR} ${PREFIX}/dir1 ${INSTALL_DATA_DIR} ${PREFIX}/dir2 -12.2. Possible downloading issues +13.2. Possible downloading issues -12.2.1. Packages whose distfiles aren't available for plain downloading +13.2.1. Packages whose distfiles aren't available for plain downloading If you need to download from a dynamic URL you can set DYNAMIC_MASTER_SITES and a make fetch will call files/getsite.sh with the name of each file to download @@ -3697,7 +3839,7 @@ packages use this: audio/realplayer, cad/simian, devel/ipv6socket, emulators/ vmware-module, fonts/acroread-jpnfont, sysutils/storage-manager, www/ ap-aolserver, www/openacs. Try to be consistent with them. -12.2.2. How to handle modified distfiles with the 'old' name +13.2.2. How to handle modified distfiles with the 'old' name Sometimes authors of a software package make some modifications after the software was released, and they put up a new distfile without changing the @@ -3710,9 +3852,9 @@ Furthermore, a mail to the package's author seems appropriate making sure the distfile was really updated on purpose, and that no trojan horse or so crept in. -12.3. Configuration gotchas +13.3. Configuration gotchas -12.3.1. Shared libraries - libtool +13.3.1. Shared libraries - libtool pkgsrc supports many different machines, with different object formats like a.out and ELF, and varying abilities to do shared library and dynamic loading @@ -3806,7 +3948,7 @@ Here's how to use libtool in a pkg in seven simple steps: 7. In your PLIST, include only the .la file (this is a change from previous behaviour). -12.3.2. Using libtool on GNU packages that already support libtool +13.3.2. Using libtool on GNU packages that already support libtool Add USE_LIBTOOL=yes to the package Makefile. This will override the package's own libtool in most cases. For older libtool using packages, libtool is made by @@ -3840,7 +3982,7 @@ in some circumstances. Some of the more common errors are: The function lt_dlinit() should be called and the macro LTDL_SET_PRELOADED_SYMBOLS included in executables. -12.3.3. GNU Autoconf/Automake +13.3.3. GNU Autoconf/Automake If a package needs GNU autoconf or automake to be executed to regenerate the configure script and Makefile.in makefile templates, then they should be @@ -3883,9 +4025,9 @@ automake sequence. This is prevented by touching various files in the configure stage. If this causes problems with your package you can set AUTOMAKE_OVERRIDE= NO in the package Makefile. -12.4. Building considerations +13.4. Building considerations -12.4.1. CPP defines +13.4.1. CPP defines To port an application to NetBSD, it's usually necessary for the compiler to be able to judge the system on which it's compiling, and we use definitions so @@ -3906,9 +4048,9 @@ using this conditional: Please use the "__NetBSD__" definition sparingly - it should only apply to features of NetBSD that are not present in other 4.4-lite derived BSDs. -12.5. Package specific actions +13.5. Package specific actions -12.5.1. Package configuration files +13.5.1. Package configuration files Packages should be taught to look for their configuration files in $ {PKG_SYSCONFDIR}, which is passed through to the configure and build processes. @@ -3935,7 +4077,7 @@ The only variables that users should customize are PKG_SYSCONFBASE and PKG_SYSCONFDIR.${PKG_SYSCONFVAR}. Users will typically want to set PKG_SYSCONFBASE to /etc, or to accept the default location of ${PREFIX}/etc. -12.5.2. User interaction +13.5.2. User interaction Occasionally, packages require interaction from the user, and this can be in a number of ways: @@ -3958,7 +4100,7 @@ Multiple interactive stages can be specified: INTERACTIVE_STAGE= configure install -12.5.3. Handling licenses +13.5.3. Handling licenses A package may underly a license which the user has or has not agreed to accept. Usually, packages that underly well-known Open Source licenses (e.g. the GNU @@ -3999,7 +4141,7 @@ If there is a really pressing need to accept all licenses at once, like when trying to download or mirror all distfiles or doing a bulk build to test if all packages in pkgsrc build, this can be done by setting _ACCEPTABLE=yes. -12.5.4. Creating an account from a package +13.5.4. Creating an account from a package There are two make variables used to control the creation of package-specific groups and users at pre-install time. The first is PKG_GROUPS, which is a list @@ -4029,7 +4171,7 @@ prompted to remove them at post-deinstall time. Automatic creation of the users and groups can be toggled on and off by setting the PKG_CREATE_USERGROUP variable prior to package installation. -12.5.5. Installing score files +13.5.5. Installing score files Certain packages, most of them in the games category, install a score file that allows all users on the system to record their highscores. In order for this to @@ -4044,7 +4186,7 @@ SETGIDGAME=YES will set all the other variables accordingly. A package should therefor never hard code file ownership or access permissions but rely on INSTALL_GAME and INSTALL_GAME_DATA to set these correctly. -12.5.6. Packages providing login shells +13.5.6. Packages providing login shells If the purpose of the package is to provide a login shell, the variable PKG_SHELL should contain the full pathname of the shell executable installed by @@ -4060,13 +4202,13 @@ The shell is registered into /etc/shells file automatically in the post-install target by the generated INSTALL script and removed in the deinstall target by the DEINSTALL script. -12.5.7. Packages containing perl scripts +13.5.7. Packages containing perl scripts If your package contains interpreted perl scripts, set REPLACE_PERL to ensure that the proper interpreter path is set. REPLACE_PERL should contain a list of scripts, relative to WRKSRC, that you want adjusted. -12.5.8. Packages with hardcoded paths to other interpreters +13.5.8. Packages with hardcoded paths to other interpreters Your package may also contain scripts with hardcoded paths to other interpreters besides (or as well as) perl. To correct the full pathname to the @@ -4079,7 +4221,7 @@ script interpreter, you need to set the following definitions in your Makefile _REPLACE_FILES.tcl= ...list of tcl scripts which need to be fixed, relative to ${WRKSRC}, just as in REPLACE_PERL -12.5.9. Packages installing perl modules +13.5.9. Packages installing perl modules Makefiles of packages providing perl5 modules should include the Makefile fragment ../../lang/perl5/module.mk. It provides a do-configure target for the @@ -4099,7 +4241,7 @@ three locations in which perl5 modules may be installed, and may be used by perl5 packages that don't have a packlist. These three variables are also substituted for in the PLIST. -12.5.10. Packages installing info files +13.5.10. Packages installing info files Some packages install info files or use the "makeinfo" or "install-info" commands. Each of the info files: @@ -4138,7 +4280,7 @@ message. The script overriding makeinfo logs a message and according to the value of USE_MAKEINFO and TEXINFO_REQD either run the appropriate makeinfo command or exit on error. -12.5.11. Packages installing GConf2 data files +13.5.11. Packages installing GConf2 data files If a package installs .schemas or .entries files, used by GConf2, you need to take some extra steps to make sure they get registered in the database: @@ -4165,7 +4307,7 @@ take some extra steps to make sure they get registered in the database: .entries files installed by the package, if any. Names must not contain any directories in them. -12.5.12. Packages installing scrollkeeper data files +13.5.12. Packages installing scrollkeeper data files If a package installs .omf files, used by scrollkeeper, you need to take some extra steps to make sure they get registered in the database: @@ -4181,7 +4323,7 @@ extra steps to make sure they get registered in the database: 3. Remove the share/omf directory from the PLIST. It will be handled by scrollkeeper. -12.5.13. Packages installing X11 fonts +13.5.13. Packages installing X11 fonts If a package installs font files, you will need to rebuild the fonts database in the directory where they get installed at installation and deinstallation @@ -4197,7 +4339,7 @@ Note that you should not create new directories for fonts; instead use the standard ones to avoid that the user needs to manually configure his X server to find them. -12.5.14. Packages installing GTK2 modules +13.5.14. Packages installing GTK2 modules If a package installs gtk2 immodules or loaders, you need to take some extra steps to get them registered in the GTK2 database properly: @@ -4220,7 +4362,7 @@ steps to get them registered in the GTK2 database properly: 5. Check the PLIST and remove any entries under the libdata/gtk-2.0 directory, as they will be handled automatically. -12.5.15. Packages installing SGML or XML data +13.5.15. Packages installing SGML or XML data If a package installs SGML or XML data files that need to be registered in system-wide catalogs (like DTDs, sub-catalogs, etc.), you need to take some @@ -4246,7 +4388,7 @@ extra steps: (specifically, arguments recognized by the 'add' action). Note that you will normally not use this variable. -12.5.16. Packages installing extensions to the MIME database +13.5.16. Packages installing extensions to the MIME database If a package provides extensions to the MIME database by installing .xml files inside ${PREFIX}/share/mime/packages, you need to take some extra steps to @@ -4267,7 +4409,7 @@ ensure that the database is kept consistent with respect to these new files: 3. Remove any share/mime/* directories from the PLIST. They will be handled by the shared-mime-info package. -12.5.17. Packages using intltool +13.5.17. Packages using intltool If a package uses intltool during its build, include the ../../textproc/ intltool/buildlink3.mk file, which forces it to use the intltool package @@ -4277,7 +4419,7 @@ This tracks intltool's build-time dependencies and uses the latest available version; this way, the package benefits of any bug fixes that may have appeared since it was released. -12.5.18. Packages installing startup scripts +13.5.18. Packages installing startup scripts If a package contains a rc.d script, it won't be copied into the startup directory by default, but you can enable it, by adding the option @@ -4285,7 +4427,7 @@ PKG_RCD_SCRIPTS=YES in /etc/mk.conf. This option will copy the scripts into / etc/rc.d when a package is installed, and it will automatically remove the scripts when the package is deinstalled. -12.6. Feedback to the author +13.6. Feedback to the author If you have found any bugs in the package you make available, if you had to do special steps to make it run under NetBSD or if you enhanced the software in @@ -4296,7 +4438,7 @@ win from your efforts. Support the idea of free software! -Chapter 13. Debugging +Chapter 14. Debugging To check out all the gotchas when building a package, here are the steps that I do in order to get a package working. Please note this is basically the same as @@ -4334,7 +4476,7 @@ what was explained in the previous sections, only with some debugging aids. shouldn't be, especially during the build phase. mkpatches, patchdiff and pkgvi are from the pkgtools/pkgdiff package. - * Look at the Makefile, fix if necessary; see Section 7.1, "Makefile". + * Look at the Makefile, fix if necessary; see Section 8.1, "Makefile". * Generate a PLIST: @@ -4375,19 +4517,19 @@ what was explained in the previous sections, only with some debugging aids. # pkglint - * Submit (or commit, if you have cvs access); see Chapter 14, Submitting and + * Submit (or commit, if you have cvs access); see Chapter 15, Submitting and Committing. -Chapter 14. Submitting and Committing +Chapter 15. Submitting and Committing Table of Contents -14.1. Submitting your packages -14.2. Committing: Importing a package into CVS -14.3. Updating a package to a newer version -14.4. Moving a package in pkgsrc +15.1. Submitting your packages +15.2. Committing: Importing a package into CVS +15.3. Updating a package to a newer version +15.4. Moving a package in pkgsrc -14.1. Submitting your packages +15.1. Submitting your packages You have to separate between binary and "normal" (source) packages here: @@ -4403,7 +4545,7 @@ You have to separate between binary and "normal" (source) packages here: * packages First, check that your package is complete, compiles and runs well; see - Chapter 13, Debugging and the rest of this document. Next, generate an + Chapter 14, Debugging and the rest of this document. Next, generate an uuencoded gzipped tar(1) archive, preferably with all files in a single directory. Finally, send-pr with category "pkg", a synopsis which includes the package name and version number, a short description of your package @@ -4417,7 +4559,7 @@ You have to separate between binary and "normal" (source) packages here: work-in-progress"); see the homepage at http://pkgsrc-wip.sourceforge.net/ for details. -14.2. Committing: Importing a package into CVS +15.2. Committing: Importing a package into CVS This section is only of interest for pkgsrc developers with write access to the pkgsrc repository. Please remember that cvs imports files relative to the @@ -4446,7 +4588,7 @@ there. For new packages, "cvs import" is preferred to "cvs add" because the former gets everything with a single command, and provides a consistent tag. -14.3. Updating a package to a newer version +15.3. Updating a package to a newer version Please always put a concise, appropriate and relevant summary of the changes between old and new versions into the commit log when updating a package. There @@ -4471,7 +4613,7 @@ which pkgsrc is used. Please use your judgement about what should go into pkgsrc, and bear in mind that stability is to be preferred above new and possibly untested features. -14.4. Moving a package in pkgsrc +15.4. Moving a package in pkgsrc 1. Make a copy of the directory somewhere else. @@ -4566,10 +4708,6 @@ contents of these files. After installation it is quite easy to use, just change to the directory of the package you wish to examine and execute pkglint: $ pkglint -OK: checking ./DESCR. -OK: checking Makefile. -OK: checking distinfo. -OK: checking patches/patch-aa. looks fine. Depending on the supplied command line arguments (see pkglint(1)) more verbose @@ -4584,7 +4722,7 @@ Create the directory where the package lives, plus any auxiliary directories: # cd bison # mkdir patches -Create Makefile, DESCR and PLIST (see Chapter 7, Package components - files, +Create Makefile, DESCR and PLIST (see Chapter 8, Package components - files, directories and contents) then continue with fetching the distfile: # make fetch |