| @@ -1,4277 +1,4287 @@ | | | @@ -1,4277 +1,4287 @@ |
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
2 | <html> | | 2 | <html> |
3 | <head> | | 3 | <head> |
4 | <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> | | 4 | <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
5 | <title>The pkgsrc guide</title> | | 5 | <title>The pkgsrc guide</title> |
6 | <link rel="stylesheet" type="text/css" href="/global.css"> | | 6 | <link rel="stylesheet" type="text/css" href="/global.css"> |
7 | <meta name="generator" content="DocBook XSL Stylesheets VX.X.X"> | | 7 | <meta name="generator" content="DocBook XSL Stylesheets VX.X.X"> |
8 | <meta name="description" content="pkgsrc is a centralized package management system for Unix-like operating systems. This guide provides information for users and developers of pkgsrc. It covers installation of binary and source packages, creation of binary and source packages and a high-level overview about the infrastructure."> | | 8 | <meta name="description" content="pkgsrc is a centralized package management system for Unix-like operating systems. This guide provides information for users and developers of pkgsrc. It covers installation of binary and source packages, creation of binary and source packages and a high-level overview about the infrastructure."> |
9 | </head> | | 9 | </head> |
10 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book"> | | 10 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book"> |
11 | <div class="titlepage"> | | 11 | <div class="titlepage"> |
12 | <div> | | 12 | <div> |
13 | <div><h1 class="title"> | | 13 | <div><h1 class="title"> |
14 | <a name="the-pkgsrc-guide"></a>The pkgsrc guide</h1></div> | | 14 | <a name="the-pkgsrc-guide"></a>The pkgsrc guide</h1></div> |
15 | <div><h2 class="subtitle">Documentation on the NetBSD packages system</h2></div> | | 15 | <div><h2 class="subtitle">Documentation on the NetBSD packages system</h2></div> |
16 | <div><div class="authorgroup"> | | 16 | <div><div class="authorgroup"> |
17 | <div class="author"> | | 17 | <div class="author"> |
18 | <h3 class="author"> | | 18 | <h3 class="author"> |
19 | <span class="firstname">Alistair</span> <span class="surname">Crooks</span> | | 19 | <span class="firstname">Alistair</span> <span class="surname">Crooks</span> |
20 | </h3> | | 20 | </h3> |
21 | <div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:agc@NetBSD.org">agc@NetBSD.org</a>></code></p></div></div> | | 21 | <div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:agc@NetBSD.org">agc@NetBSD.org</a>></code></p></div></div> |
22 | </div> | | 22 | </div> |
23 | <div class="author"> | | 23 | <div class="author"> |
24 | <h3 class="author"> | | 24 | <h3 class="author"> |
25 | <span class="firstname">Hubert</span> <span class="surname">Feyrer</span> | | 25 | <span class="firstname">Hubert</span> <span class="surname">Feyrer</span> |
26 | </h3> | | 26 | </h3> |
27 | <div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:hubertf@NetBSD.org">hubertf@NetBSD.org</a>></code></p></div></div> | | 27 | <div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:hubertf@NetBSD.org">hubertf@NetBSD.org</a>></code></p></div></div> |
28 | </div> | | 28 | </div> |
29 | <h3 class="corpauthor"> | | 29 | <h3 class="corpauthor"> |
30 | The pkgsrc Developers | | 30 | The pkgsrc Developers |
31 | </h3> | | 31 | </h3> |
32 | </div></div> | | 32 | </div></div> |
33 | <div><p class="copyright">Copyright © 1994-2015 The NetBSD Foundation, Inc</p></div> | | 33 | <div><p class="copyright">Copyright © 1994-2014 The NetBSD Foundation, Inc</p></div> |
34 | <div><p class="pubdate">$NetBSD: pkgsrc.xml,v 1.28 2015/01/01 05:19:02 jnemeth Exp $</p></div> | | 34 | <div><p class="pubdate">$NetBSD: pkgsrc.xml,v 1.27 2014/09/19 04:53:09 jnemeth Exp $</p></div> |
35 | <div><div class="abstract"> | | 35 | <div><div class="abstract"> |
36 | <p class="title"><b>Abstract</b></p> | | 36 | <p class="title"><b>Abstract</b></p> |
37 | <p>pkgsrc is a centralized package management system for | | 37 | <p>pkgsrc is a centralized package management system for |
38 | Unix-like operating systems. This guide provides information for | | 38 | Unix-like operating systems. This guide provides information for |
39 | users and developers of pkgsrc. It covers installation of binary | | 39 | users and developers of pkgsrc. It covers installation of binary |
40 | and source packages, creation of binary and source packages and | | 40 | and source packages, creation of binary and source packages and |
41 | a high-level overview about the infrastructure.</p> | | 41 | a high-level overview about the infrastructure.</p> |
42 | </div></div> | | 42 | </div></div> |
43 | </div> | | 43 | </div> |
44 | <hr> | | 44 | <hr> |
45 | </div> | | 45 | </div> |
46 | <div class="toc"> | | 46 | <div class="toc"> |
47 | <p><b>Table of Contents</b></p> | | 47 | <p><b>Table of Contents</b></p> |
48 | <dl> | | 48 | <dl> |
49 | <dt><span class="chapter"><a href="#introduction">1. What is pkgsrc?</a></span></dt> | | 49 | <dt><span class="chapter"><a href="#introduction">1. What is pkgsrc?</a></span></dt> |
50 | <dd><dl> | | 50 | <dd><dl> |
51 | <dt><span class="sect1"><a href="#introduction-section">1.1. Introduction</a></span></dt> | | 51 | <dt><span class="sect1"><a href="#introduction-section">1.1. Introduction</a></span></dt> |
52 | <dd><dl> | | 52 | <dd><dl> |
53 | <dt><span class="sect2"><a href="#why-pkgsrc">1.1.1. Why pkgsrc?</a></span></dt> | | 53 | <dt><span class="sect2"><a href="#why-pkgsrc">1.1.1. Why pkgsrc?</a></span></dt> |
54 | <dt><span class="sect2"><a href="#intro.platforms">1.1.2. Supported platforms</a></span></dt> | | 54 | <dt><span class="sect2"><a href="#intro.platforms">1.1.2. Supported platforms</a></span></dt> |
55 | </dl></dd> | | 55 | </dl></dd> |
56 | <dt><span class="sect1"><a href="#overview">1.2. Overview</a></span></dt> | | 56 | <dt><span class="sect1"><a href="#overview">1.2. Overview</a></span></dt> |
57 | <dt><span class="sect1"><a href="#terminology">1.3. Terminology</a></span></dt> | | 57 | <dt><span class="sect1"><a href="#terminology">1.3. Terminology</a></span></dt> |
58 | <dd><dl><dt><span class="sect2"><a href="#term.roles">1.3.1. Roles involved in pkgsrc</a></span></dt></dl></dd> | | 58 | <dd><dl><dt><span class="sect2"><a href="#term.roles">1.3.1. Roles involved in pkgsrc</a></span></dt></dl></dd> |
59 | <dt><span class="sect1"><a href="#typography">1.4. Typography</a></span></dt> | | 59 | <dt><span class="sect1"><a href="#typography">1.4. Typography</a></span></dt> |
60 | </dl></dd> | | 60 | </dl></dd> |
61 | <dt><span class="part"><a href="#users-guide">I. The pkgsrc user's guide</a></span></dt> | | 61 | <dt><span class="part"><a href="#users-guide">I. The pkgsrc user's guide</a></span></dt> |
62 | <dd><dl> | | 62 | <dd><dl> |
63 | <dt><span class="chapter"><a href="#getting">2. Where to get pkgsrc and how to keep it up-to-date</a></span></dt> | | 63 | <dt><span class="chapter"><a href="#getting">2. Where to get pkgsrc and how to keep it up-to-date</a></span></dt> |
64 | <dd><dl> | | 64 | <dd><dl> |
65 | <dt><span class="sect1"><a href="#getting-first">2.1. Getting pkgsrc for the first time</a></span></dt> | | 65 | <dt><span class="sect1"><a href="#getting-first">2.1. Getting pkgsrc for the first time</a></span></dt> |
66 | <dd><dl> | | 66 | <dd><dl> |
67 | <dt><span class="sect2"><a href="#getting-via-tar">2.1.1. As tar archive</a></span></dt> | | 67 | <dt><span class="sect2"><a href="#getting-via-tar">2.1.1. As tar archive</a></span></dt> |
68 | <dt><span class="sect2"><a href="#getting-via-cvs">2.1.2. Via anonymous CVS</a></span></dt> | | 68 | <dt><span class="sect2"><a href="#getting-via-cvs">2.1.2. Via anonymous CVS</a></span></dt> |
69 | </dl></dd> | | 69 | </dl></dd> |
70 | <dt><span class="sect1"><a href="#uptodate">2.2. Keeping pkgsrc up-to-date</a></span></dt> | | 70 | <dt><span class="sect1"><a href="#uptodate">2.2. Keeping pkgsrc up-to-date</a></span></dt> |
71 | <dd><dl> | | 71 | <dd><dl> |
72 | <dt><span class="sect2"><a href="#uptodate-tar">2.2.1. Via tar files</a></span></dt> | | 72 | <dt><span class="sect2"><a href="#uptodate-tar">2.2.1. Via tar files</a></span></dt> |
73 | <dt><span class="sect2"><a href="#uptodate-cvs">2.2.2. Via CVS</a></span></dt> | | 73 | <dt><span class="sect2"><a href="#uptodate-cvs">2.2.2. Via CVS</a></span></dt> |
74 | </dl></dd> | | 74 | </dl></dd> |
75 | </dl></dd> | | 75 | </dl></dd> |
76 | <dt><span class="chapter"><a href="#platforms">3. Using pkgsrc on systems other than NetBSD</a></span></dt> | | 76 | <dt><span class="chapter"><a href="#platforms">3. Using pkgsrc on systems other than NetBSD</a></span></dt> |
77 | <dd><dl> | | 77 | <dd><dl> |
78 | <dt><span class="sect1"><a href="#binarydist">3.1. Binary distribution</a></span></dt> | | 78 | <dt><span class="sect1"><a href="#binarydist">3.1. Binary distribution</a></span></dt> |
79 | <dt><span class="sect1"><a href="#bootstrapping-pkgsrc">3.2. Bootstrapping pkgsrc</a></span></dt> | | 79 | <dt><span class="sect1"><a href="#bootstrapping-pkgsrc">3.2. Bootstrapping pkgsrc</a></span></dt> |
80 | <dt><span class="sect1"><a href="#platform-specific-notes">3.3. Platform-specific notes</a></span></dt> | | 80 | <dt><span class="sect1"><a href="#platform-specific-notes">3.3. Platform-specific notes</a></span></dt> |
81 | <dd><dl> | | 81 | <dd><dl> |
82 | <dt><span class="sect2"><a href="#cygwin">3.3.1. Cygwin</a></span></dt> | | 82 | <dt><span class="sect2"><a href="#cygwin">3.3.1. Cygwin</a></span></dt> |
83 | <dt><span class="sect2"><a href="#darwin">3.3.2. Darwin (Mac OS X)</a></span></dt> | | 83 | <dt><span class="sect2"><a href="#darwin">3.3.2. Darwin (Mac OS X)</a></span></dt> |
84 | <dt><span class="sect2"><a href="#freebsd">3.3.3. FreeBSD</a></span></dt> | | 84 | <dt><span class="sect2"><a href="#freebsd">3.3.3. FreeBSD</a></span></dt> |
85 | <dt><span class="sect2"><a href="#gnukfreebsd">3.3.4. GNU/kFreeBSD</a></span></dt> | | 85 | <dt><span class="sect2"><a href="#gnukfreebsd">3.3.4. GNU/kFreeBSD</a></span></dt> |
86 | <dt><span class="sect2"><a href="#interix">3.3.5. Interix</a></span></dt> | | 86 | <dt><span class="sect2"><a href="#interix">3.3.5. Interix</a></span></dt> |
87 | <dt><span class="sect2"><a href="#irix">3.3.6. IRIX</a></span></dt> | | 87 | <dt><span class="sect2"><a href="#irix">3.3.6. IRIX</a></span></dt> |
88 | <dt><span class="sect2"><a href="#linux">3.3.7. Linux</a></span></dt> | | 88 | <dt><span class="sect2"><a href="#linux">3.3.7. Linux</a></span></dt> |
89 | <dt><span class="sect2"><a href="#mirbsd">3.3.8. MirBSD</a></span></dt> | | 89 | <dt><span class="sect2"><a href="#mirbsd">3.3.8. MirBSD</a></span></dt> |
90 | <dt><span class="sect2"><a href="#openbsd">3.3.9. OpenBSD</a></span></dt> | | 90 | <dt><span class="sect2"><a href="#openbsd">3.3.9. OpenBSD</a></span></dt> |
91 | <dt><span class="sect2"><a href="#solaris">3.3.10. Solaris</a></span></dt> | | 91 | <dt><span class="sect2"><a href="#solaris">3.3.10. Solaris</a></span></dt> |
92 | </dl></dd> | | 92 | </dl></dd> |
93 | </dl></dd> | | 93 | </dl></dd> |
94 | <dt><span class="chapter"><a href="#using">4. Using pkgsrc</a></span></dt> | | 94 | <dt><span class="chapter"><a href="#using">4. Using pkgsrc</a></span></dt> |
95 | <dd><dl> | | 95 | <dd><dl> |
96 | <dt><span class="sect1"><a href="#using-pkg">4.1. Using binary packages</a></span></dt> | | 96 | <dt><span class="sect1"><a href="#using-pkg">4.1. Using binary packages</a></span></dt> |
97 | <dd><dl> | | 97 | <dd><dl> |
98 | <dt><span class="sect2"><a href="#finding-binary-packages">4.1.1. Finding binary packages</a></span></dt> | | 98 | <dt><span class="sect2"><a href="#finding-binary-packages">4.1.1. Finding binary packages</a></span></dt> |
99 | <dt><span class="sect2"><a href="#installing-binary-packages">4.1.2. Installing binary packages</a></span></dt> | | 99 | <dt><span class="sect2"><a href="#installing-binary-packages">4.1.2. Installing binary packages</a></span></dt> |
100 | <dt><span class="sect2"><a href="#using.pkg_delete">4.1.3. Deinstalling packages</a></span></dt> | | 100 | <dt><span class="sect2"><a href="#using.pkg_delete">4.1.3. Deinstalling packages</a></span></dt> |
101 | <dt><span class="sect2"><a href="#using.pkg_info">4.1.4. Getting information about installed packages</a></span></dt> | | 101 | <dt><span class="sect2"><a href="#using.pkg_info">4.1.4. Getting information about installed packages</a></span></dt> |
102 | <dt><span class="sect2"><a href="#vulnerabilities">4.1.5. Checking for security vulnerabilities in installed packages</a></span></dt> | | 102 | <dt><span class="sect2"><a href="#vulnerabilities">4.1.5. Checking for security vulnerabilities in installed packages</a></span></dt> |
103 | <dt><span class="sect2"><a href="#pkg_versions">4.1.6. Finding if newer versions of your installed packages are in pkgsrc</a></span></dt> | | 103 | <dt><span class="sect2"><a href="#pkg_versions">4.1.6. Finding if newer versions of your installed packages are in pkgsrc</a></span></dt> |
104 | <dt><span class="sect2"><a href="#using.pkg_admin">4.1.7. Other administrative functions</a></span></dt> | | 104 | <dt><span class="sect2"><a href="#using.pkg_admin">4.1.7. Other administrative functions</a></span></dt> |
105 | <dt><span class="sect2"><a href="#a-word-of-warning">4.1.8. A word of warning</a></span></dt> | | 105 | <dt><span class="sect2"><a href="#a-word-of-warning">4.1.8. A word of warning</a></span></dt> |
106 | </dl></dd> | | 106 | </dl></dd> |
107 | <dt><span class="sect1"><a href="#building-packages-from-source">4.2. Building packages from source</a></span></dt> | | 107 | <dt><span class="sect1"><a href="#building-packages-from-source">4.2. Building packages from source</a></span></dt> |
108 | <dd><dl> | | 108 | <dd><dl> |
109 | <dt><span class="sect2"><a href="#requirements">4.2.1. Requirements</a></span></dt> | | 109 | <dt><span class="sect2"><a href="#requirements">4.2.1. Requirements</a></span></dt> |
110 | <dt><span class="sect2"><a href="#fetching-distfiles">4.2.2. Fetching distfiles</a></span></dt> | | 110 | <dt><span class="sect2"><a href="#fetching-distfiles">4.2.2. Fetching distfiles</a></span></dt> |
111 | <dt><span class="sect2"><a href="#how-to-build-and-install">4.2.3. How to build and install</a></span></dt> | | 111 | <dt><span class="sect2"><a href="#how-to-build-and-install">4.2.3. How to build and install</a></span></dt> |
112 | </dl></dd> | | 112 | </dl></dd> |
113 | </dl></dd> | | 113 | </dl></dd> |
114 | <dt><span class="chapter"><a href="#configuring">5. Configuring pkgsrc</a></span></dt> | | 114 | <dt><span class="chapter"><a href="#configuring">5. Configuring pkgsrc</a></span></dt> |
115 | <dd><dl> | | 115 | <dd><dl> |
116 | <dt><span class="sect1"><a href="#general-configuration">5.1. General configuration</a></span></dt> | | 116 | <dt><span class="sect1"><a href="#general-configuration">5.1. General configuration</a></span></dt> |
117 | <dt><span class="sect1"><a href="#variables-affecting-build">5.2. Variables affecting the build process</a></span></dt> | | 117 | <dt><span class="sect1"><a href="#variables-affecting-build">5.2. Variables affecting the build process</a></span></dt> |
118 | <dt><span class="sect1"><a href="#variables-affecting-installation">5.3. Variables affecting the installation process</a></span></dt> | | 118 | <dt><span class="sect1"><a href="#variables-affecting-installation">5.3. Variables affecting the installation process</a></span></dt> |
119 | <dt><span class="sect1"><a href="#conf.compiler">5.4. Selecting and configuring the compiler</a></span></dt> | | 119 | <dt><span class="sect1"><a href="#conf.compiler">5.4. Selecting and configuring the compiler</a></span></dt> |
120 | <dd><dl> | | 120 | <dd><dl> |
121 | <dt><span class="sect2"><a href="#selecting-the-compiler">5.4.1. Selecting the compiler</a></span></dt> | | 121 | <dt><span class="sect2"><a href="#selecting-the-compiler">5.4.1. Selecting the compiler</a></span></dt> |
122 | <dt><span class="sect2"><a href="#conf.cflags">5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</a></span></dt> | | 122 | <dt><span class="sect2"><a href="#conf.cflags">5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</a></span></dt> |
123 | <dt><span class="sect2"><a href="#conf.ldflags">5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</a></span></dt> | | 123 | <dt><span class="sect2"><a href="#conf.ldflags">5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</a></span></dt> |
124 | </dl></dd> | | 124 | </dl></dd> |
125 | <dt><span class="sect1"><a href="#developer-advanced-settings">5.5. Developer/advanced settings</a></span></dt> | | 125 | <dt><span class="sect1"><a href="#developer-advanced-settings">5.5. Developer/advanced settings</a></span></dt> |
126 | <dt><span class="sect1"><a href="#selecting-build-options">5.6. Selecting Build Options</a></span></dt> | | 126 | <dt><span class="sect1"><a href="#selecting-build-options">5.6. Selecting Build Options</a></span></dt> |
127 | </dl></dd> | | 127 | </dl></dd> |
128 | <dt><span class="chapter"><a href="#binary">6. Creating binary packages</a></span></dt> | | 128 | <dt><span class="chapter"><a href="#binary">6. Creating binary packages</a></span></dt> |
129 | <dd><dl> | | 129 | <dd><dl> |
130 | <dt><span class="sect1"><a href="#building-a-single-binary-package">6.1. Building a single binary package</a></span></dt> | | 130 | <dt><span class="sect1"><a href="#building-a-single-binary-package">6.1. Building a single binary package</a></span></dt> |
131 | <dt><span class="sect1"><a href="#settings-for-creationg-of-binary-packages">6.2. Settings for creation of binary packages</a></span></dt> | | 131 | <dt><span class="sect1"><a href="#settings-for-creationg-of-binary-packages">6.2. Settings for creation of binary packages</a></span></dt> |
132 | </dl></dd> | | 132 | </dl></dd> |
133 | <dt><span class="chapter"><a href="#bulk">7. Creating binary packages for everything in pkgsrc (bulk | | 133 | <dt><span class="chapter"><a href="#bulk">7. Creating binary packages for everything in pkgsrc (bulk |
134 | builds)</a></span></dt> | | 134 | builds)</a></span></dt> |
135 | <dd><dl> | | 135 | <dd><dl> |
136 | <dt><span class="sect1"><a href="#bulk.pre">7.1. Preparations</a></span></dt> | | 136 | <dt><span class="sect1"><a href="#bulk.pre">7.1. Preparations</a></span></dt> |
137 | <dt><span class="sect1"><a href="#bulk.pbulk">7.2. Running a pbulk-style bulk build</a></span></dt> | | 137 | <dt><span class="sect1"><a href="#bulk.pbulk">7.2. Running a pbulk-style bulk build</a></span></dt> |
138 | <dd><dl><dt><span class="sect2"><a href="#bulk.pbulk.conf">7.2.1. Configuration</a></span></dt></dl></dd> | | 138 | <dd><dl><dt><span class="sect2"><a href="#bulk.pbulk.conf">7.2.1. Configuration</a></span></dt></dl></dd> |
139 | <dt><span class="sect1"><a href="#bulk.req">7.3. Requirements of a full bulk build</a></span></dt> | | 139 | <dt><span class="sect1"><a href="#bulk.req">7.3. Requirements of a full bulk build</a></span></dt> |
140 | <dt><span class="sect1"><a href="#creating-cdroms">7.4. Creating a multiple CD-ROM packages collection</a></span></dt> | | 140 | <dt><span class="sect1"><a href="#creating-cdroms">7.4. Creating a multiple CD-ROM packages collection</a></span></dt> |
141 | <dd><dl><dt><span class="sect2"><a href="#cdpack-example">7.4.1. Example of cdpack</a></span></dt></dl></dd> | | 141 | <dd><dl><dt><span class="sect2"><a href="#cdpack-example">7.4.1. Example of cdpack</a></span></dt></dl></dd> |
142 | </dl></dd> | | 142 | </dl></dd> |
143 | <dt><span class="chapter"><a href="#files">8. Directory layout of the installed files</a></span></dt> | | 143 | <dt><span class="chapter"><a href="#files">8. Directory layout of the installed files</a></span></dt> |
144 | <dd><dl> | | 144 | <dd><dl> |
145 | <dt><span class="sect1"><a href="#files.localbase">8.1. File system layout in <code class="literal">${LOCALBASE}</code></a></span></dt> | | 145 | <dt><span class="sect1"><a href="#files.localbase">8.1. File system layout in <code class="literal">${LOCALBASE}</code></a></span></dt> |
146 | <dt><span class="sect1"><a href="#files.varbase">8.2. File system layout in <code class="literal">${VARBASE}</code></a></span></dt> | | 146 | <dt><span class="sect1"><a href="#files.varbase">8.2. File system layout in <code class="literal">${VARBASE}</code></a></span></dt> |
147 | </dl></dd> | | 147 | </dl></dd> |
148 | <dt><span class="chapter"><a href="#faq">9. Frequently Asked Questions</a></span></dt> | | 148 | <dt><span class="chapter"><a href="#faq">9. Frequently Asked Questions</a></span></dt> |
149 | <dd><dl> | | 149 | <dd><dl> |
150 | <dt><span class="sect1"><a href="#mailing-list-pointers">9.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> | | 150 | <dt><span class="sect1"><a href="#mailing-list-pointers">9.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> |
151 | <dt><span class="sect1"><a href="#faq-pkgtools">9.2. Utilities for package management (pkgtools)</a></span></dt> | | 151 | <dt><span class="sect1"><a href="#pkgviews-docs">9.2. Where's the pkgviews documentation?</a></span></dt> |
152 | <dt><span class="sect1"><a href="#non-root-pkgsrc">9.3. How to use pkgsrc as non-root</a></span></dt> | | 152 | <dt><span class="sect1"><a href="#faq-pkgtools">9.3. Utilities for package management (pkgtools)</a></span></dt> |
153 | <dt><span class="sect1"><a href="#resume-transfers">9.4. How to resume transfers when fetching distfiles?</a></span></dt> | | 153 | <dt><span class="sect1"><a href="#non-root-pkgsrc">9.4. How to use pkgsrc as non-root</a></span></dt> |
154 | <dt><span class="sect1"><a href="#x.org-from-pkgsrc">9.5. How can I install/use modular X.org from pkgsrc?</a></span></dt> | | 154 | <dt><span class="sect1"><a href="#resume-transfers">9.5. How to resume transfers when fetching distfiles?</a></span></dt> |
155 | <dt><span class="sect1"><a href="#fetch-behind-firewall">9.6. How to fetch files from behind a firewall</a></span></dt> | | 155 | <dt><span class="sect1"><a href="#x.org-from-pkgsrc">9.6. How can I install/use modular X.org from pkgsrc?</a></span></dt> |
156 | <dt><span class="sect1"><a href="#fetch-https">9.7. How to fetch files from HTTPS sites</a></span></dt> | | 156 | <dt><span class="sect1"><a href="#fetch-behind-firewall">9.7. How to fetch files from behind a firewall</a></span></dt> |
157 | <dt><span class="sect1"><a href="#passive-ftp">9.8. How do I tell <span class="command"><strong>make fetch</strong></span> to do passive FTP?</a></span></dt> | | 157 | <dt><span class="sect1"><a href="#fetch-https">9.8. How to fetch files from HTTPS sites</a></span></dt> |
158 | <dt><span class="sect1"><a href="#fetching-all-distfiles">9.9. How to fetch all distfiles at once</a></span></dt> | | 158 | <dt><span class="sect1"><a href="#passive-ftp">9.9. How do I tell <span class="command"><strong>make fetch</strong></span> to do passive FTP?</a></span></dt> |
159 | <dt><span class="sect1"><a href="#tmac.andoc-missing">9.10. What does <span class="quote">“<span class="quote">Don't know how to make | | 159 | <dt><span class="sect1"><a href="#fetching-all-distfiles">9.10. How to fetch all distfiles at once</a></span></dt> |
| | | 160 | <dt><span class="sect1"><a href="#tmac.andoc-missing">9.11. What does <span class="quote">“<span class="quote">Don't know how to make |
160 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</a></span></dt> | | 161 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</a></span></dt> |
161 | <dt><span class="sect1"><a href="#bsd.own.mk-missing">9.11. What does <span class="quote">“<span class="quote">Could not find bsd.own.mk</span>”</span> mean?</a></span></dt> | | 162 | <dt><span class="sect1"><a href="#bsd.own.mk-missing">9.12. What does <span class="quote">“<span class="quote">Could not find bsd.own.mk</span>”</span> mean?</a></span></dt> |
162 | <dt><span class="sect1"><a href="#using-sudo-with-pkgsrc">9.12. Using 'sudo' with pkgsrc</a></span></dt> | | 163 | <dt><span class="sect1"><a href="#using-sudo-with-pkgsrc">9.13. Using 'sudo' with pkgsrc</a></span></dt> |
163 | <dt><span class="sect1"><a href="#faq.conf">9.13. How do I change the location of configuration files?</a></span></dt> | | 164 | <dt><span class="sect1"><a href="#faq.conf">9.14. How do I change the location of configuration files?</a></span></dt> |
164 | <dt><span class="sect1"><a href="#audit-packages">9.14. Automated security checks</a></span></dt> | | 165 | <dt><span class="sect1"><a href="#audit-packages">9.15. Automated security checks</a></span></dt> |
165 | <dt><span class="sect1"><a href="#ufaq-cflags">9.15. Why do some packages ignore my <code class="varname">CFLAGS</code>?</a></span></dt> | | 166 | <dt><span class="sect1"><a href="#ufaq-cflags">9.16. Why do some packages ignore my <code class="varname">CFLAGS</code>?</a></span></dt> |
166 | <dt><span class="sect1"><a href="#ufaq-fail">9.16. A package does not build. What shall I do?</a></span></dt> | | 167 | <dt><span class="sect1"><a href="#ufaq-fail">9.17. A package does not build. What shall I do?</a></span></dt> |
167 | <dt><span class="sect1"><a href="#faq.rcs-conflicts">9.17. What does <span class="quote">“<span class="quote">Makefile appears to contain unresolved cvs/rcs/??? merge conflicts</span>”</span> mean?</a></span></dt> | | 168 | <dt><span class="sect1"><a href="#faq.rcs-conflicts">9.18. What does <span class="quote">“<span class="quote">Makefile appears to contain unresolved cvs/rcs/??? merge conflicts</span>”</span> mean?</a></span></dt> |
168 | </dl></dd> | | 169 | </dl></dd> |
169 | </dl></dd> | | 170 | </dl></dd> |
170 | <dt><span class="part"><a href="#developers-guide">II. The pkgsrc developer's guide</a></span></dt> | | 171 | <dt><span class="part"><a href="#developers-guide">II. The pkgsrc developer's guide</a></span></dt> |
171 | <dd><dl> | | 172 | <dd><dl> |
172 | <dt><span class="chapter"><a href="#creating">10. Creating a new pkgsrc package from scratch</a></span></dt> | | 173 | <dt><span class="chapter"><a href="#creating">10. Creating a new pkgsrc package from scratch</a></span></dt> |
173 | <dd><dl> | | 174 | <dd><dl> |
174 | <dt><span class="sect1"><a href="#creating.common">10.1. Common types of packages</a></span></dt> | | 175 | <dt><span class="sect1"><a href="#creating.common">10.1. Common types of packages</a></span></dt> |
175 | <dd><dl> | | 176 | <dd><dl> |
176 | <dt><span class="sect2"><a href="#creating.perl-module">10.1.1. Perl modules</a></span></dt> | | 177 | <dt><span class="sect2"><a href="#creating.perl-module">10.1.1. Perl modules</a></span></dt> |
177 | <dt><span class="sect2"><a href="#creating.kde-app">10.1.2. KDE3 applications</a></span></dt> | | 178 | <dt><span class="sect2"><a href="#creating.kde-app">10.1.2. KDE3 applications</a></span></dt> |
178 | <dt><span class="sect2"><a href="#creating.python-module">10.1.3. Python modules and programs</a></span></dt> | | 179 | <dt><span class="sect2"><a href="#creating.python-module">10.1.3. Python modules and programs</a></span></dt> |
179 | </dl></dd> | | 180 | </dl></dd> |
180 | <dt><span class="sect1"><a href="#creating.examples">10.2. Examples</a></span></dt> | | 181 | <dt><span class="sect1"><a href="#creating.examples">10.2. Examples</a></span></dt> |
181 | <dd><dl><dt><span class="sect2"><a href="#creating.nvu">10.2.1. How the www/nvu package came into pkgsrc</a></span></dt></dl></dd> | | 182 | <dd><dl><dt><span class="sect2"><a href="#creating.nvu">10.2.1. How the www/nvu package came into pkgsrc</a></span></dt></dl></dd> |
182 | </dl></dd> | | 183 | </dl></dd> |
183 | <dt><span class="chapter"><a href="#components">11. Package components - files, directories and contents</a></span></dt> | | 184 | <dt><span class="chapter"><a href="#components">11. Package components - files, directories and contents</a></span></dt> |
184 | <dd><dl> | | 185 | <dd><dl> |
185 | <dt><span class="sect1"><a href="#components.Makefile">11.1. <code class="filename">Makefile</code></a></span></dt> | | 186 | <dt><span class="sect1"><a href="#components.Makefile">11.1. <code class="filename">Makefile</code></a></span></dt> |
186 | <dt><span class="sect1"><a href="#components.distinfo">11.2. <code class="filename">distinfo</code></a></span></dt> | | 187 | <dt><span class="sect1"><a href="#components.distinfo">11.2. <code class="filename">distinfo</code></a></span></dt> |
187 | <dt><span class="sect1"><a href="#components.patches">11.3. patches/*</a></span></dt> | | 188 | <dt><span class="sect1"><a href="#components.patches">11.3. patches/*</a></span></dt> |
188 | <dd><dl> | | 189 | <dd><dl> |
189 | <dt><span class="sect2"><a href="#components.patch.structure">11.3.1. Structure of a single patch file</a></span></dt> | | 190 | <dt><span class="sect2"><a href="#components.patch.structure">11.3.1. Structure of a single patch file</a></span></dt> |
190 | <dt><span class="sect2"><a href="#components.patches.caveats">11.3.2. Creating patch files</a></span></dt> | | 191 | <dt><span class="sect2"><a href="#components.patches.caveats">11.3.2. Creating patch files</a></span></dt> |
191 | <dt><span class="sect2"><a href="#components.patches.sources">11.3.3. Sources where the patch files come from</a></span></dt> | | 192 | <dt><span class="sect2"><a href="#components.patches.sources">11.3.3. Sources where the patch files come from</a></span></dt> |
192 | <dt><span class="sect2"><a href="#components.patches.guidelines">11.3.4. Patching guidelines</a></span></dt> | | 193 | <dt><span class="sect2"><a href="#components.patches.guidelines">11.3.4. Patching guidelines</a></span></dt> |
193 | <dt><span class="sect2"><a href="#components.patches.feedback">11.3.5. Feedback to the author</a></span></dt> | | 194 | <dt><span class="sect2"><a href="#components.patches.feedback">11.3.5. Feedback to the author</a></span></dt> |
194 | </dl></dd> | | 195 | </dl></dd> |
195 | <dt><span class="sect1"><a href="#other-mandatory-files">11.4. Other mandatory files</a></span></dt> | | 196 | <dt><span class="sect1"><a href="#other-mandatory-files">11.4. Other mandatory files</a></span></dt> |
196 | <dt><span class="sect1"><a href="#components.optional">11.5. Optional files</a></span></dt> | | 197 | <dt><span class="sect1"><a href="#components.optional">11.5. Optional files</a></span></dt> |
197 | <dd><dl> | | 198 | <dd><dl> |
198 | <dt><span class="sect2"><a href="#components.optional.bin">11.5.1. Files affecting the binary package</a></span></dt> | | 199 | <dt><span class="sect2"><a href="#components.optional.bin">11.5.1. Files affecting the binary package</a></span></dt> |
199 | <dt><span class="sect2"><a href="#components.optional.build">11.5.2. Files affecting the build process</a></span></dt> | | 200 | <dt><span class="sect2"><a href="#components.optional.build">11.5.2. Files affecting the build process</a></span></dt> |
200 | <dt><span class="sect2"><a href="#components.optional.none">11.5.3. Files affecting nothing at all</a></span></dt> | | 201 | <dt><span class="sect2"><a href="#components.optional.none">11.5.3. Files affecting nothing at all</a></span></dt> |
201 | </dl></dd> | | 202 | </dl></dd> |
202 | <dt><span class="sect1"><a href="#work-dir">11.6. <code class="filename">work*</code></a></span></dt> | | 203 | <dt><span class="sect1"><a href="#work-dir">11.6. <code class="filename">work*</code></a></span></dt> |
203 | <dt><span class="sect1"><a href="#files-dir">11.7. <code class="filename">files/*</code></a></span></dt> | | 204 | <dt><span class="sect1"><a href="#files-dir">11.7. <code class="filename">files/*</code></a></span></dt> |
204 | </dl></dd> | | 205 | </dl></dd> |
205 | <dt><span class="chapter"><a href="#makefile">12. Programming in <code class="filename">Makefile</code>s</a></span></dt> | | 206 | <dt><span class="chapter"><a href="#makefile">12. Programming in <code class="filename">Makefile</code>s</a></span></dt> |
206 | <dd><dl> | | 207 | <dd><dl> |
207 | <dt><span class="sect1"><a href="#makefile.style">12.1. Caveats</a></span></dt> | | 208 | <dt><span class="sect1"><a href="#makefile.style">12.1. Caveats</a></span></dt> |
208 | <dt><span class="sect1"><a href="#makefile.variables">12.2. <code class="filename">Makefile</code> variables</a></span></dt> | | 209 | <dt><span class="sect1"><a href="#makefile.variables">12.2. <code class="filename">Makefile</code> variables</a></span></dt> |
209 | <dd><dl><dt><span class="sect2"><a href="#makefile.variables.names">12.2.1. Naming conventions</a></span></dt></dl></dd> | | 210 | <dd><dl><dt><span class="sect2"><a href="#makefile.variables.names">12.2.1. Naming conventions</a></span></dt></dl></dd> |
210 | <dt><span class="sect1"><a href="#makefile.code">12.3. Code snippets</a></span></dt> | | 211 | <dt><span class="sect1"><a href="#makefile.code">12.3. Code snippets</a></span></dt> |
211 | <dd><dl> | | 212 | <dd><dl> |
212 | <dt><span class="sect2"><a href="#adding-to-list">12.3.1. Adding things to a list</a></span></dt> | | 213 | <dt><span class="sect2"><a href="#adding-to-list">12.3.1. Adding things to a list</a></span></dt> |
213 | <dt><span class="sect2"><a href="#converting-internal-to-external">12.3.2. Converting an internal list into an external list</a></span></dt> | | 214 | <dt><span class="sect2"><a href="#converting-internal-to-external">12.3.2. Converting an internal list into an external list</a></span></dt> |
214 | <dt><span class="sect2"><a href="#passing-variable-to-shell">12.3.3. Passing variables to a shell command</a></span></dt> | | 215 | <dt><span class="sect2"><a href="#passing-variable-to-shell">12.3.3. Passing variables to a shell command</a></span></dt> |
215 | <dt><span class="sect2"><a href="#quoting-guideline">12.3.4. Quoting guideline</a></span></dt> | | 216 | <dt><span class="sect2"><a href="#quoting-guideline">12.3.4. Quoting guideline</a></span></dt> |
216 | <dt><span class="sect2"><a href="#bsd-make-bug-workaround">12.3.5. Workaround for a bug in BSD Make</a></span></dt> | | 217 | <dt><span class="sect2"><a href="#bsd-make-bug-workaround">12.3.5. Workaround for a bug in BSD Make</a></span></dt> |
217 | </dl></dd> | | 218 | </dl></dd> |
218 | </dl></dd> | | 219 | </dl></dd> |
219 | <dt><span class="chapter"><a href="#plist">13. PLIST issues</a></span></dt> | | 220 | <dt><span class="chapter"><a href="#plist">13. PLIST issues</a></span></dt> |
220 | <dd><dl> | | 221 | <dd><dl> |
221 | <dt><span class="sect1"><a href="#rcs-id">13.1. RCS ID</a></span></dt> | | 222 | <dt><span class="sect1"><a href="#rcs-id">13.1. RCS ID</a></span></dt> |
222 | <dt><span class="sect1"><a href="#automatic-plist-generation">13.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> | | 223 | <dt><span class="sect1"><a href="#automatic-plist-generation">13.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> |
223 | <dt><span class="sect1"><a href="#print-PLIST">13.3. Tweaking output of <span class="command"><strong>make print-PLIST</strong></span></a></span></dt> | | 224 | <dt><span class="sect1"><a href="#print-PLIST">13.3. Tweaking output of <span class="command"><strong>make print-PLIST</strong></span></a></span></dt> |
224 | <dt><span class="sect1"><a href="#plist.misc">13.4. Variable substitution in PLIST</a></span></dt> | | 225 | <dt><span class="sect1"><a href="#plist.misc">13.4. Variable substitution in PLIST</a></span></dt> |
225 | <dt><span class="sect1"><a href="#manpage-compression">13.5. Man page compression</a></span></dt> | | 226 | <dt><span class="sect1"><a href="#manpage-compression">13.5. Man page compression</a></span></dt> |
226 | <dt><span class="sect1"><a href="#using-PLIST_SRC">13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code></a></span></dt> | | 227 | <dt><span class="sect1"><a href="#using-PLIST_SRC">13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code></a></span></dt> |
227 | <dt><span class="sect1"><a href="#platform-specific-plist">13.7. Platform-specific and differing PLISTs</a></span></dt> | | 228 | <dt><span class="sect1"><a href="#platform-specific-plist">13.7. Platform-specific and differing PLISTs</a></span></dt> |
228 | <dt><span class="sect1"><a href="#faq.common-dirs">13.8. Sharing directories between packages</a></span></dt> | | 229 | <dt><span class="sect1"><a href="#faq.common-dirs">13.8. Sharing directories between packages</a></span></dt> |
229 | </dl></dd> | | 230 | </dl></dd> |
230 | <dt><span class="chapter"><a href="#buildlink">14. Buildlink methodology</a></span></dt> | | 231 | <dt><span class="chapter"><a href="#buildlink">14. Buildlink methodology</a></span></dt> |
231 | <dd><dl> | | 232 | <dd><dl> |
232 | <dt><span class="sect1"><a href="#converting-to-buildlink3">14.1. Converting packages to use buildlink3</a></span></dt> | | 233 | <dt><span class="sect1"><a href="#converting-to-buildlink3">14.1. Converting packages to use buildlink3</a></span></dt> |
233 | <dt><span class="sect1"><a href="#creating-buildlink3.mk">14.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> | | 234 | <dt><span class="sect1"><a href="#creating-buildlink3.mk">14.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> |
234 | <dd><dl> | | 235 | <dd><dl> |
235 | <dt><span class="sect2"><a href="#anatomy-of-bl3">14.2.1. Anatomy of a buildlink3.mk file</a></span></dt> | | 236 | <dt><span class="sect2"><a href="#anatomy-of-bl3">14.2.1. Anatomy of a buildlink3.mk file</a></span></dt> |
236 | <dt><span class="sect2"><a href="#updating-buildlink-depends">14.2.2. Updating | | 237 | <dt><span class="sect2"><a href="#updating-buildlink-depends">14.2.2. Updating |
237 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 238 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
238 | and | | 239 | and |
239 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 240 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
240 | in <code class="filename">buildlink3.mk</code> files</a></span></dt> | | 241 | in <code class="filename">buildlink3.mk</code> files</a></span></dt> |
241 | </dl></dd> | | 242 | </dl></dd> |
242 | <dt><span class="sect1"><a href="#writing-builtin.mk">14.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> | | 243 | <dt><span class="sect1"><a href="#writing-builtin.mk">14.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> |
243 | <dd><dl> | | 244 | <dd><dl> |
244 | <dt><span class="sect2"><a href="#anatomy-of-builtin.mk">14.3.1. Anatomy of a <code class="filename">builtin.mk</code> file</a></span></dt> | | 245 | <dt><span class="sect2"><a href="#anatomy-of-builtin.mk">14.3.1. Anatomy of a <code class="filename">builtin.mk</code> file</a></span></dt> |
245 | <dt><span class="sect2"><a href="#native-or-pkgsrc-preference">14.3.2. Global preferences for native or pkgsrc software</a></span></dt> | | 246 | <dt><span class="sect2"><a href="#native-or-pkgsrc-preference">14.3.2. Global preferences for native or pkgsrc software</a></span></dt> |
246 | </dl></dd> | | 247 | </dl></dd> |
247 | </dl></dd> | | 248 | </dl></dd> |
248 | <dt><span class="chapter"><a href="#pkginstall">15. The pkginstall framework</a></span></dt> | | 249 | <dt><span class="chapter"><a href="#pkginstall">15. The pkginstall framework</a></span></dt> |
249 | <dd><dl> | | 250 | <dd><dl> |
250 | <dt><span class="sect1"><a href="#files-and-dirs-outside-prefix">15.1. Files and directories outside the installation prefix</a></span></dt> | | 251 | <dt><span class="sect1"><a href="#files-and-dirs-outside-prefix">15.1. Files and directories outside the installation prefix</a></span></dt> |
251 | <dd><dl> | | 252 | <dd><dl> |
252 | <dt><span class="sect2"><a href="#dirs-outside-prefix">15.1.1. Directory manipulation</a></span></dt> | | 253 | <dt><span class="sect2"><a href="#dirs-outside-prefix">15.1.1. Directory manipulation</a></span></dt> |
253 | <dt><span class="sect2"><a href="#files-outside-prefix">15.1.2. File manipulation</a></span></dt> | | 254 | <dt><span class="sect2"><a href="#files-outside-prefix">15.1.2. File manipulation</a></span></dt> |
254 | </dl></dd> | | 255 | </dl></dd> |
255 | <dt><span class="sect1"><a href="#conf-files">15.2. Configuration files</a></span></dt> | | 256 | <dt><span class="sect1"><a href="#conf-files">15.2. Configuration files</a></span></dt> |
256 | <dd><dl> | | 257 | <dd><dl> |
257 | <dt><span class="sect2"><a href="#conf-files-sysconfdir">15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</a></span></dt> | | 258 | <dt><span class="sect2"><a href="#conf-files-sysconfdir">15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</a></span></dt> |
258 | <dt><span class="sect2"><a href="#conf-files-configure">15.2.2. Telling the software where configuration files are</a></span></dt> | | 259 | <dt><span class="sect2"><a href="#conf-files-configure">15.2.2. Telling the software where configuration files are</a></span></dt> |
259 | <dt><span class="sect2"><a href="#conf-files-patching">15.2.3. Patching installations</a></span></dt> | | 260 | <dt><span class="sect2"><a href="#conf-files-patching">15.2.3. Patching installations</a></span></dt> |
260 | <dt><span class="sect2"><a href="#conf-files-disable">15.2.4. Disabling handling of configuration files</a></span></dt> | | 261 | <dt><span class="sect2"><a href="#conf-files-disable">15.2.4. Disabling handling of configuration files</a></span></dt> |
261 | </dl></dd> | | 262 | </dl></dd> |
262 | <dt><span class="sect1"><a href="#rcd-scripts">15.3. System startup scripts</a></span></dt> | | 263 | <dt><span class="sect1"><a href="#rcd-scripts">15.3. System startup scripts</a></span></dt> |
263 | <dd><dl><dt><span class="sect2"><a href="#rcd-scripts-disable">15.3.1. Disabling handling of system startup scripts</a></span></dt></dl></dd> | | 264 | <dd><dl><dt><span class="sect2"><a href="#rcd-scripts-disable">15.3.1. Disabling handling of system startup scripts</a></span></dt></dl></dd> |
264 | <dt><span class="sect1"><a href="#users-and-groups">15.4. System users and groups</a></span></dt> | | 265 | <dt><span class="sect1"><a href="#users-and-groups">15.4. System users and groups</a></span></dt> |
265 | <dt><span class="sect1"><a href="#shells">15.5. System shells</a></span></dt> | | 266 | <dt><span class="sect1"><a href="#shells">15.5. System shells</a></span></dt> |
266 | <dd><dl><dt><span class="sect2"><a href="#shells-disable">15.5.1. Disabling shell registration</a></span></dt></dl></dd> | | 267 | <dd><dl><dt><span class="sect2"><a href="#shells-disable">15.5.1. Disabling shell registration</a></span></dt></dl></dd> |
267 | <dt><span class="sect1"><a href="#fonts">15.6. Fonts</a></span></dt> | | 268 | <dt><span class="sect1"><a href="#fonts">15.6. Fonts</a></span></dt> |
268 | <dd><dl><dt><span class="sect2"><a href="#fonts-disable">15.6.1. Disabling automatic update of the fonts databases</a></span></dt></dl></dd> | | 269 | <dd><dl><dt><span class="sect2"><a href="#fonts-disable">15.6.1. Disabling automatic update of the fonts databases</a></span></dt></dl></dd> |
269 | </dl></dd> | | 270 | </dl></dd> |
270 | <dt><span class="chapter"><a href="#options">16. Options handling</a></span></dt> | | 271 | <dt><span class="chapter"><a href="#options">16. Options handling</a></span></dt> |
271 | <dd><dl> | | 272 | <dd><dl> |
272 | <dt><span class="sect1"><a href="#global-default-options">16.1. Global default options</a></span></dt> | | 273 | <dt><span class="sect1"><a href="#global-default-options">16.1. Global default options</a></span></dt> |
273 | <dt><span class="sect1"><a href="#converting-to-options">16.2. Converting packages to use <code class="filename">bsd.options.mk</code></a></span></dt> | | 274 | <dt><span class="sect1"><a href="#converting-to-options">16.2. Converting packages to use <code class="filename">bsd.options.mk</code></a></span></dt> |
274 | <dt><span class="sect1"><a href="#option-names">16.3. Option Names</a></span></dt> | | 275 | <dt><span class="sect1"><a href="#option-names">16.3. Option Names</a></span></dt> |
275 | <dt><span class="sect1"><a href="#option-build">16.4. Determining the options of dependencies</a></span></dt> | | 276 | <dt><span class="sect1"><a href="#option-build">16.4. Determining the options of dependencies</a></span></dt> |
276 | </dl></dd> | | 277 | </dl></dd> |
277 | <dt><span class="chapter"><a href="#build">17. The build process</a></span></dt> | | 278 | <dt><span class="chapter"><a href="#build">17. The build process</a></span></dt> |
278 | <dd><dl> | | 279 | <dd><dl> |
279 | <dt><span class="sect1"><a href="#build.intro">17.1. Introduction</a></span></dt> | | 280 | <dt><span class="sect1"><a href="#build.intro">17.1. Introduction</a></span></dt> |
280 | <dt><span class="sect1"><a href="#build.prefix">17.2. Program location</a></span></dt> | | 281 | <dt><span class="sect1"><a href="#build.prefix">17.2. Program location</a></span></dt> |
281 | <dt><span class="sect1"><a href="#build.builddirs">17.3. Directories used during the build process</a></span></dt> | | 282 | <dt><span class="sect1"><a href="#build.builddirs">17.3. Directories used during the build process</a></span></dt> |
282 | <dt><span class="sect1"><a href="#build.running">17.4. Running a phase</a></span></dt> | | 283 | <dt><span class="sect1"><a href="#build.running">17.4. Running a phase</a></span></dt> |
283 | <dt><span class="sect1"><a href="#build.fetch">17.5. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> | | 284 | <dt><span class="sect1"><a href="#build.fetch">17.5. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> |
284 | <dd><dl> | | 285 | <dd><dl> |
285 | <dt><span class="sect2"><a href="#build.fetch.what">17.5.1. What to fetch and where to get it from</a></span></dt> | | 286 | <dt><span class="sect2"><a href="#build.fetch.what">17.5.1. What to fetch and where to get it from</a></span></dt> |
286 | <dt><span class="sect2"><a href="#build.fetch.how">17.5.2. How are the files fetched?</a></span></dt> | | 287 | <dt><span class="sect2"><a href="#build.fetch.how">17.5.2. How are the files fetched?</a></span></dt> |
287 | </dl></dd> | | 288 | </dl></dd> |
288 | <dt><span class="sect1"><a href="#build.checksum">17.6. The <span class="emphasis"><em>checksum</em></span> phase</a></span></dt> | | 289 | <dt><span class="sect1"><a href="#build.checksum">17.6. The <span class="emphasis"><em>checksum</em></span> phase</a></span></dt> |
289 | <dt><span class="sect1"><a href="#build.extract">17.7. The <span class="emphasis"><em>extract</em></span> phase</a></span></dt> | | 290 | <dt><span class="sect1"><a href="#build.extract">17.7. The <span class="emphasis"><em>extract</em></span> phase</a></span></dt> |
290 | <dt><span class="sect1"><a href="#build.patch">17.8. The <span class="emphasis"><em>patch</em></span> phase</a></span></dt> | | 291 | <dt><span class="sect1"><a href="#build.patch">17.8. The <span class="emphasis"><em>patch</em></span> phase</a></span></dt> |
291 | <dt><span class="sect1"><a href="#build.tools">17.9. The <span class="emphasis"><em>tools</em></span> phase</a></span></dt> | | 292 | <dt><span class="sect1"><a href="#build.tools">17.9. The <span class="emphasis"><em>tools</em></span> phase</a></span></dt> |
292 | <dt><span class="sect1"><a href="#build.wrapper">17.10. The <span class="emphasis"><em>wrapper</em></span> phase</a></span></dt> | | 293 | <dt><span class="sect1"><a href="#build.wrapper">17.10. The <span class="emphasis"><em>wrapper</em></span> phase</a></span></dt> |
293 | <dt><span class="sect1"><a href="#build.configure">17.11. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> | | 294 | <dt><span class="sect1"><a href="#build.configure">17.11. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> |
294 | <dt><span class="sect1"><a href="#build.build">17.12. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> | | 295 | <dt><span class="sect1"><a href="#build.build">17.12. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> |
295 | <dt><span class="sect1"><a href="#build.test">17.13. The <span class="emphasis"><em>test</em></span> phase</a></span></dt> | | 296 | <dt><span class="sect1"><a href="#build.test">17.13. The <span class="emphasis"><em>test</em></span> phase</a></span></dt> |
296 | <dt><span class="sect1"><a href="#build.install">17.14. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> | | 297 | <dt><span class="sect1"><a href="#build.install">17.14. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> |
297 | <dt><span class="sect1"><a href="#build.package">17.15. The <span class="emphasis"><em>package</em></span> phase</a></span></dt> | | 298 | <dt><span class="sect1"><a href="#build.package">17.15. The <span class="emphasis"><em>package</em></span> phase</a></span></dt> |
298 | <dt><span class="sect1"><a href="#build.clean">17.16. Cleaning up</a></span></dt> | | 299 | <dt><span class="sect1"><a href="#build.clean">17.16. Cleaning up</a></span></dt> |
299 | <dt><span class="sect1"><a href="#build.helpful-targets">17.17. Other helpful targets</a></span></dt> | | 300 | <dt><span class="sect1"><a href="#build.helpful-targets">17.17. Other helpful targets</a></span></dt> |
300 | </dl></dd> | | 301 | </dl></dd> |
301 | <dt><span class="chapter"><a href="#tools">18. Tools needed for building or running</a></span></dt> | | 302 | <dt><span class="chapter"><a href="#tools">18. Tools needed for building or running</a></span></dt> |
302 | <dd><dl> | | 303 | <dd><dl> |
303 | <dt><span class="sect1"><a href="#pkgsrc-tools">18.1. Tools for pkgsrc builds</a></span></dt> | | 304 | <dt><span class="sect1"><a href="#pkgsrc-tools">18.1. Tools for pkgsrc builds</a></span></dt> |
304 | <dt><span class="sect1"><a href="#package-tools">18.2. Tools needed by packages</a></span></dt> | | 305 | <dt><span class="sect1"><a href="#package-tools">18.2. Tools needed by packages</a></span></dt> |
305 | <dt><span class="sect1"><a href="#platform-tools">18.3. Tools provided by platforms</a></span></dt> | | 306 | <dt><span class="sect1"><a href="#platform-tools">18.3. Tools provided by platforms</a></span></dt> |
306 | <dt><span class="sect1"><a href="#tools.questions">18.4. Questions regarding the tools</a></span></dt> | | 307 | <dt><span class="sect1"><a href="#tools.questions">18.4. Questions regarding the tools</a></span></dt> |
307 | </dl></dd> | | 308 | </dl></dd> |
308 | <dt><span class="chapter"><a href="#fixes">19. Making your package work</a></span></dt> | | 309 | <dt><span class="chapter"><a href="#fixes">19. Making your package work</a></span></dt> |
309 | <dd><dl> | | 310 | <dd><dl> |
310 | <dt><span class="sect1"><a href="#general-operation">19.1. General operation</a></span></dt> | | 311 | <dt><span class="sect1"><a href="#general-operation">19.1. General operation</a></span></dt> |
311 | <dd><dl> | | 312 | <dd><dl> |
312 | <dt><span class="sect2"><a href="#portability-of-packages">19.1.1. Portability of packages</a></span></dt> | | 313 | <dt><span class="sect2"><a href="#portability-of-packages">19.1.1. Portability of packages</a></span></dt> |
313 | <dt><span class="sect2"><a href="#pulling-vars-from-etc-mk.conf">19.1.2. How to pull in user-settable variables from <code class="filename">mk.conf</code></a></span></dt> | | 314 | <dt><span class="sect2"><a href="#pulling-vars-from-etc-mk.conf">19.1.2. How to pull in user-settable variables from <code class="filename">mk.conf</code></a></span></dt> |
314 | <dt><span class="sect2"><a href="#user-interaction">19.1.3. User interaction</a></span></dt> | | 315 | <dt><span class="sect2"><a href="#user-interaction">19.1.3. User interaction</a></span></dt> |
315 | <dt><span class="sect2"><a href="#handling-licenses">19.1.4. Handling licenses</a></span></dt> | | 316 | <dt><span class="sect2"><a href="#handling-licenses">19.1.4. Handling licenses</a></span></dt> |
316 | <dt><span class="sect2"><a href="#restricted-packages">19.1.5. Restricted packages</a></span></dt> | | 317 | <dt><span class="sect2"><a href="#restricted-packages">19.1.5. Restricted packages</a></span></dt> |
317 | <dt><span class="sect2"><a href="#dependencies">19.1.6. Handling dependencies</a></span></dt> | | 318 | <dt><span class="sect2"><a href="#dependencies">19.1.6. Handling dependencies</a></span></dt> |
318 | <dt><span class="sect2"><a href="#conflicts">19.1.7. Handling conflicts with other packages</a></span></dt> | | 319 | <dt><span class="sect2"><a href="#conflicts">19.1.7. Handling conflicts with other packages</a></span></dt> |
319 | <dt><span class="sect2"><a href="#not-building-packages">19.1.8. Packages that cannot or should not be built</a></span></dt> | | 320 | <dt><span class="sect2"><a href="#not-building-packages">19.1.8. Packages that cannot or should not be built</a></span></dt> |
320 | <dt><span class="sect2"><a href="#undeletable-packages">19.1.9. Packages which should not be deleted, once installed</a></span></dt> | | 321 | <dt><span class="sect2"><a href="#undeletable-packages">19.1.9. Packages which should not be deleted, once installed</a></span></dt> |
321 | <dt><span class="sect2"><a href="#security-handling">19.1.10. Handling packages with security problems</a></span></dt> | | 322 | <dt><span class="sect2"><a href="#security-handling">19.1.10. Handling packages with security problems</a></span></dt> |
322 | <dt><span class="sect2"><a href="#bumping-pkgrevision">19.1.11. How to handle incrementing versions when fixing an existing package</a></span></dt> | | 323 | <dt><span class="sect2"><a href="#bumping-pkgrevision">19.1.11. How to handle incrementing versions when fixing an existing package</a></span></dt> |
323 | <dt><span class="sect2"><a href="#fixes.subst">19.1.12. Substituting variable text in the package files (the SUBST framework)</a></span></dt> | | 324 | <dt><span class="sect2"><a href="#fixes.subst">19.1.12. Substituting variable text in the package files (the SUBST framework)</a></span></dt> |
324 | </dl></dd> | | 325 | </dl></dd> |
325 | <dt><span class="sect1"><a href="#fixes.fetch">19.2. Fixing problems in the <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> | | 326 | <dt><span class="sect1"><a href="#fixes.fetch">19.2. Fixing problems in the <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> |
326 | <dd><dl> | | 327 | <dd><dl> |
327 | <dt><span class="sect2"><a href="#no-plain-download">19.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> | | 328 | <dt><span class="sect2"><a href="#no-plain-download">19.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> |
328 | <dt><span class="sect2"><a href="#modified-distfiles-same-name">19.2.2. How to handle modified distfiles with the 'old' name</a></span></dt> | | 329 | <dt><span class="sect2"><a href="#modified-distfiles-same-name">19.2.2. How to handle modified distfiles with the 'old' name</a></span></dt> |
329 | </dl></dd> | | 330 | </dl></dd> |
330 | <dt><span class="sect1"><a href="#fixes.configure">19.3. Fixing problems in the <span class="emphasis"><em>configure</em></span> phase</a></span></dt> | | 331 | <dt><span class="sect1"><a href="#fixes.configure">19.3. Fixing problems in the <span class="emphasis"><em>configure</em></span> phase</a></span></dt> |
331 | <dd><dl> | | 332 | <dd><dl> |
332 | <dt><span class="sect2"><a href="#fixes.libtool">19.3.1. Shared libraries - libtool</a></span></dt> | | 333 | <dt><span class="sect2"><a href="#fixes.libtool">19.3.1. Shared libraries - libtool</a></span></dt> |
333 | <dt><span class="sect2"><a href="#using-libtool">19.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> | | 334 | <dt><span class="sect2"><a href="#using-libtool">19.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> |
334 | <dt><span class="sect2"><a href="#autoconf-automake">19.3.3. GNU Autoconf/Automake</a></span></dt> | | 335 | <dt><span class="sect2"><a href="#autoconf-automake">19.3.3. GNU Autoconf/Automake</a></span></dt> |
335 | </dl></dd> | | 336 | </dl></dd> |
336 | <dt><span class="sect1"><a href="#programming-languages">19.4. Programming languages</a></span></dt> | | 337 | <dt><span class="sect1"><a href="#programming-languages">19.4. Programming languages</a></span></dt> |
337 | <dd><dl> | | 338 | <dd><dl> |
338 | <dt><span class="sect2"><a href="#basic-programming-languages">19.4.1. C, C++, and Fortran</a></span></dt> | | 339 | <dt><span class="sect2"><a href="#basic-programming-languages">19.4.1. C, C++, and Fortran</a></span></dt> |
339 | <dt><span class="sect2"><a href="#java-programming-language">19.4.2. Java</a></span></dt> | | 340 | <dt><span class="sect2"><a href="#java-programming-language">19.4.2. Java</a></span></dt> |
340 | <dt><span class="sect2"><a href="#perl-scripts">19.4.3. Packages containing perl scripts</a></span></dt> | | 341 | <dt><span class="sect2"><a href="#perl-scripts">19.4.3. Packages containing perl scripts</a></span></dt> |
341 | <dt><span class="sect2"><a href="#shell-scripts">19.4.4. Packages containing shell scripts</a></span></dt> | | 342 | <dt><span class="sect2"><a href="#shell-scripts">19.4.4. Packages containing shell scripts</a></span></dt> |
342 | <dt><span class="sect2"><a href="#other-programming-languages">19.4.5. Other programming languages</a></span></dt> | | 343 | <dt><span class="sect2"><a href="#other-programming-languages">19.4.5. Other programming languages</a></span></dt> |
343 | </dl></dd> | | 344 | </dl></dd> |
344 | <dt><span class="sect1"><a href="#fixes.build">19.5. Fixing problems in the <span class="emphasis"><em>build</em></span> phase</a></span></dt> | | 345 | <dt><span class="sect1"><a href="#fixes.build">19.5. Fixing problems in the <span class="emphasis"><em>build</em></span> phase</a></span></dt> |
345 | <dd><dl> | | 346 | <dd><dl> |
346 | <dt><span class="sect2"><a href="#fixes.build.cpp">19.5.1. Compiling C and C++ code conditionally</a></span></dt> | | 347 | <dt><span class="sect2"><a href="#fixes.build.cpp">19.5.1. Compiling C and C++ code conditionally</a></span></dt> |
347 | <dt><span class="sect2"><a href="#compiler-bugs">19.5.2. How to handle compiler bugs</a></span></dt> | | 348 | <dt><span class="sect2"><a href="#compiler-bugs">19.5.2. How to handle compiler bugs</a></span></dt> |
348 | <dt><span class="sect2"><a href="#undefined-reference">19.5.3. Undefined reference to <span class="quote">“<span class="quote">...</span>”</span></a></span></dt> | | 349 | <dt><span class="sect2"><a href="#undefined-reference">19.5.3. Undefined reference to <span class="quote">“<span class="quote">...</span>”</span></a></span></dt> |
349 | <dt><span class="sect2"><a href="#out-of-memory">19.5.4. Running out of memory</a></span></dt> | | 350 | <dt><span class="sect2"><a href="#out-of-memory">19.5.4. Running out of memory</a></span></dt> |
350 | </dl></dd> | | 351 | </dl></dd> |
351 | <dt><span class="sect1"><a href="#fixes.install">19.6. Fixing problems in the <span class="emphasis"><em>install</em></span> phase</a></span></dt> | | 352 | <dt><span class="sect1"><a href="#fixes.install">19.6. Fixing problems in the <span class="emphasis"><em>install</em></span> phase</a></span></dt> |
352 | <dd><dl> | | 353 | <dd><dl> |
353 | <dt><span class="sect2"><a href="#install-scripts">19.6.1. Creating needed directories</a></span></dt> | | 354 | <dt><span class="sect2"><a href="#install-scripts">19.6.1. Creating needed directories</a></span></dt> |
354 | <dt><span class="sect2"><a href="#where-to-install-documentation">19.6.2. Where to install documentation</a></span></dt> | | 355 | <dt><span class="sect2"><a href="#where-to-install-documentation">19.6.2. Where to install documentation</a></span></dt> |
355 | <dt><span class="sect2"><a href="#installing-score-files">19.6.3. Installing highscore files</a></span></dt> | | 356 | <dt><span class="sect2"><a href="#installing-score-files">19.6.3. Installing highscore files</a></span></dt> |
356 | <dt><span class="sect2"><a href="#destdir-support">19.6.4. Adding DESTDIR support to packages</a></span></dt> | | 357 | <dt><span class="sect2"><a href="#destdir-support">19.6.4. Adding DESTDIR support to packages</a></span></dt> |
357 | <dt><span class="sect2"><a href="#hardcoded-paths">19.6.5. Packages with hardcoded paths to other interpreters</a></span></dt> | | 358 | <dt><span class="sect2"><a href="#hardcoded-paths">19.6.5. Packages with hardcoded paths to other interpreters</a></span></dt> |
358 | <dt><span class="sect2"><a href="#perl-modules">19.6.6. Packages installing perl modules</a></span></dt> | | 359 | <dt><span class="sect2"><a href="#perl-modules">19.6.6. Packages installing perl modules</a></span></dt> |
359 | <dt><span class="sect2"><a href="#faq.info-files">19.6.7. Packages installing info files</a></span></dt> | | 360 | <dt><span class="sect2"><a href="#faq.info-files">19.6.7. Packages installing info files</a></span></dt> |
360 | <dt><span class="sect2"><a href="#manpages">19.6.8. Packages installing man pages</a></span></dt> | | 361 | <dt><span class="sect2"><a href="#manpages">19.6.8. Packages installing man pages</a></span></dt> |
361 | <dt><span class="sect2"><a href="#gconf-data-files">19.6.9. Packages installing GConf data files</a></span></dt> | | 362 | <dt><span class="sect2"><a href="#gconf-data-files">19.6.9. Packages installing GConf data files</a></span></dt> |
362 | <dt><span class="sect2"><a href="#scrollkeeper-data-files">19.6.10. Packages installing scrollkeeper/rarian data files</a></span></dt> | | 363 | <dt><span class="sect2"><a href="#scrollkeeper-data-files">19.6.10. Packages installing scrollkeeper/rarian data files</a></span></dt> |
363 | <dt><span class="sect2"><a href="#x11-fonts">19.6.11. Packages installing X11 fonts</a></span></dt> | | 364 | <dt><span class="sect2"><a href="#x11-fonts">19.6.11. Packages installing X11 fonts</a></span></dt> |
364 | <dt><span class="sect2"><a href="#gtk2-modules">19.6.12. Packages installing GTK2 modules</a></span></dt> | | 365 | <dt><span class="sect2"><a href="#gtk2-modules">19.6.12. Packages installing GTK2 modules</a></span></dt> |
365 | <dt><span class="sect2"><a href="#sgml-xml-data">19.6.13. Packages installing SGML or XML data</a></span></dt> | | 366 | <dt><span class="sect2"><a href="#sgml-xml-data">19.6.13. Packages installing SGML or XML data</a></span></dt> |
366 | <dt><span class="sect2"><a href="#mime-database">19.6.14. Packages installing extensions to the MIME database</a></span></dt> | | 367 | <dt><span class="sect2"><a href="#mime-database">19.6.14. Packages installing extensions to the MIME database</a></span></dt> |
367 | <dt><span class="sect2"><a href="#intltool">19.6.15. Packages using intltool</a></span></dt> | | 368 | <dt><span class="sect2"><a href="#intltool">19.6.15. Packages using intltool</a></span></dt> |
368 | <dt><span class="sect2"><a href="#startup-scripts">19.6.16. Packages installing startup scripts</a></span></dt> | | 369 | <dt><span class="sect2"><a href="#startup-scripts">19.6.16. Packages installing startup scripts</a></span></dt> |
369 | <dt><span class="sect2"><a href="#tex-packages">19.6.17. Packages installing TeX modules</a></span></dt> | | 370 | <dt><span class="sect2"><a href="#tex-packages">19.6.17. Packages installing TeX modules</a></span></dt> |
370 | <dt><span class="sect2"><a href="#emulation-packages">19.6.18. Packages supporting running binaries in | | 371 | <dt><span class="sect2"><a href="#emulation-packages">19.6.18. Packages supporting running binaries in |
371 | emulation</a></span></dt> | | 372 | emulation</a></span></dt> |
372 | <dt><span class="sect2"><a href="#hicolor-theme">19.6.19. Packages installing hicolor theme icons</a></span></dt> | | 373 | <dt><span class="sect2"><a href="#hicolor-theme">19.6.19. Packages installing hicolor theme icons</a></span></dt> |
373 | <dt><span class="sect2"><a href="#desktop-files">19.6.20. Packages installing desktop files</a></span></dt> | | 374 | <dt><span class="sect2"><a href="#desktop-files">19.6.20. Packages installing desktop files</a></span></dt> |
374 | </dl></dd> | | 375 | </dl></dd> |
375 | <dt><span class="sect1"><a href="#punting">19.7. Marking packages as having problems</a></span></dt> | | 376 | <dt><span class="sect1"><a href="#punting">19.7. Marking packages as having problems</a></span></dt> |
376 | </dl></dd> | | 377 | </dl></dd> |
377 | <dt><span class="chapter"><a href="#debug">20. Debugging</a></span></dt> | | 378 | <dt><span class="chapter"><a href="#debug">20. Debugging</a></span></dt> |
378 | <dt><span class="chapter"><a href="#submit">21. Submitting and Committing</a></span></dt> | | 379 | <dt><span class="chapter"><a href="#submit">21. Submitting and Committing</a></span></dt> |
379 | <dd><dl> | | 380 | <dd><dl> |
380 | <dt><span class="sect1"><a href="#submitting-binary-packages">21.1. Submitting binary packages</a></span></dt> | | 381 | <dt><span class="sect1"><a href="#submitting-binary-packages">21.1. Submitting binary packages</a></span></dt> |
381 | <dt><span class="sect1"><a href="#submitting-your-package">21.2. Submitting source packages (for non-NetBSD-developers)</a></span></dt> | | 382 | <dt><span class="sect1"><a href="#submitting-your-package">21.2. Submitting source packages (for non-NetBSD-developers)</a></span></dt> |
382 | <dt><span class="sect1"><a href="#general-notes-for-changes">21.3. General notes when adding, updating, or removing packages</a></span></dt> | | 383 | <dt><span class="sect1"><a href="#general-notes-for-changes">21.3. General notes when adding, updating, or removing packages</a></span></dt> |
383 | <dt><span class="sect1"><a href="#committing-importing">21.4. Committing: Adding a package to CVS</a></span></dt> | | 384 | <dt><span class="sect1"><a href="#committing-importing">21.4. Committing: Adding a package to CVS</a></span></dt> |
384 | <dt><span class="sect1"><a href="#updating-package">21.5. Updating a package to a newer version</a></span></dt> | | 385 | <dt><span class="sect1"><a href="#updating-package">21.5. Updating a package to a newer version</a></span></dt> |
385 | <dt><span class="sect1"><a href="#renaming-package">21.6. Renaming a package in pkgsrc</a></span></dt> | | 386 | <dt><span class="sect1"><a href="#renaming-package">21.6. Renaming a package in pkgsrc</a></span></dt> |
386 | <dt><span class="sect1"><a href="#moving-package">21.7. Moving a package in pkgsrc</a></span></dt> | | 387 | <dt><span class="sect1"><a href="#moving-package">21.7. Moving a package in pkgsrc</a></span></dt> |
387 | </dl></dd> | | 388 | </dl></dd> |
388 | <dt><span class="chapter"><a href="#devfaq">22. Frequently Asked Questions</a></span></dt> | | 389 | <dt><span class="chapter"><a href="#devfaq">22. Frequently Asked Questions</a></span></dt> |
389 | <dt><span class="chapter"><a href="#gnome">23. GNOME packaging and porting</a></span></dt> | | 390 | <dt><span class="chapter"><a href="#gnome">23. GNOME packaging and porting</a></span></dt> |
390 | <dd><dl> | | 391 | <dd><dl> |
391 | <dt><span class="sect1"><a href="#meta-packages">23.1. Meta packages</a></span></dt> | | 392 | <dt><span class="sect1"><a href="#meta-packages">23.1. Meta packages</a></span></dt> |
392 | <dt><span class="sect1"><a href="#new-package">23.2. Packaging a GNOME application</a></span></dt> | | 393 | <dt><span class="sect1"><a href="#new-package">23.2. Packaging a GNOME application</a></span></dt> |
393 | <dt><span class="sect1"><a href="#full-update">23.3. Updating GNOME to a newer version</a></span></dt> | | 394 | <dt><span class="sect1"><a href="#full-update">23.3. Updating GNOME to a newer version</a></span></dt> |
394 | <dt><span class="sect1"><a href="#patching">23.4. Patching guidelines</a></span></dt> | | 395 | <dt><span class="sect1"><a href="#patching">23.4. Patching guidelines</a></span></dt> |
395 | </dl></dd> | | 396 | </dl></dd> |
396 | </dl></dd> | | 397 | </dl></dd> |
397 | <dt><span class="part"><a href="#infrastructure">III. The pkgsrc infrastructure internals</a></span></dt> | | 398 | <dt><span class="part"><a href="#infrastructure">III. The pkgsrc infrastructure internals</a></span></dt> |
398 | <dd><dl> | | 399 | <dd><dl> |
399 | <dt><span class="chapter"><a href="#infr.design">24. Design of the pkgsrc infrastructure</a></span></dt> | | 400 | <dt><span class="chapter"><a href="#infr.design">24. Design of the pkgsrc infrastructure</a></span></dt> |
400 | <dd><dl> | | 401 | <dd><dl> |
401 | <dt><span class="sect1"><a href="#infr.vardef">24.1. The meaning of variable definitions</a></span></dt> | | 402 | <dt><span class="sect1"><a href="#infr.vardef">24.1. The meaning of variable definitions</a></span></dt> |
402 | <dt><span class="sect1"><a href="#infr.vardef.problems">24.2. Avoiding problems before they arise</a></span></dt> | | 403 | <dt><span class="sect1"><a href="#infr.vardef.problems">24.2. Avoiding problems before they arise</a></span></dt> |
403 | <dt><span class="sect1"><a href="#infr.var">24.3. Variable evaluation</a></span></dt> | | 404 | <dt><span class="sect1"><a href="#infr.var">24.3. Variable evaluation</a></span></dt> |
404 | <dd><dl> | | 405 | <dd><dl> |
405 | <dt><span class="sect2"><a href="#infr.var.load">24.3.1. At load time</a></span></dt> | | 406 | <dt><span class="sect2"><a href="#infr.var.load">24.3.1. At load time</a></span></dt> |
406 | <dt><span class="sect2"><a href="#infr.var.run">24.3.2. At runtime</a></span></dt> | | 407 | <dt><span class="sect2"><a href="#infr.var.run">24.3.2. At runtime</a></span></dt> |
407 | </dl></dd> | | 408 | </dl></dd> |
408 | <dt><span class="sect1"><a href="#infr.varspec">24.4. How can variables be specified?</a></span></dt> | | 409 | <dt><span class="sect1"><a href="#infr.varspec">24.4. How can variables be specified?</a></span></dt> |
409 | <dt><span class="sect1"><a href="#infr.design.intf">24.5. Designing interfaces for Makefile fragments</a></span></dt> | | 410 | <dt><span class="sect1"><a href="#infr.design.intf">24.5. Designing interfaces for Makefile fragments</a></span></dt> |
410 | <dd><dl> | | 411 | <dd><dl> |
411 | <dt><span class="sect2"><a href="#infr.design.intf.proc">24.5.1. Procedures with parameters</a></span></dt> | | 412 | <dt><span class="sect2"><a href="#infr.design.intf.proc">24.5.1. Procedures with parameters</a></span></dt> |
412 | <dt><span class="sect2"><a href="#infr.design.intf.action">24.5.2. Actions taken on behalf of parameters</a></span></dt> | | 413 | <dt><span class="sect2"><a href="#infr.design.intf.action">24.5.2. Actions taken on behalf of parameters</a></span></dt> |
413 | </dl></dd> | | 414 | </dl></dd> |
414 | <dt><span class="sect1"><a href="#infr.order">24.6. The order in which files are loaded</a></span></dt> | | 415 | <dt><span class="sect1"><a href="#infr.order">24.6. The order in which files are loaded</a></span></dt> |
415 | <dd><dl> | | 416 | <dd><dl> |
416 | <dt><span class="sect2"><a href="#infr.order.prefs">24.6.1. The order in <code class="filename">bsd.prefs.mk</code></a></span></dt> | | 417 | <dt><span class="sect2"><a href="#infr.order.prefs">24.6.1. The order in <code class="filename">bsd.prefs.mk</code></a></span></dt> |
417 | <dt><span class="sect2"><a href="#infr.order.pkg">24.6.2. The order in <code class="filename">bsd.pkg.mk</code></a></span></dt> | | 418 | <dt><span class="sect2"><a href="#infr.order.pkg">24.6.2. The order in <code class="filename">bsd.pkg.mk</code></a></span></dt> |
418 | </dl></dd> | | 419 | </dl></dd> |
419 | </dl></dd> | | 420 | </dl></dd> |
420 | <dt><span class="chapter"><a href="#regression">25. Regression tests</a></span></dt> | | 421 | <dt><span class="chapter"><a href="#regression">25. Regression tests</a></span></dt> |
421 | <dd><dl> | | 422 | <dd><dl> |
422 | <dt><span class="sect1"><a href="#regression.descr">25.1. The regression tests framework</a></span></dt> | | 423 | <dt><span class="sect1"><a href="#regression.descr">25.1. The regression tests framework</a></span></dt> |
423 | <dt><span class="sect1"><a href="#regression.run">25.2. Running the regression tests</a></span></dt> | | 424 | <dt><span class="sect1"><a href="#regression.run">25.2. Running the regression tests</a></span></dt> |
424 | <dt><span class="sect1"><a href="#regression.new">25.3. Adding a new regression test</a></span></dt> | | 425 | <dt><span class="sect1"><a href="#regression.new">25.3. Adding a new regression test</a></span></dt> |
425 | <dd><dl> | | 426 | <dd><dl> |
426 | <dt><span class="sect2"><a href="#regression.fun.override">25.3.1. Overridable functions</a></span></dt> | | 427 | <dt><span class="sect2"><a href="#regression.fun.override">25.3.1. Overridable functions</a></span></dt> |
427 | <dt><span class="sect2"><a href="#regression.fun.helper">25.3.2. Helper functions</a></span></dt> | | 428 | <dt><span class="sect2"><a href="#regression.fun.helper">25.3.2. Helper functions</a></span></dt> |
428 | </dl></dd> | | 429 | </dl></dd> |
429 | </dl></dd> | | 430 | </dl></dd> |
430 | <dt><span class="chapter"><a href="#porting">26. Porting pkgsrc</a></span></dt> | | 431 | <dt><span class="chapter"><a href="#porting">26. Porting pkgsrc</a></span></dt> |
431 | <dd><dl> | | 432 | <dd><dl> |
432 | <dt><span class="sect1"><a href="#porting.opsys">26.1. Porting pkgsrc to a new operating system</a></span></dt> | | 433 | <dt><span class="sect1"><a href="#porting.opsys">26.1. Porting pkgsrc to a new operating system</a></span></dt> |
433 | <dt><span class="sect1"><a href="#porting.compiler">26.2. Adding support for a new compiler</a></span></dt> | | 434 | <dt><span class="sect1"><a href="#porting.compiler">26.2. Adding support for a new compiler</a></span></dt> |
434 | </dl></dd> | | 435 | </dl></dd> |
435 | </dl></dd> | | 436 | </dl></dd> |
436 | <dt><span class="appendix"><a href="#examples">A. A simple example package: bison</a></span></dt> | | 437 | <dt><span class="appendix"><a href="#examples">A. A simple example package: bison</a></span></dt> |
437 | <dd><dl> | | 438 | <dd><dl> |
438 | <dt><span class="sect1"><a href="#example-files">A.1. files</a></span></dt> | | 439 | <dt><span class="sect1"><a href="#example-files">A.1. files</a></span></dt> |
439 | <dd><dl> | | 440 | <dd><dl> |
440 | <dt><span class="sect2"><a href="#example-Makefile">A.1.1. Makefile</a></span></dt> | | 441 | <dt><span class="sect2"><a href="#example-Makefile">A.1.1. Makefile</a></span></dt> |
441 | <dt><span class="sect2"><a href="#example-descr">A.1.2. DESCR</a></span></dt> | | 442 | <dt><span class="sect2"><a href="#example-descr">A.1.2. DESCR</a></span></dt> |
442 | <dt><span class="sect2"><a href="#example-plist">A.1.3. PLIST</a></span></dt> | | 443 | <dt><span class="sect2"><a href="#example-plist">A.1.3. PLIST</a></span></dt> |
443 | <dt><span class="sect2"><a href="#checking-package-with-pkglint">A.1.4. Checking a package with <span class="command"><strong>pkglint</strong></span></a></span></dt> | | 444 | <dt><span class="sect2"><a href="#checking-package-with-pkglint">A.1.4. Checking a package with <span class="command"><strong>pkglint</strong></span></a></span></dt> |
444 | </dl></dd> | | 445 | </dl></dd> |
445 | <dt><span class="sect1"><a href="#steps-for-b-i-p">A.2. Steps for building, installing, packaging</a></span></dt> | | 446 | <dt><span class="sect1"><a href="#steps-for-b-i-p">A.2. Steps for building, installing, packaging</a></span></dt> |
446 | </dl></dd> | | 447 | </dl></dd> |
447 | <dt><span class="appendix"><a href="#logs">B. Build logs</a></span></dt> | | 448 | <dt><span class="appendix"><a href="#logs">B. Build logs</a></span></dt> |
448 | <dd><dl> | | 449 | <dd><dl> |
449 | <dt><span class="sect1"><a href="#logs.building">B.1. Building figlet</a></span></dt> | | 450 | <dt><span class="sect1"><a href="#logs.building">B.1. Building figlet</a></span></dt> |
450 | <dt><span class="sect1"><a href="#logs.package">B.2. Packaging figlet</a></span></dt> | | 451 | <dt><span class="sect1"><a href="#logs.package">B.2. Packaging figlet</a></span></dt> |
451 | </dl></dd> | | 452 | </dl></dd> |
452 | <dt><span class="appendix"><a href="#ftp-layout">C. Directory layout of the pkgsrc FTP server</a></span></dt> | | 453 | <dt><span class="appendix"><a href="#ftp-layout">C. Directory layout of the pkgsrc FTP server</a></span></dt> |
453 | <dd><dl> | | 454 | <dd><dl> |
454 | <dt><span class="sect1"><a href="#ftp-distfiles">C.1. <code class="filename">distfiles</code>: The distributed source files</a></span></dt> | | 455 | <dt><span class="sect1"><a href="#ftp-distfiles">C.1. <code class="filename">distfiles</code>: The distributed source files</a></span></dt> |
455 | <dt><span class="sect1"><a href="#ftp-misc">C.2. <code class="filename">misc</code>: Miscellaneous things</a></span></dt> | | 456 | <dt><span class="sect1"><a href="#ftp-misc">C.2. <code class="filename">misc</code>: Miscellaneous things</a></span></dt> |
456 | <dt><span class="sect1"><a href="#ftp-packages">C.3. <code class="filename">packages</code>: Binary packages</a></span></dt> | | 457 | <dt><span class="sect1"><a href="#ftp-packages">C.3. <code class="filename">packages</code>: Binary packages</a></span></dt> |
457 | <dt><span class="sect1"><a href="#ftp-reports">C.4. <code class="filename">reports</code>: Bulk build reports</a></span></dt> | | 458 | <dt><span class="sect1"><a href="#ftp-reports">C.4. <code class="filename">reports</code>: Bulk build reports</a></span></dt> |
458 | <dt><span class="sect1"><a href="#ftp-source">C.5. <code class="filename">current</code>, | | 459 | <dt><span class="sect1"><a href="#ftp-source">C.5. <code class="filename">current</code>, |
459 | <code class="filename">pkgsrc-20<em class="replaceable"><code>xx</code></em>Q<em class="replaceable"><code>y</code></em></code>: | | 460 | <code class="filename">pkgsrc-20<em class="replaceable"><code>xx</code></em>Q<em class="replaceable"><code>y</code></em></code>: |
460 | source packages</a></span></dt> | | 461 | source packages</a></span></dt> |
461 | </dl></dd> | | 462 | </dl></dd> |
462 | <dt><span class="appendix"><a href="#editing">D. Editing guidelines for the pkgsrc guide</a></span></dt> | | 463 | <dt><span class="appendix"><a href="#editing">D. Editing guidelines for the pkgsrc guide</a></span></dt> |
463 | <dd><dl> | | 464 | <dd><dl> |
464 | <dt><span class="sect1"><a href="#targets">D.1. Make targets</a></span></dt> | | 465 | <dt><span class="sect1"><a href="#targets">D.1. Make targets</a></span></dt> |
465 | <dt><span class="sect1"><a href="#procedure">D.2. Procedure</a></span></dt> | | 466 | <dt><span class="sect1"><a href="#procedure">D.2. Procedure</a></span></dt> |
466 | </dl></dd> | | 467 | </dl></dd> |
467 | </dl> | | 468 | </dl> |
468 | </div> | | 469 | </div> |
469 | <div class="list-of-tables"> | | 470 | <div class="list-of-tables"> |
470 | <p><b>List of Tables</b></p> | | 471 | <p><b>List of Tables</b></p> |
471 | <dl> | | 472 | <dl> |
472 | <dt>1.1. <a href="#supported-platforms">Platforms supported by pkgsrc</a> | | 473 | <dt>1.1. <a href="#supported-platforms">Platforms supported by pkgsrc</a> |
473 | </dt> | | 474 | </dt> |
474 | <dt>11.1. <a href="#patch-examples">Patching examples</a> | | 475 | <dt>11.1. <a href="#patch-examples">Patching examples</a> |
475 | </dt> | | 476 | </dt> |
476 | <dt>23.1. <a href="#plist-handling">PLIST handling for GNOME packages</a> | | 477 | <dt>23.1. <a href="#plist-handling">PLIST handling for GNOME packages</a> |
477 | </dt> | | 478 | </dt> |
478 | </dl> | | 479 | </dl> |
479 | </div> | | 480 | </div> |
480 | <div class="chapter"> | | 481 | <div class="chapter"> |
481 | <div class="titlepage"><div><div><h1 class="title"> | | 482 | <div class="titlepage"><div><div><h1 class="title"> |
482 | <a name="introduction"></a>Chapter 1. What is pkgsrc?</h1></div></div></div> | | 483 | <a name="introduction"></a>Chapter 1. What is pkgsrc?</h1></div></div></div> |
483 | <div class="toc"> | | 484 | <div class="toc"> |
484 | <p><b>Table of Contents</b></p> | | 485 | <p><b>Table of Contents</b></p> |
485 | <dl> | | 486 | <dl> |
486 | <dt><span class="sect1"><a href="#introduction-section">1.1. Introduction</a></span></dt> | | 487 | <dt><span class="sect1"><a href="#introduction-section">1.1. Introduction</a></span></dt> |
487 | <dd><dl> | | 488 | <dd><dl> |
488 | <dt><span class="sect2"><a href="#why-pkgsrc">1.1.1. Why pkgsrc?</a></span></dt> | | 489 | <dt><span class="sect2"><a href="#why-pkgsrc">1.1.1. Why pkgsrc?</a></span></dt> |
489 | <dt><span class="sect2"><a href="#intro.platforms">1.1.2. Supported platforms</a></span></dt> | | 490 | <dt><span class="sect2"><a href="#intro.platforms">1.1.2. Supported platforms</a></span></dt> |
490 | </dl></dd> | | 491 | </dl></dd> |
491 | <dt><span class="sect1"><a href="#overview">1.2. Overview</a></span></dt> | | 492 | <dt><span class="sect1"><a href="#overview">1.2. Overview</a></span></dt> |
492 | <dt><span class="sect1"><a href="#terminology">1.3. Terminology</a></span></dt> | | 493 | <dt><span class="sect1"><a href="#terminology">1.3. Terminology</a></span></dt> |
493 | <dd><dl><dt><span class="sect2"><a href="#term.roles">1.3.1. Roles involved in pkgsrc</a></span></dt></dl></dd> | | 494 | <dd><dl><dt><span class="sect2"><a href="#term.roles">1.3.1. Roles involved in pkgsrc</a></span></dt></dl></dd> |
494 | <dt><span class="sect1"><a href="#typography">1.4. Typography</a></span></dt> | | 495 | <dt><span class="sect1"><a href="#typography">1.4. Typography</a></span></dt> |
495 | </dl> | | 496 | </dl> |
496 | </div> | | 497 | </div> |
497 | <div class="sect1"> | | 498 | <div class="sect1"> |
498 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 499 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
499 | <a name="introduction-section"></a>1.1. Introduction</h2></div></div></div> | | 500 | <a name="introduction-section"></a>1.1. Introduction</h2></div></div></div> |
500 | <p>There is a lot of software freely available for Unix-based | | 501 | <p>There is a lot of software freely available for Unix-based |
501 | systems, which is usually available in form of the source code. Before | | 502 | systems, which is usually available in form of the source code. Before |
502 | such software can be used, it needs to be configured to the local | | 503 | such software can be used, it needs to be configured to the local |
503 | system, compiled and installed, and this is exactly what The NetBSD | | 504 | system, compiled and installed, and this is exactly what The NetBSD |
504 | Packages Collection (pkgsrc) does. pkgsrc also has some basic commands | | 505 | Packages Collection (pkgsrc) does. pkgsrc also has some basic commands |
505 | to handle binary packages, so that not every user has to build the | | 506 | to handle binary packages, so that not every user has to build the |
506 | packages for himself, which is a time-costly task.</p> | | 507 | packages for himself, which is a time-costly task.</p> |
507 | <p>pkgsrc currently contains several thousand packages, | | 508 | <p>pkgsrc currently contains several thousand packages, |
508 | including:</p> | | 509 | including:</p> |
509 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 510 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
510 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/apache/README.html" target="_top"><code class="filename">www/apache</code></a> - The Apache | | 511 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/apache/README.html" target="_top"><code class="filename">www/apache</code></a> - The Apache |
511 | web server</p></li> | | 512 | web server</p></li> |
512 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/firefox/README.html" target="_top"><code class="filename">www/firefox</code></a> - The Firefox | | 513 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/firefox/README.html" target="_top"><code class="filename">www/firefox</code></a> - The Firefox |
513 | web browser</p></li> | | 514 | web browser</p></li> |
514 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome/README.html" target="_top"><code class="filename">meta-pkgs/gnome</code></a> - The GNOME | | 515 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome/README.html" target="_top"><code class="filename">meta-pkgs/gnome</code></a> - The GNOME |
515 | Desktop Environment</p></li> | | 516 | Desktop Environment</p></li> |
516 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/kde3/README.html" target="_top"><code class="filename">meta-pkgs/kde3</code></a> - The K | | 517 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/kde3/README.html" target="_top"><code class="filename">meta-pkgs/kde3</code></a> - The K |
517 | Desktop Environment</p></li> | | 518 | Desktop Environment</p></li> |
518 | </ul></div> | | 519 | </ul></div> |
519 | <p>...just to name a few.</p> | | 520 | <p>...just to name a few.</p> |
520 | <p>pkgsrc has built-in support for handling varying dependencies, | | 521 | <p>pkgsrc has built-in support for handling varying dependencies, |
521 | such as pthreads and X11, and extended features such as IPv6 support on | | 522 | such as pthreads and X11, and extended features such as IPv6 support on |
522 | a range of platforms.</p> | | 523 | a range of platforms.</p> |
523 | <div class="sect2"> | | 524 | <div class="sect2"> |
524 | <div class="titlepage"><div><div><h3 class="title"> | | 525 | <div class="titlepage"><div><div><h3 class="title"> |
525 | <a name="why-pkgsrc"></a>1.1.1. Why pkgsrc?</h3></div></div></div> | | 526 | <a name="why-pkgsrc"></a>1.1.1. Why pkgsrc?</h3></div></div></div> |
526 | <p> | | 527 | <p> |
527 | pkgsrc provides the following key features: | | 528 | pkgsrc provides the following key features: |
528 | </p> | | 529 | </p> |
529 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 530 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
530 | <li class="listitem"><p>Easy building of software from source as well as the creation | | 531 | <li class="listitem"><p>Easy building of software from source as well as the creation |
531 | and installation of binary packages. The source and latest | | 532 | and installation of binary packages. The source and latest |
532 | patches are retrieved from a master or mirror download site, checksum | | 533 | patches are retrieved from a master or mirror download site, checksum |
533 | verified, then built on your system. Support for binary-only | | 534 | verified, then built on your system. Support for binary-only |
534 | distributions is available for both native platforms and NetBSD | | 535 | distributions is available for both native platforms and NetBSD |
535 | emulated platforms.</p></li> | | 536 | emulated platforms.</p></li> |
536 | <li class="listitem"><p>All packages are installed in a consistent directory tree, | | 537 | <li class="listitem"><p>All packages are installed in a consistent directory tree, |
537 | including binaries, libraries, man pages and other | | 538 | including binaries, libraries, man pages and other |
538 | documentation.</p></li> | | 539 | documentation.</p></li> |
539 | <li class="listitem"><p>Package dependencies, including when performing package updates, | | 540 | <li class="listitem"><p>Package dependencies, including when performing package updates, |
540 | are handled automatically. The configuration files of various | | 541 | are handled automatically. The configuration files of various |
541 | packages are handled automatically during updates, so local changes | | 542 | packages are handled automatically during updates, so local changes |
542 | are preserved.</p></li> | | 543 | are preserved.</p></li> |
543 | <li class="listitem"><p>Like NetBSD, pkgsrc is designed with portability in mind and | | 544 | <li class="listitem"><p>Like NetBSD, pkgsrc is designed with portability in mind and |
544 | consists of highly portable code. This allows the greatest speed of | | 545 | consists of highly portable code. This allows the greatest speed of |
545 | development when porting to a new platform. This portability also | | 546 | development when porting to a new platform. This portability also |
546 | ensures that pkgsrc is <span class="emphasis"><em>consistent across all | | 547 | ensures that pkgsrc is <span class="emphasis"><em>consistent across all |
547 | platforms</em></span>.</p></li> | | 548 | platforms</em></span>.</p></li> |
548 | <li class="listitem"><p>The installation prefix, acceptable software licenses, | | 549 | <li class="listitem"><p>The installation prefix, acceptable software licenses, |
549 | international encryption requirements and build-time options for a | | 550 | international encryption requirements and build-time options for a |
550 | large number of packages are all set in a simple, central | | 551 | large number of packages are all set in a simple, central |
551 | configuration file.</p></li> | | 552 | configuration file.</p></li> |
552 | <li class="listitem"><p>The entire source (not including the distribution files) is | | 553 | <li class="listitem"><p>The entire source (not including the distribution files) is |
553 | freely available under a BSD license, so you may extend and adapt | | 554 | freely available under a BSD license, so you may extend and adapt |
554 | pkgsrc to your needs. Support for local packages and patches is | | 555 | pkgsrc to your needs. Support for local packages and patches is |
555 | available right out of the box, so you can configure it specifically | | 556 | available right out of the box, so you can configure it specifically |
556 | for your environment.</p></li> | | 557 | for your environment.</p></li> |
557 | </ul></div> | | 558 | </ul></div> |
558 | <p>The following principles are basic to pkgsrc:</p> | | 559 | <p>The following principles are basic to pkgsrc:</p> |
559 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 560 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
560 | <li class="listitem"><p><span class="quote">“<span class="quote">It should only work if it's right.</span>”</span> | | 561 | <li class="listitem"><p><span class="quote">“<span class="quote">It should only work if it's right.</span>”</span> |
561 | — That means, if a package contains bugs, it's better to find | | 562 | — That means, if a package contains bugs, it's better to find |
562 | them and to complain about them rather than to just install the package | | 563 | them and to complain about them rather than to just install the package |
563 | and hope that it works. There are numerous checks in pkgsrc that try to | | 564 | and hope that it works. There are numerous checks in pkgsrc that try to |
564 | find such bugs: Static analysis tools (<a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>), build-time checks (portability | | 565 | find such bugs: Static analysis tools (<a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>), build-time checks (portability |
565 | of shell scripts), and post-installation checks (installed files, | | 566 | of shell scripts), and post-installation checks (installed files, |
566 | references to shared libraries, script interpreters).</p></li> | | 567 | references to shared libraries, script interpreters).</p></li> |
567 | <li class="listitem"><p><span class="quote">“<span class="quote">If it works, it should work everywhere</span>”</span> | | 568 | <li class="listitem"><p><span class="quote">“<span class="quote">If it works, it should work everywhere</span>”</span> |
568 | — Like NetBSD has been ported to many hardware architectures, | | 569 | — Like NetBSD has been ported to many hardware architectures, |
569 | pkgsrc has been ported to many operating systems. Care is taken that | | 570 | pkgsrc has been ported to many operating systems. Care is taken that |
570 | packages behave the same on all platforms.</p></li> | | 571 | packages behave the same on all platforms.</p></li> |
571 | </ul></div> | | 572 | </ul></div> |
572 | </div> | | 573 | </div> |
573 | <div class="sect2"> | | 574 | <div class="sect2"> |
574 | <div class="titlepage"><div><div><h3 class="title"> | | 575 | <div class="titlepage"><div><div><h3 class="title"> |
575 | <a name="intro.platforms"></a>1.1.2. Supported platforms</h3></div></div></div> | | 576 | <a name="intro.platforms"></a>1.1.2. Supported platforms</h3></div></div></div> |
576 | <p>pkgsrc consists of both a source distribution and a binary | | 577 | <p>pkgsrc consists of both a source distribution and a binary |
577 | distribution for these operating systems. After retrieving the required | | 578 | distribution for these operating systems. After retrieving the required |
578 | source or binaries, you can be up and running with pkgsrc in just | | 579 | source or binaries, you can be up and running with pkgsrc in just |
579 | minutes!</p> | | 580 | minutes!</p> |
580 | <p>pkgsrc was derived from FreeBSD's ports system, and | | 581 | <p>pkgsrc was derived from FreeBSD's ports system, and |
581 | initially developed for NetBSD only. Since then, pkgsrc has | | 582 | initially developed for NetBSD only. Since then, pkgsrc has |
582 | grown a lot, and now supports the following platforms:</p> | | 583 | grown a lot, and now supports the following platforms:</p> |
583 | <div class="table"> | | 584 | <div class="table"> |
584 | <a name="supported-platforms"></a><p class="title"><b>Table 1.1. Platforms supported by pkgsrc</b></p> | | 585 | <a name="supported-platforms"></a><p class="title"><b>Table 1.1. Platforms supported by pkgsrc</b></p> |
585 | <div class="table-contents"><table summary="Platforms supported by pkgsrc" border="1"> | | 586 | <div class="table-contents"><table summary="Platforms supported by pkgsrc" border="1"> |
586 | <colgroup> | | 587 | <colgroup> |
587 | <col> | | 588 | <col> |
588 | <col> | | 589 | <col> |
589 | </colgroup> | | 590 | </colgroup> |
590 | <thead><tr> | | 591 | <thead><tr> |
591 | <th>Platform</th> | | 592 | <th>Platform</th> |
592 | <th>Date Support Added</th> | | 593 | <th>Date Support Added</th> |
593 | </tr></thead> | | 594 | </tr></thead> |
594 | <tbody> | | 595 | <tbody> |
595 | <tr> | | 596 | <tr> |
596 | <td><a class="ulink" href="http://www.NetBSD.org/" target="_top">NetBSD</a></td> | | 597 | <td><a class="ulink" href="http://www.NetBSD.org/" target="_top">NetBSD</a></td> |
597 | <td align="center">Aug 1997</td> | | 598 | <td align="center">Aug 1997</td> |
598 | </tr> | | 599 | </tr> |
599 | <tr> | | 600 | <tr> |
600 | <td><a class="ulink" href="http://wwws.sun.com/software/solaris/" target="_top">Solaris</a></td> | | 601 | <td><a class="ulink" href="http://wwws.sun.com/software/solaris/" target="_top">Solaris</a></td> |
601 | <td align="center">Mar 1999</td> | | 602 | <td align="center">Mar 1999</td> |
602 | </tr> | | 603 | </tr> |
603 | <tr> | | 604 | <tr> |
604 | <td><a class="ulink" href="http://www.kernel.org/" target="_top">Linux</a></td> | | 605 | <td><a class="ulink" href="http://www.kernel.org/" target="_top">Linux</a></td> |
605 | <td align="center">Jun 1999</td> | | 606 | <td align="center">Jun 1999</td> |
606 | </tr> | | 607 | </tr> |
607 | <tr> | | 608 | <tr> |
608 | <td> | | 609 | <td> |
609 | <a class="ulink" href="http://developer.apple.com/darwin/" target="_top">Darwin</a> | | 610 | <a class="ulink" href="http://developer.apple.com/darwin/" target="_top">Darwin</a> |
610 | (<a class="ulink" href="http://developer.apple.com/macosx/" target="_top">Mac OS X</a>) | | 611 | (<a class="ulink" href="http://developer.apple.com/macosx/" target="_top">Mac OS X</a>) |
611 | </td> | | 612 | </td> |
612 | <td align="center">Oct 2001</td> | | 613 | <td align="center">Oct 2001</td> |
613 | </tr> | | 614 | </tr> |
614 | <tr> | | 615 | <tr> |
615 | <td><a class="ulink" href="http://www.freebsd.org/" target="_top">FreeBSD</a></td> | | 616 | <td><a class="ulink" href="http://www.freebsd.org/" target="_top">FreeBSD</a></td> |
616 | <td align="center">Nov 2002</td> | | 617 | <td align="center">Nov 2002</td> |
617 | </tr> | | 618 | </tr> |
618 | <tr> | | 619 | <tr> |
619 | <td><a class="ulink" href="http://www.openbsd.org/" target="_top">OpenBSD</a></td> | | 620 | <td><a class="ulink" href="http://www.openbsd.org/" target="_top">OpenBSD</a></td> |
620 | <td align="center">Nov 2002</td> | | 621 | <td align="center">Nov 2002</td> |
621 | </tr> | | 622 | </tr> |
622 | <tr> | | 623 | <tr> |
623 | <td><a class="ulink" href="http://www.sgi.com/software/irix/" target="_top">IRIX</a></td> | | 624 | <td><a class="ulink" href="http://www.sgi.com/software/irix/" target="_top">IRIX</a></td> |
624 | <td align="center">Dec 2002</td> | | 625 | <td align="center">Dec 2002</td> |
625 | </tr> | | 626 | </tr> |
626 | <tr> | | 627 | <tr> |
627 | <td>BSD/OS</td> | | 628 | <td>BSD/OS</td> |
628 | <td align="center">Dec 2003</td> | | 629 | <td align="center">Dec 2003</td> |
629 | </tr> | | 630 | </tr> |
630 | <tr> | | 631 | <tr> |
631 | <td><a class="ulink" href="http://www-1.ibm.com/servers/aix/" target="_top">AIX</a></td> | | 632 | <td><a class="ulink" href="http://www-1.ibm.com/servers/aix/" target="_top">AIX</a></td> |
632 | <td align="center">Dec 2003</td> | | 633 | <td align="center">Dec 2003</td> |
633 | </tr> | | 634 | </tr> |
634 | <tr> | | 635 | <tr> |
635 | <td> | | 636 | <td> |
636 | <a class="ulink" href="http://www.microsoft.com/windows/sfu/" target="_top">Interix</a> | | 637 | <a class="ulink" href="http://www.microsoft.com/windows/sfu/" target="_top">Interix</a> |
637 | (Microsoft Windows Services for Unix) | | 638 | (Microsoft Windows Services for Unix) |
638 | </td> | | 639 | </td> |
639 | <td align="center">Mar 2004</td> | | 640 | <td align="center">Mar 2004</td> |
640 | </tr> | | 641 | </tr> |
641 | <tr> | | 642 | <tr> |
642 | <td><a class="ulink" href="http://www.dragonflybsd.org/" target="_top">DragonFlyBSD</a></td> | | 643 | <td><a class="ulink" href="http://www.dragonflybsd.org/" target="_top">DragonFlyBSD</a></td> |
643 | <td align="center">Oct 2004</td> | | 644 | <td align="center">Oct 2004</td> |
644 | </tr> | | 645 | </tr> |
645 | <tr> | | 646 | <tr> |
646 | <td><a class="ulink" href="http://www.tru64.org/" target="_top">OSF/1</a></td> | | 647 | <td><a class="ulink" href="http://www.tru64.org/" target="_top">OSF/1</a></td> |
647 | <td align="center">Nov 2004</td> | | 648 | <td align="center">Nov 2004</td> |
648 | </tr> | | 649 | </tr> |
649 | <tr> | | 650 | <tr> |
650 | <td><a class="ulink" href="http://www.hp.com/products1/unix/" target="_top">HP-UX</a></td> | | 651 | <td><a class="ulink" href="http://www.hp.com/products1/unix/" target="_top">HP-UX</a></td> |
651 | <td align="center">Apr 2007</td> | | 652 | <td align="center">Apr 2007</td> |
652 | </tr> | | 653 | </tr> |
653 | <tr> | | 654 | <tr> |
654 | <td><a class="ulink" href="http://www.haiku-os.org/" target="_top">Haiku</a></td> | | 655 | <td><a class="ulink" href="http://www.haiku-os.org/" target="_top">Haiku</a></td> |
655 | <td align="center">Sep 2010</td> | | 656 | <td align="center">Sep 2010</td> |
656 | </tr> | | 657 | </tr> |
657 | <tr> | | 658 | <tr> |
658 | <td><a class="ulink" href="http://www.mirbsd.org/" target="_top">MirBSD</a></td> | | 659 | <td><a class="ulink" href="http://www.mirbsd.org/" target="_top">MirBSD</a></td> |
659 | <td align="center">Jan 2011</td> | | 660 | <td align="center">Jan 2011</td> |
660 | </tr> | | 661 | </tr> |
661 | <tr> | | 662 | <tr> |
662 | <td><a class="ulink" href="http://www.minix3.org/" target="_top">Minix3</a></td> | | 663 | <td><a class="ulink" href="http://www.minix3.org/" target="_top">Minix3</a></td> |
663 | <td align="center">Nov 2011</td> | | 664 | <td align="center">Nov 2011</td> |
664 | </tr> | | 665 | </tr> |
665 | <tr> | | 666 | <tr> |
666 | <td><a class="ulink" href="http://cygwin.com/" target="_top">Cygwin</a></td> | | 667 | <td><a class="ulink" href="http://cygwin.com/" target="_top">Cygwin</a></td> |
667 | <td align="center">Mar 2013</td> | | 668 | <td align="center">Mar 2013</td> |
668 | </tr> | | 669 | </tr> |
669 | <tr> | | 670 | <tr> |
670 | <td><a class="ulink" href="http://www.debian.org/ports/kfreebsd-gnu/" target="_top">GNU/kFreeBSD</a></td> | | 671 | <td><a class="ulink" href="http://www.debian.org/ports/kfreebsd-gnu/" target="_top">GNU/kFreeBSD</a></td> |
671 | <td align="center">Jul 2013</td> | | 672 | <td align="center">Jul 2013</td> |
672 | </tr> | | 673 | </tr> |
673 | </tbody> | | 674 | </tbody> |
674 | </table></div> | | 675 | </table></div> |
675 | </div> | | 676 | </div> |
676 | <br class="table-break"> | | 677 | <br class="table-break"> |
677 | </div> | | 678 | </div> |
678 | </div> | | 679 | </div> |
679 | <div class="sect1"> | | 680 | <div class="sect1"> |
680 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 681 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
681 | <a name="overview"></a>1.2. Overview</h2></div></div></div> | | 682 | <a name="overview"></a>1.2. Overview</h2></div></div></div> |
682 | <p>This document is divided into three parts. The first, | | 683 | <p>This document is divided into three parts. The first, |
683 | <a class="link" href="#users-guide" title="Part I. The pkgsrc user's guide">The pkgsrc user's guide</a>, | | 684 | <a class="link" href="#users-guide" title="Part I. The pkgsrc user's guide">The pkgsrc user's guide</a>, |
684 | describes how one can use one of the packages in the Package | | 685 | describes how one can use one of the packages in the Package |
685 | Collection, either by installing a precompiled binary package, | | 686 | Collection, either by installing a precompiled binary package, |
686 | or by building one's own copy using the NetBSD package system. | | 687 | or by building one's own copy using the NetBSD package system. |
687 | The second part, <a class="link" href="#developers-guide" title="Part II. The pkgsrc developer's guide">The pkgsrc developer's guide</a>, explains how to prepare a | | 688 | The second part, <a class="link" href="#developers-guide" title="Part II. The pkgsrc developer's guide">The pkgsrc developer's guide</a>, explains how to prepare a |
688 | package so it can be easily built by other NetBSD users without | | 689 | package so it can be easily built by other NetBSD users without |
689 | knowing about the package's building details. The third part, | | 690 | knowing about the package's building details. The third part, |
690 | <a class="link" href="#infrastructure" title="Part III. The pkgsrc infrastructure internals">The pkgsrc infrastructure internals</a> | | 691 | <a class="link" href="#infrastructure" title="Part III. The pkgsrc infrastructure internals">The pkgsrc infrastructure internals</a> |
691 | is intended for those who want to understand how pkgsrc is | | 692 | is intended for those who want to understand how pkgsrc is |
692 | implemented.</p> | | 693 | implemented.</p> |
693 | <p>This document is available in various formats: | | 694 | <p>This document is available in various formats: |
694 | <span class="simplelist"><a class="ulink" href="index.html" target="_top">HTML</a>, <a class="ulink" href="pkgsrc.pdf" target="_top">PDF</a>, <a class="ulink" href="pkgsrc.ps" target="_top">PS</a>, <a class="ulink" href="pkgsrc.txt" target="_top">TXT</a></span>.</p> | | 695 | <span class="simplelist"><a class="ulink" href="index.html" target="_top">HTML</a>, <a class="ulink" href="pkgsrc.pdf" target="_top">PDF</a>, <a class="ulink" href="pkgsrc.ps" target="_top">PS</a>, <a class="ulink" href="pkgsrc.txt" target="_top">TXT</a></span>.</p> |
695 | </div> | | 696 | </div> |
696 | <div class="sect1"> | | 697 | <div class="sect1"> |
697 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 698 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
698 | <a name="terminology"></a>1.3. Terminology</h2></div></div></div> | | 699 | <a name="terminology"></a>1.3. Terminology</h2></div></div></div> |
699 | <p>There has been a lot of talk about <span class="quote">“<span class="quote">ports</span>”</span>, | | 700 | <p>There has been a lot of talk about <span class="quote">“<span class="quote">ports</span>”</span>, |
700 | <span class="quote">“<span class="quote">packages</span>”</span>, etc. so far. Here is a description of all the | | 701 | <span class="quote">“<span class="quote">packages</span>”</span>, etc. so far. Here is a description of all the |
701 | terminology used within this document.</p> | | 702 | terminology used within this document.</p> |
702 | <div class="variablelist"><dl class="variablelist"> | | 703 | <div class="variablelist"><dl class="variablelist"> |
703 | <dt><span class="term">Package</span></dt> | | 704 | <dt><span class="term">Package</span></dt> |
704 | <dd><p>A set of files and building instructions | | 705 | <dd><p>A set of files and building instructions |
705 | that describe what's necessary | | 706 | that describe what's necessary |
706 | to build a certain piece of software using | | 707 | to build a certain piece of software using |
707 | pkgsrc. Packages are traditionally stored under | | 708 | pkgsrc. Packages are traditionally stored under |
708 | <code class="filename">/usr/pkgsrc</code>.</p></dd> | | 709 | <code class="filename">/usr/pkgsrc</code>.</p></dd> |
709 | <dt><span class="term">The NetBSD package system</span></dt> | | 710 | <dt><span class="term">The NetBSD package system</span></dt> |
710 | <dd><p>This is the former name of <span class="quote">“<span class="quote">pkgsrc</span>”</span>. It | | 711 | <dd><p>This is the former name of <span class="quote">“<span class="quote">pkgsrc</span>”</span>. It |
711 | is part of the NetBSD operating system and can be bootstrapped | | 712 | is part of the NetBSD operating system and can be bootstrapped |
712 | to run on non-NetBSD operating systems as well. It handles | | 713 | to run on non-NetBSD operating systems as well. It handles |
713 | building (compiling), installing, and removing of | | 714 | building (compiling), installing, and removing of |
714 | packages.</p></dd> | | 715 | packages.</p></dd> |
715 | <dt><span class="term">Distfile</span></dt> | | 716 | <dt><span class="term">Distfile</span></dt> |
716 | <dd><p>This term describes the file or files that are | | 717 | <dd><p>This term describes the file or files that are |
717 | provided by the author of the piece of software to | | 718 | provided by the author of the piece of software to |
718 | distribute his work. All the changes necessary to build on | | 719 | distribute his work. All the changes necessary to build on |
719 | NetBSD are reflected in the corresponding package. Usually | | 720 | NetBSD are reflected in the corresponding package. Usually |
720 | the distfile is in the form of a compressed tar-archive, | | 721 | the distfile is in the form of a compressed tar-archive, |
721 | but other types are possible, too. Distfiles are usually | | 722 | but other types are possible, too. Distfiles are usually |
722 | stored below | | 723 | stored below |
723 | <code class="filename">/usr/pkgsrc/distfiles</code>.</p></dd> | | 724 | <code class="filename">/usr/pkgsrc/distfiles</code>.</p></dd> |
724 | <dt><span class="term">Port</span></dt> | | 725 | <dt><span class="term">Port</span></dt> |
725 | <dd><p>This is the term used by FreeBSD and OpenBSD people | | 726 | <dd><p>This is the term used by FreeBSD and OpenBSD people |
726 | for what we call a package. | | 727 | for what we call a package. |
727 | In NetBSD terminology, <span class="quote">“<span class="quote">port</span>”</span> refers to a different | | 728 | In NetBSD terminology, <span class="quote">“<span class="quote">port</span>”</span> refers to a different |
728 | architecture.</p></dd> | | 729 | architecture.</p></dd> |
729 | <dt><span class="term">Precompiled/binary package</span></dt> | | 730 | <dt><span class="term">Precompiled/binary package</span></dt> |
730 | <dd> | | 731 | <dd> |
731 | <p>A set of binaries built with pkgsrc from a distfile | | 732 | <p>A set of binaries built with pkgsrc from a distfile |
732 | and stuffed together in a single <code class="filename">.tgz</code> | | 733 | and stuffed together in a single <code class="filename">.tgz</code> |
733 | file so it can be installed on machines of the same | | 734 | file so it can be installed on machines of the same |
734 | machine architecture without the need to | | 735 | machine architecture without the need to |
735 | recompile. Packages are usually generated in | | 736 | recompile. Packages are usually generated in |
736 | <code class="filename">/usr/pkgsrc/packages</code>; there is also | | 737 | <code class="filename">/usr/pkgsrc/packages</code>; there is also |
737 | an archive on <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/" target="_top">ftp.NetBSD.org</a>.</p> | | 738 | an archive on <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/" target="_top">ftp.NetBSD.org</a>.</p> |
738 | <p>Sometimes, this is referred to by the term <span class="quote">“<span class="quote">package</span>”</span> too, | | 739 | <p>Sometimes, this is referred to by the term <span class="quote">“<span class="quote">package</span>”</span> too, |
739 | especially in the context of precompiled packages.</p> | | 740 | especially in the context of precompiled packages.</p> |
740 | </dd> | | 741 | </dd> |
741 | <dt><span class="term">Program</span></dt> | | 742 | <dt><span class="term">Program</span></dt> |
742 | <dd><p>The piece of software to be installed which will be | | 743 | <dd><p>The piece of software to be installed which will be |
743 | constructed from all the files in the distfile by the | | 744 | constructed from all the files in the distfile by the |
744 | actions defined in the corresponding package.</p></dd> | | 745 | actions defined in the corresponding package.</p></dd> |
745 | </dl></div> | | 746 | </dl></div> |
746 | <div class="sect2"> | | 747 | <div class="sect2"> |
747 | <div class="titlepage"><div><div><h3 class="title"> | | 748 | <div class="titlepage"><div><div><h3 class="title"> |
748 | <a name="term.roles"></a>1.3.1. Roles involved in pkgsrc</h3></div></div></div> | | 749 | <a name="term.roles"></a>1.3.1. Roles involved in pkgsrc</h3></div></div></div> |
749 | <div class="variablelist"><dl class="variablelist"> | | 750 | <div class="variablelist"><dl class="variablelist"> |
750 | <dt><span class="term">pkgsrc users</span></dt> | | 751 | <dt><span class="term">pkgsrc users</span></dt> |
751 | <dd> | | 752 | <dd> |
752 | <p>The | | 753 | <p>The |
753 | pkgsrc users are people who use the packages provided by pkgsrc. | | 754 | pkgsrc users are people who use the packages provided by pkgsrc. |
754 | Typically they are system administrators. The people using the | | 755 | Typically they are system administrators. The people using the |
755 | software that is inside the packages (maybe called <span class="quote">“<span class="quote">end | | 756 | software that is inside the packages (maybe called <span class="quote">“<span class="quote">end |
756 | users</span>”</span>) are not covered by the pkgsrc guide.</p> | | 757 | users</span>”</span>) are not covered by the pkgsrc guide.</p> |
757 | <p>There are two kinds of pkgsrc users: Some only want to | | 758 | <p>There are two kinds of pkgsrc users: Some only want to |
758 | install pre-built binary packages. Others build the pkgsrc | | 759 | install pre-built binary packages. Others build the pkgsrc |
759 | packages from source, either for installing them directly or for | | 760 | packages from source, either for installing them directly or for |
760 | building binary packages themselves. For pkgsrc users <a class="xref" href="#users-guide" title="Part I. The pkgsrc user's guide">Part I, “The pkgsrc user's guide”</a> should provide all necessary | | 761 | building binary packages themselves. For pkgsrc users <a class="xref" href="#users-guide" title="Part I. The pkgsrc user's guide">Part I, “The pkgsrc user's guide”</a> should provide all necessary |
761 | documentation.</p> | | 762 | documentation.</p> |
762 | </dd> | | 763 | </dd> |
763 | <dt><span class="term">package maintainers</span></dt> | | 764 | <dt><span class="term">package maintainers</span></dt> |
764 | <dd><p>A | | 765 | <dd><p>A |
765 | package maintainer creates packages as described in <a class="xref" href="#developers-guide" title="Part II. The pkgsrc developer's guide">Part II, “The pkgsrc developer's guide”</a>.</p></dd> | | 766 | package maintainer creates packages as described in <a class="xref" href="#developers-guide" title="Part II. The pkgsrc developer's guide">Part II, “The pkgsrc developer's guide”</a>.</p></dd> |
766 | <dt><span class="term">infrastructure developers</span></dt> | | 767 | <dt><span class="term">infrastructure developers</span></dt> |
767 | <dd><p>These people are involved in all those files | | 768 | <dd><p>These people are involved in all those files |
768 | that live in the <code class="filename">mk/</code> directory and below. | | 769 | that live in the <code class="filename">mk/</code> directory and below. |
769 | Only these people should need to read through <a class="xref" href="#infrastructure" title="Part III. The pkgsrc infrastructure internals">Part III, “The pkgsrc infrastructure internals”</a>, though others might be curious, | | 770 | Only these people should need to read through <a class="xref" href="#infrastructure" title="Part III. The pkgsrc infrastructure internals">Part III, “The pkgsrc infrastructure internals”</a>, though others might be curious, |
770 | too.</p></dd> | | 771 | too.</p></dd> |
771 | </dl></div> | | 772 | </dl></div> |
772 | </div> | | 773 | </div> |
773 | </div> | | 774 | </div> |
774 | <div class="sect1"> | | 775 | <div class="sect1"> |
775 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 776 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
776 | <a name="typography"></a>1.4. Typography</h2></div></div></div> | | 777 | <a name="typography"></a>1.4. Typography</h2></div></div></div> |
777 | <p>When giving examples for commands, shell prompts are used to | | 778 | <p>When giving examples for commands, shell prompts are used to |
778 | show if the command should/can be issued as root, or if | | 779 | show if the command should/can be issued as root, or if |
779 | <span class="quote">“<span class="quote">normal</span>”</span> user privileges are sufficient. We use a | | 780 | <span class="quote">“<span class="quote">normal</span>”</span> user privileges are sufficient. We use a |
780 | <code class="prompt">#</code> for root's shell prompt, and a <code class="prompt">%</code> for users' | | 781 | <code class="prompt">#</code> for root's shell prompt, and a <code class="prompt">%</code> for users' |
781 | shell prompt, assuming they use the C-shell or tcsh.</p> | | 782 | shell prompt, assuming they use the C-shell or tcsh.</p> |
782 | </div> | | 783 | </div> |
783 | </div> | | 784 | </div> |
784 | <div class="part"> | | 785 | <div class="part"> |
785 | <div class="titlepage"><div><div><h1 class="title"> | | 786 | <div class="titlepage"><div><div><h1 class="title"> |
786 | <a name="users-guide"></a>Part I. The pkgsrc user's guide</h1></div></div></div> | | 787 | <a name="users-guide"></a>Part I. The pkgsrc user's guide</h1></div></div></div> |
787 | <div class="toc"> | | 788 | <div class="toc"> |
788 | <p><b>Table of Contents</b></p> | | 789 | <p><b>Table of Contents</b></p> |
789 | <dl> | | 790 | <dl> |
790 | <dt><span class="chapter"><a href="#getting">2. Where to get pkgsrc and how to keep it up-to-date</a></span></dt> | | 791 | <dt><span class="chapter"><a href="#getting">2. Where to get pkgsrc and how to keep it up-to-date</a></span></dt> |
791 | <dd><dl> | | 792 | <dd><dl> |
792 | <dt><span class="sect1"><a href="#getting-first">2.1. Getting pkgsrc for the first time</a></span></dt> | | 793 | <dt><span class="sect1"><a href="#getting-first">2.1. Getting pkgsrc for the first time</a></span></dt> |
793 | <dd><dl> | | 794 | <dd><dl> |
794 | <dt><span class="sect2"><a href="#getting-via-tar">2.1.1. As tar archive</a></span></dt> | | 795 | <dt><span class="sect2"><a href="#getting-via-tar">2.1.1. As tar archive</a></span></dt> |
795 | <dt><span class="sect2"><a href="#getting-via-cvs">2.1.2. Via anonymous CVS</a></span></dt> | | 796 | <dt><span class="sect2"><a href="#getting-via-cvs">2.1.2. Via anonymous CVS</a></span></dt> |
796 | </dl></dd> | | 797 | </dl></dd> |
797 | <dt><span class="sect1"><a href="#uptodate">2.2. Keeping pkgsrc up-to-date</a></span></dt> | | 798 | <dt><span class="sect1"><a href="#uptodate">2.2. Keeping pkgsrc up-to-date</a></span></dt> |
798 | <dd><dl> | | 799 | <dd><dl> |
799 | <dt><span class="sect2"><a href="#uptodate-tar">2.2.1. Via tar files</a></span></dt> | | 800 | <dt><span class="sect2"><a href="#uptodate-tar">2.2.1. Via tar files</a></span></dt> |
800 | <dt><span class="sect2"><a href="#uptodate-cvs">2.2.2. Via CVS</a></span></dt> | | 801 | <dt><span class="sect2"><a href="#uptodate-cvs">2.2.2. Via CVS</a></span></dt> |
801 | </dl></dd> | | 802 | </dl></dd> |
802 | </dl></dd> | | 803 | </dl></dd> |
803 | <dt><span class="chapter"><a href="#platforms">3. Using pkgsrc on systems other than NetBSD</a></span></dt> | | 804 | <dt><span class="chapter"><a href="#platforms">3. Using pkgsrc on systems other than NetBSD</a></span></dt> |
804 | <dd><dl> | | 805 | <dd><dl> |
805 | <dt><span class="sect1"><a href="#binarydist">3.1. Binary distribution</a></span></dt> | | 806 | <dt><span class="sect1"><a href="#binarydist">3.1. Binary distribution</a></span></dt> |
806 | <dt><span class="sect1"><a href="#bootstrapping-pkgsrc">3.2. Bootstrapping pkgsrc</a></span></dt> | | 807 | <dt><span class="sect1"><a href="#bootstrapping-pkgsrc">3.2. Bootstrapping pkgsrc</a></span></dt> |
807 | <dt><span class="sect1"><a href="#platform-specific-notes">3.3. Platform-specific notes</a></span></dt> | | 808 | <dt><span class="sect1"><a href="#platform-specific-notes">3.3. Platform-specific notes</a></span></dt> |
808 | <dd><dl> | | 809 | <dd><dl> |
809 | <dt><span class="sect2"><a href="#cygwin">3.3.1. Cygwin</a></span></dt> | | 810 | <dt><span class="sect2"><a href="#cygwin">3.3.1. Cygwin</a></span></dt> |
810 | <dt><span class="sect2"><a href="#darwin">3.3.2. Darwin (Mac OS X)</a></span></dt> | | 811 | <dt><span class="sect2"><a href="#darwin">3.3.2. Darwin (Mac OS X)</a></span></dt> |
811 | <dt><span class="sect2"><a href="#freebsd">3.3.3. FreeBSD</a></span></dt> | | 812 | <dt><span class="sect2"><a href="#freebsd">3.3.3. FreeBSD</a></span></dt> |
812 | <dt><span class="sect2"><a href="#gnukfreebsd">3.3.4. GNU/kFreeBSD</a></span></dt> | | 813 | <dt><span class="sect2"><a href="#gnukfreebsd">3.3.4. GNU/kFreeBSD</a></span></dt> |
813 | <dt><span class="sect2"><a href="#interix">3.3.5. Interix</a></span></dt> | | 814 | <dt><span class="sect2"><a href="#interix">3.3.5. Interix</a></span></dt> |
814 | <dt><span class="sect2"><a href="#irix">3.3.6. IRIX</a></span></dt> | | 815 | <dt><span class="sect2"><a href="#irix">3.3.6. IRIX</a></span></dt> |
815 | <dt><span class="sect2"><a href="#linux">3.3.7. Linux</a></span></dt> | | 816 | <dt><span class="sect2"><a href="#linux">3.3.7. Linux</a></span></dt> |
816 | <dt><span class="sect2"><a href="#mirbsd">3.3.8. MirBSD</a></span></dt> | | 817 | <dt><span class="sect2"><a href="#mirbsd">3.3.8. MirBSD</a></span></dt> |
817 | <dt><span class="sect2"><a href="#openbsd">3.3.9. OpenBSD</a></span></dt> | | 818 | <dt><span class="sect2"><a href="#openbsd">3.3.9. OpenBSD</a></span></dt> |
818 | <dt><span class="sect2"><a href="#solaris">3.3.10. Solaris</a></span></dt> | | 819 | <dt><span class="sect2"><a href="#solaris">3.3.10. Solaris</a></span></dt> |
819 | </dl></dd> | | 820 | </dl></dd> |
820 | </dl></dd> | | 821 | </dl></dd> |
821 | <dt><span class="chapter"><a href="#using">4. Using pkgsrc</a></span></dt> | | 822 | <dt><span class="chapter"><a href="#using">4. Using pkgsrc</a></span></dt> |
822 | <dd><dl> | | 823 | <dd><dl> |
823 | <dt><span class="sect1"><a href="#using-pkg">4.1. Using binary packages</a></span></dt> | | 824 | <dt><span class="sect1"><a href="#using-pkg">4.1. Using binary packages</a></span></dt> |
824 | <dd><dl> | | 825 | <dd><dl> |
825 | <dt><span class="sect2"><a href="#finding-binary-packages">4.1.1. Finding binary packages</a></span></dt> | | 826 | <dt><span class="sect2"><a href="#finding-binary-packages">4.1.1. Finding binary packages</a></span></dt> |
826 | <dt><span class="sect2"><a href="#installing-binary-packages">4.1.2. Installing binary packages</a></span></dt> | | 827 | <dt><span class="sect2"><a href="#installing-binary-packages">4.1.2. Installing binary packages</a></span></dt> |
827 | <dt><span class="sect2"><a href="#using.pkg_delete">4.1.3. Deinstalling packages</a></span></dt> | | 828 | <dt><span class="sect2"><a href="#using.pkg_delete">4.1.3. Deinstalling packages</a></span></dt> |
828 | <dt><span class="sect2"><a href="#using.pkg_info">4.1.4. Getting information about installed packages</a></span></dt> | | 829 | <dt><span class="sect2"><a href="#using.pkg_info">4.1.4. Getting information about installed packages</a></span></dt> |
829 | <dt><span class="sect2"><a href="#vulnerabilities">4.1.5. Checking for security vulnerabilities in installed packages</a></span></dt> | | 830 | <dt><span class="sect2"><a href="#vulnerabilities">4.1.5. Checking for security vulnerabilities in installed packages</a></span></dt> |
830 | <dt><span class="sect2"><a href="#pkg_versions">4.1.6. Finding if newer versions of your installed packages are in pkgsrc</a></span></dt> | | 831 | <dt><span class="sect2"><a href="#pkg_versions">4.1.6. Finding if newer versions of your installed packages are in pkgsrc</a></span></dt> |
831 | <dt><span class="sect2"><a href="#using.pkg_admin">4.1.7. Other administrative functions</a></span></dt> | | 832 | <dt><span class="sect2"><a href="#using.pkg_admin">4.1.7. Other administrative functions</a></span></dt> |
832 | <dt><span class="sect2"><a href="#a-word-of-warning">4.1.8. A word of warning</a></span></dt> | | 833 | <dt><span class="sect2"><a href="#a-word-of-warning">4.1.8. A word of warning</a></span></dt> |
833 | </dl></dd> | | 834 | </dl></dd> |
834 | <dt><span class="sect1"><a href="#building-packages-from-source">4.2. Building packages from source</a></span></dt> | | 835 | <dt><span class="sect1"><a href="#building-packages-from-source">4.2. Building packages from source</a></span></dt> |
835 | <dd><dl> | | 836 | <dd><dl> |
836 | <dt><span class="sect2"><a href="#requirements">4.2.1. Requirements</a></span></dt> | | 837 | <dt><span class="sect2"><a href="#requirements">4.2.1. Requirements</a></span></dt> |
837 | <dt><span class="sect2"><a href="#fetching-distfiles">4.2.2. Fetching distfiles</a></span></dt> | | 838 | <dt><span class="sect2"><a href="#fetching-distfiles">4.2.2. Fetching distfiles</a></span></dt> |
838 | <dt><span class="sect2"><a href="#how-to-build-and-install">4.2.3. How to build and install</a></span></dt> | | 839 | <dt><span class="sect2"><a href="#how-to-build-and-install">4.2.3. How to build and install</a></span></dt> |
839 | </dl></dd> | | 840 | </dl></dd> |
840 | </dl></dd> | | 841 | </dl></dd> |
841 | <dt><span class="chapter"><a href="#configuring">5. Configuring pkgsrc</a></span></dt> | | 842 | <dt><span class="chapter"><a href="#configuring">5. Configuring pkgsrc</a></span></dt> |
842 | <dd><dl> | | 843 | <dd><dl> |
843 | <dt><span class="sect1"><a href="#general-configuration">5.1. General configuration</a></span></dt> | | 844 | <dt><span class="sect1"><a href="#general-configuration">5.1. General configuration</a></span></dt> |
844 | <dt><span class="sect1"><a href="#variables-affecting-build">5.2. Variables affecting the build process</a></span></dt> | | 845 | <dt><span class="sect1"><a href="#variables-affecting-build">5.2. Variables affecting the build process</a></span></dt> |
845 | <dt><span class="sect1"><a href="#variables-affecting-installation">5.3. Variables affecting the installation process</a></span></dt> | | 846 | <dt><span class="sect1"><a href="#variables-affecting-installation">5.3. Variables affecting the installation process</a></span></dt> |
846 | <dt><span class="sect1"><a href="#conf.compiler">5.4. Selecting and configuring the compiler</a></span></dt> | | 847 | <dt><span class="sect1"><a href="#conf.compiler">5.4. Selecting and configuring the compiler</a></span></dt> |
847 | <dd><dl> | | 848 | <dd><dl> |
848 | <dt><span class="sect2"><a href="#selecting-the-compiler">5.4.1. Selecting the compiler</a></span></dt> | | 849 | <dt><span class="sect2"><a href="#selecting-the-compiler">5.4.1. Selecting the compiler</a></span></dt> |
849 | <dt><span class="sect2"><a href="#conf.cflags">5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</a></span></dt> | | 850 | <dt><span class="sect2"><a href="#conf.cflags">5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</a></span></dt> |
850 | <dt><span class="sect2"><a href="#conf.ldflags">5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</a></span></dt> | | 851 | <dt><span class="sect2"><a href="#conf.ldflags">5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</a></span></dt> |
851 | </dl></dd> | | 852 | </dl></dd> |
852 | <dt><span class="sect1"><a href="#developer-advanced-settings">5.5. Developer/advanced settings</a></span></dt> | | 853 | <dt><span class="sect1"><a href="#developer-advanced-settings">5.5. Developer/advanced settings</a></span></dt> |
853 | <dt><span class="sect1"><a href="#selecting-build-options">5.6. Selecting Build Options</a></span></dt> | | 854 | <dt><span class="sect1"><a href="#selecting-build-options">5.6. Selecting Build Options</a></span></dt> |
854 | </dl></dd> | | 855 | </dl></dd> |
855 | <dt><span class="chapter"><a href="#binary">6. Creating binary packages</a></span></dt> | | 856 | <dt><span class="chapter"><a href="#binary">6. Creating binary packages</a></span></dt> |
856 | <dd><dl> | | 857 | <dd><dl> |
857 | <dt><span class="sect1"><a href="#building-a-single-binary-package">6.1. Building a single binary package</a></span></dt> | | 858 | <dt><span class="sect1"><a href="#building-a-single-binary-package">6.1. Building a single binary package</a></span></dt> |
858 | <dt><span class="sect1"><a href="#settings-for-creationg-of-binary-packages">6.2. Settings for creation of binary packages</a></span></dt> | | 859 | <dt><span class="sect1"><a href="#settings-for-creationg-of-binary-packages">6.2. Settings for creation of binary packages</a></span></dt> |
859 | </dl></dd> | | 860 | </dl></dd> |
860 | <dt><span class="chapter"><a href="#bulk">7. Creating binary packages for everything in pkgsrc (bulk | | 861 | <dt><span class="chapter"><a href="#bulk">7. Creating binary packages for everything in pkgsrc (bulk |
861 | builds)</a></span></dt> | | 862 | builds)</a></span></dt> |
862 | <dd><dl> | | 863 | <dd><dl> |
863 | <dt><span class="sect1"><a href="#bulk.pre">7.1. Preparations</a></span></dt> | | 864 | <dt><span class="sect1"><a href="#bulk.pre">7.1. Preparations</a></span></dt> |
864 | <dt><span class="sect1"><a href="#bulk.pbulk">7.2. Running a pbulk-style bulk build</a></span></dt> | | 865 | <dt><span class="sect1"><a href="#bulk.pbulk">7.2. Running a pbulk-style bulk build</a></span></dt> |
865 | <dd><dl><dt><span class="sect2"><a href="#bulk.pbulk.conf">7.2.1. Configuration</a></span></dt></dl></dd> | | 866 | <dd><dl><dt><span class="sect2"><a href="#bulk.pbulk.conf">7.2.1. Configuration</a></span></dt></dl></dd> |
866 | <dt><span class="sect1"><a href="#bulk.req">7.3. Requirements of a full bulk build</a></span></dt> | | 867 | <dt><span class="sect1"><a href="#bulk.req">7.3. Requirements of a full bulk build</a></span></dt> |
867 | <dt><span class="sect1"><a href="#creating-cdroms">7.4. Creating a multiple CD-ROM packages collection</a></span></dt> | | 868 | <dt><span class="sect1"><a href="#creating-cdroms">7.4. Creating a multiple CD-ROM packages collection</a></span></dt> |
868 | <dd><dl><dt><span class="sect2"><a href="#cdpack-example">7.4.1. Example of cdpack</a></span></dt></dl></dd> | | 869 | <dd><dl><dt><span class="sect2"><a href="#cdpack-example">7.4.1. Example of cdpack</a></span></dt></dl></dd> |
869 | </dl></dd> | | 870 | </dl></dd> |
870 | <dt><span class="chapter"><a href="#files">8. Directory layout of the installed files</a></span></dt> | | 871 | <dt><span class="chapter"><a href="#files">8. Directory layout of the installed files</a></span></dt> |
871 | <dd><dl> | | 872 | <dd><dl> |
872 | <dt><span class="sect1"><a href="#files.localbase">8.1. File system layout in <code class="literal">${LOCALBASE}</code></a></span></dt> | | 873 | <dt><span class="sect1"><a href="#files.localbase">8.1. File system layout in <code class="literal">${LOCALBASE}</code></a></span></dt> |
873 | <dt><span class="sect1"><a href="#files.varbase">8.2. File system layout in <code class="literal">${VARBASE}</code></a></span></dt> | | 874 | <dt><span class="sect1"><a href="#files.varbase">8.2. File system layout in <code class="literal">${VARBASE}</code></a></span></dt> |
874 | </dl></dd> | | 875 | </dl></dd> |
875 | <dt><span class="chapter"><a href="#faq">9. Frequently Asked Questions</a></span></dt> | | 876 | <dt><span class="chapter"><a href="#faq">9. Frequently Asked Questions</a></span></dt> |
876 | <dd><dl> | | 877 | <dd><dl> |
877 | <dt><span class="sect1"><a href="#mailing-list-pointers">9.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> | | 878 | <dt><span class="sect1"><a href="#mailing-list-pointers">9.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> |
878 | <dt><span class="sect1"><a href="#faq-pkgtools">9.2. Utilities for package management (pkgtools)</a></span></dt> | | 879 | <dt><span class="sect1"><a href="#pkgviews-docs">9.2. Where's the pkgviews documentation?</a></span></dt> |
879 | <dt><span class="sect1"><a href="#non-root-pkgsrc">9.3. How to use pkgsrc as non-root</a></span></dt> | | 880 | <dt><span class="sect1"><a href="#faq-pkgtools">9.3. Utilities for package management (pkgtools)</a></span></dt> |
880 | <dt><span class="sect1"><a href="#resume-transfers">9.4. How to resume transfers when fetching distfiles?</a></span></dt> | | 881 | <dt><span class="sect1"><a href="#non-root-pkgsrc">9.4. How to use pkgsrc as non-root</a></span></dt> |
881 | <dt><span class="sect1"><a href="#x.org-from-pkgsrc">9.5. How can I install/use modular X.org from pkgsrc?</a></span></dt> | | 882 | <dt><span class="sect1"><a href="#resume-transfers">9.5. How to resume transfers when fetching distfiles?</a></span></dt> |
882 | <dt><span class="sect1"><a href="#fetch-behind-firewall">9.6. How to fetch files from behind a firewall</a></span></dt> | | 883 | <dt><span class="sect1"><a href="#x.org-from-pkgsrc">9.6. How can I install/use modular X.org from pkgsrc?</a></span></dt> |
883 | <dt><span class="sect1"><a href="#fetch-https">9.7. How to fetch files from HTTPS sites</a></span></dt> | | 884 | <dt><span class="sect1"><a href="#fetch-behind-firewall">9.7. How to fetch files from behind a firewall</a></span></dt> |
884 | <dt><span class="sect1"><a href="#passive-ftp">9.8. How do I tell <span class="command"><strong>make fetch</strong></span> to do passive FTP?</a></span></dt> | | 885 | <dt><span class="sect1"><a href="#fetch-https">9.8. How to fetch files from HTTPS sites</a></span></dt> |
885 | <dt><span class="sect1"><a href="#fetching-all-distfiles">9.9. How to fetch all distfiles at once</a></span></dt> | | 886 | <dt><span class="sect1"><a href="#passive-ftp">9.9. How do I tell <span class="command"><strong>make fetch</strong></span> to do passive FTP?</a></span></dt> |
886 | <dt><span class="sect1"><a href="#tmac.andoc-missing">9.10. What does <span class="quote">“<span class="quote">Don't know how to make | | 887 | <dt><span class="sect1"><a href="#fetching-all-distfiles">9.10. How to fetch all distfiles at once</a></span></dt> |
| | | 888 | <dt><span class="sect1"><a href="#tmac.andoc-missing">9.11. What does <span class="quote">“<span class="quote">Don't know how to make |
887 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</a></span></dt> | | 889 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</a></span></dt> |
888 | <dt><span class="sect1"><a href="#bsd.own.mk-missing">9.11. What does <span class="quote">“<span class="quote">Could not find bsd.own.mk</span>”</span> mean?</a></span></dt> | | 890 | <dt><span class="sect1"><a href="#bsd.own.mk-missing">9.12. What does <span class="quote">“<span class="quote">Could not find bsd.own.mk</span>”</span> mean?</a></span></dt> |
889 | <dt><span class="sect1"><a href="#using-sudo-with-pkgsrc">9.12. Using 'sudo' with pkgsrc</a></span></dt> | | 891 | <dt><span class="sect1"><a href="#using-sudo-with-pkgsrc">9.13. Using 'sudo' with pkgsrc</a></span></dt> |
890 | <dt><span class="sect1"><a href="#faq.conf">9.13. How do I change the location of configuration files?</a></span></dt> | | 892 | <dt><span class="sect1"><a href="#faq.conf">9.14. How do I change the location of configuration files?</a></span></dt> |
891 | <dt><span class="sect1"><a href="#audit-packages">9.14. Automated security checks</a></span></dt> | | 893 | <dt><span class="sect1"><a href="#audit-packages">9.15. Automated security checks</a></span></dt> |
892 | <dt><span class="sect1"><a href="#ufaq-cflags">9.15. Why do some packages ignore my <code class="varname">CFLAGS</code>?</a></span></dt> | | 894 | <dt><span class="sect1"><a href="#ufaq-cflags">9.16. Why do some packages ignore my <code class="varname">CFLAGS</code>?</a></span></dt> |
893 | <dt><span class="sect1"><a href="#ufaq-fail">9.16. A package does not build. What shall I do?</a></span></dt> | | 895 | <dt><span class="sect1"><a href="#ufaq-fail">9.17. A package does not build. What shall I do?</a></span></dt> |
894 | <dt><span class="sect1"><a href="#faq.rcs-conflicts">9.17. What does <span class="quote">“<span class="quote">Makefile appears to contain unresolved cvs/rcs/??? merge conflicts</span>”</span> mean?</a></span></dt> | | 896 | <dt><span class="sect1"><a href="#faq.rcs-conflicts">9.18. What does <span class="quote">“<span class="quote">Makefile appears to contain unresolved cvs/rcs/??? merge conflicts</span>”</span> mean?</a></span></dt> |
895 | </dl></dd> | | 897 | </dl></dd> |
896 | </dl> | | 898 | </dl> |
897 | </div> | | 899 | </div> |
898 | <div class="chapter"> | | 900 | <div class="chapter"> |
899 | <div class="titlepage"><div><div><h2 class="title"> | | 901 | <div class="titlepage"><div><div><h2 class="title"> |
900 | <a name="getting"></a>Chapter 2. Where to get pkgsrc and how to keep it up-to-date</h2></div></div></div> | | 902 | <a name="getting"></a>Chapter 2. Where to get pkgsrc and how to keep it up-to-date</h2></div></div></div> |
901 | <div class="toc"> | | 903 | <div class="toc"> |
902 | <p><b>Table of Contents</b></p> | | 904 | <p><b>Table of Contents</b></p> |
903 | <dl> | | 905 | <dl> |
904 | <dt><span class="sect1"><a href="#getting-first">2.1. Getting pkgsrc for the first time</a></span></dt> | | 906 | <dt><span class="sect1"><a href="#getting-first">2.1. Getting pkgsrc for the first time</a></span></dt> |
905 | <dd><dl> | | 907 | <dd><dl> |
906 | <dt><span class="sect2"><a href="#getting-via-tar">2.1.1. As tar archive</a></span></dt> | | 908 | <dt><span class="sect2"><a href="#getting-via-tar">2.1.1. As tar archive</a></span></dt> |
907 | <dt><span class="sect2"><a href="#getting-via-cvs">2.1.2. Via anonymous CVS</a></span></dt> | | 909 | <dt><span class="sect2"><a href="#getting-via-cvs">2.1.2. Via anonymous CVS</a></span></dt> |
908 | </dl></dd> | | 910 | </dl></dd> |
909 | <dt><span class="sect1"><a href="#uptodate">2.2. Keeping pkgsrc up-to-date</a></span></dt> | | 911 | <dt><span class="sect1"><a href="#uptodate">2.2. Keeping pkgsrc up-to-date</a></span></dt> |
910 | <dd><dl> | | 912 | <dd><dl> |
911 | <dt><span class="sect2"><a href="#uptodate-tar">2.2.1. Via tar files</a></span></dt> | | 913 | <dt><span class="sect2"><a href="#uptodate-tar">2.2.1. Via tar files</a></span></dt> |
912 | <dt><span class="sect2"><a href="#uptodate-cvs">2.2.2. Via CVS</a></span></dt> | | 914 | <dt><span class="sect2"><a href="#uptodate-cvs">2.2.2. Via CVS</a></span></dt> |
913 | </dl></dd> | | 915 | </dl></dd> |
914 | </dl> | | 916 | </dl> |
915 | </div> | | 917 | </div> |
916 | <p>Before you download and extract the files, you need to decide | | 918 | <p>Before you download and extract the files, you need to decide |
917 | where you want to extract them. When using pkgsrc as root user, pkgsrc | | 919 | where you want to extract them. When using pkgsrc as root user, pkgsrc |
918 | is usually installed in <code class="filename">/usr/pkgsrc</code>. You are though | | 920 | is usually installed in <code class="filename">/usr/pkgsrc</code>. You are though |
919 | free to install the sources and binary packages wherever you want in | | 921 | free to install the sources and binary packages wherever you want in |
920 | your filesystem, provided that the pathname does not contain white-space | | 922 | your filesystem, provided that the pathname does not contain white-space |
921 | or other characters that are interpreted specially by the shell and some | | 923 | or other characters that are interpreted specially by the shell and some |
922 | other programs. A safe bet is to use only letters, digits, underscores | | 924 | other programs. A safe bet is to use only letters, digits, underscores |
923 | and dashes.</p> | | 925 | and dashes.</p> |
924 | <div class="sect1"> | | 926 | <div class="sect1"> |
925 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 927 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
926 | <a name="getting-first"></a>2.1. Getting pkgsrc for the first time</h2></div></div></div> | | 928 | <a name="getting-first"></a>2.1. Getting pkgsrc for the first time</h2></div></div></div> |
927 | <p>Before you download any pkgsrc files, you should decide | | 929 | <p>Before you download any pkgsrc files, you should decide |
928 | whether you want the <span class="emphasis"><em>current</em></span> branch or the | | 930 | whether you want the <span class="emphasis"><em>current</em></span> branch or the |
929 | <span class="emphasis"><em>stable</em></span> branch. The latter is forked on a | | 931 | <span class="emphasis"><em>stable</em></span> branch. The latter is forked on a |
930 | quarterly basis from the current branch and only gets modified | | 932 | quarterly basis from the current branch and only gets modified |
931 | for security updates. The names of the stable branches are built | | 933 | for security updates. The names of the stable branches are built |
932 | from the year and the quarter, for example | | 934 | from the year and the quarter, for example |
933 | <code class="literal">2014Q3</code>.</p> | | 935 | <code class="literal">2014Q3</code>.</p> |
934 | <p>The second step is to decide <span class="emphasis"><em>how</em></span> you | | 936 | <p>The second step is to decide <span class="emphasis"><em>how</em></span> you |
935 | want to download pkgsrc. You can get it as a tar file or via CVS. | | 937 | want to download pkgsrc. You can get it as a tar file or via CVS. |
936 | Both ways are described here.</p> | | 938 | Both ways are described here.</p> |
937 | <p>Note that tar archive contains CVS working copy. | | 939 | <p>Note that tar archive contains CVS working copy. |
938 | Thus you can switch to using CVS at any later time.</p> | | 940 | Thus you can switch to using CVS at any later time.</p> |
939 | <div class="sect2"> | | 941 | <div class="sect2"> |
940 | <div class="titlepage"><div><div><h3 class="title"> | | 942 | <div class="titlepage"><div><div><h3 class="title"> |
941 | <a name="getting-via-tar"></a>2.1.1. As tar archive</h3></div></div></div> | | 943 | <a name="getting-via-tar"></a>2.1.1. As tar archive</h3></div></div></div> |
942 | <p>The primary download location for all pkgsrc files is | | 944 | <p>The primary download location for all pkgsrc files is |
943 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/" target="_top">http://ftp.NetBSD.org/pub/pkgsrc/</a> or | | 945 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/" target="_top">http://ftp.NetBSD.org/pub/pkgsrc/</a> or |
944 | <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/" target="_top">ftp://ftp.NetBSD.org/pub/pkgsrc/</a> | | 946 | <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/" target="_top">ftp://ftp.NetBSD.org/pub/pkgsrc/</a> |
945 | (it points to the same location). | | 947 | (it points to the same location). |
946 | There are a number of subdirectories for different purposes, | | 948 | There are a number of subdirectories for different purposes, |
947 | which are described in detail in <a class="xref" href="#ftp-layout" title="Appendix C. Directory layout of the pkgsrc FTP server">Appendix C, <i>Directory layout of the pkgsrc FTP server</i></a>.</p> | | 949 | which are described in detail in <a class="xref" href="#ftp-layout" title="Appendix C. Directory layout of the pkgsrc FTP server">Appendix C, <i>Directory layout of the pkgsrc FTP server</i></a>.</p> |
948 | <p>The tar archive for the current branch is in the directory | | 950 | <p>The tar archive for the current branch is in the directory |
949 | <code class="filename">current</code> and is called <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz" target="_top"><code class="filename">pkgsrc.tar.gz</code></a>. | | 951 | <code class="filename">current</code> and is called <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz" target="_top"><code class="filename">pkgsrc.tar.gz</code></a>. |
950 | It is autogenerated daily.</p> | | 952 | It is autogenerated daily.</p> |
951 | <p>To save download time we provide bzip2- and | | 953 | <p>To save download time we provide bzip2- and |
952 | xz-compressed archives which are published at | | 954 | xz-compressed archives which are published at |
953 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.bz2" target="_top"><code class="filename">pkgsrc.tar.bz2</code></a> | | 955 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.bz2" target="_top"><code class="filename">pkgsrc.tar.bz2</code></a> |
954 | and | | 956 | and |
955 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.xz" target="_top"><code class="filename">pkgsrc.tar.xz</code></a> | | 957 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.xz" target="_top"><code class="filename">pkgsrc.tar.xz</code></a> |
956 | respectively. | | 958 | respectively. |
957 | </p> | | 959 | </p> |
958 | <p>You can fetch the same files using FTP.</p> | | 960 | <p>You can fetch the same files using FTP.</p> |
959 | <p>The tar file for the stable branch 2014Q3 is in the | | 961 | <p>The tar file for the stable branch 2014Q3 is in the |
960 | directory <code class="filename">pkgsrc-2014Q3</code> and is also called <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/pkgsrc-2014Q3/pkgsrc.tar.gz" target="_top"><code class="filename">pkgsrc.tar.gz</code></a>.</p> | | 962 | directory <code class="filename">pkgsrc-2014Q3</code> and is also called <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/pkgsrc-2014Q3/pkgsrc.tar.gz" target="_top"><code class="filename">pkgsrc.tar.gz</code></a>.</p> |
961 | <p>To download a pkgsrc stable tarball, run:</p> | | 963 | <p>To download a pkgsrc stable tarball, run:</p> |
962 | <pre class="screen"> | | 964 | <pre class="screen"> |
963 | <code class="prompt">$</code> <strong class="userinput"><code>ftp ftp://ftp.NetBSD.org/pub/pkgsrc/<em class="replaceable"><code>pkgsrc-20xxQy</code></em>/pkgsrc.tar.gz</code></strong></pre> | | 965 | <code class="prompt">$</code> <strong class="userinput"><code>ftp ftp://ftp.NetBSD.org/pub/pkgsrc/<em class="replaceable"><code>pkgsrc-20xxQy</code></em>/pkgsrc.tar.gz</code></strong></pre> |
964 | <p>Where <em class="replaceable"><code>pkgsrc-20xxQy</code></em> is the | | 966 | <p>Where <em class="replaceable"><code>pkgsrc-20xxQy</code></em> is the |
965 | stable branch to be downloaded, for example, | | 967 | stable branch to be downloaded, for example, |
966 | <span class="quote">“<span class="quote">pkgsrc-2014Q3</span>”</span>.</p> | | 968 | <span class="quote">“<span class="quote">pkgsrc-2014Q3</span>”</span>.</p> |
967 | <p>If you prefer, you can also fetch it using "wget", "curl", | | 969 | <p>If you prefer, you can also fetch it using "wget", "curl", |
968 | or your web browser.</p> | | 970 | or your web browser.</p> |
969 | <p>Then, extract it with:</p> | | 971 | <p>Then, extract it with:</p> |
970 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>tar -xzf pkgsrc.tar.gz -C /usr</code></strong></pre> | | 972 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>tar -xzf pkgsrc.tar.gz -C /usr</code></strong></pre> |
971 | <p>This will create the directory <code class="filename">pkgsrc/</code> | | 973 | <p>This will create the directory <code class="filename">pkgsrc/</code> |
972 | in <code class="filename">/usr/</code> and all the package source will be | | 974 | in <code class="filename">/usr/</code> and all the package source will be |
973 | stored under <code class="filename">/usr/pkgsrc/</code>.</p> | | 975 | stored under <code class="filename">/usr/pkgsrc/</code>.</p> |
974 | <p>To download pkgsrc-current, run:</p> | | 976 | <p>To download pkgsrc-current, run:</p> |
975 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>ftp ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz</code></strong></pre> | | 977 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>ftp ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz</code></strong></pre> |
976 | </div> | | 978 | </div> |
977 | <div class="sect2"> | | 979 | <div class="sect2"> |
978 | <div class="titlepage"><div><div><h3 class="title"> | | 980 | <div class="titlepage"><div><div><h3 class="title"> |
979 | <a name="getting-via-cvs"></a>2.1.2. Via anonymous CVS</h3></div></div></div> | | 981 | <a name="getting-via-cvs"></a>2.1.2. Via anonymous CVS</h3></div></div></div> |
980 | <p>To fetch a specific pkgsrc stable branch, run:</p> | | 982 | <p>To fetch a specific pkgsrc stable branch, run:</p> |
981 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr && cvs -q -z2 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -r <em class="replaceable"><code>pkgsrc-20xxQy</code></em> -P pkgsrc</code></strong> | | 983 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr && cvs -q -z2 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -r <em class="replaceable"><code>pkgsrc-20xxQy</code></em> -P pkgsrc</code></strong> |
982 | </pre> | | 984 | </pre> |
983 | <p>Where <em class="replaceable"><code>pkgsrc-20xxQy</code></em> is the stable | | 985 | <p>Where <em class="replaceable"><code>pkgsrc-20xxQy</code></em> is the stable |
984 | branch to be checked out, for example, <span class="quote">“<span class="quote">pkgsrc-2014Q3</span>”</span></p> | | 986 | branch to be checked out, for example, <span class="quote">“<span class="quote">pkgsrc-2014Q3</span>”</span></p> |
985 | <p>This will create the directory <code class="filename">pkgsrc/</code> | | 987 | <p>This will create the directory <code class="filename">pkgsrc/</code> |
986 | in your <code class="filename">/usr/</code> directory and all the package source | | 988 | in your <code class="filename">/usr/</code> directory and all the package source |
987 | will be stored under <code class="filename">/usr/pkgsrc/</code>.</p> | | 989 | will be stored under <code class="filename">/usr/pkgsrc/</code>.</p> |
988 | <p>To fetch the pkgsrc current branch, run:</p> | | 990 | <p>To fetch the pkgsrc current branch, run:</p> |
989 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr && cvs -q -z2 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P pkgsrc</code></strong> | | 991 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr && cvs -q -z2 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P pkgsrc</code></strong> |
990 | </pre> | | 992 | </pre> |
991 | <p>Refer to the <a class="ulink" href="http://www.NetBSD.org/mirrors/#anoncvs" target="_top">list of available mirrors</a> to choose a faster CVS mirror, if needed.</p> | | 993 | <p>Refer to the <a class="ulink" href="http://www.NetBSD.org/mirrors/#anoncvs" target="_top">list of available mirrors</a> to choose a faster CVS mirror, if needed.</p> |
992 | <p>If you get error messages from <code class="literal">rsh</code>, you need to set CVS_RSH variable. E.g.:</p> | | 994 | <p>If you get error messages from <code class="literal">rsh</code>, you need to set CVS_RSH variable. E.g.:</p> |
993 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr && env CVS_RSH=ssh cvs -q -z2 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P pkgsrc</code></strong> | | 995 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr && env CVS_RSH=ssh cvs -q -z2 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P pkgsrc</code></strong> |
994 | </pre> | | 996 | </pre> |
995 | <p>Refer to documentation on your command shell how to set CVS_RSH=ssh permanently. | | 997 | <p>Refer to documentation on your command shell how to set CVS_RSH=ssh permanently. |
996 | For Bourne shells, you can set it in your <code class="filename">.profile</code> | | 998 | For Bourne shells, you can set it in your <code class="filename">.profile</code> |
997 | or better globally in <code class="filename">/etc/profile</code>:</p> | | 999 | or better globally in <code class="filename">/etc/profile</code>:</p> |
998 | <pre class="programlisting"> | | 1000 | <pre class="programlisting"> |
999 | # set CVS remote shell command | | 1001 | # set CVS remote shell command |
1000 | CVS_RSH=ssh | | 1002 | CVS_RSH=ssh |
1001 | export CVS_RSH | | 1003 | export CVS_RSH |
1002 | </pre> | | 1004 | </pre> |
1003 | <p>By default, CVS doesn't do things like most people would expect it to do. | | 1005 | <p>By default, CVS doesn't do things like most people would expect it to do. |
1004 | But there is a way to convince CVS, by creating a file called <code class="filename">.cvsrc</code> | | 1006 | But there is a way to convince CVS, by creating a file called <code class="filename">.cvsrc</code> |
1005 | in your home directory and saving the following lines to it. | | 1007 | in your home directory and saving the following lines to it. |
1006 | This file will save you lots of headache and some bug reports, so we strongly recommend it. | | 1008 | This file will save you lots of headache and some bug reports, so we strongly recommend it. |
1007 | You can find an explanation of this file in the CVS documentation.</p> | | 1009 | You can find an explanation of this file in the CVS documentation.</p> |
1008 | <pre class="programlisting"> | | 1010 | <pre class="programlisting"> |
1009 | # recommended CVS configuration file from the pkgsrc guide | | 1011 | # recommended CVS configuration file from the pkgsrc guide |
1010 | cvs -q -z2 | | 1012 | cvs -q -z2 |
1011 | checkout -P | | 1013 | checkout -P |
1012 | update -dP | | 1014 | update -dP |
1013 | diff -upN | | 1015 | diff -upN |
1014 | rdiff -u | | 1016 | rdiff -u |
1015 | release -d | | 1017 | release -d |
1016 | </pre> | | 1018 | </pre> |
1017 | </div> | | 1019 | </div> |
1018 | </div> | | 1020 | </div> |
1019 | <div class="sect1"> | | 1021 | <div class="sect1"> |
1020 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1022 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1021 | <a name="uptodate"></a>2.2. Keeping pkgsrc up-to-date</h2></div></div></div> | | 1023 | <a name="uptodate"></a>2.2. Keeping pkgsrc up-to-date</h2></div></div></div> |
1022 | <p>The preferred way to keep pkgsrc up-to-date is via CVS | | 1024 | <p>The preferred way to keep pkgsrc up-to-date is via CVS |
1023 | (which also works if you have first installed it via a tar | | 1025 | (which also works if you have first installed it via a tar |
1024 | file). It saves bandwidth and hard disk activity, compared to | | 1026 | file). It saves bandwidth and hard disk activity, compared to |
1025 | downloading the tar file again.</p> | | 1027 | downloading the tar file again.</p> |
1026 | <div class="sect2"> | | 1028 | <div class="sect2"> |
1027 | <div class="titlepage"><div><div><h3 class="title"> | | 1029 | <div class="titlepage"><div><div><h3 class="title"> |
1028 | <a name="uptodate-tar"></a>2.2.1. Via tar files</h3></div></div></div> | | 1030 | <a name="uptodate-tar"></a>2.2.1. Via tar files</h3></div></div></div> |
1029 | <div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 1031 | <div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"> |
1030 | <h3 class="title">Warning</h3> | | 1032 | <h3 class="title">Warning</h3> |
1031 | <p>When updating from a tar file, you first need to | | 1033 | <p>When updating from a tar file, you first need to |
1032 | completely remove the old pkgsrc directory. Otherwise those | | 1034 | completely remove the old pkgsrc directory. Otherwise those |
1033 | files that have been removed from pkgsrc in the mean time will | | 1035 | files that have been removed from pkgsrc in the mean time will |
1034 | not be removed on your local disk, resulting in inconsistencies. | | 1036 | not be removed on your local disk, resulting in inconsistencies. |
1035 | When removing the old files, any changes that you have done to | | 1037 | When removing the old files, any changes that you have done to |
1036 | the pkgsrc files will be lost after updating. Therefore updating | | 1038 | the pkgsrc files will be lost after updating. Therefore updating |
1037 | via CVS is strongly recommended.</p> | | 1039 | via CVS is strongly recommended.</p> |
1038 | </div> | | 1040 | </div> |
1039 | <p>Note that by default the distfiles and the binary packages | | 1041 | <p>Note that by default the distfiles and the binary packages |
1040 | are saved in the pkgsrc tree, so don't forget to rescue them | | 1042 | are saved in the pkgsrc tree, so don't forget to rescue them |
1041 | before updating. You can also configure pkgsrc to store distfiles | | 1043 | before updating. You can also configure pkgsrc to store distfiles |
1042 | and packages in directories outside the pkgsrc tree by setting the | | 1044 | and packages in directories outside the pkgsrc tree by setting the |
1043 | <code class="varname">DISTDIR</code> and <code class="varname">PACKAGES</code> | | 1045 | <code class="varname">DISTDIR</code> and <code class="varname">PACKAGES</code> |
1044 | variables. See <a class="xref" href="#configuring" title="Chapter 5. Configuring pkgsrc">Chapter 5, <i>Configuring pkgsrc</i></a> for the details.</p> | | 1046 | variables. See <a class="xref" href="#configuring" title="Chapter 5. Configuring pkgsrc">Chapter 5, <i>Configuring pkgsrc</i></a> for the details.</p> |
1045 | <p>To update pkgsrc from a tar file, download the tar file as | | 1047 | <p>To update pkgsrc from a tar file, download the tar file as |
1046 | explained above. Then, make sure that you have not made any | | 1048 | explained above. Then, make sure that you have not made any |
1047 | changes to the files in the pkgsrc directory. Remove the pkgsrc | | 1049 | changes to the files in the pkgsrc directory. Remove the pkgsrc |
1048 | directory and extract the new tar file. Done.</p> | | 1050 | directory and extract the new tar file. Done.</p> |
1049 | </div> | | 1051 | </div> |
1050 | <div class="sect2"> | | 1052 | <div class="sect2"> |
1051 | <div class="titlepage"><div><div><h3 class="title"> | | 1053 | <div class="titlepage"><div><div><h3 class="title"> |
1052 | <a name="uptodate-cvs"></a>2.2.2. Via CVS</h3></div></div></div> | | 1054 | <a name="uptodate-cvs"></a>2.2.2. Via CVS</h3></div></div></div> |
1053 | <p>To update pkgsrc via CVS, change to the <code class="filename">pkgsrc</code> directory and run cvs:</p> | | 1055 | <p>To update pkgsrc via CVS, change to the <code class="filename">pkgsrc</code> directory and run cvs:</p> |
1054 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr/pkgsrc && cvs update -dP</code></strong> | | 1056 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr/pkgsrc && cvs update -dP</code></strong> |
1055 | </pre> | | 1057 | </pre> |
1056 | <p>If you get error messages from <code class="literal">rsh</code>, you need to set CVS_RSH variable as described above. E.g.:</p> | | 1058 | <p>If you get error messages from <code class="literal">rsh</code>, you need to set CVS_RSH variable as described above. E.g.:</p> |
1057 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr/pkgsrc && env CVS_RSH=ssh cvs up -dP</code></strong> | | 1059 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr/pkgsrc && env CVS_RSH=ssh cvs up -dP</code></strong> |
1058 | </pre> | | 1060 | </pre> |
1059 | <div class="sect3"> | | 1061 | <div class="sect3"> |
1060 | <div class="titlepage"><div><div><h4 class="title"> | | 1062 | <div class="titlepage"><div><div><h4 class="title"> |
1061 | <a name="uptodate-cvs-switch"></a>2.2.2.1. Switching between different pkgsrc branches</h4></div></div></div> | | 1063 | <a name="uptodate-cvs-switch"></a>2.2.2.1. Switching between different pkgsrc branches</h4></div></div></div> |
1062 | <p>When updating pkgsrc, the CVS program keeps track of the | | 1064 | <p>When updating pkgsrc, the CVS program keeps track of the |
1063 | branch you selected. But if you, for whatever reason, want to | | 1065 | branch you selected. But if you, for whatever reason, want to |
1064 | switch from the stable branch to the current one, you can do it | | 1066 | switch from the stable branch to the current one, you can do it |
1065 | by adding the option <span class="quote">“<span class="quote">-A</span>”</span> after the | | 1067 | by adding the option <span class="quote">“<span class="quote">-A</span>”</span> after the |
1066 | <span class="quote">“<span class="quote">update</span>”</span> keyword. To switch from the current branch | | 1068 | <span class="quote">“<span class="quote">update</span>”</span> keyword. To switch from the current branch |
1067 | back to the stable branch, add the | | 1069 | back to the stable branch, add the |
1068 | <span class="quote">“<span class="quote">-rpkgsrc-2014Q3</span>”</span> option.</p> | | 1070 | <span class="quote">“<span class="quote">-rpkgsrc-2014Q3</span>”</span> option.</p> |
1069 | </div> | | 1071 | </div> |
1070 | <div class="sect3"> | | 1072 | <div class="sect3"> |
1071 | <div class="titlepage"><div><div><h4 class="title"> | | 1073 | <div class="titlepage"><div><div><h4 class="title"> |
1072 | <a name="uptodate-cvs-changes"></a>2.2.2.2. What happens to my changes when updating?</h4></div></div></div> | | 1074 | <a name="uptodate-cvs-changes"></a>2.2.2.2. What happens to my changes when updating?</h4></div></div></div> |
1073 | <p>When you update pkgsrc, the CVS program will only touch | | 1075 | <p>When you update pkgsrc, the CVS program will only touch |
1074 | those files that are registered in the CVS repository. That | | 1076 | those files that are registered in the CVS repository. That |
1075 | means that any packages that you created on your own will stay | | 1077 | means that any packages that you created on your own will stay |
1076 | unmodified. If you change files that are managed by CVS, later | | 1078 | unmodified. If you change files that are managed by CVS, later |
1077 | updates will try to merge your changes with those that have been | | 1079 | updates will try to merge your changes with those that have been |
1078 | done by others. See the CVS manual, chapter | | 1080 | done by others. See the CVS manual, chapter |
1079 | <span class="quote">“<span class="quote">update</span>”</span> for details.</p> | | 1081 | <span class="quote">“<span class="quote">update</span>”</span> for details.</p> |
1080 | </div> | | 1082 | </div> |
1081 | </div> | | 1083 | </div> |
1082 | </div> | | 1084 | </div> |
1083 | </div> | | 1085 | </div> |
1084 | <div class="chapter"> | | 1086 | <div class="chapter"> |
1085 | <div class="titlepage"><div><div><h2 class="title"> | | 1087 | <div class="titlepage"><div><div><h2 class="title"> |
1086 | <a name="platforms"></a>Chapter 3. Using pkgsrc on systems other than NetBSD</h2></div></div></div> | | 1088 | <a name="platforms"></a>Chapter 3. Using pkgsrc on systems other than NetBSD</h2></div></div></div> |
1087 | <div class="toc"> | | 1089 | <div class="toc"> |
1088 | <p><b>Table of Contents</b></p> | | 1090 | <p><b>Table of Contents</b></p> |
1089 | <dl> | | 1091 | <dl> |
1090 | <dt><span class="sect1"><a href="#binarydist">3.1. Binary distribution</a></span></dt> | | 1092 | <dt><span class="sect1"><a href="#binarydist">3.1. Binary distribution</a></span></dt> |
1091 | <dt><span class="sect1"><a href="#bootstrapping-pkgsrc">3.2. Bootstrapping pkgsrc</a></span></dt> | | 1093 | <dt><span class="sect1"><a href="#bootstrapping-pkgsrc">3.2. Bootstrapping pkgsrc</a></span></dt> |
1092 | <dt><span class="sect1"><a href="#platform-specific-notes">3.3. Platform-specific notes</a></span></dt> | | 1094 | <dt><span class="sect1"><a href="#platform-specific-notes">3.3. Platform-specific notes</a></span></dt> |
1093 | <dd><dl> | | 1095 | <dd><dl> |
1094 | <dt><span class="sect2"><a href="#cygwin">3.3.1. Cygwin</a></span></dt> | | 1096 | <dt><span class="sect2"><a href="#cygwin">3.3.1. Cygwin</a></span></dt> |
1095 | <dt><span class="sect2"><a href="#darwin">3.3.2. Darwin (Mac OS X)</a></span></dt> | | 1097 | <dt><span class="sect2"><a href="#darwin">3.3.2. Darwin (Mac OS X)</a></span></dt> |
1096 | <dt><span class="sect2"><a href="#freebsd">3.3.3. FreeBSD</a></span></dt> | | 1098 | <dt><span class="sect2"><a href="#freebsd">3.3.3. FreeBSD</a></span></dt> |
1097 | <dt><span class="sect2"><a href="#gnukfreebsd">3.3.4. GNU/kFreeBSD</a></span></dt> | | 1099 | <dt><span class="sect2"><a href="#gnukfreebsd">3.3.4. GNU/kFreeBSD</a></span></dt> |
1098 | <dt><span class="sect2"><a href="#interix">3.3.5. Interix</a></span></dt> | | 1100 | <dt><span class="sect2"><a href="#interix">3.3.5. Interix</a></span></dt> |
1099 | <dt><span class="sect2"><a href="#irix">3.3.6. IRIX</a></span></dt> | | 1101 | <dt><span class="sect2"><a href="#irix">3.3.6. IRIX</a></span></dt> |
1100 | <dt><span class="sect2"><a href="#linux">3.3.7. Linux</a></span></dt> | | 1102 | <dt><span class="sect2"><a href="#linux">3.3.7. Linux</a></span></dt> |
1101 | <dt><span class="sect2"><a href="#mirbsd">3.3.8. MirBSD</a></span></dt> | | 1103 | <dt><span class="sect2"><a href="#mirbsd">3.3.8. MirBSD</a></span></dt> |
1102 | <dt><span class="sect2"><a href="#openbsd">3.3.9. OpenBSD</a></span></dt> | | 1104 | <dt><span class="sect2"><a href="#openbsd">3.3.9. OpenBSD</a></span></dt> |
1103 | <dt><span class="sect2"><a href="#solaris">3.3.10. Solaris</a></span></dt> | | 1105 | <dt><span class="sect2"><a href="#solaris">3.3.10. Solaris</a></span></dt> |
1104 | </dl></dd> | | 1106 | </dl></dd> |
1105 | </dl> | | 1107 | </dl> |
1106 | </div> | | 1108 | </div> |
1107 | <div class="sect1"> | | 1109 | <div class="sect1"> |
1108 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1110 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1109 | <a name="binarydist"></a>3.1. Binary distribution</h2></div></div></div> | | 1111 | <a name="binarydist"></a>3.1. Binary distribution</h2></div></div></div> |
1110 | <p>See <a class="xref" href="#using-pkg" title="4.1. Using binary packages">Section 4.1, “Using binary packages”</a>.</p> | | 1112 | <p>See <a class="xref" href="#using-pkg" title="4.1. Using binary packages">Section 4.1, “Using binary packages”</a>.</p> |
1111 | </div> | | 1113 | </div> |
1112 | <div class="sect1"> | | 1114 | <div class="sect1"> |
1113 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1115 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1114 | <a name="bootstrapping-pkgsrc"></a>3.2. Bootstrapping pkgsrc</h2></div></div></div> | | 1116 | <a name="bootstrapping-pkgsrc"></a>3.2. Bootstrapping pkgsrc</h2></div></div></div> |
1115 | <p>pkgsrc can be bootstrapped for use in two different modes: | | 1117 | <p>pkgsrc can be bootstrapped for use in two different modes: |
1116 | privileged and unprivileged one. In unprivileged mode in contrast | | 1118 | privileged and unprivileged one. In unprivileged mode in contrast |
1117 | to privileged one all programs are installed under one particular user | | 1119 | to privileged one all programs are installed under one particular user |
1118 | and cannot utilise privileged operations (packages don't create | | 1120 | and cannot utilise privileged operations (packages don't create |
1119 | special users and all special file permissions like setuid are ignored). | | 1121 | special users and all special file permissions like setuid are ignored). |
1120 | </p> | | 1122 | </p> |
1121 | <p>Installing the bootstrap kit from source should be as simple as:</p> | | 1123 | <p>Installing the bootstrap kit from source should be as simple as:</p> |
1122 | <pre class="screen"> | | 1124 | <pre class="screen"> |
1123 | <code class="prompt">#</code> <strong class="userinput"><code>env CVS_RSH=ssh cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P pkgsrc</code></strong> | | 1125 | <code class="prompt">#</code> <strong class="userinput"><code>env CVS_RSH=ssh cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P pkgsrc</code></strong> |
1124 | <code class="prompt">#</code> <strong class="userinput"><code>cd pkgsrc/bootstrap</code></strong> | | 1126 | <code class="prompt">#</code> <strong class="userinput"><code>cd pkgsrc/bootstrap</code></strong> |
1125 | <code class="prompt">#</code> <strong class="userinput"><code>./bootstrap</code></strong> | | 1127 | <code class="prompt">#</code> <strong class="userinput"><code>./bootstrap</code></strong> |
1126 | </pre> | | 1128 | </pre> |
1127 | <p>To bootstrap in unprivileged mode pass <span class="quote">“<span class="quote">--unprivileged</span>”</span> flag to <span class="command"><strong>bootstrap</strong></span></p> | | 1129 | <p>To bootstrap in unprivileged mode pass <span class="quote">“<span class="quote">--unprivileged</span>”</span> flag to <span class="command"><strong>bootstrap</strong></span></p> |
1128 | <p>By default, in privileged mode pkgsrc uses | | 1130 | <p>By default, in privileged mode pkgsrc uses |
1129 | <code class="filename">/usr/pkg</code> for <span class="emphasis"><em>prefix</em></span> | | 1131 | <code class="filename">/usr/pkg</code> for <span class="emphasis"><em>prefix</em></span> |
1130 | where programs will be installed in, | | 1132 | where programs will be installed in, |
1131 | and <code class="filename">/var/db/pkg</code> for the package database | | 1133 | and <code class="filename">/var/db/pkg</code> for the package database |
1132 | directory where pkgsrc will do its internal bookkeeping, | | 1134 | directory where pkgsrc will do its internal bookkeeping, |
1133 | <code class="filename">/var</code> is used as <span class="emphasis"><em>varbase</em></span>, | | 1135 | <code class="filename">/var</code> is used as <span class="emphasis"><em>varbase</em></span>, |
1134 | where packages install their persistent data. | | 1136 | where packages install their persistent data. |
1135 | In unprivileged mode pkgsrc uses | | 1137 | In unprivileged mode pkgsrc uses |
1136 | <code class="filename">~/pkg</code> for <span class="emphasis"><em>prefix</em></span>, | | 1138 | <code class="filename">~/pkg</code> for <span class="emphasis"><em>prefix</em></span>, |
1137 | <code class="filename">~/pkg/var/db/pkg</code> for the package database, | | 1139 | <code class="filename">~/pkg/var/db/pkg</code> for the package database, |
1138 | and <code class="filename">~/pkg/var</code> for <span class="emphasis"><em>varbase</em></span>. | | 1140 | and <code class="filename">~/pkg/var</code> for <span class="emphasis"><em>varbase</em></span>. |
1139 | </p> | | 1141 | </p> |
1140 | <p>You can change default layout using command-line arguments. | | 1142 | <p>You can change default layout using command-line arguments. |
1141 | Run <span class="quote">“<span class="quote">./bootstrap --help</span>”</span> to get details. | | 1143 | Run <span class="quote">“<span class="quote">./bootstrap --help</span>”</span> to get details. |
1142 | </p> | | 1144 | </p> |
1143 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 1145 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
1144 | <h3 class="title">Note</h3> | | 1146 | <h3 class="title">Note</h3> |
1145 | <p>The bootstrap installs a <span class="command"><strong>bmake</strong></span> tool. | | 1147 | <p>The bootstrap installs a <span class="command"><strong>bmake</strong></span> tool. |
1146 | Use this <span class="command"><strong>bmake</strong></span> when building via pkgsrc. | | 1148 | Use this <span class="command"><strong>bmake</strong></span> when building via pkgsrc. |
1147 | For examples in this guide, use <span class="command"><strong>bmake</strong></span> | | 1149 | For examples in this guide, use <span class="command"><strong>bmake</strong></span> |
1148 | instead of <span class="quote">“<span class="quote">make</span>”</span>.</p> | | 1150 | instead of <span class="quote">“<span class="quote">make</span>”</span>.</p> |
1149 | </div> | | 1151 | </div> |
1150 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 1152 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
1151 | <h3 class="title">Note</h3> | | 1153 | <h3 class="title">Note</h3> |
1152 | <p>It is possible to bootstrap multiple instances of pkgsrc | | 1154 | <p>It is possible to bootstrap multiple instances of pkgsrc |
1153 | using non-intersecting directories. Use <span class="command"><strong>bmake</strong></span> | | 1155 | using non-intersecting directories. Use <span class="command"><strong>bmake</strong></span> |
1154 | corresponding to the installation you're working with to build | | 1156 | corresponding to the installation you're working with to build |
1155 | and install packages. | | 1157 | and install packages. |
1156 | </p> | | 1158 | </p> |
1157 | </div> | | 1159 | </div> |
1158 | </div> | | 1160 | </div> |
1159 | <div class="sect1"> | | 1161 | <div class="sect1"> |
1160 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1162 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1161 | <a name="platform-specific-notes"></a>3.3. Platform-specific notes</h2></div></div></div> | | 1163 | <a name="platform-specific-notes"></a>3.3. Platform-specific notes</h2></div></div></div> |
1162 | <p>Here are some platform-specific notes you should be aware of.</p> | | 1164 | <p>Here are some platform-specific notes you should be aware of.</p> |
1163 | <div class="sect2"> | | 1165 | <div class="sect2"> |
1164 | <div class="titlepage"><div><div><h3 class="title"> | | 1166 | <div class="titlepage"><div><div><h3 class="title"> |
1165 | <a name="cygwin"></a>3.3.1. Cygwin</h3></div></div></div> | | 1167 | <a name="cygwin"></a>3.3.1. Cygwin</h3></div></div></div> |
1166 | <p>Cygwin 1.7.x and later are supported.</p> | | 1168 | <p>Cygwin 1.7.x and later are supported.</p> |
1167 | <p>You need to install minimal base packages in `Base' category | | 1169 | <p>You need to install minimal base packages in `Base' category |
1168 | plus any of compiler, gcc, gcc4, and/or clang. | | 1170 | plus any of compiler, gcc, gcc4, and/or clang. |
1169 | For gcc and gcc4, C and C++ compiler will be installed by default, | | 1171 | For gcc and gcc4, C and C++ compiler will be installed by default, |
1170 | but you can install Fortran compiler additionally | | 1172 | but you can install Fortran compiler additionally |
1171 | because it will be required to use libtool. | | 1173 | because it will be required to use libtool. |
1172 | If it is not installed (or too old), Fortran compiler will be | | 1174 | If it is not installed (or too old), Fortran compiler will be |
1173 | installed with pkgsrc automatically.</p> | | 1175 | installed with pkgsrc automatically.</p> |
1174 | <p>As noted in | | 1176 | <p>As noted in |
1175 | <a class="ulink" href="http://cygwin.com/faq-nochunks.html#faq.using.su" target="_top">Cygwin FAQ: `Why doesn't su work?'</a>, | | 1177 | <a class="ulink" href="http://cygwin.com/faq-nochunks.html#faq.using.su" target="_top">Cygwin FAQ: `Why doesn't su work?'</a>, |
1176 | su(1) command has been in Cygwin distribution, but it has never worked. | | 1178 | su(1) command has been in Cygwin distribution, but it has never worked. |
1177 | Unless you bootstrap pkgsrc with the --unprivileged option, workaround is: | | 1179 | Unless you bootstrap pkgsrc with the --unprivileged option, workaround is: |
1178 | </p> | | 1180 | </p> |
1179 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Right click "Cygwin Terminal" in your Start Menu, | | 1181 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Right click "Cygwin Terminal" in your Start Menu, |
1180 | then pick "Run as administrator".</p></li></ul></div> | | 1182 | then pick "Run as administrator".</p></li></ul></div> |
1181 | </div> | | 1183 | </div> |
1182 | <div class="sect2"> | | 1184 | <div class="sect2"> |
1183 | <div class="titlepage"><div><div><h3 class="title"> | | 1185 | <div class="titlepage"><div><div><h3 class="title"> |
1184 | <a name="darwin"></a>3.3.2. Darwin (Mac OS X)</h3></div></div></div> | | 1186 | <a name="darwin"></a>3.3.2. Darwin (Mac OS X)</h3></div></div></div> |
1185 | <p>Darwin 5.x and up are supported.</p> | | 1187 | <p>Darwin 5.x and up are supported.</p> |
1186 | <p>Before you start, you need to download and install | | 1188 | <p>Before you start, you need to download and install |
1187 | the Mac OS X Developer Tools from Apple's Developer Connection. | | 1189 | the Mac OS X Developer Tools from Apple's Developer Connection. |
1188 | This requires (free) membership. See | | 1190 | This requires (free) membership. See |
1189 | <a class="ulink" href="http://developer.apple.com/macosx/" target="_top">http://developer.apple.com/macosx/</a> | | 1191 | <a class="ulink" href="http://developer.apple.com/macosx/" target="_top">http://developer.apple.com/macosx/</a> |
1190 | for details. Also, make sure you install X11 (an optional | | 1192 | for details. Also, make sure you install X11 (an optional |
1191 | package included with the Developer Tools) if you intend | | 1193 | package included with the Developer Tools) if you intend |
1192 | to build packages that use the X11 Window System. | | 1194 | to build packages that use the X11 Window System. |
1193 | (If you don't want or need the full Xcode GUI, | | 1195 | (If you don't want or need the full Xcode GUI, |
1194 | download and install Command Line Tools for Xcode.)</p> | | 1196 | download and install Command Line Tools for Xcode.)</p> |
1195 | </div> | | 1197 | </div> |
1196 | <div class="sect2"> | | 1198 | <div class="sect2"> |
1197 | <div class="titlepage"><div><div><h3 class="title"> | | 1199 | <div class="titlepage"><div><div><h3 class="title"> |
1198 | <a name="freebsd"></a>3.3.3. FreeBSD</h3></div></div></div> | | 1200 | <a name="freebsd"></a>3.3.3. FreeBSD</h3></div></div></div> |
1199 | <p>FreeBSD 8.3 and 9.0 have been tested and are supported, | | 1201 | <p>FreeBSD 8.3 and 9.0 have been tested and are supported, |
1200 | other versions may work.</p> | | 1202 | other versions may work.</p> |
1201 | <p>Care should be taken so that the tools that this kit installs do not conflict | | 1203 | <p>Care should be taken so that the tools that this kit installs do not conflict |
1202 | with the FreeBSD userland tools. There are several steps:</p> | | 1204 | with the FreeBSD userland tools. There are several steps:</p> |
1203 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 1205 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
1204 | <li class="listitem"><p>FreeBSD stores its ports pkg database in | | 1206 | <li class="listitem"><p>FreeBSD stores its ports pkg database in |
1205 | <code class="filename">/var/db/pkg</code>. It is therefore | | 1207 | <code class="filename">/var/db/pkg</code>. It is therefore |
1206 | recommended that you choose a different location (e.g. | | 1208 | recommended that you choose a different location (e.g. |
1207 | <code class="filename">/usr/pkgdb</code>) by | | 1209 | <code class="filename">/usr/pkgdb</code>) by |
1208 | using the --pkgdbdir option to the bootstrap script.</p></li> | | 1210 | using the --pkgdbdir option to the bootstrap script.</p></li> |
1209 | <li class="listitem"> | | 1211 | <li class="listitem"> |
1210 | <p>If you do not intend to use the FreeBSD ports tools, it's probably a | | 1212 | <p>If you do not intend to use the FreeBSD ports tools, it's probably a |
1211 | good idea to move them out of the way to avoid confusion, e.g.</p> | | 1213 | good idea to move them out of the way to avoid confusion, e.g.</p> |
1212 | <pre class="screen"> | | 1214 | <pre class="screen"> |
1213 | <code class="prompt">#</code> <strong class="userinput"><code>cd /usr/sbin</code></strong> | | 1215 | <code class="prompt">#</code> <strong class="userinput"><code>cd /usr/sbin</code></strong> |
1214 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_add pkg_add.orig</code></strong> | | 1216 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_add pkg_add.orig</code></strong> |
1215 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_create pkg_create.orig</code></strong> | | 1217 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_create pkg_create.orig</code></strong> |
1216 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_delete pkg_delete.orig</code></strong> | | 1218 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_delete pkg_delete.orig</code></strong> |
1217 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_info pkg_info.orig</code></strong> | | 1219 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_info pkg_info.orig</code></strong> |
1218 | </pre> | | 1220 | </pre> |
1219 | </li> | | 1221 | </li> |
1220 | <li class="listitem"><p>An example <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file will be placed in | | 1222 | <li class="listitem"><p>An example <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file will be placed in |
1221 | <code class="filename">/etc/mk.conf.example</code> file | | 1223 | <code class="filename">/etc/mk.conf.example</code> file |
1222 | when you use the bootstrap script.</p></li> | | 1224 | when you use the bootstrap script.</p></li> |
1223 | </ol></div> | | 1225 | </ol></div> |
1224 | </div> | | 1226 | </div> |
1225 | <div class="sect2"> | | 1227 | <div class="sect2"> |
1226 | <div class="titlepage"><div><div><h3 class="title"> | | 1228 | <div class="titlepage"><div><div><h3 class="title"> |
1227 | <a name="gnukfreebsd"></a>3.3.4. GNU/kFreeBSD</h3></div></div></div> | | 1229 | <a name="gnukfreebsd"></a>3.3.4. GNU/kFreeBSD</h3></div></div></div> |
1228 | <p>Debian GNU/kFreeBSD is the only GNU/kFreeBSD distribution now. | | 1230 | <p>Debian GNU/kFreeBSD is the only GNU/kFreeBSD distribution now. |
1229 | Debian GNU/kFreeBSD 7.0 or later is tested and supported.</p> | | 1231 | Debian GNU/kFreeBSD 7.0 or later is tested and supported.</p> |
1230 | <p> You should install ncurses (libncurses and libncurses-dev) | | 1232 | <p> You should install ncurses (libncurses and libncurses-dev) |
1231 | packages.</p> | | 1233 | packages.</p> |
1232 | </div> | | 1234 | </div> |
1233 | <div class="sect2"> | | 1235 | <div class="sect2"> |
1234 | <div class="titlepage"><div><div><h3 class="title"> | | 1236 | <div class="titlepage"><div><div><h3 class="title"> |
1235 | <a name="interix"></a>3.3.5. Interix</h3></div></div></div> | | 1237 | <a name="interix"></a>3.3.5. Interix</h3></div></div></div> |
1236 | <p>Interix is a POSIX-compatible subsystem for the Windows NT kernel, | | 1238 | <p>Interix is a POSIX-compatible subsystem for the Windows NT kernel, |
1237 | providing a Unix-like environment with a tighter kernel integration than | | 1239 | providing a Unix-like environment with a tighter kernel integration than |
1238 | available with Cygwin. It is part of the Windows Services for Unix | | 1240 | available with Cygwin. It is part of the Windows Services for Unix |
1239 | package, available for free for any licensed copy of Windows 2000, XP | | 1241 | package, available for free for any licensed copy of Windows 2000, XP |
1240 | (not including XP Home), or 2003. SFU can be downloaded from <a class="ulink" href="http://www.microsoft.com/windows/sfu/" target="_top">http://www.microsoft.com/windows/sfu/</a>.</p> | | 1242 | (not including XP Home), or 2003. SFU can be downloaded from <a class="ulink" href="http://www.microsoft.com/windows/sfu/" target="_top">http://www.microsoft.com/windows/sfu/</a>.</p> |
1241 | <p>Services for Unix 3.5 has been tested. 3.0 or 3.1 may work, but | | 1243 | <p>Services for Unix 3.5 has been tested. 3.0 or 3.1 may work, but |
1242 | are not officially supported. (The main difference in 3.0/3.1 is lack | | 1244 | are not officially supported. (The main difference in 3.0/3.1 is lack |
1243 | of pthreads, but other parts of libc may also be lacking.)</p> | | 1245 | of pthreads, but other parts of libc may also be lacking.)</p> |
1244 | <p>Services for Unix Applications (aka SUA) is an integrated | | 1246 | <p>Services for Unix Applications (aka SUA) is an integrated |
1245 | component of Windows Server 2003 R2 (5.2), Windows Vista and | | 1247 | component of Windows Server 2003 R2 (5.2), Windows Vista and |
1246 | Windows Server 2008 (6.0), Windows 7 and Windows Server 2008 R2 | | 1248 | Windows Server 2008 (6.0), Windows 7 and Windows Server 2008 R2 |
1247 | (6.1). As of this writing, the SUA's Interix 6.0 (32bit) and | | 1249 | (6.1). As of this writing, the SUA's Interix 6.0 (32bit) and |
1248 | 6.1 (64bit) subsystems have been tested. Other versions may | | 1250 | 6.1 (64bit) subsystems have been tested. Other versions may |
1249 | work as well. The Interix 5.x subsystem has not yet been tested | | 1251 | work as well. The Interix 5.x subsystem has not yet been tested |
1250 | with pkgsrc.</p> | | 1252 | with pkgsrc.</p> |
1251 | <div class="sect3"> | | 1253 | <div class="sect3"> |
1252 | <div class="titlepage"><div><div><h4 class="title"> | | 1254 | <div class="titlepage"><div><div><h4 class="title"> |
1253 | <a name="platform.interix-sfu-install"></a>3.3.5.1. When installing Interix/SFU</h4></div></div></div> | | 1255 | <a name="platform.interix-sfu-install"></a>3.3.5.1. When installing Interix/SFU</h4></div></div></div> |
1254 | <p>At an absolute minimum, the following packages must be installed from | | 1256 | <p>At an absolute minimum, the following packages must be installed from |
1255 | the Windows Services for Unix 3.5 distribution in order to use pkgsrc:</p> | | 1257 | the Windows Services for Unix 3.5 distribution in order to use pkgsrc:</p> |
1256 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 1258 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
1257 | <li class="listitem"><p>Utilities -> Base Utilities</p></li> | | 1259 | <li class="listitem"><p>Utilities -> Base Utilities</p></li> |
1258 | <li class="listitem"><p>Interix GNU Components -> (all)</p></li> | | 1260 | <li class="listitem"><p>Interix GNU Components -> (all)</p></li> |
1259 | <li class="listitem"><p>Remote Connectivity</p></li> | | 1261 | <li class="listitem"><p>Remote Connectivity</p></li> |
1260 | <li class="listitem"><p>Interix SDK</p></li> | | 1262 | <li class="listitem"><p>Interix SDK</p></li> |
1261 | </ul></div> | | 1263 | </ul></div> |
1262 | <p>When using pkgsrc on Interix, DO NOT install the Utilities subcomponent | | 1264 | <p>When using pkgsrc on Interix, DO NOT install the Utilities subcomponent |
1263 | "UNIX Perl". That is Perl 5.6 without shared module support, installed to | | 1265 | "UNIX Perl". That is Perl 5.6 without shared module support, installed to |
1264 | /usr/local, and will only cause confusion. Instead, install Perl 5.8 from | | 1266 | /usr/local, and will only cause confusion. Instead, install Perl 5.8 from |
1265 | pkgsrc (or from a binary package).</p> | | 1267 | pkgsrc (or from a binary package).</p> |
1266 | <p>The Remote Connectivity subcomponent "Windows Remote Shell Service" does | | 1268 | <p>The Remote Connectivity subcomponent "Windows Remote Shell Service" does |
1267 | not need to be installed, but Remote Connectivity itself should be | | 1269 | not need to be installed, but Remote Connectivity itself should be |
1268 | installed in order to have a working inetd.</p> | | 1270 | installed in order to have a working inetd.</p> |
1269 | <p>During installation you may be asked whether to enable setuid | | 1271 | <p>During installation you may be asked whether to enable setuid |
1270 | behavior for Interix programs, and whether to make pathnames default to | | 1272 | behavior for Interix programs, and whether to make pathnames default to |
1271 | case-sensitive. Setuid should be enabled, and case-sensitivity MUST be | | 1273 | case-sensitive. Setuid should be enabled, and case-sensitivity MUST be |
1272 | enabled. (Without case-sensitivity, a large number of packages including | | 1274 | enabled. (Without case-sensitivity, a large number of packages including |
1273 | perl will not build.)</p> | | 1275 | perl will not build.)</p> |
1274 | <p>NOTE: Newer Windows service packs change the way binary execution | | 1276 | <p>NOTE: Newer Windows service packs change the way binary execution |
1275 | works (via the Data Execution Prevention feature). In order to use | | 1277 | works (via the Data Execution Prevention feature). In order to use |
1276 | pkgsrc and other gcc-compiled binaries reliably, a hotfix containing | | 1278 | pkgsrc and other gcc-compiled binaries reliably, a hotfix containing |
1277 | POSIX.EXE, PSXDLL.DLL, PSXRUN.EXE, and PSXSS.EXE (899522 or newer) | | 1279 | POSIX.EXE, PSXDLL.DLL, PSXRUN.EXE, and PSXSS.EXE (899522 or newer) |
1278 | must be installed. Hotfixes are available from Microsoft through a | | 1280 | must be installed. Hotfixes are available from Microsoft through a |
1279 | support contract; however, Debian Interix Port has made most Interix | | 1281 | support contract; however, Debian Interix Port has made most Interix |
1280 | hotfixes available for personal use from <a class="ulink" href="http://www.debian-interix.net/hotfixes/" target="_top">http://www.debian-interix.net/hotfixes/</a>.</p> | | 1282 | hotfixes available for personal use from <a class="ulink" href="http://www.debian-interix.net/hotfixes/" target="_top">http://www.debian-interix.net/hotfixes/</a>.</p> |
1281 | <p>In addition to the hotfix noted above, it may be necessary to | | 1283 | <p>In addition to the hotfix noted above, it may be necessary to |
1282 | disable Data Execution Prevention entirely to make Interix functional. | | 1284 | disable Data Execution Prevention entirely to make Interix functional. |
1283 | This may happen only with certain types of CPUs; the cause is not fully | | 1285 | This may happen only with certain types of CPUs; the cause is not fully |
1284 | understood at this time. If gcc or other applications still segfault | | 1286 | understood at this time. If gcc or other applications still segfault |
1285 | repeatedly after installing one of the hotfixes note above, the | | 1287 | repeatedly after installing one of the hotfixes note above, the |
1286 | following option can be added to the appropriate "boot.ini" line on the | | 1288 | following option can be added to the appropriate "boot.ini" line on the |
1287 | Windows boot drive: /NoExecute=AlwaysOff | | 1289 | Windows boot drive: /NoExecute=AlwaysOff |
1288 | (WARNING, this will disable DEP completely, which may be a security | | 1290 | (WARNING, this will disable DEP completely, which may be a security |
1289 | risk if applications are often run as a user in the Administrators | | 1291 | risk if applications are often run as a user in the Administrators |
1290 | group!)</p> | | 1292 | group!)</p> |
1291 | </div> | | 1293 | </div> |
1292 | <div class="sect3"> | | 1294 | <div class="sect3"> |
1293 | <div class="titlepage"><div><div><h4 class="title"> | | 1295 | <div class="titlepage"><div><div><h4 class="title"> |
1294 | <a name="platform.interix-sfu-postinstall"></a>3.3.5.2. What to do if Interix/SFU is already installed</h4></div></div></div> | | 1296 | <a name="platform.interix-sfu-postinstall"></a>3.3.5.2. What to do if Interix/SFU is already installed</h4></div></div></div> |
1295 | <p>If SFU is already installed and you wish to alter these settings to work | | 1297 | <p>If SFU is already installed and you wish to alter these settings to work |
1296 | with pkgsrc, note the following things.</p> | | 1298 | with pkgsrc, note the following things.</p> |
1297 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 1299 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
1298 | <li class="listitem"><p>To uninstall UNIX Perl, use Add/Remove Programs, select Microsoft | | 1300 | <li class="listitem"><p>To uninstall UNIX Perl, use Add/Remove Programs, select Microsoft |
1299 | Windows Services for UNIX, then click Change. In the installer, choose | | 1301 | Windows Services for UNIX, then click Change. In the installer, choose |
1300 | Add or Remove, then uncheck Utilities->UNIX Perl.</p></li> | | 1302 | Add or Remove, then uncheck Utilities->UNIX Perl.</p></li> |
1301 | <li class="listitem"> | | 1303 | <li class="listitem"> |
1302 | <p>To enable case-sensitivity for the file system, run REGEDIT.EXE, and | | 1304 | <p>To enable case-sensitivity for the file system, run REGEDIT.EXE, and |
1303 | change the following registry key:</p> | | 1305 | change the following registry key:</p> |
1304 | <p>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel</p> | | 1306 | <p>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel</p> |
1305 | <p>Set the DWORD value "obcaseinsensitive" to 0; then reboot.</p> | | 1307 | <p>Set the DWORD value "obcaseinsensitive" to 0; then reboot.</p> |
1306 | </li> | | 1308 | </li> |
1307 | <li class="listitem"> | | 1309 | <li class="listitem"> |
1308 | <p>To enable setuid binaries (optional), run REGEDIT.EXE, and change the | | 1310 | <p>To enable setuid binaries (optional), run REGEDIT.EXE, and change the |
1309 | following registry key:</p> | | 1311 | following registry key:</p> |
1310 | <p>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Services for UNIX</p> | | 1312 | <p>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Services for UNIX</p> |
1311 | <p>Set the DWORD value "EnableSetuidBinaries" to 1; then reboot.</p> | | 1313 | <p>Set the DWORD value "EnableSetuidBinaries" to 1; then reboot.</p> |
1312 | </li> | | 1314 | </li> |
1313 | </ul></div> | | 1315 | </ul></div> |
1314 | </div> | | 1316 | </div> |
1315 | <div class="sect3"> | | 1317 | <div class="sect3"> |
1316 | <div class="titlepage"><div><div><h4 class="title"> | | 1318 | <div class="titlepage"><div><div><h4 class="title"> |
1317 | <a name="platform.interix-notes"></a>3.3.5.3. Important notes for using pkgsrc</h4></div></div></div> | | 1319 | <a name="platform.interix-notes"></a>3.3.5.3. Important notes for using pkgsrc</h4></div></div></div> |
1318 | <p>The package manager (either the pkgsrc "su" user, or the user | | 1320 | <p>The package manager (either the pkgsrc "su" user, or the user |
1319 | running "pkg_add") must be a member of the local Administrators | | 1321 | running "pkg_add") must be a member of the local Administrators |
1320 | group. Such a user must also be used to run the bootstrap. This is | | 1322 | group. Such a user must also be used to run the bootstrap. This is |
1321 | slightly relaxed from the normal pkgsrc requirement of "root".</p> | | 1323 | slightly relaxed from the normal pkgsrc requirement of "root".</p> |
1322 | <p>The package manager should use a umask of 002. "make install" will | | 1324 | <p>The package manager should use a umask of 002. "make install" will |
1323 | automatically complain if this is not the case. This ensures that | | 1325 | automatically complain if this is not the case. This ensures that |
1324 | directories written in /var/db/pkg are Administrators-group writeable.</p> | | 1326 | directories written in /var/db/pkg are Administrators-group writeable.</p> |
1325 | <p>The popular Interix binary packages from http://www.interopsystems.com/ | | 1327 | <p>The popular Interix binary packages from http://www.interopsystems.com/ |
1326 | use an older version of pkgsrc's pkg_* tools. Ideally, these should | | 1328 | use an older version of pkgsrc's pkg_* tools. Ideally, these should |
1327 | NOT be used in conjunction with pkgsrc. If you choose to use them at | | 1329 | NOT be used in conjunction with pkgsrc. If you choose to use them at |
1328 | the same time as the pkgsrc packages, ensure that you use the proper | | 1330 | the same time as the pkgsrc packages, ensure that you use the proper |
1329 | pkg_* tools for each type of binary package.</p> | | 1331 | pkg_* tools for each type of binary package.</p> |
1330 | <p>The TERM setting used for DOS-type console windows (including those | | 1332 | <p>The TERM setting used for DOS-type console windows (including those |
1331 | invoked by the csh and ksh startup shortcuts) is "interix". Most systems | | 1333 | invoked by the csh and ksh startup shortcuts) is "interix". Most systems |
1332 | don't have a termcap/terminfo entry for it, but the following .termcap | | 1334 | don't have a termcap/terminfo entry for it, but the following .termcap |
1333 | entry provides adequate emulation in most cases:</p> | | 1335 | entry provides adequate emulation in most cases:</p> |
1334 | <pre class="programlisting"> | | 1336 | <pre class="programlisting"> |
1335 | interix:kP=\E[S:kN=\E[T:kH=\E[U:dc@:DC@:tc=pcansi: | | 1337 | interix:kP=\E[S:kN=\E[T:kH=\E[U:dc@:DC@:tc=pcansi: |
1336 | </pre> | | 1338 | </pre> |
1337 | </div> | | 1339 | </div> |
1338 | <div class="sect3"> | | 1340 | <div class="sect3"> |
1339 | <div class="titlepage"><div><div><h4 class="title"> | | 1341 | <div class="titlepage"><div><div><h4 class="title"> |
1340 | <a name="platform.interix-limits"></a>3.3.5.4. Limitations of the Interix platform</h4></div></div></div> | | 1342 | <a name="platform.interix-limits"></a>3.3.5.4. Limitations of the Interix platform</h4></div></div></div> |
1341 | <p>Though Interix suffices as a familiar and flexible substitute | | 1343 | <p>Though Interix suffices as a familiar and flexible substitute |
1342 | for a full Unix-like platform, it has some drawbacks that should | | 1344 | for a full Unix-like platform, it has some drawbacks that should |
1343 | be noted for those desiring to make the most of Interix.</p> | | 1345 | be noted for those desiring to make the most of Interix.</p> |
1344 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 1346 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
1345 | <li class="listitem"> | | 1347 | <li class="listitem"> |
1346 | <p><span class="strong"><strong>X11:</strong></span></p> | | 1348 | <p><span class="strong"><strong>X11:</strong></span></p> |
1347 | <p>Interix comes with the standard set of X11R6 client libraries, | | 1349 | <p>Interix comes with the standard set of X11R6 client libraries, |
1348 | and can run X11 based applications, but it does | | 1350 | and can run X11 based applications, but it does |
1349 | <span class="emphasis"><em>not</em></span> come with an X server. Some options are | | 1351 | <span class="emphasis"><em>not</em></span> come with an X server. Some options are |
1350 | <a class="ulink" href="http://www.starnet.com/products/xwin32/" target="_top">StarNet X-Win32</a>, | | 1352 | <a class="ulink" href="http://www.starnet.com/products/xwin32/" target="_top">StarNet X-Win32</a>, |
1351 | <a class="ulink" href="http://connectivity.hummingbird.com/products/nc/exceed/" target="_top">Hummingbird Exceed</a> | | 1353 | <a class="ulink" href="http://connectivity.hummingbird.com/products/nc/exceed/" target="_top">Hummingbird Exceed</a> |
1352 | (available in a trimmed version for Interix from Interop Systems as the | | 1354 | (available in a trimmed version for Interix from Interop Systems as the |
1353 | <a class="ulink" href="http://www.interopsystems.com/InteropXserver.htm" target="_top">Interop X Server</a>), | | 1355 | <a class="ulink" href="http://www.interopsystems.com/InteropXserver.htm" target="_top">Interop X Server</a>), |
1354 | and the free X11 server included with | | 1356 | and the free X11 server included with |
1355 | <a class="ulink" href="http://x.cygwin.com/" target="_top">Cygwin</a>.</p> | | 1357 | <a class="ulink" href="http://x.cygwin.com/" target="_top">Cygwin</a>.</p> |
1356 | </li> | | 1358 | </li> |
1357 | <li class="listitem"> | | 1359 | <li class="listitem"> |
1358 | <p><span class="strong"><strong>X11 acceleration:</strong></span></p> | | 1360 | <p><span class="strong"><strong>X11 acceleration:</strong></span></p> |
1359 | <p>Because Interix runs in a completely different NT subsystem from | | 1361 | <p>Because Interix runs in a completely different NT subsystem from |
1360 | Win32 applications, it does not currently support various X11 | | 1362 | Win32 applications, it does not currently support various X11 |
1361 | protocol extensions for acceleration (such as MIT-SHM or DGA). | | 1363 | protocol extensions for acceleration (such as MIT-SHM or DGA). |
1362 | Most interactive applications to a local X server will run | | 1364 | Most interactive applications to a local X server will run |
1363 | reasonably fast, but full motion video and other graphics | | 1365 | reasonably fast, but full motion video and other graphics |
1364 | intensive applications may require a faster-than-expected CPU.</p> | | 1366 | intensive applications may require a faster-than-expected CPU.</p> |
1365 | </li> | | 1367 | </li> |
1366 | <li class="listitem"> | | 1368 | <li class="listitem"> |
1367 | <p><span class="strong"><strong>Audio:</strong></span></p> | | 1369 | <p><span class="strong"><strong>Audio:</strong></span></p> |
1368 | <p>Interix has no native support for audio output. For audio | | 1370 | <p>Interix has no native support for audio output. For audio |
1369 | support, pkgsrc uses the <span class="command"><strong>esound</strong></span> client/server | | 1371 | support, pkgsrc uses the <span class="command"><strong>esound</strong></span> client/server |
1370 | audio system on Interix. Unlike on most platforms, the | | 1372 | audio system on Interix. Unlike on most platforms, the |
1371 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/audio/esound/README.html" target="_top"><code class="filename">audio/esound</code></a> package does | | 1373 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/audio/esound/README.html" target="_top"><code class="filename">audio/esound</code></a> package does |
1372 | <span class="emphasis"><em>not</em></span> contain the <span class="command"><strong>esd</strong></span> | | 1374 | <span class="emphasis"><em>not</em></span> contain the <span class="command"><strong>esd</strong></span> |
1373 | server component. To output audio via an Interix host, the | | 1375 | server component. To output audio via an Interix host, the |
1374 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/emulators/cygwin_esound/README.html" target="_top"><code class="filename">emulators/cygwin_esound</code></a> package | | 1376 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/emulators/cygwin_esound/README.html" target="_top"><code class="filename">emulators/cygwin_esound</code></a> package |
1375 | must also be installed.</p> | | 1377 | must also be installed.</p> |
1376 | </li> | | 1378 | </li> |
1377 | <li class="listitem"> | | 1379 | <li class="listitem"> |
1378 | <p><span class="strong"><strong>CD/DVDs, USB, and SCSI:</strong></span></p> | | 1380 | <p><span class="strong"><strong>CD/DVDs, USB, and SCSI:</strong></span></p> |
1379 | <p>Direct device access is not currently supported in Interix, so it | | 1381 | <p>Direct device access is not currently supported in Interix, so it |
1380 | is not currently possible to access CD/DVD drives, USB devices, | | 1382 | is not currently possible to access CD/DVD drives, USB devices, |
1381 | or SCSI devices through non-filesystem means. Among other things, | | 1383 | or SCSI devices through non-filesystem means. Among other things, |
1382 | this makes it impossible to use Interix directly for CD/DVD | | 1384 | this makes it impossible to use Interix directly for CD/DVD |
1383 | burning.</p> | | 1385 | burning.</p> |
1384 | </li> | | 1386 | </li> |
1385 | <li class="listitem"> | | 1387 | <li class="listitem"> |
1386 | <p><span class="strong"><strong>Tape drives:</strong></span></p> | | 1388 | <p><span class="strong"><strong>Tape drives:</strong></span></p> |
1387 | <p>Due to the same limitations as for CD-ROMs and SCSI devices, tape | | 1389 | <p>Due to the same limitations as for CD-ROMs and SCSI devices, tape |
1388 | drives are also not directly accessible in Interix. However, | | 1390 | drives are also not directly accessible in Interix. However, |
1389 | support is in work to make tape drive access possible by using | | 1391 | support is in work to make tape drive access possible by using |
1390 | Cygwin as a bridge (similarly to audio bridged via Cygwin's | | 1392 | Cygwin as a bridge (similarly to audio bridged via Cygwin's |
1391 | esound server).</p> | | 1393 | esound server).</p> |
1392 | </li> | | 1394 | </li> |
1393 | </ul></div> | | 1395 | </ul></div> |
1394 | </div> | | 1396 | </div> |
1395 | <div class="sect3"> | | 1397 | <div class="sect3"> |
1396 | <div class="titlepage"><div><div><h4 class="title"> | | 1398 | <div class="titlepage"><div><div><h4 class="title"> |
1397 | <a name="platform.interix-knownissues"></a>3.3.5.5. Known issues for pkgsrc on Interix</h4></div></div></div> | | 1399 | <a name="platform.interix-knownissues"></a>3.3.5.5. Known issues for pkgsrc on Interix</h4></div></div></div> |
1398 | <p>It is not necessary, in general, to have a "root" user on the | | 1400 | <p>It is not necessary, in general, to have a "root" user on the |
1399 | Windows system; any member of the local Administrators group will | | 1401 | Windows system; any member of the local Administrators group will |
1400 | suffice. However, some packages currently assume that the user | | 1402 | suffice. However, some packages currently assume that the user |
1401 | named "root" is the privileged user. To accommodate these, you | | 1403 | named "root" is the privileged user. To accommodate these, you |
1402 | may create such a user; make sure it is in the local group | | 1404 | may create such a user; make sure it is in the local group |
1403 | Administrators (or your language equivalent).</p> | | 1405 | Administrators (or your language equivalent).</p> |
1404 | <p><span class="command"><strong>pkg_add</strong></span> creates directories of mode | | 1406 | <p><span class="command"><strong>pkg_add</strong></span> creates directories of mode |
1405 | 0755, not 0775, in <code class="filename">$PKG_DBDIR</code>. For the | | 1407 | 0755, not 0775, in <code class="filename">$PKG_DBDIR</code>. For the |
1406 | time being, install packages as the local Administrator (or | | 1408 | time being, install packages as the local Administrator (or |
1407 | your language equivalent), or run the following command after | | 1409 | your language equivalent), or run the following command after |
1408 | installing a package to work around the issue:</p> | | 1410 | installing a package to work around the issue:</p> |
1409 | <pre class="screen"> | | 1411 | <pre class="screen"> |
1410 | <code class="prompt">#</code> <strong class="userinput"><code>chmod -R g+w $PKG_DBDIR</code></strong> | | 1412 | <code class="prompt">#</code> <strong class="userinput"><code>chmod -R g+w $PKG_DBDIR</code></strong> |
1411 | </pre> | | 1413 | </pre> |
1412 | </div> | | 1414 | </div> |
1413 | </div> | | 1415 | </div> |
1414 | <div class="sect2"> | | 1416 | <div class="sect2"> |
1415 | <div class="titlepage"><div><div><h3 class="title"> | | 1417 | <div class="titlepage"><div><div><h3 class="title"> |
1416 | <a name="irix"></a>3.3.6. IRIX</h3></div></div></div> | | 1418 | <a name="irix"></a>3.3.6. IRIX</h3></div></div></div> |
1417 | <p>You will need a working C compiler, either gcc or SGI's MIPS and MIPSpro | | 1419 | <p>You will need a working C compiler, either gcc or SGI's MIPS and MIPSpro |
1418 | compiler (cc/c89). Please set the <code class="varname">CC</code> environment variable | | 1420 | compiler (cc/c89). Please set the <code class="varname">CC</code> environment variable |
1419 | according to your preference. If you do not have a license for the MIPSpro | | 1421 | according to your preference. If you do not have a license for the MIPSpro |
1420 | compiler suite, you can download a gcc tardist file from <a class="ulink" href="http://freeware.sgi.com/" target="_top">http://freeware.sgi.com/</a>.</p> | | 1422 | compiler suite, you can download a gcc tardist file from <a class="ulink" href="http://freeware.sgi.com/" target="_top">http://freeware.sgi.com/</a>.</p> |
1421 | <p>Please note that you will need IRIX 6.5.17 or higher, as this is the earliest | | 1423 | <p>Please note that you will need IRIX 6.5.17 or higher, as this is the earliest |
1422 | version of IRIX providing support for <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?if_indextoname+3+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">if_indextoname</span>(3)</span></a>, <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?if_nametoindex+3+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">if_nametoindex</span>(3)</span></a>, | | 1424 | version of IRIX providing support for <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?if_indextoname+3+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">if_indextoname</span>(3)</span></a>, <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?if_nametoindex+3+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">if_nametoindex</span>(3)</span></a>, |
1423 | etc.</p> | | 1425 | etc.</p> |
1424 | <p>At this point in time, pkgsrc only supports one ABI at a time. That is, you cannot | | 1426 | <p>At this point in time, pkgsrc only supports one ABI at a time. That is, you cannot |
1425 | switch between the old 32-bit ABI, the new 32-bit ABI and the 64-bit ABI. If | | 1427 | switch between the old 32-bit ABI, the new 32-bit ABI and the 64-bit ABI. If |
1426 | you start out using "abi=n32", that's what all your packages will be built | | 1428 | you start out using "abi=n32", that's what all your packages will be built |
1427 | with.</p> | | 1429 | with.</p> |
1428 | <p>Therefore, please make sure that you have no conflicting | | 1430 | <p>Therefore, please make sure that you have no conflicting |
1429 | <code class="varname">CFLAGS</code> in your environment or the | | 1431 | <code class="varname">CFLAGS</code> in your environment or the |
1430 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. Particularly, make sure that you do not | | 1432 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. Particularly, make sure that you do not |
1431 | try to link n32 object files with lib64 or vice versa. Check your | | 1433 | try to link n32 object files with lib64 or vice versa. Check your |
1432 | <code class="filename">/etc/compiler.defaults</code>!</p> | | 1434 | <code class="filename">/etc/compiler.defaults</code>!</p> |
1433 | <p>If you have the actual pkgsrc tree mounted via NFS from a different host, | | 1435 | <p>If you have the actual pkgsrc tree mounted via NFS from a different host, |
1434 | please make sure to set <code class="varname">WRKOBJDIR</code> to a local directory, | | 1436 | please make sure to set <code class="varname">WRKOBJDIR</code> to a local directory, |
1435 | as it appears that IRIX linker occasionally runs into issues when trying to | | 1437 | as it appears that IRIX linker occasionally runs into issues when trying to |
1436 | link over a network-mounted file system.</p> | | 1438 | link over a network-mounted file system.</p> |
1437 | <p>The bootstrapping process should set all the right options for programs such | | 1439 | <p>The bootstrapping process should set all the right options for programs such |
1438 | as imake(1), but you may want to set some options depending on your local | | 1440 | as imake(1), but you may want to set some options depending on your local |
1439 | setup. Please see <code class="filename">pkgsrc/mk/defaults/mk.conf</code> and, of | | 1441 | setup. Please see <code class="filename">pkgsrc/mk/defaults/mk.conf</code> and, of |
1440 | course, your compiler's man pages for details.</p> | | 1442 | course, your compiler's man pages for details.</p> |
1441 | <p>If you are using SGI's MIPSPro compiler, please set | | 1443 | <p>If you are using SGI's MIPSPro compiler, please set |
1442 | | | 1444 | |
1443 | </p> | | 1445 | </p> |
1444 | <pre class="programlisting"> | | 1446 | <pre class="programlisting"> |
1445 | PKGSRC_COMPILER= mipspro | | 1447 | PKGSRC_COMPILER= mipspro |
1446 | </pre> | | 1448 | </pre> |
1447 | <p> | | 1449 | <p> |
1448 | | | 1450 | |
1449 | in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. Otherwise, pkgsrc will assume you | | 1451 | in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. Otherwise, pkgsrc will assume you |
1450 | are using gcc and may end up passing invalid flags to the compiler. Note that | | 1452 | are using gcc and may end up passing invalid flags to the compiler. Note that |
1451 | bootstrap should create an appropriate <code class="filename">mk.conf.example</code> by | | 1453 | bootstrap should create an appropriate <code class="filename">mk.conf.example</code> by |
1452 | default.</p> | | 1454 | default.</p> |
1453 | <p>If you have both the MIPSPro compiler chain installed as well as gcc, | | 1455 | <p>If you have both the MIPSPro compiler chain installed as well as gcc, |
1454 | but want to make sure that MIPSPro is used, please set your <code class="varname">PATH</code> | | 1456 | but want to make sure that MIPSPro is used, please set your <code class="varname">PATH</code> |
1455 | to <span class="emphasis"><em>not</em></span> include the location of gcc (often | | 1457 | to <span class="emphasis"><em>not</em></span> include the location of gcc (often |
1456 | <code class="filename">/usr/freeware/bin</code>), and (important) pass the | | 1458 | <code class="filename">/usr/freeware/bin</code>), and (important) pass the |
1457 | '--preserve-path' flag.</p> | | 1459 | '--preserve-path' flag.</p> |
1458 | </div> | | 1460 | </div> |
1459 | <div class="sect2"> | | 1461 | <div class="sect2"> |
1460 | <div class="titlepage"><div><div><h3 class="title"> | | 1462 | <div class="titlepage"><div><div><h3 class="title"> |
1461 | <a name="linux"></a>3.3.7. Linux</h3></div></div></div> | | 1463 | <a name="linux"></a>3.3.7. Linux</h3></div></div></div> |
1462 | <p>Some versions of Linux (for example Debian GNU/Linux) need | | 1464 | <p>Some versions of Linux (for example Debian GNU/Linux) need |
1463 | either libtermcap or libcurses (libncurses). Installing the | | 1465 | either libtermcap or libcurses (libncurses). Installing the |
1464 | distributions libncurses-dev package (or equivalent) should fix | | 1466 | distributions libncurses-dev package (or equivalent) should fix |
1465 | the problem.</p> | | 1467 | the problem.</p> |
1466 | <p>pkgsrc supports both gcc (GNU Compiler Collection) and icc | | 1468 | <p>pkgsrc supports both gcc (GNU Compiler Collection) and icc |
1467 | (Intel C++ Compiler). gcc is the default. icc 8.0 and 8.1 on | | 1469 | (Intel C++ Compiler). gcc is the default. icc 8.0 and 8.1 on |
1468 | i386 have been tested.</p> | | 1470 | i386 have been tested.</p> |
1469 | <p>To bootstrap using icc, assuming the default icc installation | | 1471 | <p>To bootstrap using icc, assuming the default icc installation |
1470 | directory:</p> | | 1472 | directory:</p> |
1471 | <pre class="programlisting"> | | 1473 | <pre class="programlisting"> |
1472 | env ICCBASE=/opt/intel/cc/10.1.008 ./bootstrap --compiler=icc | | 1474 | env ICCBASE=/opt/intel/cc/10.1.008 ./bootstrap --compiler=icc |
1473 | </pre> | | 1475 | </pre> |
1474 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 1476 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
1475 | <h3 class="title">Note</h3> | | 1477 | <h3 class="title">Note</h3> |
1476 | <p>For icc 8.0 you must add `LDFLAGS=-static-libcxa' to this.</p> | | 1478 | <p>For icc 8.0 you must add `LDFLAGS=-static-libcxa' to this.</p> |
1477 | <p>For icc 8.1 you must add `LDFLAGS=-i-static' instead.</p> | | 1479 | <p>For icc 8.1 you must add `LDFLAGS=-i-static' instead.</p> |
1478 | <p>For icc 10.1 neither of these appears to be necessary.</p> | | 1480 | <p>For icc 10.1 neither of these appears to be necessary.</p> |
1479 | </div> | | 1481 | </div> |
1480 | <p>Use a value for ICCBASE that corresponds to the directory | | 1482 | <p>Use a value for ICCBASE that corresponds to the directory |
1481 | where icc is installed. After bootstrapping, set | | 1483 | where icc is installed. After bootstrapping, set |
1482 | <code class="varname">ICCBASE</code> in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>:</p> | | 1484 | <code class="varname">ICCBASE</code> in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>:</p> |
1483 | <pre class="programlisting"> | | 1485 | <pre class="programlisting"> |
1484 | ICCBASE= /opt/intel/cc/10.1.008 | | 1486 | ICCBASE= /opt/intel/cc/10.1.008 |
1485 | </pre> | | 1487 | </pre> |
1486 | <p>The pkgsrc default for <code class="varname">ICCBASE</code> is | | 1488 | <p>The pkgsrc default for <code class="varname">ICCBASE</code> is |
1487 | <code class="filename">/opt/intel_cc_80</code>. This is the default | | 1489 | <code class="filename">/opt/intel_cc_80</code>. This is the default |
1488 | install directory for icc 8.0. If you are using a more recent | | 1490 | install directory for icc 8.0. If you are using a more recent |
1489 | version, be sure to set the correct path explicitly. | | 1491 | version, be sure to set the correct path explicitly. |
1490 | </p> | | 1492 | </p> |
1491 | <p>pkgsrc uses the static linking method of the runtime libraries | | 1493 | <p>pkgsrc uses the static linking method of the runtime libraries |
1492 | provided by icc, so binaries can be run on other systems which do not | | 1494 | provided by icc, so binaries can be run on other systems which do not |
1493 | have the shared libraries installed.</p> | | 1495 | have the shared libraries installed.</p> |
1494 | <p>Libtool, however, extracts a list of libraries from the | | 1496 | <p>Libtool, however, extracts a list of libraries from the |
1495 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?ld+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">ld</span>(1)</span></a> command run when linking a C++ shared library and | | 1497 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?ld+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">ld</span>(1)</span></a> command run when linking a C++ shared library and |
1496 | records it, throwing away the -Bstatic and -Bdynamic options | | 1498 | records it, throwing away the -Bstatic and -Bdynamic options |
1497 | interspersed between the libraries. This means that | | 1499 | interspersed between the libraries. This means that |
1498 | libtool-linked C++ shared libraries will have a runtime | | 1500 | libtool-linked C++ shared libraries will have a runtime |
1499 | dependency on the icc libraries until this is fixed in | | 1501 | dependency on the icc libraries until this is fixed in |
1500 | libtool.</p> | | 1502 | libtool.</p> |
1501 | </div> | | 1503 | </div> |
1502 | <div class="sect2"> | | 1504 | <div class="sect2"> |
1503 | <div class="titlepage"><div><div><h3 class="title"> | | 1505 | <div class="titlepage"><div><div><h3 class="title"> |
1504 | <a name="mirbsd"></a>3.3.8. MirBSD</h3></div></div></div> | | 1506 | <a name="mirbsd"></a>3.3.8. MirBSD</h3></div></div></div> |
1505 | <p>pkgsrc has been tested on MirBSD #10-current (2011 and newer). | | 1507 | <p>pkgsrc has been tested on MirBSD #10-current (2011 and newer). |
1506 | Older versions might also work. Releases before #10 are not | | 1508 | Older versions might also work. Releases before #10 are not |
1507 | supported.</p> | | 1509 | supported.</p> |
1508 | <p>The package tools of the (older) native ports tree, | | 1510 | <p>The package tools of the (older) native ports tree, |
1509 | <a class="ulink" href="//www.mirbsd.org/ports.htm" target="_top">MirPorts</a>, | | 1511 | <a class="ulink" href="//www.mirbsd.org/ports.htm" target="_top">MirPorts</a>, |
1510 | have the same names as the ones used by pkgsrc. Care should be taken | | 1512 | have the same names as the ones used by pkgsrc. Care should be taken |
1511 | that the right tools are used. When installing packages from source, | | 1513 | that the right tools are used. When installing packages from source, |
1512 | use the <code class="filename">bmake</code> command for pkgsrc and | | 1514 | use the <code class="filename">bmake</code> command for pkgsrc and |
1513 | <code class="filename">mmake</code> for MirPorts.</p> | | 1515 | <code class="filename">mmake</code> for MirPorts.</p> |
1514 | <p>pkgsrc and MirPorts use the same location for the package | | 1516 | <p>pkgsrc and MirPorts use the same location for the package |
1515 | database, <code class="filename">/var/db/pkg</code>. It is strongly recommended | | 1517 | database, <code class="filename">/var/db/pkg</code>. It is strongly recommended |
1516 | to use <code class="filename">/usr/pkg/db</code> instead, so that the pkgsrc | | 1518 | to use <code class="filename">/usr/pkg/db</code> instead, so that the pkgsrc |
1517 | tree is self-contained. This is also the default setting used in the | | 1519 | tree is self-contained. This is also the default setting used in the |
1518 | binary package builds.</p> | | 1520 | binary package builds.</p> |
1519 | <p>Binary packages for MirBSD/i386 can be found on the pkgsrc ftp | | 1521 | <p>Binary packages for MirBSD/i386 can be found on the pkgsrc ftp |
1520 | server. The bootstrap kit there already contains the | | 1522 | server. The bootstrap kit there already contains the |
1521 | <span class="command"><strong>pkgin</strong></span> package manager. See the | | 1523 | <span class="command"><strong>pkgin</strong></span> package manager. See the |
1522 | <a class="ulink" href="https://www.mirbsd.org/pkgsrc.htm" target="_top">pkgsrc on MirOS</a> | | 1524 | <a class="ulink" href="https://www.mirbsd.org/pkgsrc.htm" target="_top">pkgsrc on MirOS</a> |
1523 | page for more details.</p> | | 1525 | page for more details.</p> |
1524 | </div> | | 1526 | </div> |
1525 | <div class="sect2"> | | 1527 | <div class="sect2"> |
1526 | <div class="titlepage"><div><div><h3 class="title"> | | 1528 | <div class="titlepage"><div><div><h3 class="title"> |
1527 | <a name="openbsd"></a>3.3.9. OpenBSD</h3></div></div></div> | | 1529 | <a name="openbsd"></a>3.3.9. OpenBSD</h3></div></div></div> |
1528 | <p>OpenBSD 5.1 has been tested and supported, | | 1530 | <p>OpenBSD 5.1 has been tested and supported, |
1529 | other versions may work.</p> | | 1531 | other versions may work.</p> |
1530 | <p>Care should be taken so that the tools that this kit installs do not conflict | | 1532 | <p>Care should be taken so that the tools that this kit installs do not conflict |
1531 | with the OpenBSD userland tools. There are several steps:</p> | | 1533 | with the OpenBSD userland tools. There are several steps:</p> |
1532 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 1534 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
1533 | <li class="listitem"><p>OpenBSD stores its ports pkg database in | | 1535 | <li class="listitem"><p>OpenBSD stores its ports pkg database in |
1534 | <code class="filename">/var/db/pkg</code>. It is therefore | | 1536 | <code class="filename">/var/db/pkg</code>. It is therefore |
1535 | recommended that you choose a different location (e.g. | | 1537 | recommended that you choose a different location (e.g. |
1536 | <code class="filename">/usr/pkgdb</code>) by | | 1538 | <code class="filename">/usr/pkgdb</code>) by |
1537 | using the --pkgdbdir option to the bootstrap script.</p></li> | | 1539 | using the --pkgdbdir option to the bootstrap script.</p></li> |
1538 | <li class="listitem"> | | 1540 | <li class="listitem"> |
1539 | <p>If you do not intend to use the OpenBSD ports tools, it's probably a | | 1541 | <p>If you do not intend to use the OpenBSD ports tools, it's probably a |
1540 | good idea to move them out of the way to avoid confusion, e.g.</p> | | 1542 | good idea to move them out of the way to avoid confusion, e.g.</p> |
1541 | <pre class="screen"> | | 1543 | <pre class="screen"> |
1542 | <code class="prompt">#</code> <strong class="userinput"><code>cd /usr/sbin</code></strong> | | 1544 | <code class="prompt">#</code> <strong class="userinput"><code>cd /usr/sbin</code></strong> |
1543 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_add pkg_add.orig</code></strong> | | 1545 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_add pkg_add.orig</code></strong> |
1544 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_create pkg_create.orig</code></strong> | | 1546 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_create pkg_create.orig</code></strong> |
1545 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_delete pkg_delete.orig</code></strong> | | 1547 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_delete pkg_delete.orig</code></strong> |
1546 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_info pkg_info.orig</code></strong> | | 1548 | <code class="prompt">#</code> <strong class="userinput"><code>mv pkg_info pkg_info.orig</code></strong> |
1547 | </pre> | | 1549 | </pre> |
1548 | </li> | | 1550 | </li> |
1549 | <li class="listitem"> | | 1551 | <li class="listitem"> |
1550 | <p>An example <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file will be placed in | | 1552 | <p>An example <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file will be placed in |
1551 | <code class="filename">/etc/mk.conf.example</code> file | | 1553 | <code class="filename">/etc/mk.conf.example</code> file |
1552 | when you use the bootstrap script. OpenBSD's make program uses | | 1554 | when you use the bootstrap script. OpenBSD's make program uses |
1553 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> | | 1555 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> |
1554 | as well. You can work around this by enclosing all the pkgsrc-specific parts | | 1556 | as well. You can work around this by enclosing all the pkgsrc-specific parts |
1555 | of the file with:</p> | | 1557 | of the file with:</p> |
1556 | <pre class="programlisting"> | | 1558 | <pre class="programlisting"> |
1557 | .ifdef BSD_PKG_MK | | 1559 | .ifdef BSD_PKG_MK |
1558 | # pkgsrc stuff, e.g. insert defaults/mk.conf or similar here | | 1560 | # pkgsrc stuff, e.g. insert defaults/mk.conf or similar here |
1559 | .else | | 1561 | .else |
1560 | # OpenBSD stuff | | 1562 | # OpenBSD stuff |
1561 | .endif | | 1563 | .endif |
1562 | </pre> | | 1564 | </pre> |
1563 | </li> | | 1565 | </li> |
1564 | </ol></div> | | 1566 | </ol></div> |
1565 | </div> | | 1567 | </div> |
1566 | <div class="sect2"> | | 1568 | <div class="sect2"> |
1567 | <div class="titlepage"><div><div><h3 class="title"> | | 1569 | <div class="titlepage"><div><div><h3 class="title"> |
1568 | <a name="solaris"></a>3.3.10. Solaris</h3></div></div></div> | | 1570 | <a name="solaris"></a>3.3.10. Solaris</h3></div></div></div> |
1569 | <p>Solaris 2.6 through 10 are supported on both x86 and sparc. | | 1571 | <p>Solaris 2.6 through 10 are supported on both x86 and sparc. |
1570 | You will need a working C compiler. Both gcc 4.5.3 and | | 1572 | You will need a working C compiler. Both gcc 4.5.3 and |
1571 | Sun WorkShop 5 have been tested.</p> | | 1573 | Sun WorkShop 5 have been tested.</p> |
1572 | <p>The following packages are required on Solaris 8 for the bootstrap | | 1574 | <p>The following packages are required on Solaris 8 for the bootstrap |
1573 | process and to build packages.</p> | | 1575 | process and to build packages.</p> |
1574 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 1576 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
1575 | <li class="listitem"><p>SUNWsprot</p></li> | | 1577 | <li class="listitem"><p>SUNWsprot</p></li> |
1576 | <li class="listitem"><p>SUNWarc</p></li> | | 1578 | <li class="listitem"><p>SUNWarc</p></li> |
1577 | <li class="listitem"><p>SUNWbtool</p></li> | | 1579 | <li class="listitem"><p>SUNWbtool</p></li> |
1578 | <li class="listitem"><p>SUNWtoo</p></li> | | 1580 | <li class="listitem"><p>SUNWtoo</p></li> |
1579 | <li class="listitem"><p>SUNWlibm</p></li> | | 1581 | <li class="listitem"><p>SUNWlibm</p></li> |
1580 | </ul></div> | | 1582 | </ul></div> |
1581 | <p>Please note that the use of GNU binutils on Solaris is | | 1583 | <p>Please note that the use of GNU binutils on Solaris is |
1582 | <span class="emphasis"><em>not</em></span> supported, as of June 2006.</p> | | 1584 | <span class="emphasis"><em>not</em></span> supported, as of June 2006.</p> |
1583 | <p>Whichever compiler you use, please ensure the compiler tools and | | 1585 | <p>Whichever compiler you use, please ensure the compiler tools and |
1584 | your $prefix are in your <code class="varname">PATH</code>. This includes | | 1586 | your $prefix are in your <code class="varname">PATH</code>. This includes |
1585 | <code class="filename">/usr/ccs/{bin,lib}</code> | | 1587 | <code class="filename">/usr/ccs/{bin,lib}</code> |
1586 | and e.g. <code class="filename">/usr/pkg/{bin,sbin}</code>.</p> | | 1588 | and e.g. <code class="filename">/usr/pkg/{bin,sbin}</code>.</p> |
1587 | <div class="sect3"> | | 1589 | <div class="sect3"> |
1588 | <div class="titlepage"><div><div><h4 class="title"> | | 1590 | <div class="titlepage"><div><div><h4 class="title"> |
1589 | <a name="solaris-gcc-note"></a>3.3.10.1. If you are using gcc</h4></div></div></div> | | 1591 | <a name="solaris-gcc-note"></a>3.3.10.1. If you are using gcc</h4></div></div></div> |
1590 | <p>It makes life much simpler if you only use the same gcc consistently | | 1592 | <p>It makes life much simpler if you only use the same gcc consistently |
1591 | for building all packages.</p> | | 1593 | for building all packages.</p> |
1592 | <p>It is recommended that an external gcc be used only for bootstrapping, | | 1594 | <p>It is recommended that an external gcc be used only for bootstrapping, |
1593 | then either build gcc from | | 1595 | then either build gcc from |
1594 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/lang/gcc46/README.html" target="_top"><code class="filename">lang/gcc46</code></a> or install a binary gcc | | 1596 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/lang/gcc46/README.html" target="_top"><code class="filename">lang/gcc46</code></a> or install a binary gcc |
1595 | package, then remove gcc used during bootstrapping.</p> | | 1597 | package, then remove gcc used during bootstrapping.</p> |
1596 | <p>Binary packages of gcc can be found through <a class="ulink" href="http://www.sunfreeware.com/" target="_top">http://www.sunfreeware.com/</a>.</p> | | 1598 | <p>Binary packages of gcc can be found through <a class="ulink" href="http://www.sunfreeware.com/" target="_top">http://www.sunfreeware.com/</a>.</p> |
1597 | </div> | | 1599 | </div> |
1598 | <div class="sect3"> | | 1600 | <div class="sect3"> |
1599 | <div class="titlepage"><div><div><h4 class="title"> | | 1601 | <div class="titlepage"><div><div><h4 class="title"> |
1600 | <a name="solaris-sun-workshop-note"></a>3.3.10.2. If you are using Sun WorkShop</h4></div></div></div> | | 1602 | <a name="solaris-sun-workshop-note"></a>3.3.10.2. If you are using Sun WorkShop</h4></div></div></div> |
1601 | <p>You will need at least the following packages installed (from WorkShop | | 1603 | <p>You will need at least the following packages installed (from WorkShop |
1602 | 5.0)</p> | | 1604 | 5.0)</p> |
1603 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 1605 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
1604 | <li class="listitem"><p>SPROcc | | 1606 | <li class="listitem"><p>SPROcc |
1605 | - Sun WorkShop Compiler C 5.0</p></li> | | 1607 | - Sun WorkShop Compiler C 5.0</p></li> |
1606 | <li class="listitem"><p>SPROcpl | | 1608 | <li class="listitem"><p>SPROcpl |
1607 | - Sun WorkShop Compiler C++ 5.0</p></li> | | 1609 | - Sun WorkShop Compiler C++ 5.0</p></li> |
1608 | <li class="listitem"><p>SPROild | | 1610 | <li class="listitem"><p>SPROild |
1609 | - Sun WorkShop Incremental Linker</p></li> | | 1611 | - Sun WorkShop Incremental Linker</p></li> |
1610 | <li class="listitem"><p>SPROlang | | 1612 | <li class="listitem"><p>SPROlang |
1611 | - Sun WorkShop Compilers common components</p></li> | | 1613 | - Sun WorkShop Compilers common components</p></li> |
1612 | </ul></div> | | 1614 | </ul></div> |
1613 | <p>You should set the following variables in your | | 1615 | <p>You should set the following variables in your |
1614 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file:</p> | | 1616 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file:</p> |
1615 | <pre class="programlisting"> | | 1617 | <pre class="programlisting"> |
1616 | CC= cc | | 1618 | CC= cc |
1617 | CXX= CC | | 1619 | CXX= CC |
1618 | CPP= cc -E | | 1620 | CPP= cc -E |
1619 | CXXCPP= CC -E | | 1621 | CXXCPP= CC -E |
1620 | </pre> | | 1622 | </pre> |
1621 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 1623 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
1622 | <h3 class="title">Note</h3> | | 1624 | <h3 class="title">Note</h3> |
1623 | <p>The <code class="varname">CPP</code> setting might break some | | 1625 | <p>The <code class="varname">CPP</code> setting might break some |
1624 | packages that use the C preprocessor for processing things other | | 1626 | packages that use the C preprocessor for processing things other |
1625 | than C source code.</p> | | 1627 | than C source code.</p> |
1626 | </div> | | 1628 | </div> |
1627 | </div> | | 1629 | </div> |
1628 | <div class="sect3"> | | 1630 | <div class="sect3"> |
1629 | <div class="titlepage"><div><div><h4 class="title"> | | 1631 | <div class="titlepage"><div><div><h4 class="title"> |
1630 | <a name="solaris-sunpro-64"></a>3.3.10.3. Building 64-bit binaries with SunPro</h4></div></div></div> | | 1632 | <a name="solaris-sunpro-64"></a>3.3.10.3. Building 64-bit binaries with SunPro</h4></div></div></div> |
1631 | <p>To build 64-bit packages, you just need to have the | | 1633 | <p>To build 64-bit packages, you just need to have the |
1632 | following lines in your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file:</p> | | 1634 | following lines in your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file:</p> |
1633 | <pre class="programlisting"> | | 1635 | <pre class="programlisting"> |
1634 | PKGSRC_COMPILER= sunpro | | 1636 | PKGSRC_COMPILER= sunpro |
1635 | ABI= 64 | | 1637 | ABI= 64 |
1636 | </pre> | | 1638 | </pre> |
1637 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 1639 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
1638 | <h3 class="title">Note</h3> | | 1640 | <h3 class="title">Note</h3> |
1639 | <p>This setting has been tested for the SPARC | | 1641 | <p>This setting has been tested for the SPARC |
1640 | architecture. Intel and AMD machines need some more | | 1642 | architecture. Intel and AMD machines need some more |
1641 | work.</p> | | 1643 | work.</p> |
1642 | </div> | | 1644 | </div> |
1643 | </div> | | 1645 | </div> |
1644 | <div class="sect3"> | | 1646 | <div class="sect3"> |
1645 | <div class="titlepage"><div><div><h4 class="title"> | | 1647 | <div class="titlepage"><div><div><h4 class="title"> |
1646 | <a name="plat.sunos.problems"></a>3.3.10.4. Common problems</h4></div></div></div> | | 1648 | <a name="plat.sunos.problems"></a>3.3.10.4. Common problems</h4></div></div></div> |
1647 | <p>Sometimes, when using <span class="command"><strong>libtool</strong></span>, | | 1649 | <p>Sometimes, when using <span class="command"><strong>libtool</strong></span>, |
1648 | <code class="filename">/bin/ksh</code> crashes with a segmentation fault. | | 1650 | <code class="filename">/bin/ksh</code> crashes with a segmentation fault. |
1649 | The workaround is to use another shell for the configure | | 1651 | The workaround is to use another shell for the configure |
1650 | scripts, for example by installing <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/shells/bash/README.html" target="_top"><code class="filename">shells/bash</code></a> and adding the following lines | | 1652 | scripts, for example by installing <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/shells/bash/README.html" target="_top"><code class="filename">shells/bash</code></a> and adding the following lines |
1651 | to your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>:</p> | | 1653 | to your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>:</p> |
1652 | <pre class="programlisting"> | | 1654 | <pre class="programlisting"> |
1653 | CONFIG_SHELL= ${LOCALBASE}/bin/bash | | 1655 | CONFIG_SHELL= ${LOCALBASE}/bin/bash |
1654 | WRAPPER_SHELL= ${LOCALBASE}/bin/bash | | 1656 | WRAPPER_SHELL= ${LOCALBASE}/bin/bash |
1655 | </pre> | | 1657 | </pre> |
1656 | <p>Then, rebuild the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/libtool-base/README.html" target="_top"><code class="filename">devel/libtool-base</code></a> package.</p> | | 1658 | <p>Then, rebuild the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/libtool-base/README.html" target="_top"><code class="filename">devel/libtool-base</code></a> package.</p> |
1657 | </div> | | 1659 | </div> |
1658 | </div> | | 1660 | </div> |
1659 | </div> | | 1661 | </div> |
1660 | </div> | | 1662 | </div> |
1661 | <div class="chapter"> | | 1663 | <div class="chapter"> |
1662 | <div class="titlepage"><div><div><h2 class="title"> | | 1664 | <div class="titlepage"><div><div><h2 class="title"> |
1663 | <a name="using"></a>Chapter 4. Using pkgsrc</h2></div></div></div> | | 1665 | <a name="using"></a>Chapter 4. Using pkgsrc</h2></div></div></div> |
1664 | <div class="toc"> | | 1666 | <div class="toc"> |
1665 | <p><b>Table of Contents</b></p> | | 1667 | <p><b>Table of Contents</b></p> |
1666 | <dl> | | 1668 | <dl> |
1667 | <dt><span class="sect1"><a href="#using-pkg">4.1. Using binary packages</a></span></dt> | | 1669 | <dt><span class="sect1"><a href="#using-pkg">4.1. Using binary packages</a></span></dt> |
1668 | <dd><dl> | | 1670 | <dd><dl> |
1669 | <dt><span class="sect2"><a href="#finding-binary-packages">4.1.1. Finding binary packages</a></span></dt> | | 1671 | <dt><span class="sect2"><a href="#finding-binary-packages">4.1.1. Finding binary packages</a></span></dt> |
1670 | <dt><span class="sect2"><a href="#installing-binary-packages">4.1.2. Installing binary packages</a></span></dt> | | 1672 | <dt><span class="sect2"><a href="#installing-binary-packages">4.1.2. Installing binary packages</a></span></dt> |
1671 | <dt><span class="sect2"><a href="#using.pkg_delete">4.1.3. Deinstalling packages</a></span></dt> | | 1673 | <dt><span class="sect2"><a href="#using.pkg_delete">4.1.3. Deinstalling packages</a></span></dt> |
1672 | <dt><span class="sect2"><a href="#using.pkg_info">4.1.4. Getting information about installed packages</a></span></dt> | | 1674 | <dt><span class="sect2"><a href="#using.pkg_info">4.1.4. Getting information about installed packages</a></span></dt> |
1673 | <dt><span class="sect2"><a href="#vulnerabilities">4.1.5. Checking for security vulnerabilities in installed packages</a></span></dt> | | 1675 | <dt><span class="sect2"><a href="#vulnerabilities">4.1.5. Checking for security vulnerabilities in installed packages</a></span></dt> |
1674 | <dt><span class="sect2"><a href="#pkg_versions">4.1.6. Finding if newer versions of your installed packages are in pkgsrc</a></span></dt> | | 1676 | <dt><span class="sect2"><a href="#pkg_versions">4.1.6. Finding if newer versions of your installed packages are in pkgsrc</a></span></dt> |
1675 | <dt><span class="sect2"><a href="#using.pkg_admin">4.1.7. Other administrative functions</a></span></dt> | | 1677 | <dt><span class="sect2"><a href="#using.pkg_admin">4.1.7. Other administrative functions</a></span></dt> |
1676 | <dt><span class="sect2"><a href="#a-word-of-warning">4.1.8. A word of warning</a></span></dt> | | 1678 | <dt><span class="sect2"><a href="#a-word-of-warning">4.1.8. A word of warning</a></span></dt> |
1677 | </dl></dd> | | 1679 | </dl></dd> |
1678 | <dt><span class="sect1"><a href="#building-packages-from-source">4.2. Building packages from source</a></span></dt> | | 1680 | <dt><span class="sect1"><a href="#building-packages-from-source">4.2. Building packages from source</a></span></dt> |
1679 | <dd><dl> | | 1681 | <dd><dl> |
1680 | <dt><span class="sect2"><a href="#requirements">4.2.1. Requirements</a></span></dt> | | 1682 | <dt><span class="sect2"><a href="#requirements">4.2.1. Requirements</a></span></dt> |
1681 | <dt><span class="sect2"><a href="#fetching-distfiles">4.2.2. Fetching distfiles</a></span></dt> | | 1683 | <dt><span class="sect2"><a href="#fetching-distfiles">4.2.2. Fetching distfiles</a></span></dt> |
1682 | <dt><span class="sect2"><a href="#how-to-build-and-install">4.2.3. How to build and install</a></span></dt> | | 1684 | <dt><span class="sect2"><a href="#how-to-build-and-install">4.2.3. How to build and install</a></span></dt> |
1683 | </dl></dd> | | 1685 | </dl></dd> |
1684 | </dl> | | 1686 | </dl> |
1685 | </div> | | 1687 | </div> |
1686 | <p>Basically, there are two ways of using pkgsrc. The first | | 1688 | <p>Basically, there are two ways of using pkgsrc. The first |
1687 | is to only install the package tools and to use binary packages | | 1689 | is to only install the package tools and to use binary packages |
1688 | that someone else has prepared. This is the <span class="quote">“<span class="quote">pkg</span>”</span> | | 1690 | that someone else has prepared. This is the <span class="quote">“<span class="quote">pkg</span>”</span> |
1689 | in pkgsrc. The second way is to install the <span class="quote">“<span class="quote">src</span>”</span> | | 1691 | in pkgsrc. The second way is to install the <span class="quote">“<span class="quote">src</span>”</span> |
1690 | of pkgsrc, too. Then you are able to build your own packages, | | 1692 | of pkgsrc, too. Then you are able to build your own packages, |
1691 | and you can still use binary packages from someone else.</p> | | 1693 | and you can still use binary packages from someone else.</p> |
1692 | <div class="sect1"> | | 1694 | <div class="sect1"> |
1693 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1695 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1694 | <a name="using-pkg"></a>4.1. Using binary packages</h2></div></div></div> | | 1696 | <a name="using-pkg"></a>4.1. Using binary packages</h2></div></div></div> |
1695 | <p>On the <a class="ulink" href="ftp://ftp.NetBSD.org/" target="_top">ftp.NetBSD.org</a> | | 1697 | <p>On the <a class="ulink" href="ftp://ftp.NetBSD.org/" target="_top">ftp.NetBSD.org</a> |
1696 | server and its mirrors, there are collections of binary packages, | | 1698 | server and its mirrors, there are collections of binary packages, |
1697 | ready to be installed. These binary packages have been built using the | | 1699 | ready to be installed. These binary packages have been built using the |
1698 | default settings for the directories, that is:</p> | | 1700 | default settings for the directories, that is:</p> |
1699 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 1701 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
1700 | <li class="listitem"><p><code class="filename">/usr/pkg</code> for <code class="varname">LOCALBASE</code>, where most of the files are installed,</p></li> | | 1702 | <li class="listitem"><p><code class="filename">/usr/pkg</code> for <code class="varname">LOCALBASE</code>, where most of the files are installed,</p></li> |
1701 | <li class="listitem"><p><code class="filename">/usr/pkg/etc</code> for configuration files,</p></li> | | 1703 | <li class="listitem"><p><code class="filename">/usr/pkg/etc</code> for configuration files,</p></li> |
1702 | <li class="listitem"><p><code class="filename">/var</code> for <code class="varname">VARBASE</code>, where those files are installed that may change after installation.</p></li> | | 1704 | <li class="listitem"><p><code class="filename">/var</code> for <code class="varname">VARBASE</code>, where those files are installed that may change after installation.</p></li> |
1703 | </ul></div> | | 1705 | </ul></div> |
1704 | <p>If you cannot use these directories for whatever reasons (maybe | | 1706 | <p>If you cannot use these directories for whatever reasons (maybe |
1705 | because you're not root), you cannot use these binary packages, but | | 1707 | because you're not root), you cannot use these binary packages, but |
1706 | have to build the packages yourself, which is explained in <a class="xref" href="#bootstrapping-pkgsrc" title="3.2. Bootstrapping pkgsrc">Section 3.2, “Bootstrapping pkgsrc”</a>.</p> | | 1708 | have to build the packages yourself, which is explained in <a class="xref" href="#bootstrapping-pkgsrc" title="3.2. Bootstrapping pkgsrc">Section 3.2, “Bootstrapping pkgsrc”</a>.</p> |
1707 | <div class="sect2"> | | 1709 | <div class="sect2"> |
1708 | <div class="titlepage"><div><div><h3 class="title"> | | 1710 | <div class="titlepage"><div><div><h3 class="title"> |
1709 | <a name="finding-binary-packages"></a>4.1.1. Finding binary packages</h3></div></div></div> | | 1711 | <a name="finding-binary-packages"></a>4.1.1. Finding binary packages</h3></div></div></div> |
1710 | <p>To install binary packages, you first need to know from where | | 1712 | <p>To install binary packages, you first need to know from where |
1711 | to get them. The first place where you should look is on the main | | 1713 | to get them. The first place where you should look is on the main |
1712 | pkgsrc FTP server in the directory <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/" target="_top"><code class="filename">/pub/pkgsrc/packages</code></a>.</p> | | 1714 | pkgsrc FTP server in the directory <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/" target="_top"><code class="filename">/pub/pkgsrc/packages</code></a>.</p> |
1713 | <p>This directory contains binary packages for multiple | | 1715 | <p>This directory contains binary packages for multiple |
1714 | platforms. First, select your operating system. (Ignore the | | 1716 | platforms. First, select your operating system. (Ignore the |
1715 | directories with version numbers attached to it, they just exist for | | 1717 | directories with version numbers attached to it, they just exist for |
1716 | legacy reasons.) Then, select your hardware architecture, and in the | | 1718 | legacy reasons.) Then, select your hardware architecture, and in the |
1717 | third step, the OS version and the <span class="quote">“<span class="quote">version</span>”</span> of pkgsrc.</p> | | 1719 | third step, the OS version and the <span class="quote">“<span class="quote">version</span>”</span> of pkgsrc.</p> |
1718 | <p>In this directory, you often find a file called | | 1720 | <p>In this directory, you often find a file called |
1719 | <code class="filename">bootstrap.tar.gz</code> which contains the package | | 1721 | <code class="filename">bootstrap.tar.gz</code> which contains the package |
1720 | management tools. If the file is missing, it is likely that your | | 1722 | management tools. If the file is missing, it is likely that your |
1721 | operating system already provides those tools. Download the file and | | 1723 | operating system already provides those tools. Download the file and |
1722 | extract it in the <code class="filename">/</code> directory. It will create | | 1724 | extract it in the <code class="filename">/</code> directory. It will create |
1723 | the directories <code class="filename">/usr/pkg</code> (containing the tools | | 1725 | the directories <code class="filename">/usr/pkg</code> (containing the tools |
1724 | for managing binary packages) and <code class="filename">/var/db/pkg</code> | | 1726 | for managing binary packages) and <code class="filename">/var/db/pkg</code> |
1725 | (the database of installed packages).</p> | | 1727 | (the database of installed packages).</p> |
1726 | </div> | | 1728 | </div> |
1727 | <div class="sect2"> | | 1729 | <div class="sect2"> |
1728 | <div class="titlepage"><div><div><h3 class="title"> | | 1730 | <div class="titlepage"><div><div><h3 class="title"> |
1729 | <a name="installing-binary-packages"></a>4.1.2. Installing binary packages</h3></div></div></div> | | 1731 | <a name="installing-binary-packages"></a>4.1.2. Installing binary packages</h3></div></div></div> |
1730 | <p>In the directory from the last section, there is a | | 1732 | <p>In the directory from the last section, there is a |
1731 | subdirectory called <code class="filename">All</code>, which contains all the | | 1733 | subdirectory called <code class="filename">All</code>, which contains all the |
1732 | binary packages that are available for the platform, excluding those | | 1734 | binary packages that are available for the platform, excluding those |
1733 | that may not be distributed via FTP or CDROM (depending on which | | 1735 | that may not be distributed via FTP or CDROM (depending on which |
1734 | medium you are using).</p> | | 1736 | medium you are using).</p> |
1735 | <p>To install packages directly from an FTP or HTTP server, run | | 1737 | <p>To install packages directly from an FTP or HTTP server, run |
1736 | the following commands in a Bourne-compatible shell (be sure to | | 1738 | the following commands in a Bourne-compatible shell (be sure to |
1737 | <span class="command"><strong>su</strong></span> to root first):</p> | | 1739 | <span class="command"><strong>su</strong></span> to root first):</p> |
1738 | <pre class="screen"> | | 1740 | <pre class="screen"> |
1739 | <code class="prompt">#</code> <strong class="userinput"><code>PATH="/usr/pkg/sbin:$PATH"</code></strong> | | 1741 | <code class="prompt">#</code> <strong class="userinput"><code>PATH="/usr/pkg/sbin:$PATH"</code></strong> |
1740 | <code class="prompt">#</code> <strong class="userinput"><code>PKG_PATH="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/<em class="replaceable"><code>OPSYS</code></em>/<em class="replaceable"><code>ARCH</code></em>/<em class="replaceable"><code>VERSIONS</code></em>/All"</code></strong> | | 1742 | <code class="prompt">#</code> <strong class="userinput"><code>PKG_PATH="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/<em class="replaceable"><code>OPSYS</code></em>/<em class="replaceable"><code>ARCH</code></em>/<em class="replaceable"><code>VERSIONS</code></em>/All"</code></strong> |
1741 | <code class="prompt">#</code> <strong class="userinput"><code>export PATH PKG_PATH</code></strong> | | 1743 | <code class="prompt">#</code> <strong class="userinput"><code>export PATH PKG_PATH</code></strong> |
1742 | </pre> | | 1744 | </pre> |
1743 | <p>Instead of URLs, you can also use local paths, for example if | | 1745 | <p>Instead of URLs, you can also use local paths, for example if |
1744 | you are installing from a set of CDROMs, DVDs or an NFS-mounted | | 1746 | you are installing from a set of CDROMs, DVDs or an NFS-mounted |
1745 | repository. If you want to install packages from multiple sources, | | 1747 | repository. If you want to install packages from multiple sources, |
1746 | you can separate them by a semicolon in | | 1748 | you can separate them by a semicolon in |
1747 | <code class="varname">PKG_PATH</code>.</p> | | 1749 | <code class="varname">PKG_PATH</code>.</p> |
1748 | <p>After these preparations, installing a package is very | | 1750 | <p>After these preparations, installing a package is very |
1749 | easy:</p> | | 1751 | easy:</p> |
1750 | <pre class="screen"> | | 1752 | <pre class="screen"> |
1751 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_add openoffice2</code></strong> | | 1753 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_add openoffice2</code></strong> |
1752 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_add kde-3.5.7</code></strong> | | 1754 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_add kde-3.5.7</code></strong> |
1753 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_add ap2-php5-*</code></strong> | | 1755 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_add ap2-php5-*</code></strong> |
1754 | </pre> | | 1756 | </pre> |
1755 | <p>Note that any prerequisite packages needed to run the | | 1757 | <p>Note that any prerequisite packages needed to run the |
1756 | package in question will be installed, too, assuming they are | | 1758 | package in question will be installed, too, assuming they are |
1757 | present where you install from.</p> | | 1759 | present where you install from.</p> |
1758 | <p>Adding packages might install vulnerable packages. | | 1760 | <p>Adding packages might install vulnerable packages. |
1759 | Thus you should run <span class="command"><strong>pkg_admin audit</strong></span> | | 1761 | Thus you should run <span class="command"><strong>pkg_admin audit</strong></span> |
1760 | regularly, especially after installing new packages, and verify | | 1762 | regularly, especially after installing new packages, and verify |
1761 | that the vulnerabilities are acceptable for your configuration.</p> | | 1763 | that the vulnerabilities are acceptable for your configuration.</p> |
1762 | <p>After you've installed packages, be sure to have | | 1764 | <p>After you've installed packages, be sure to have |
1763 | <code class="filename">/usr/pkg/bin</code> and <code class="filename">/usr/pkg/sbin</code> in your | | 1765 | <code class="filename">/usr/pkg/bin</code> and <code class="filename">/usr/pkg/sbin</code> in your |
1764 | <code class="varname">PATH</code> so you can actually start the just | | 1766 | <code class="varname">PATH</code> so you can actually start the just |
1765 | installed program.</p> | | 1767 | installed program.</p> |
1766 | </div> | | 1768 | </div> |
1767 | <div class="sect2"> | | 1769 | <div class="sect2"> |
1768 | <div class="titlepage"><div><div><h3 class="title"> | | 1770 | <div class="titlepage"><div><div><h3 class="title"> |
1769 | <a name="using.pkg_delete"></a>4.1.3. Deinstalling packages</h3></div></div></div> | | 1771 | <a name="using.pkg_delete"></a>4.1.3. Deinstalling packages</h3></div></div></div> |
1770 | <p>To deinstall a package, it does not matter whether it was | | 1772 | <p>To deinstall a package, it does not matter whether it was |
1771 | installed from source code or from a binary package. The | | 1773 | installed from source code or from a binary package. The |
1772 | <span class="command"><strong>pkg_delete</strong></span> command does not know it anyway. | | 1774 | <span class="command"><strong>pkg_delete</strong></span> command does not know it anyway. |
1773 | To delete a package, you can just run <span class="command"><strong>pkg_delete | | 1775 | To delete a package, you can just run <span class="command"><strong>pkg_delete |
1774 | <em class="replaceable"><code>package-name</code></em></strong></span>. The package | | 1776 | <em class="replaceable"><code>package-name</code></em></strong></span>. The package |
1775 | name can be given with or without version number. Wildcards can | | 1777 | name can be given with or without version number. Wildcards can |
1776 | also be used to deinstall a set of packages, for example | | 1778 | also be used to deinstall a set of packages, for example |
1777 | <code class="literal">*emacs*</code>. Be sure to include them in quotes, | | 1779 | <code class="literal">*emacs*</code>. Be sure to include them in quotes, |
1778 | so that the shell does not expand them before | | 1780 | so that the shell does not expand them before |
1779 | <code class="literal">pkg_delete</code> sees them.</p> | | 1781 | <code class="literal">pkg_delete</code> sees them.</p> |
1780 | <p>The <code class="option">-r</code> option is very powerful: it | | 1782 | <p>The <code class="option">-r</code> option is very powerful: it |
1781 | removes all the packages that require the package in question | | 1783 | removes all the packages that require the package in question |
1782 | and then removes the package itself. For example: | | 1784 | and then removes the package itself. For example: |
1783 | | | 1785 | |
1784 | </p> | | 1786 | </p> |
1785 | <pre class="screen"> | | 1787 | <pre class="screen"> |
1786 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_delete -r jpeg</code></strong> | | 1788 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_delete -r jpeg</code></strong> |
1787 | </pre> | | 1789 | </pre> |
1788 | <p> | | 1790 | <p> |
1789 | | | 1791 | |
1790 | will remove jpeg and all the packages that used it; this allows | | 1792 | will remove jpeg and all the packages that used it; this allows |
1791 | upgrading the jpeg package.</p> | | 1793 | upgrading the jpeg package.</p> |
1792 | </div> | | 1794 | </div> |
1793 | <div class="sect2"> | | 1795 | <div class="sect2"> |
1794 | <div class="titlepage"><div><div><h3 class="title"> | | 1796 | <div class="titlepage"><div><div><h3 class="title"> |
1795 | <a name="using.pkg_info"></a>4.1.4. Getting information about installed packages</h3></div></div></div> | | 1797 | <a name="using.pkg_info"></a>4.1.4. Getting information about installed packages</h3></div></div></div> |
1796 | <p>The <span class="command"><strong>pkg_info</strong></span> shows information about | | 1798 | <p>The <span class="command"><strong>pkg_info</strong></span> shows information about |
1797 | installed packages or binary package files.</p> | | 1799 | installed packages or binary package files.</p> |
1798 | </div> | | 1800 | </div> |
1799 | <div class="sect2"> | | 1801 | <div class="sect2"> |
1800 | <div class="titlepage"><div><div><h3 class="title"> | | 1802 | <div class="titlepage"><div><div><h3 class="title"> |
1801 | <a name="vulnerabilities"></a>4.1.5. Checking for security vulnerabilities in installed packages</h3></div></div></div> | | 1803 | <a name="vulnerabilities"></a>4.1.5. Checking for security vulnerabilities in installed packages</h3></div></div></div> |
1802 | <p> | | 1804 | <p> |
1803 | The NetBSD Security-Officer and Packages Groups maintain a list of | | 1805 | The NetBSD Security-Officer and Packages Groups maintain a list of |
1804 | known security vulnerabilities to packages which are (or have been) | | 1806 | known security vulnerabilities to packages which are (or have been) |
1805 | included in pkgsrc. The list is available from the NetBSD | | 1807 | included in pkgsrc. The list is available from the NetBSD |
1806 | FTP site at <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/vulnerabilities" target="_top">ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/vulnerabilities</a>. | | 1808 | FTP site at <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/vulnerabilities" target="_top">ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/vulnerabilities</a>. |
1807 | </p> | | 1809 | </p> |
1808 | <p> | | 1810 | <p> |
1809 | Through <span class="command"><strong>pkg_admin fetch-pkg-vulnerabilities</strong></span>, | | 1811 | Through <span class="command"><strong>pkg_admin fetch-pkg-vulnerabilities</strong></span>, |
1810 | this list can be downloaded | | 1812 | this list can be downloaded |
1811 | automatically, and a security audit of all packages installed on a system | | 1813 | automatically, and a security audit of all packages installed on a system |
1812 | can take place. | | 1814 | can take place. |
1813 | </p> | | 1815 | </p> |
1814 | <p> | | 1816 | <p> |
1815 | There are two components to auditing. The first | | 1817 | There are two components to auditing. The first |
1816 | step, <span class="command"><strong>pkg_admin fetch-pkg-vulnerabilities</strong></span>, | | 1818 | step, <span class="command"><strong>pkg_admin fetch-pkg-vulnerabilities</strong></span>, |
1817 | is for downloading | | 1819 | is for downloading |
1818 | the list of vulnerabilities from the NetBSD FTP site. The second | | 1820 | the list of vulnerabilities from the NetBSD FTP site. The second |
1819 | step, <span class="command"><strong>pkg_admin audit</strong></span>, checks to see if any of your | | 1821 | step, <span class="command"><strong>pkg_admin audit</strong></span>, checks to see if any of your |
1820 | installed packages are vulnerable. If a package is vulnerable, you | | 1822 | installed packages are vulnerable. If a package is vulnerable, you |
1821 | will see output similar to the following: | | 1823 | will see output similar to the following: |
1822 | </p> | | 1824 | </p> |
1823 | <pre class="screen">Package samba-2.0.9 has a local-root-shell vulnerability, see | | 1825 | <pre class="screen">Package samba-2.0.9 has a local-root-shell vulnerability, see |
1824 | http://www.samba.org/samba/whatsnew/macroexploit.html</pre> | | 1826 | http://www.samba.org/samba/whatsnew/macroexploit.html</pre> |
1825 | <p> | | 1827 | <p> |
1826 | You may wish to have the | | 1828 | You may wish to have the |
1827 | <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/vulnerabilities" target="_top">vulnerabilities</a> | | 1829 | <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/vulnerabilities" target="_top">vulnerabilities</a> |
1828 | file downloaded daily so that | | 1830 | file downloaded daily so that |
1829 | it remains current. This may be done by adding an appropriate entry | | 1831 | it remains current. This may be done by adding an appropriate entry |
1830 | to the root users <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?crontab+5+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">crontab</span>(5)</span></a> entry. For example the entry | | 1832 | to the root users <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?crontab+5+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">crontab</span>(5)</span></a> entry. For example the entry |
1831 | </p> | | 1833 | </p> |
1832 | <pre class="screen"> | | 1834 | <pre class="screen"> |
1833 | # download vulnerabilities file | | 1835 | # download vulnerabilities file |
1834 | 0 3 * * * /usr/sbin/pkg_admin fetch-pkg-vulnerabilities >/dev/null 2>&1 | | 1836 | 0 3 * * * /usr/sbin/pkg_admin fetch-pkg-vulnerabilities >/dev/null 2>&1 |
1835 | </pre> | | 1837 | </pre> |
1836 | <p> | | 1838 | <p> |
1837 | will update the vulnerability list every day at 3AM. You may wish to do | | 1839 | will update the vulnerability list every day at 3AM. You may wish to do |
1838 | this more often than once a day. | | 1840 | this more often than once a day. |
1839 | | | 1841 | |
1840 | In addition, you may wish to run the package audit from the daily | | 1842 | In addition, you may wish to run the package audit from the daily |
1841 | security script. This may be accomplished by adding the following | | 1843 | security script. This may be accomplished by adding the following |
1842 | line to <code class="filename">/etc/security.local</code>: | | 1844 | line to <code class="filename">/etc/security.local</code>: |
1843 | </p> | | 1845 | </p> |
1844 | <pre class="screen"> | | 1846 | <pre class="screen"> |
1845 | /usr/sbin/pkg_admin audit | | 1847 | /usr/sbin/pkg_admin audit |
1846 | </pre> | | 1848 | </pre> |
1847 | <p> | | 1849 | <p> |
1848 | </p> | | 1850 | </p> |
1849 | </div> | | 1851 | </div> |
1850 | <div class="sect2"> | | 1852 | <div class="sect2"> |
1851 | <div class="titlepage"><div><div><h3 class="title"> | | 1853 | <div class="titlepage"><div><div><h3 class="title"> |
1852 | <a name="pkg_versions"></a>4.1.6. Finding if newer versions of your installed packages are in pkgsrc</h3></div></div></div> | | 1854 | <a name="pkg_versions"></a>4.1.6. Finding if newer versions of your installed packages are in pkgsrc</h3></div></div></div> |
1853 | <p> | | 1855 | <p> |
1854 | Install <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/lintpkgsrc/README.html" target="_top"><code class="filename">pkgtools/lintpkgsrc</code></a> and run | | 1856 | Install <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/lintpkgsrc/README.html" target="_top"><code class="filename">pkgtools/lintpkgsrc</code></a> and run |
1855 | <span class="command"><strong>lintpkgsrc</strong></span> with the <span class="quote">“<span class="quote">-i</span>”</span> | | 1857 | <span class="command"><strong>lintpkgsrc</strong></span> with the <span class="quote">“<span class="quote">-i</span>”</span> |
1856 | argument to check if your packages are up-to-date, e.g. | | 1858 | argument to check if your packages are up-to-date, e.g. |
1857 | </p> | | 1859 | </p> |
1858 | <pre class="screen"> | | 1860 | <pre class="screen"> |
1859 | <code class="prompt">%</code> <strong class="userinput"><code>lintpkgsrc -i</code></strong> | | 1861 | <code class="prompt">%</code> <strong class="userinput"><code>lintpkgsrc -i</code></strong> |
1860 | ... | | 1862 | ... |
1861 | Version mismatch: 'tcsh' 6.09.00 vs 6.10.00 | | 1863 | Version mismatch: 'tcsh' 6.09.00 vs 6.10.00 |
1862 | </pre> | | 1864 | </pre> |
1863 | <p>You can then use <span class="command"><strong>make update</strong></span> to update the | | 1865 | <p>You can then use <span class="command"><strong>make update</strong></span> to update the |
1864 | package on your system and rebuild any dependencies. | | 1866 | package on your system and rebuild any dependencies. |
1865 | </p> | | 1867 | </p> |
1866 | </div> | | 1868 | </div> |
1867 | <div class="sect2"> | | 1869 | <div class="sect2"> |
1868 | <div class="titlepage"><div><div><h3 class="title"> | | 1870 | <div class="titlepage"><div><div><h3 class="title"> |
1869 | <a name="using.pkg_admin"></a>4.1.7. Other administrative functions</h3></div></div></div> | | 1871 | <a name="using.pkg_admin"></a>4.1.7. Other administrative functions</h3></div></div></div> |
1870 | <p>The <span class="command"><strong>pkg_admin</strong></span> executes various | | 1872 | <p>The <span class="command"><strong>pkg_admin</strong></span> executes various |
1871 | administrative functions on the package system.</p> | | 1873 | administrative functions on the package system.</p> |
1872 | </div> | | 1874 | </div> |
1873 | <div class="sect2"> | | 1875 | <div class="sect2"> |
1874 | <div class="titlepage"><div><div><h3 class="title"> | | 1876 | <div class="titlepage"><div><div><h3 class="title"> |
1875 | <a name="a-word-of-warning"></a>4.1.8. A word of warning</h3></div></div></div> | | 1877 | <a name="a-word-of-warning"></a>4.1.8. A word of warning</h3></div></div></div> |
1876 | <p>Please pay very careful attention to the warnings | | 1878 | <p>Please pay very careful attention to the warnings |
1877 | expressed in the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a> manual page about the | | 1879 | expressed in the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a> manual page about the |
1878 | inherent dangers of installing binary packages which you did | | 1880 | inherent dangers of installing binary packages which you did |
1879 | not create yourself, and the security holes that can be | | 1881 | not create yourself, and the security holes that can be |
1880 | introduced onto your system by indiscriminate adding of such | | 1882 | introduced onto your system by indiscriminate adding of such |
1881 | files.</p> | | 1883 | files.</p> |
1882 | <p>The same warning of course applies to every package you | | 1884 | <p>The same warning of course applies to every package you |
1883 | install from source when you haven't completely read and | | 1885 | install from source when you haven't completely read and |
1884 | understood the source code of the package, the compiler that | | 1886 | understood the source code of the package, the compiler that |
1885 | is used to build the package and all the other tools that are | | 1887 | is used to build the package and all the other tools that are |
1886 | involved.</p> | | 1888 | involved.</p> |
1887 | </div> | | 1889 | </div> |
1888 | </div> | | 1890 | </div> |
1889 | <div class="sect1"> | | 1891 | <div class="sect1"> |
1890 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1892 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1891 | <a name="building-packages-from-source"></a>4.2. Building packages from source</h2></div></div></div> | | 1893 | <a name="building-packages-from-source"></a>4.2. Building packages from source</h2></div></div></div> |
1892 | <p>After obtaining pkgsrc, the <code class="filename">pkgsrc</code> | | 1894 | <p>After obtaining pkgsrc, the <code class="filename">pkgsrc</code> |
1893 | directory now contains a set of packages, organized into | | 1895 | directory now contains a set of packages, organized into |
1894 | categories. You can browse the online index of packages, or run | | 1896 | categories. You can browse the online index of packages, or run |
1895 | <span class="command"><strong>make readme</strong></span> from the <code class="filename">pkgsrc</code> | | 1897 | <span class="command"><strong>make readme</strong></span> from the <code class="filename">pkgsrc</code> |
1896 | directory to build local <code class="filename">README.html</code> files for | | 1898 | directory to build local <code class="filename">README.html</code> files for |
1897 | all packages, viewable with any web browser such as <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/lynx/README.html" target="_top"><code class="filename">www/lynx</code></a> or <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/firefox/README.html" target="_top"><code class="filename">www/firefox</code></a>.</p> | | 1899 | all packages, viewable with any web browser such as <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/lynx/README.html" target="_top"><code class="filename">www/lynx</code></a> or <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/firefox/README.html" target="_top"><code class="filename">www/firefox</code></a>.</p> |
1898 | <p>The default <span class="emphasis"><em>prefix</em></span> for installed packages | | 1900 | <p>The default <span class="emphasis"><em>prefix</em></span> for installed packages |
1899 | is <code class="filename">/usr/pkg</code>. If you wish to change this, you | | 1901 | is <code class="filename">/usr/pkg</code>. If you wish to change this, you |
1900 | should do so by setting <code class="varname">LOCALBASE</code> in | | 1902 | should do so by setting <code class="varname">LOCALBASE</code> in |
1901 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. You should not try to use multiple | | 1903 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. You should not try to use multiple |
1902 | different <code class="varname">LOCALBASE</code> definitions on the same | | 1904 | different <code class="varname">LOCALBASE</code> definitions on the same |
1903 | system (inside a chroot is an exception). </p> | | 1905 | system (inside a chroot is an exception). </p> |
1904 | <p>The rest of this chapter assumes that the package is already | | 1906 | <p>The rest of this chapter assumes that the package is already |
1905 | in pkgsrc. If it is not, see <a class="xref" href="#developers-guide" title="Part II. The pkgsrc developer's guide">Part II, “The pkgsrc developer's guide”</a> for | | 1907 | in pkgsrc. If it is not, see <a class="xref" href="#developers-guide" title="Part II. The pkgsrc developer's guide">Part II, “The pkgsrc developer's guide”</a> for |
1906 | instructions how to create your own packages.</p> | | 1908 | instructions how to create your own packages.</p> |
1907 | <div class="sect2"> | | 1909 | <div class="sect2"> |
1908 | <div class="titlepage"><div><div><h3 class="title"> | | 1910 | <div class="titlepage"><div><div><h3 class="title"> |
1909 | <a name="requirements"></a>4.2.1. Requirements</h3></div></div></div> | | 1911 | <a name="requirements"></a>4.2.1. Requirements</h3></div></div></div> |
1910 | <p>To build packages from source, you need a working C | | 1912 | <p>To build packages from source, you need a working C |
1911 | compiler. On NetBSD, you need to install the | | 1913 | compiler. On NetBSD, you need to install the |
1912 | <span class="quote">“<span class="quote">comp</span>”</span> and the <span class="quote">“<span class="quote">text</span>”</span> distribution | | 1914 | <span class="quote">“<span class="quote">comp</span>”</span> and the <span class="quote">“<span class="quote">text</span>”</span> distribution |
1913 | sets. If you want to build X11-related packages, the | | 1915 | sets. If you want to build X11-related packages, the |
1914 | <span class="quote">“<span class="quote">xbase</span>”</span> and <span class="quote">“<span class="quote">xcomp</span>”</span> distribution | | 1916 | <span class="quote">“<span class="quote">xbase</span>”</span> and <span class="quote">“<span class="quote">xcomp</span>”</span> distribution |
1915 | sets are required, too.</p> | | 1917 | sets are required, too.</p> |
1916 | </div> | | 1918 | </div> |
1917 | <div class="sect2"> | | 1919 | <div class="sect2"> |
1918 | <div class="titlepage"><div><div><h3 class="title"> | | 1920 | <div class="titlepage"><div><div><h3 class="title"> |
1919 | <a name="fetching-distfiles"></a>4.2.2. Fetching distfiles</h3></div></div></div> | | 1921 | <a name="fetching-distfiles"></a>4.2.2. Fetching distfiles</h3></div></div></div> |
1920 | <p>The first step for building a package is downloading the | | 1922 | <p>The first step for building a package is downloading the |
1921 | distfiles (i.e. the unmodified source). If they have not yet been | | 1923 | distfiles (i.e. the unmodified source). If they have not yet been |
1922 | downloaded, pkgsrc will fetch them automatically.</p> | | 1924 | downloaded, pkgsrc will fetch them automatically.</p> |
1923 | <p>If you have all files that you need in the | | 1925 | <p>If you have all files that you need in the |
1924 | <code class="filename">distfiles</code> directory, | | 1926 | <code class="filename">distfiles</code> directory, |
1925 | you don't need to connect. If the distfiles are on CD-ROM, you can | | 1927 | you don't need to connect. If the distfiles are on CD-ROM, you can |
1926 | mount the CD-ROM on <code class="filename">/cdrom</code> and add: | | 1928 | mount the CD-ROM on <code class="filename">/cdrom</code> and add: |
1927 | </p> | | 1929 | </p> |
1928 | <pre class="screen">DISTDIR=/cdrom/pkgsrc/distfiles</pre> | | 1930 | <pre class="screen">DISTDIR=/cdrom/pkgsrc/distfiles</pre> |
1929 | <p> | | 1931 | <p> |
1930 | to your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p> | | 1932 | to your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p> |
1931 | <p>By default a list of distribution sites will be randomly | | 1933 | <p>By default a list of distribution sites will be randomly |
1932 | intermixed to prevent huge load on servers which holding popular | | 1934 | intermixed to prevent huge load on servers which holding popular |
1933 | packages (for example, SourceForge.net mirrors). Thus, every | | 1935 | packages (for example, SourceForge.net mirrors). Thus, every |
1934 | time when you need to fetch yet another distfile all the mirrors | | 1936 | time when you need to fetch yet another distfile all the mirrors |
1935 | will be tried in new (random) order. You can turn this feature | | 1937 | will be tried in new (random) order. You can turn this feature |
1936 | off by setting <code class="varname">MASTER_SORT_RANDOM=NO</code> (for | | 1938 | off by setting <code class="varname">MASTER_SORT_RANDOM=NO</code> (for |
1937 | <code class="varname">PKG_DEVELOPER</code>s it's already disabled).</p> | | 1939 | <code class="varname">PKG_DEVELOPER</code>s it's already disabled).</p> |
1938 | <p>You can overwrite some of the major distribution sites to | | 1940 | <p>You can overwrite some of the major distribution sites to |
1939 | fit to sites that are close to your own. By setting one or two | | 1941 | fit to sites that are close to your own. By setting one or two |
1940 | variables you can modify the order in which the master sites are | | 1942 | variables you can modify the order in which the master sites are |
1941 | accessed. <code class="varname">MASTER_SORT</code> contains a whitespace | | 1943 | accessed. <code class="varname">MASTER_SORT</code> contains a whitespace |
1942 | delimited list of domain suffixes. | | 1944 | delimited list of domain suffixes. |
1943 | <code class="varname">MASTER_SORT_REGEX</code> is even more flexible, it | | 1945 | <code class="varname">MASTER_SORT_REGEX</code> is even more flexible, it |
1944 | contains a whitespace delimited list of regular expressions. It | | 1946 | contains a whitespace delimited list of regular expressions. It |
1945 | has higher priority than <code class="varname">MASTER_SORT</code>. Have a | | 1947 | has higher priority than <code class="varname">MASTER_SORT</code>. Have a |
1946 | look at <code class="filename">pkgsrc/mk/defaults/mk.conf</code> to find | | 1948 | look at <code class="filename">pkgsrc/mk/defaults/mk.conf</code> to find |
1947 | some examples. This may save some of your bandwidth and | | 1949 | some examples. This may save some of your bandwidth and |
1948 | time.</p> | | 1950 | time.</p> |
1949 | <p>You can change these settings either in your shell's environment, or, | | 1951 | <p>You can change these settings either in your shell's environment, or, |
1950 | if you want to keep the settings, by editing the | | 1952 | if you want to keep the settings, by editing the |
1951 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file, | | 1953 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file, |
1952 | and adding the definitions there.</p> | | 1954 | and adding the definitions there.</p> |
1953 | <p> | | 1955 | <p> |
1954 | If a package depends on many other packages (such as | | 1956 | If a package depends on many other packages (such as |
1955 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/kde3/README.html" target="_top"><code class="filename">meta-pkgs/kde3</code></a>), the build process may | | 1957 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/kde3/README.html" target="_top"><code class="filename">meta-pkgs/kde3</code></a>), the build process may |
1956 | alternate between periods of | | 1958 | alternate between periods of |
1957 | downloading source, and compiling. To ensure you have all the source | | 1959 | downloading source, and compiling. To ensure you have all the source |
1958 | downloaded initially you can run the command: | | 1960 | downloaded initially you can run the command: |
1959 | </p> | | 1961 | </p> |
1960 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make fetch-list | sh</code></strong></pre> | | 1962 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make fetch-list | sh</code></strong></pre> |
1961 | <p> | | 1963 | <p> |
1962 | which will output and run a set of shell commands to fetch the | | 1964 | which will output and run a set of shell commands to fetch the |
1963 | necessary files into the <code class="filename">distfiles</code> directory. You can | | 1965 | necessary files into the <code class="filename">distfiles</code> directory. You can |
1964 | also choose to download the files manually. | | 1966 | also choose to download the files manually. |
1965 | </p> | | 1967 | </p> |
1966 | </div> | | 1968 | </div> |
1967 | <div class="sect2"> | | 1969 | <div class="sect2"> |
1968 | <div class="titlepage"><div><div><h3 class="title"> | | 1970 | <div class="titlepage"><div><div><h3 class="title"> |
1969 | <a name="how-to-build-and-install"></a>4.2.3. How to build and install</h3></div></div></div> | | 1971 | <a name="how-to-build-and-install"></a>4.2.3. How to build and install</h3></div></div></div> |
1970 | <p> | | 1972 | <p> |
1971 | Once the software has downloaded, any patches will be applied, then it | | 1973 | Once the software has downloaded, any patches will be applied, then it |
1972 | will be compiled for you. This may take some time depending on your | | 1974 | will be compiled for you. This may take some time depending on your |
1973 | computer, and how many other packages the software depends on and their | | 1975 | computer, and how many other packages the software depends on and their |
1974 | compile time. | | 1976 | compile time. |
1975 | </p> | | 1977 | </p> |
1976 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 1978 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
1977 | <h3 class="title">Note</h3> | | 1979 | <h3 class="title">Note</h3> |
1978 | <p>If using bootstrap or pkgsrc on a non-NetBSD system, | | 1980 | <p>If using bootstrap or pkgsrc on a non-NetBSD system, |
1979 | use the pkgsrc <span class="command"><strong>bmake</strong></span> command instead of | | 1981 | use the pkgsrc <span class="command"><strong>bmake</strong></span> command instead of |
1980 | <span class="quote">“<span class="quote">make</span>”</span> in the examples in this guide.</p> | | 1982 | <span class="quote">“<span class="quote">make</span>”</span> in the examples in this guide.</p> |
1981 | </div> | | 1983 | </div> |
1982 | <p>For example, type</p> | | 1984 | <p>For example, type</p> |
1983 | <pre class="screen"> | | 1985 | <pre class="screen"> |
1984 | <code class="prompt">%</code> <strong class="userinput"><code>cd misc/figlet</code></strong> | | 1986 | <code class="prompt">%</code> <strong class="userinput"><code>cd misc/figlet</code></strong> |
1985 | <code class="prompt">%</code> <strong class="userinput"><code>make</code></strong> | | 1987 | <code class="prompt">%</code> <strong class="userinput"><code>make</code></strong> |
1986 | </pre> | | 1988 | </pre> |
1987 | <p>at the shell prompt to build the various components of the | | 1989 | <p>at the shell prompt to build the various components of the |
1988 | package.</p> | | 1990 | package.</p> |
1989 | <p>The next stage is to actually install the newly compiled | | 1991 | <p>The next stage is to actually install the newly compiled |
1990 | program onto your system. Do this by entering: | | 1992 | program onto your system. Do this by entering: |
1991 | | | 1993 | |
1992 | </p> | | 1994 | </p> |
1993 | <pre class="screen"> | | 1995 | <pre class="screen"> |
1994 | <code class="prompt">%</code> <strong class="userinput"><code>make install</code></strong> | | 1996 | <code class="prompt">%</code> <strong class="userinput"><code>make install</code></strong> |
1995 | </pre> | | 1997 | </pre> |
1996 | <p> | | 1998 | <p> |
1997 | | | 1999 | |
1998 | while you are still in the directory for whatever package you | | 2000 | while you are still in the directory for whatever package you |
1999 | are installing.</p> | | 2001 | are installing.</p> |
2000 | <p>Installing the package on your system may require you to | | 2002 | <p>Installing the package on your system may require you to |
2001 | be root. However, pkgsrc has a | | 2003 | be root. However, pkgsrc has a |
2002 | <span class="emphasis"><em>just-in-time-su</em></span> feature, which allows you | | 2004 | <span class="emphasis"><em>just-in-time-su</em></span> feature, which allows you |
2003 | to only become root for the actual installation step.</p> | | 2005 | to only become root for the actual installation step.</p> |
2004 | <p>That's it, the software should now be installed and setup for use. | | 2006 | <p>That's it, the software should now be installed and setup for use. |
2005 | You can now enter: | | 2007 | You can now enter: |
2006 | | | 2008 | |
2007 | </p> | | 2009 | </p> |
2008 | <pre class="screen"> | | 2010 | <pre class="screen"> |
2009 | <code class="prompt">%</code> <strong class="userinput"><code>make clean</code></strong> | | 2011 | <code class="prompt">%</code> <strong class="userinput"><code>make clean</code></strong> |
2010 | </pre> | | 2012 | </pre> |
2011 | <p> | | 2013 | <p> |
2012 | | | 2014 | |
2013 | to remove the compiled files in the work directory, as you shouldn't need | | 2015 | to remove the compiled files in the work directory, as you shouldn't need |
2014 | them any more. If other packages were also added to your system | | 2016 | them any more. If other packages were also added to your system |
2015 | (dependencies) to allow your program to compile, you can tidy these up | | 2017 | (dependencies) to allow your program to compile, you can tidy these up |
2016 | also with the command:</p> | | 2018 | also with the command:</p> |
2017 | <pre class="screen"> | | 2019 | <pre class="screen"> |
2018 | <code class="prompt">%</code> <strong class="userinput"><code>make clean-depends</code></strong> | | 2020 | <code class="prompt">%</code> <strong class="userinput"><code>make clean-depends</code></strong> |
2019 | </pre> | | 2021 | </pre> |
2020 | <p>Taking the figlet utility as an example, we can install it on our | | 2022 | <p>Taking the figlet utility as an example, we can install it on our |
2021 | system by building as shown in <a class="xref" href="#logs" title="Appendix B. Build logs">Appendix B, <i>Build logs</i></a>.</p> | | 2023 | system by building as shown in <a class="xref" href="#logs" title="Appendix B. Build logs">Appendix B, <i>Build logs</i></a>.</p> |
2022 | <p>The program is installed under the default root of the | | 2024 | <p>The program is installed under the default root of the |
2023 | packages tree - <code class="filename">/usr/pkg</code>. Should this not | | 2025 | packages tree - <code class="filename">/usr/pkg</code>. Should this not |
2024 | conform to your tastes, set the <code class="varname">LOCALBASE</code> | | 2026 | conform to your tastes, set the <code class="varname">LOCALBASE</code> |
2025 | variable in your environment, and it will use that value as the | | 2027 | variable in your environment, and it will use that value as the |
2026 | root of your packages tree. So, to use | | 2028 | root of your packages tree. So, to use |
2027 | <code class="filename">/usr/local</code>, set | | 2029 | <code class="filename">/usr/local</code>, set |
2028 | <code class="varname">LOCALBASE=/usr/local</code> in your environment. | | 2030 | <code class="varname">LOCALBASE=/usr/local</code> in your environment. |
2029 | Please note that you should use a directory which is dedicated to | | 2031 | Please note that you should use a directory which is dedicated to |
2030 | packages and not shared with other programs (i.e., do not try and | | 2032 | packages and not shared with other programs (i.e., do not try and |
2031 | use <code class="varname">LOCALBASE=/usr</code>). Also, you should not try | | 2033 | use <code class="varname">LOCALBASE=/usr</code>). Also, you should not try |
2032 | to add any of your own files or directories (such as | | 2034 | to add any of your own files or directories (such as |
2033 | <code class="filename">src/</code>, <code class="filename">obj/</code>, or | | 2035 | <code class="filename">src/</code>, <code class="filename">obj/</code>, or |
2034 | <code class="filename">pkgsrc/</code>) below the | | 2036 | <code class="filename">pkgsrc/</code>) below the |
2035 | <code class="varname">LOCALBASE</code> tree. This is to prevent possible | | 2037 | <code class="varname">LOCALBASE</code> tree. This is to prevent possible |
2036 | conflicts between programs and other files installed by the | | 2038 | conflicts between programs and other files installed by the |
2037 | package system and whatever else may have been installed | | 2039 | package system and whatever else may have been installed |
2038 | there.</p> | | 2040 | there.</p> |
2039 | <p>Some packages look in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to | | 2041 | <p>Some packages look in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to |
2040 | alter some configuration options at build time. Have a look at | | 2042 | alter some configuration options at build time. Have a look at |
2041 | <code class="filename">pkgsrc/mk/defaults/mk.conf</code> to get an overview | | 2043 | <code class="filename">pkgsrc/mk/defaults/mk.conf</code> to get an overview |
2042 | of what will be set there by default. Environment variables such | | 2044 | of what will be set there by default. Environment variables such |
2043 | as <code class="varname">LOCALBASE</code> can be set in | | 2045 | as <code class="varname">LOCALBASE</code> can be set in |
2044 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to save having to remember to | | 2046 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to save having to remember to |
2045 | set them each time you want to use pkgsrc.</p> | | 2047 | set them each time you want to use pkgsrc.</p> |
2046 | <p>Occasionally, people want to <span class="quote">“<span class="quote">look under the | | 2048 | <p>Occasionally, people want to <span class="quote">“<span class="quote">look under the |
2047 | covers</span>”</span> to see what is going on when a package is building | | 2049 | covers</span>”</span> to see what is going on when a package is building |
2048 | or being installed. This may be for debugging purposes, or out of | | 2050 | or being installed. This may be for debugging purposes, or out of |
2049 | simple curiosity. A number of utility values have been added to | | 2051 | simple curiosity. A number of utility values have been added to |
2050 | help with this.</p> | | 2052 | help with this.</p> |
2051 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 2053 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
2052 | <li class="listitem"> | | 2054 | <li class="listitem"> |
2053 | <p>If you invoke the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> command with | | 2055 | <p>If you invoke the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> command with |
2054 | <code class="varname">PKG_DEBUG_LEVEL=2</code>, then a huge amount of | | 2056 | <code class="varname">PKG_DEBUG_LEVEL=2</code>, then a huge amount of |
2055 | information will be displayed. For example,</p> | | 2057 | information will be displayed. For example,</p> |
2056 | <pre class="screen"><strong class="userinput"><code>make patch PKG_DEBUG_LEVEL=2</code></strong></pre> | | 2058 | <pre class="screen"><strong class="userinput"><code>make patch PKG_DEBUG_LEVEL=2</code></strong></pre> |
2057 | <p>will show all the commands that are invoked, up to and | | 2059 | <p>will show all the commands that are invoked, up to and |
2058 | including the <span class="quote">“<span class="quote">patch</span>”</span> stage.</p> | | 2060 | including the <span class="quote">“<span class="quote">patch</span>”</span> stage.</p> |
2059 | </li> | | 2061 | </li> |
2060 | <li class="listitem"> | | 2062 | <li class="listitem"> |
2061 | <p>If you want to know the value of a certain <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> | | 2063 | <p>If you want to know the value of a certain <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> |
2062 | definition, then the <code class="varname">VARNAME</code> definition | | 2064 | definition, then the <code class="varname">VARNAME</code> definition |
2063 | should be used, in conjunction with the show-var | | 2065 | should be used, in conjunction with the show-var |
2064 | target. e.g. to show the expansion of the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> | | 2066 | target. e.g. to show the expansion of the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> |
2065 | variable <code class="varname">LOCALBASE</code>:</p> | | 2067 | variable <code class="varname">LOCALBASE</code>:</p> |
2066 | <pre class="screen"> | | 2068 | <pre class="screen"> |
2067 | <code class="prompt">%</code> <strong class="userinput"><code>make show-var VARNAME=LOCALBASE</code></strong> | | 2069 | <code class="prompt">%</code> <strong class="userinput"><code>make show-var VARNAME=LOCALBASE</code></strong> |
2068 | /usr/pkg | | 2070 | /usr/pkg |
2069 | <code class="prompt">%</code> | | 2071 | <code class="prompt">%</code> |
2070 | </pre> | | 2072 | </pre> |
2071 | </li> | | 2073 | </li> |
2072 | </ol></div> | | 2074 | </ol></div> |
2073 | <p>If you want to install a binary package that you've either | | 2075 | <p>If you want to install a binary package that you've either |
2074 | created yourself (see next section), that you put into | | 2076 | created yourself (see next section), that you put into |
2075 | pkgsrc/packages manually or that is located on a remote FTP | | 2077 | pkgsrc/packages manually or that is located on a remote FTP |
2076 | server, you can use the "bin-install" target. This target will | | 2078 | server, you can use the "bin-install" target. This target will |
2077 | install a binary package - if available - via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>, | | 2079 | install a binary package - if available - via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>, |
2078 | else do a <span class="command"><strong>make package</strong></span>. The list of remote FTP | | 2080 | else do a <span class="command"><strong>make package</strong></span>. The list of remote FTP |
2079 | sites searched is kept in the variable | | 2081 | sites searched is kept in the variable |
2080 | <code class="varname">BINPKG_SITES</code>, which defaults to | | 2082 | <code class="varname">BINPKG_SITES</code>, which defaults to |
2081 | ftp.NetBSD.org. Any flags that should be added to <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a> | | 2083 | ftp.NetBSD.org. Any flags that should be added to <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a> |
2082 | can be put into <code class="varname">BIN_INSTALL_FLAGS</code>. See | | 2084 | can be put into <code class="varname">BIN_INSTALL_FLAGS</code>. See |
2083 | <code class="filename">pkgsrc/mk/defaults/mk.conf</code> for more | | 2085 | <code class="filename">pkgsrc/mk/defaults/mk.conf</code> for more |
2084 | details.</p> | | 2086 | details.</p> |
2085 | <p>A final word of warning: If you set up a system that has a | | 2087 | <p>A final word of warning: If you set up a system that has a |
2086 | non-standard setting for <code class="varname">LOCALBASE</code>, be sure to | | 2088 | non-standard setting for <code class="varname">LOCALBASE</code>, be sure to |
2087 | set that before any packages are installed, as you cannot use | | 2089 | set that before any packages are installed, as you cannot use |
2088 | several directories for the same purpose. Doing so will result in | | 2090 | several directories for the same purpose. Doing so will result in |
2089 | pkgsrc not being able to properly detect your installed packages, | | 2091 | pkgsrc not being able to properly detect your installed packages, |
2090 | and fail miserably. Note also that precompiled binary packages are | | 2092 | and fail miserably. Note also that precompiled binary packages are |
2091 | usually built with the default <code class="varname">LOCALBASE</code> of | | 2093 | usually built with the default <code class="varname">LOCALBASE</code> of |
2092 | <code class="filename">/usr/pkg</code>, and that you should | | 2094 | <code class="filename">/usr/pkg</code>, and that you should |
2093 | <span class="emphasis"><em>not</em></span> install any if you use a non-standard | | 2095 | <span class="emphasis"><em>not</em></span> install any if you use a non-standard |
2094 | <code class="varname">LOCALBASE</code>.</p> | | 2096 | <code class="varname">LOCALBASE</code>.</p> |
2095 | </div> | | 2097 | </div> |
2096 | </div> | | 2098 | </div> |
2097 | </div> | | 2099 | </div> |
2098 | <div class="chapter"> | | 2100 | <div class="chapter"> |
2099 | <div class="titlepage"><div><div><h2 class="title"> | | 2101 | <div class="titlepage"><div><div><h2 class="title"> |
2100 | <a name="configuring"></a>Chapter 5. Configuring pkgsrc</h2></div></div></div> | | 2102 | <a name="configuring"></a>Chapter 5. Configuring pkgsrc</h2></div></div></div> |
2101 | <div class="toc"> | | 2103 | <div class="toc"> |
2102 | <p><b>Table of Contents</b></p> | | 2104 | <p><b>Table of Contents</b></p> |
2103 | <dl> | | 2105 | <dl> |
2104 | <dt><span class="sect1"><a href="#general-configuration">5.1. General configuration</a></span></dt> | | 2106 | <dt><span class="sect1"><a href="#general-configuration">5.1. General configuration</a></span></dt> |
2105 | <dt><span class="sect1"><a href="#variables-affecting-build">5.2. Variables affecting the build process</a></span></dt> | | 2107 | <dt><span class="sect1"><a href="#variables-affecting-build">5.2. Variables affecting the build process</a></span></dt> |
2106 | <dt><span class="sect1"><a href="#variables-affecting-installation">5.3. Variables affecting the installation process</a></span></dt> | | 2108 | <dt><span class="sect1"><a href="#variables-affecting-installation">5.3. Variables affecting the installation process</a></span></dt> |
2107 | <dt><span class="sect1"><a href="#conf.compiler">5.4. Selecting and configuring the compiler</a></span></dt> | | 2109 | <dt><span class="sect1"><a href="#conf.compiler">5.4. Selecting and configuring the compiler</a></span></dt> |
2108 | <dd><dl> | | 2110 | <dd><dl> |
2109 | <dt><span class="sect2"><a href="#selecting-the-compiler">5.4.1. Selecting the compiler</a></span></dt> | | 2111 | <dt><span class="sect2"><a href="#selecting-the-compiler">5.4.1. Selecting the compiler</a></span></dt> |
2110 | <dt><span class="sect2"><a href="#conf.cflags">5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</a></span></dt> | | 2112 | <dt><span class="sect2"><a href="#conf.cflags">5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</a></span></dt> |
2111 | <dt><span class="sect2"><a href="#conf.ldflags">5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</a></span></dt> | | 2113 | <dt><span class="sect2"><a href="#conf.ldflags">5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</a></span></dt> |
2112 | </dl></dd> | | 2114 | </dl></dd> |
2113 | <dt><span class="sect1"><a href="#developer-advanced-settings">5.5. Developer/advanced settings</a></span></dt> | | 2115 | <dt><span class="sect1"><a href="#developer-advanced-settings">5.5. Developer/advanced settings</a></span></dt> |
2114 | <dt><span class="sect1"><a href="#selecting-build-options">5.6. Selecting Build Options</a></span></dt> | | 2116 | <dt><span class="sect1"><a href="#selecting-build-options">5.6. Selecting Build Options</a></span></dt> |
2115 | </dl> | | 2117 | </dl> |
2116 | </div> | | 2118 | </div> |
2117 | <a name="mk.conf"></a><p>The whole pkgsrc system is configured in a single file, usually | | 2119 | <a name="mk.conf"></a><p>The whole pkgsrc system is configured in a single file, usually |
2118 | called <code class="filename">mk.conf</code>. In which directory pkgsrc looks for | | 2120 | called <code class="filename">mk.conf</code>. In which directory pkgsrc looks for |
2119 | that file depends on the installation. On NetBSD, when you use | | 2121 | that file depends on the installation. On NetBSD, when you use |
2120 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> from the base system, it is in the directory | | 2122 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> from the base system, it is in the directory |
2121 | <code class="filename">/etc/</code>. In all other cases the default location is | | 2123 | <code class="filename">/etc/</code>. In all other cases the default location is |
2122 | <code class="literal">${PREFIX}/etc/</code>, depending on where you told the | | 2124 | <code class="literal">${PREFIX}/etc/</code>, depending on where you told the |
2123 | bootstrap program to install the binary packages.</p> | | 2125 | bootstrap program to install the binary packages.</p> |
2124 | <p>During the bootstrap, an example configuration file is created. To | | 2126 | <p>During the bootstrap, an example configuration file is created. To |
2125 | use that, you have to create the directory | | 2127 | use that, you have to create the directory |
2126 | <code class="filename">${PREFIX}/etc</code> and copy the example file | | 2128 | <code class="filename">${PREFIX}/etc</code> and copy the example file |
2127 | there.</p> | | 2129 | there.</p> |
2128 | <p>The format of the configuration file is that of the usual | | 2130 | <p>The format of the configuration file is that of the usual |
2129 | BSD-style <code class="filename">Makefile</code>s. The whole pkgsrc configuration | | 2131 | BSD-style <code class="filename">Makefile</code>s. The whole pkgsrc configuration |
2130 | is done by setting variables in this file. Note that you can define all | | 2132 | is done by setting variables in this file. Note that you can define all |
2131 | kinds of variables, and no special error checking (for example for | | 2133 | kinds of variables, and no special error checking (for example for |
2132 | spelling mistakes) takes place, so you have to try it out to see if it | | 2134 | spelling mistakes) takes place, so you have to try it out to see if it |
2133 | works.</p> | | 2135 | works.</p> |
2134 | <div class="sect1"> | | 2136 | <div class="sect1"> |
2135 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2137 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2136 | <a name="general-configuration"></a>5.1. General configuration</h2></div></div></div> | | 2138 | <a name="general-configuration"></a>5.1. General configuration</h2></div></div></div> |
2137 | <p>In this section, you can find some variables that apply to all | | 2139 | <p>In this section, you can find some variables that apply to all |
2138 | pkgsrc packages. A complete list of the variables that can be | | 2140 | pkgsrc packages. A complete list of the variables that can be |
2139 | configured by the user is available in | | 2141 | configured by the user is available in |
2140 | <code class="filename">mk/defaults/mk.conf</code>, together with some | | 2142 | <code class="filename">mk/defaults/mk.conf</code>, together with some |
2141 | comments that describe each variable's intent.</p> | | 2143 | comments that describe each variable's intent.</p> |
2142 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2144 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2143 | <li class="listitem"><p><code class="varname">LOCALBASE</code>: Where | | 2145 | <li class="listitem"><p><code class="varname">LOCALBASE</code>: Where |
2144 | packages will be installed. The default is | | 2146 | packages will be installed. The default is |
2145 | <code class="filename">/usr/pkg</code>. Do not mix binary packages | | 2147 | <code class="filename">/usr/pkg</code>. Do not mix binary packages |
2146 | with different <code class="varname">LOCALBASE</code>s!</p></li> | | 2148 | with different <code class="varname">LOCALBASE</code>s!</p></li> |
2147 | <li class="listitem"><p><code class="varname">CROSSBASE</code>: Where | | 2149 | <li class="listitem"><p><code class="varname">CROSSBASE</code>: Where |
2148 | <span class="quote">“<span class="quote">cross</span>”</span> category packages will be | | 2150 | <span class="quote">“<span class="quote">cross</span>”</span> category packages will be |
2149 | installed. The default is | | 2151 | installed. The default is |
2150 | <code class="filename">${LOCALBASE}/cross</code>.</p></li> | | 2152 | <code class="filename">${LOCALBASE}/cross</code>.</p></li> |
2151 | <li class="listitem"><p><code class="varname">X11BASE</code>: Where | | 2153 | <li class="listitem"><p><code class="varname">X11BASE</code>: Where |
2152 | X11 is installed on the system. The default is | | 2154 | X11 is installed on the system. The default is |
2153 | <code class="filename">/usr/X11R6</code>.</p></li> | | 2155 | <code class="filename">/usr/X11R6</code>.</p></li> |
2154 | <li class="listitem"><p><code class="varname">DISTDIR</code>: Where to store the | | 2156 | <li class="listitem"><p><code class="varname">DISTDIR</code>: Where to store the |
2155 | downloaded copies of the original source distributions used | | 2157 | downloaded copies of the original source distributions used |
2156 | for building pkgsrc packages. The default is | | 2158 | for building pkgsrc packages. The default is |
2157 | <code class="filename">${PKGSRCDIR}/distfiles</code>.</p></li> | | 2159 | <code class="filename">${PKGSRCDIR}/distfiles</code>.</p></li> |
2158 | <li class="listitem"><p><code class="varname">PKG_DBDIR</code>: Where the | | 2160 | <li class="listitem"><p><code class="varname">PKG_DBDIR</code>: Where the |
2159 | database about installed packages is stored. The default is | | 2161 | database about installed packages is stored. The default is |
2160 | <code class="filename">/var/db/pkg</code>.</p></li> | | 2162 | <code class="filename">/var/db/pkg</code>.</p></li> |
2161 | <li class="listitem"><p><code class="varname">MASTER_SITE_OVERRIDE</code>: | | 2163 | <li class="listitem"><p><code class="varname">MASTER_SITE_OVERRIDE</code>: |
2162 | If set, override the packages' | | 2164 | If set, override the packages' |
2163 | <code class="varname">MASTER_SITES</code> with this value.</p></li> | | 2165 | <code class="varname">MASTER_SITES</code> with this value.</p></li> |
2164 | <li class="listitem"><p><code class="varname">MASTER_SITE_BACKUP</code>: | | 2166 | <li class="listitem"><p><code class="varname">MASTER_SITE_BACKUP</code>: |
2165 | Backup location(s) for distribution files and patch files | | 2167 | Backup location(s) for distribution files and patch files |
2166 | if not found locally or in | | 2168 | if not found locally or in |
2167 | <code class="filename">${MASTER_SITES}</code> or | | 2169 | <code class="filename">${MASTER_SITES}</code> or |
2168 | <code class="filename">${PATCH_SITES}</code> respectively. | | 2170 | <code class="filename">${PATCH_SITES}</code> respectively. |
2169 | The defaults are | | 2171 | The defaults are |
2170 | <code class="filename">ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/${DIST_SUBDIR}/</code> | | 2172 | <code class="filename">ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/${DIST_SUBDIR}/</code> |
2171 | and | | 2173 | and |
2172 | <code class="filename">ftp://ftp.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/</code>.</p></li> | | 2174 | <code class="filename">ftp://ftp.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/</code>.</p></li> |
2173 | <li class="listitem"><p><code class="varname">BINPKG_SITES</code>: | | 2175 | <li class="listitem"><p><code class="varname">BINPKG_SITES</code>: |
2174 | List of sites carrying binary pkgs. <em class="replaceable"><code>rel</code></em> and | | 2176 | List of sites carrying binary pkgs. <em class="replaceable"><code>rel</code></em> and |
2175 | <em class="replaceable"><code>arch</code></em> are replaced with OS | | 2177 | <em class="replaceable"><code>arch</code></em> are replaced with OS |
2176 | release (<span class="quote">“<span class="quote">2.0</span>”</span>, etc.) and architecture | | 2178 | release (<span class="quote">“<span class="quote">2.0</span>”</span>, etc.) and architecture |
2177 | (<span class="quote">“<span class="quote">mipsel</span>”</span>, etc.).</p></li> | | 2179 | (<span class="quote">“<span class="quote">mipsel</span>”</span>, etc.).</p></li> |
2178 | <li class="listitem"><p><code class="varname">ACCEPTABLE_LICENSES</code>: | | 2180 | <li class="listitem"><p><code class="varname">ACCEPTABLE_LICENSES</code>: |
2179 | List of acceptable licenses. License names are case-sensitive. | | 2181 | List of acceptable licenses. License names are case-sensitive. |
2180 | Whenever you try to build a package whose license is not in this | | 2182 | Whenever you try to build a package whose license is not in this |
2181 | list, you will get an error message. If the license condition is | | 2183 | list, you will get an error message. If the license condition is |
2182 | simple enough, the error message will include specific | | 2184 | simple enough, the error message will include specific |
2183 | instructions on how to change this variable.</p></li> | | 2185 | instructions on how to change this variable.</p></li> |
2184 | </ul></div> | | 2186 | </ul></div> |
2185 | </div> | | 2187 | </div> |
2186 | <div class="sect1"> | | 2188 | <div class="sect1"> |
2187 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2189 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2188 | <a name="variables-affecting-build"></a>5.2. Variables affecting the build process</h2></div></div></div> | | 2190 | <a name="variables-affecting-build"></a>5.2. Variables affecting the build process</h2></div></div></div> |
2189 | <p>XXX | | 2191 | <p>XXX |
2190 | </p> | | 2192 | </p> |
2191 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2193 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2192 | <li class="listitem"><p><code class="varname">PACKAGES</code>: The top level | | 2194 | <li class="listitem"><p><code class="varname">PACKAGES</code>: The top level |
2193 | directory for the binary packages. The default is | | 2195 | directory for the binary packages. The default is |
2194 | <code class="filename">${PKGSRCDIR}/packages</code>.</p></li> | | 2196 | <code class="filename">${PKGSRCDIR}/packages</code>.</p></li> |
2195 | <li class="listitem"><p><code class="varname">WRKOBJDIR</code>: | | 2197 | <li class="listitem"><p><code class="varname">WRKOBJDIR</code>: |
2196 | The top level directory where, if defined, the separate | | 2198 | The top level directory where, if defined, the separate |
2197 | working directories will get created, and symbolically | | 2199 | working directories will get created, and symbolically |
2198 | linked to from <code class="filename">${WRKDIR}</code> (see below). | | 2200 | linked to from <code class="filename">${WRKDIR}</code> (see below). |
2199 | This is useful for building packages on several | | 2201 | This is useful for building packages on several |
2200 | architectures, then <code class="filename">${PKGSRCDIR}</code> | | 2202 | architectures, then <code class="filename">${PKGSRCDIR}</code> |
2201 | can be NFS-mounted while <code class="filename">${WRKOBJDIR}</code> | | 2203 | can be NFS-mounted while <code class="filename">${WRKOBJDIR}</code> |
2202 | is local to every architecture. (It should be noted that | | 2204 | is local to every architecture. (It should be noted that |
2203 | <code class="varname">PKGSRCDIR</code> should not be set by the user | | 2205 | <code class="varname">PKGSRCDIR</code> should not be set by the user |
2204 | — it is an internal definition which refers to the | | 2206 | — it is an internal definition which refers to the |
2205 | root of the pkgsrc tree. It is possible to have many | | 2207 | root of the pkgsrc tree. It is possible to have many |
2206 | pkgsrc tree instances.)</p></li> | | 2208 | pkgsrc tree instances.)</p></li> |
2207 | <li class="listitem"><p><code class="varname">LOCALPATCHES</code>: | | 2209 | <li class="listitem"><p><code class="varname">LOCALPATCHES</code>: |
2208 | Directory for local patches that aren't part of pkgsrc. | | 2210 | Directory for local patches that aren't part of pkgsrc. |
2209 | See <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “patches/*”</a> for more | | 2211 | See <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “patches/*”</a> for more |
2210 | information.</p></li> | | 2212 | information.</p></li> |
2211 | <li class="listitem"><p><code class="varname">PKGMAKECONF</code>: Location of | | 2213 | <li class="listitem"><p><code class="varname">PKGMAKECONF</code>: Location of |
2212 | the <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file used by a package's | | 2214 | the <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file used by a package's |
2213 | BSD-style Makefile. If this is not set, | | 2215 | BSD-style Makefile. If this is not set, |
2214 | <code class="varname">MAKECONF</code> is set to | | 2216 | <code class="varname">MAKECONF</code> is set to |
2215 | <code class="filename">/dev/null</code> to avoid picking up | | 2217 | <code class="filename">/dev/null</code> to avoid picking up |
2216 | settings used by builds in <code class="filename">/usr/src</code>.</p></li> | | 2218 | settings used by builds in <code class="filename">/usr/src</code>.</p></li> |
2217 | <li class="listitem"><p><code class="varname">DEPENDS_TARGET</code>: | | 2219 | <li class="listitem"><p><code class="varname">DEPENDS_TARGET</code>: |
2218 | By default, dependencies are only installed, and no binary | | 2220 | By default, dependencies are only installed, and no binary |
2219 | package is created for them. You can set this variable to | | 2221 | package is created for them. You can set this variable to |
2220 | <code class="literal">package-install</code> to automatically create binary | | 2222 | <code class="literal">package-install</code> to automatically create binary |
2221 | packages after installing dependencies. Please note that the | | 2223 | packages after installing dependencies. Please note that the |
2222 | <code class="varname">PKGSRC_KEEP_BIN_PKGS</code>can be set to | | 2224 | <code class="varname">PKGSRC_KEEP_BIN_PKGS</code>can be set to |
2223 | <code class="literal">yes</code> to preserve binary packages when | | 2225 | <code class="literal">yes</code> to preserve binary packages when |
2224 | using the <code class="literal">install</code> as well.</p></li> | | 2226 | using the <code class="literal">install</code> as well.</p></li> |
2225 | </ul></div> | | 2227 | </ul></div> |
2226 | </div> | | 2228 | </div> |
2227 | <div class="sect1"> | | 2229 | <div class="sect1"> |
2228 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2230 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2229 | <a name="variables-affecting-installation"></a>5.3. Variables affecting the installation process</h2></div></div></div> | | 2231 | <a name="variables-affecting-installation"></a>5.3. Variables affecting the installation process</h2></div></div></div> |
2230 | <p>Most packages support installation into a | | 2232 | <p>Most packages support installation into a |
2231 | subdirectory of <code class="varname">WRKDIR</code>. This allows a package | | 2233 | subdirectory of <code class="varname">WRKDIR</code>. This allows a package |
2232 | to be built, before the actual filesystem is touched. DESTDIR | | 2234 | to be built, before the actual filesystem is touched. DESTDIR |
2233 | support exists in two variations:</p> | | 2235 | support exists in two variations:</p> |
2234 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2236 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2235 | <li class="listitem"><p>Basic DESTDIR support means that the package | | 2237 | <li class="listitem"><p>Basic DESTDIR support means that the package |
2236 | installation and packaging is still run as root.</p></li> | | 2238 | installation and packaging is still run as root.</p></li> |
2237 | <li class="listitem"><p>Full DESTDIR support can run the complete | | 2239 | <li class="listitem"><p>Full DESTDIR support can run the complete |
2238 | build, installation and packaging as normal user. Root | | 2240 | build, installation and packaging as normal user. Root |
2239 | privileges are only needed to add packages.</p></li> | | 2241 | privileges are only needed to add packages.</p></li> |
2240 | </ul></div> | | 2242 | </ul></div> |
2241 | <p>DESTDIR support is now the default. To switch back to non-DESTDIR, | | 2243 | <p>DESTDIR support is now the default. To switch back to non-DESTDIR, |
2242 | you can set | | 2244 | you can set |
2243 | <code class="varname">USE_DESTDIR=no</code>; this setting will be deprecated though, | | 2245 | <code class="varname">USE_DESTDIR=no</code>; this setting will be deprecated though, |
2244 | so it's preferable to convert a package to DESTDIR instead.</p> | | 2246 | so it's preferable to convert a package to DESTDIR instead.</p> |
2245 | <p>With basic DESTDIR support, <strong class="userinput"><code>make | | 2247 | <p>With basic DESTDIR support, <strong class="userinput"><code>make |
2246 | clean</code></strong> needs to be run as root.</p> | | 2248 | clean</code></strong> needs to be run as root.</p> |
2247 | <p>Considering the <code class="filename">foo/bar</code> package, | | 2249 | <p>Considering the <code class="filename">foo/bar</code> package, |
2248 | DESTDIR full support can be tested using the following commands | | 2250 | DESTDIR full support can be tested using the following commands |
2249 | | | 2251 | |
2250 | </p> | | 2252 | </p> |
2251 | <pre class="programlisting"> | | 2253 | <pre class="programlisting"> |
2252 | <code class="prompt">$</code> id | | 2254 | <code class="prompt">$</code> id |
2253 | uid=1000(myusername) gid=100(users) groups=100(users),0(wheel) | | 2255 | uid=1000(myusername) gid=100(users) groups=100(users),0(wheel) |
2254 | <code class="prompt">$</code> mkdir $HOME/packages | | 2256 | <code class="prompt">$</code> mkdir $HOME/packages |
2255 | <code class="prompt">$</code> cd $PKGSRCDIR/foo/bar | | 2257 | <code class="prompt">$</code> cd $PKGSRCDIR/foo/bar |
2256 | </pre> | | 2258 | </pre> |
2257 | <p> | | 2259 | <p> |
2258 | | | 2260 | |
2259 | Verify <code class="varname">DESTDIR</code> full support, no root privileges | | 2261 | Verify <code class="varname">DESTDIR</code> full support, no root privileges |
2260 | should be needed | | 2262 | should be needed |
2261 | | | 2263 | |
2262 | </p> | | 2264 | </p> |
2263 | <pre class="programlisting"> | | 2265 | <pre class="programlisting"> |
2264 | <code class="prompt">$</code> make stage-install | | 2266 | <code class="prompt">$</code> make stage-install |
2265 | </pre> | | 2267 | </pre> |
2266 | <p> | | 2268 | <p> |
2267 | | | 2269 | |
2268 | Create a package without root privileges | | 2270 | Create a package without root privileges |
2269 | | | 2271 | |
2270 | </p> | | 2272 | </p> |
2271 | <pre class="programlisting"> | | 2273 | <pre class="programlisting"> |
2272 | <code class="prompt">$</code> make PACKAGES=$HOME/packages package | | 2274 | <code class="prompt">$</code> make PACKAGES=$HOME/packages package |
2273 | </pre> | | 2275 | </pre> |
2274 | <p> | | 2276 | <p> |
2275 | | | 2277 | |
2276 | For the following command, you must be able to gain root | | 2278 | For the following command, you must be able to gain root |
2277 | privileges using <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?su+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">su</span>(1)</span></a> | | 2279 | privileges using <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?su+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">su</span>(1)</span></a> |
2278 | | | 2280 | |
2279 | </p> | | 2281 | </p> |
2280 | <pre class="programlisting"> | | 2282 | <pre class="programlisting"> |
2281 | <code class="prompt">$</code> make PACKAGES=$HOME/packages install | | 2283 | <code class="prompt">$</code> make PACKAGES=$HOME/packages install |
2282 | </pre> | | 2284 | </pre> |
2283 | <p> | | 2285 | <p> |
2284 | | | 2286 | |
2285 | Then, as a simple user | | 2287 | Then, as a simple user |
2286 | | | 2288 | |
2287 | </p> | | 2289 | </p> |
2288 | <pre class="programlisting"> | | 2290 | <pre class="programlisting"> |
2289 | <code class="prompt">$</code> make clean | | 2291 | <code class="prompt">$</code> make clean |
2290 | </pre> | | 2292 | </pre> |
2291 | <p> | | 2293 | <p> |
2292 | | | 2294 | |
2293 | </p> | | 2295 | </p> |
2294 | </div> | | 2296 | </div> |
2295 | <div class="sect1"> | | 2297 | <div class="sect1"> |
2296 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2298 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2297 | <a name="conf.compiler"></a>5.4. Selecting and configuring the compiler</h2></div></div></div> | | 2299 | <a name="conf.compiler"></a>5.4. Selecting and configuring the compiler</h2></div></div></div> |
2298 | <div class="sect2"> | | 2300 | <div class="sect2"> |
2299 | <div class="titlepage"><div><div><h3 class="title"> | | 2301 | <div class="titlepage"><div><div><h3 class="title"> |
2300 | <a name="selecting-the-compiler"></a>5.4.1. Selecting the compiler</h3></div></div></div> | | 2302 | <a name="selecting-the-compiler"></a>5.4.1. Selecting the compiler</h3></div></div></div> |
2301 | <p>By default, pkgsrc will use GCC to build packages. This may be | | 2303 | <p>By default, pkgsrc will use GCC to build packages. This may be |
2302 | overridden by setting the following variables in /etc/mk.conf:</p> | | 2304 | overridden by setting the following variables in /etc/mk.conf:</p> |
2303 | <div class="variablelist"><dl class="variablelist"> | | 2305 | <div class="variablelist"><dl class="variablelist"> |
2304 | <dt><span class="term"><code class="varname">PKGSRC_COMPILER</code>:</span></dt> | | 2306 | <dt><span class="term"><code class="varname">PKGSRC_COMPILER</code>:</span></dt> |
2305 | <dd> | | 2307 | <dd> |
2306 | <p>This is a list of values specifying the chain of | | 2308 | <p>This is a list of values specifying the chain of |
2307 | compilers to invoke when building packages. Valid values | | 2309 | compilers to invoke when building packages. Valid values |
2308 | are:</p> | | 2310 | are:</p> |
2309 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2311 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2310 | <li class="listitem"><p><code class="varname">ccc</code>: | | 2312 | <li class="listitem"><p><code class="varname">ccc</code>: |
2311 | Compaq C Compilers (Tru64)</p></li> | | 2313 | Compaq C Compilers (Tru64)</p></li> |
2312 | <li class="listitem"><p><code class="varname">ccache</code>: | | 2314 | <li class="listitem"><p><code class="varname">ccache</code>: |
2313 | compiler cache (chainable)</p></li> | | 2315 | compiler cache (chainable)</p></li> |
2314 | <li class="listitem"><p><code class="varname">clang</code>: | | 2316 | <li class="listitem"><p><code class="varname">clang</code>: |
2315 | Clang C and Objective-C compiler</p></li> | | 2317 | Clang C and Objective-C compiler</p></li> |
2316 | <li class="listitem"><p><code class="varname">distcc</code>: | | 2318 | <li class="listitem"><p><code class="varname">distcc</code>: |
2317 | distributed C/C++ (chainable)</p></li> | | 2319 | distributed C/C++ (chainable)</p></li> |
2318 | <li class="listitem"><p><code class="varname">f2c</code>: | | 2320 | <li class="listitem"><p><code class="varname">f2c</code>: |
2319 | Fortran 77 to C compiler (chainable)</p></li> | | 2321 | Fortran 77 to C compiler (chainable)</p></li> |
2320 | <li class="listitem"><p><code class="varname">icc</code>: | | 2322 | <li class="listitem"><p><code class="varname">icc</code>: |
2321 | Intel C++ Compiler (Linux)</p></li> | | 2323 | Intel C++ Compiler (Linux)</p></li> |
2322 | <li class="listitem"><p><code class="varname">ido</code>: | | 2324 | <li class="listitem"><p><code class="varname">ido</code>: |
2323 | SGI IRIS Development Option cc (IRIX 5)</p></li> | | 2325 | SGI IRIS Development Option cc (IRIX 5)</p></li> |
2324 | <li class="listitem"><p><code class="varname">gcc</code>: | | 2326 | <li class="listitem"><p><code class="varname">gcc</code>: |
2325 | GNU C/C++ Compiler</p></li> | | 2327 | GNU C/C++ Compiler</p></li> |
2326 | <li class="listitem"><p><code class="varname">hp</code>: | | 2328 | <li class="listitem"><p><code class="varname">hp</code>: |
2327 | HP-UX C/aC++ compilers</p></li> | | 2329 | HP-UX C/aC++ compilers</p></li> |
2328 | <li class="listitem"><p><code class="varname">mipspro</code>: | | 2330 | <li class="listitem"><p><code class="varname">mipspro</code>: |
2329 | Silicon Graphics, Inc. MIPSpro (n32/n64)</p></li> | | 2331 | Silicon Graphics, Inc. MIPSpro (n32/n64)</p></li> |
2330 | <li class="listitem"><p><code class="varname">mipspro-ucode</code>: | | 2332 | <li class="listitem"><p><code class="varname">mipspro-ucode</code>: |
2331 | Silicon Graphics, Inc. MIPSpro (o32)</p></li> | | 2333 | Silicon Graphics, Inc. MIPSpro (o32)</p></li> |
2332 | <li class="listitem"><p><code class="varname">sunpro</code>: | | 2334 | <li class="listitem"><p><code class="varname">sunpro</code>: |
2333 | Sun Microsystems, Inc. WorkShip/Forte/Sun ONE Studio</p></li> | | 2335 | Sun Microsystems, Inc. WorkShip/Forte/Sun ONE Studio</p></li> |
2334 | <li class="listitem"><p><code class="varname">xlc</code>: | | 2336 | <li class="listitem"><p><code class="varname">xlc</code>: |
2335 | IBM's XL C/C++ compiler suite (Darwin/MacOSX)</p></li> | | 2337 | IBM's XL C/C++ compiler suite (Darwin/MacOSX)</p></li> |
2336 | </ul></div> | | 2338 | </ul></div> |
2337 | <p>The default is | | 2339 | <p>The default is |
2338 | <span class="quote">“<span class="quote"><code class="varname">gcc</code></span>”</span>. You can use | | 2340 | <span class="quote">“<span class="quote"><code class="varname">gcc</code></span>”</span>. You can use |
2339 | <code class="varname">ccache</code> and/or | | 2341 | <code class="varname">ccache</code> and/or |
2340 | <code class="varname">distcc</code> with an appropriate | | 2342 | <code class="varname">distcc</code> with an appropriate |
2341 | <code class="varname">PKGSRC_COMPILER</code> setting, | | 2343 | <code class="varname">PKGSRC_COMPILER</code> setting, |
2342 | e.g. <span class="quote">“<span class="quote"><code class="varname">ccache gcc</code></span>”</span>. This | | 2344 | e.g. <span class="quote">“<span class="quote"><code class="varname">ccache gcc</code></span>”</span>. This |
2343 | variable should always be terminated with a value for | | 2345 | variable should always be terminated with a value for |
2344 | a real compiler. Note that only one real compiler | | 2346 | a real compiler. Note that only one real compiler |
2345 | should be listed (e.g. <span class="quote">“<span class="quote"><code class="varname">sunpro gcc</code></span>”</span> | | 2347 | should be listed (e.g. <span class="quote">“<span class="quote"><code class="varname">sunpro gcc</code></span>”</span> |
2346 | is not allowed).</p> | | 2348 | is not allowed).</p> |
2347 | </dd> | | 2349 | </dd> |
2348 | <dt><span class="term"><code class="varname">GCC_REQD</code>:</span></dt> | | 2350 | <dt><span class="term"><code class="varname">GCC_REQD</code>:</span></dt> |
2349 | <dd><p>This specifies the minimum version of GCC to use | | 2351 | <dd><p>This specifies the minimum version of GCC to use |
2350 | when building packages. If the system GCC doesn't | | 2352 | when building packages. If the system GCC doesn't |
2351 | satisfy this requirement, then pkgsrc will build and | | 2353 | satisfy this requirement, then pkgsrc will build and |
2352 | install one of the GCC packages to use instead.</p></dd> | | 2354 | install one of the GCC packages to use instead.</p></dd> |
2353 | </dl></div> | | 2355 | </dl></div> |
2354 | </div> | | 2356 | </div> |
2355 | <div class="sect2"> | | 2357 | <div class="sect2"> |
2356 | <div class="titlepage"><div><div><h3 class="title"> | | 2358 | <div class="titlepage"><div><div><h3 class="title"> |
2357 | <a name="conf.cflags"></a>5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</h3></div></div></div> | | 2359 | <a name="conf.cflags"></a>5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</h3></div></div></div> |
2358 | <p>If you wish to set the <code class="varname">CFLAGS</code> variable, | | 2360 | <p>If you wish to set the <code class="varname">CFLAGS</code> variable, |
2359 | please make sure to use the <code class="literal">+=</code> operator | | 2361 | please make sure to use the <code class="literal">+=</code> operator |
2360 | instead of the <code class="literal">=</code> operator:</p> | | 2362 | instead of the <code class="literal">=</code> operator:</p> |
2361 | <pre class="programlisting"> | | 2363 | <pre class="programlisting"> |
2362 | CFLAGS+= -your -flags | | 2364 | CFLAGS+= -your -flags |
2363 | </pre> | | 2365 | </pre> |
2364 | <p>Using <code class="varname">CFLAGS=</code> (i.e. without the | | 2366 | <p>Using <code class="varname">CFLAGS=</code> (i.e. without the |
2365 | <span class="quote">“<span class="quote">+</span>”</span>) may lead to problems with packages that | | 2367 | <span class="quote">“<span class="quote">+</span>”</span>) may lead to problems with packages that |
2366 | need to add their own flags. You may want to take a look | | 2368 | need to add their own flags. You may want to take a look |
2367 | at the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/cpuflags/README.html" target="_top"><code class="filename">devel/cpuflags</code></a> | | 2369 | at the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/cpuflags/README.html" target="_top"><code class="filename">devel/cpuflags</code></a> |
2368 | package if you're interested in optimization specifically | | 2370 | package if you're interested in optimization specifically |
2369 | for the current CPU. </p> | | 2371 | for the current CPU. </p> |
2370 | </div> | | 2372 | </div> |
2371 | <div class="sect2"> | | 2373 | <div class="sect2"> |
2372 | <div class="titlepage"><div><div><h3 class="title"> | | 2374 | <div class="titlepage"><div><div><h3 class="title"> |
2373 | <a name="conf.ldflags"></a>5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</h3></div></div></div> | | 2375 | <a name="conf.ldflags"></a>5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</h3></div></div></div> |
2374 | <p>If you want to pass flags to the linker, both in the configure | | 2376 | <p>If you want to pass flags to the linker, both in the configure |
2375 | step and the build step, you can do this in two ways. Either set | | 2377 | step and the build step, you can do this in two ways. Either set |
2376 | <code class="varname">LDFLAGS</code> or <code class="varname">LIBS</code>. The difference | | 2378 | <code class="varname">LDFLAGS</code> or <code class="varname">LIBS</code>. The difference |
2377 | between the two is that <code class="varname">LIBS</code> will be appended to | | 2379 | between the two is that <code class="varname">LIBS</code> will be appended to |
2378 | the command line, while <code class="varname">LDFLAGS</code> come earlier. | | 2380 | the command line, while <code class="varname">LDFLAGS</code> come earlier. |
2379 | <code class="varname">LDFLAGS</code> is pre-loaded with rpath settings for ELF | | 2381 | <code class="varname">LDFLAGS</code> is pre-loaded with rpath settings for ELF |
2380 | machines depending on the setting of <code class="varname">USE_IMAKE</code> or | | 2382 | machines depending on the setting of <code class="varname">USE_IMAKE</code> or |
2381 | the inclusion of <code class="filename">mk/x11.buildlink3.mk</code>. As with | | 2383 | the inclusion of <code class="filename">mk/x11.buildlink3.mk</code>. As with |
2382 | <code class="varname">CFLAGS</code>, if you do not wish to override these | | 2384 | <code class="varname">CFLAGS</code>, if you do not wish to override these |
2383 | settings, use the <code class="literal">+=</code> operator:</p> | | 2385 | settings, use the <code class="literal">+=</code> operator:</p> |
2384 | <pre class="programlisting"> | | 2386 | <pre class="programlisting"> |
2385 | LDFLAGS+= -your -linkerflags | | 2387 | LDFLAGS+= -your -linkerflags |
2386 | </pre> | | 2388 | </pre> |
2387 | </div> | | 2389 | </div> |
2388 | </div> | | 2390 | </div> |
2389 | <div class="sect1"> | | 2391 | <div class="sect1"> |
2390 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2392 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2391 | <a name="developer-advanced-settings"></a>5.5. Developer/advanced settings</h2></div></div></div> | | 2393 | <a name="developer-advanced-settings"></a>5.5. Developer/advanced settings</h2></div></div></div> |
2392 | <p>XXX | | 2394 | <p>XXX |
2393 | </p> | | 2395 | </p> |
2394 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2396 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2395 | <li class="listitem"> | | 2397 | <li class="listitem"> |
2396 | <p><code class="varname">PKG_DEVELOPER</code>: | | 2398 | <p><code class="varname">PKG_DEVELOPER</code>: |
2397 | Run some sanity checks that package developers want: | | 2399 | Run some sanity checks that package developers want: |
2398 | </p> | | 2400 | </p> |
2399 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "> | | 2401 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "> |
2400 | <li class="listitem"><p>make sure patches apply with zero | | 2402 | <li class="listitem"><p>make sure patches apply with zero |
2401 | fuzz</p></li> | | 2403 | fuzz</p></li> |
2402 | <li class="listitem"><p>run check-shlibs to see that all | | 2404 | <li class="listitem"><p>run check-shlibs to see that all |
2403 | binaries will find their shared libs.</p></li> | | 2405 | binaries will find their shared libs.</p></li> |
2404 | </ul></div> | | 2406 | </ul></div> |
2405 | <p> | | 2407 | <p> |
2406 | </p> | | 2408 | </p> |
2407 | </li> | | 2409 | </li> |
2408 | <li class="listitem"><p><code class="varname">PKG_DEBUG_LEVEL</code>: The level | | 2410 | <li class="listitem"><p><code class="varname">PKG_DEBUG_LEVEL</code>: The level |
2409 | of debugging output which is displayed whilst making and | | 2411 | of debugging output which is displayed whilst making and |
2410 | installing the package. The default value for this is 0, | | 2412 | installing the package. The default value for this is 0, |
2411 | which will not display the commands as they are executed | | 2413 | which will not display the commands as they are executed |
2412 | (normal, default, quiet operation); the value 1 will display | | 2414 | (normal, default, quiet operation); the value 1 will display |
2413 | all shell commands before their invocation, and the value 2 | | 2415 | all shell commands before their invocation, and the value 2 |
2414 | will display both the shell commands before their invocation, | | 2416 | will display both the shell commands before their invocation, |
2415 | and their actual execution progress with <span class="command"><strong>set | | 2417 | and their actual execution progress with <span class="command"><strong>set |
2416 | -x</strong></span> will be displayed.</p></li> | | 2418 | -x</strong></span> will be displayed.</p></li> |
2417 | </ul></div> | | 2419 | </ul></div> |
2418 | <p> | | 2420 | <p> |
2419 | </p> | | 2421 | </p> |
2420 | </div> | | 2422 | </div> |
2421 | <div class="sect1"> | | 2423 | <div class="sect1"> |
2422 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2424 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2423 | <a name="selecting-build-options"></a>5.6. Selecting Build Options</h2></div></div></div> | | 2425 | <a name="selecting-build-options"></a>5.6. Selecting Build Options</h2></div></div></div> |
2424 | <p>Some packages have build time options, usually to select | | 2426 | <p>Some packages have build time options, usually to select |
2425 | between different dependencies, enable optional support for big | | 2427 | between different dependencies, enable optional support for big |
2426 | dependencies or enable experimental features.</p> | | 2428 | dependencies or enable experimental features.</p> |
2427 | <p>To see which options, if any, a package supports, and which | | 2429 | <p>To see which options, if any, a package supports, and which |
2428 | options are mutually exclusive, run <span class="command"><strong>make | | 2430 | options are mutually exclusive, run <span class="command"><strong>make |
2429 | show-options</strong></span>, for example:</p> | | 2431 | show-options</strong></span>, for example:</p> |
2430 | <pre class="programlisting"> | | 2432 | <pre class="programlisting"> |
2431 | The following options are supported by this package: | | 2433 | The following options are supported by this package: |
2432 | ssl Enable SSL support. | | 2434 | ssl Enable SSL support. |
2433 | Exactly one of the following gecko options is required: | | 2435 | Exactly one of the following gecko options is required: |
2434 | firefox Use firefox as gecko rendering engine. | | 2436 | firefox Use firefox as gecko rendering engine. |
2435 | mozilla Use mozilla as gecko rendering engine. | | 2437 | mozilla Use mozilla as gecko rendering engine. |
2436 | At most one of the following database options may be selected: | | 2438 | At most one of the following database options may be selected: |
2437 | mysql Enable support for MySQL database. | | 2439 | mysql Enable support for MySQL database. |
2438 | pgsql Enable support for PostgreSQL database. | | 2440 | pgsql Enable support for PostgreSQL database. |
2439 | | | 2441 | |
2440 | These options are enabled by default: firefox | | 2442 | These options are enabled by default: firefox |
2441 | These options are currently enabled: mozilla ssl | | 2443 | These options are currently enabled: mozilla ssl |
2442 | </pre> | | 2444 | </pre> |
2443 | <p>The following variables can be defined in | | 2445 | <p>The following variables can be defined in |
2444 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to select which options to | | 2446 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to select which options to |
2445 | enable for a package: <code class="varname">PKG_DEFAULT_OPTIONS</code>, | | 2447 | enable for a package: <code class="varname">PKG_DEFAULT_OPTIONS</code>, |
2446 | which can be used to select or disable options for all packages | | 2448 | which can be used to select or disable options for all packages |
2447 | that support them, and | | 2449 | that support them, and |
2448 | <code class="varname">PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em></code>, | | 2450 | <code class="varname">PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em></code>, |
2449 | which can be used to select or disable options specifically for | | 2451 | which can be used to select or disable options specifically for |
2450 | package <em class="replaceable"><code>pkgbase</code></em>. Options listed in | | 2452 | package <em class="replaceable"><code>pkgbase</code></em>. Options listed in |
2451 | these variables are selected, options preceded by <span class="quote">“<span class="quote">-</span>”</span> | | 2453 | these variables are selected, options preceded by <span class="quote">“<span class="quote">-</span>”</span> |
2452 | are disabled. A few examples:</p> | | 2454 | are disabled. A few examples:</p> |
2453 | <pre class="screen"> | | 2455 | <pre class="screen"> |
2454 | <code class="prompt">$</code> <span class="command"><strong>grep "PKG.*OPTION" <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a></strong></span> | | 2456 | <code class="prompt">$</code> <span class="command"><strong>grep "PKG.*OPTION" <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a></strong></span> |
2455 | PKG_DEFAULT_OPTIONS= -arts -dvdread -esound | | 2457 | PKG_DEFAULT_OPTIONS= -arts -dvdread -esound |
2456 | PKG_OPTIONS.kdebase= debug -sasl | | 2458 | PKG_OPTIONS.kdebase= debug -sasl |
2457 | PKG_OPTIONS.apache= suexec </pre> | | 2459 | PKG_OPTIONS.apache= suexec </pre> |
2458 | <p>It is important to note that options that were specifically | | 2460 | <p>It is important to note that options that were specifically |
2459 | suggested by the package maintainer must be explicitly removed if | | 2461 | suggested by the package maintainer must be explicitly removed if |
2460 | you do not wish to include the option. If you are unsure you can view | | 2462 | you do not wish to include the option. If you are unsure you can view |
2461 | the current state with <span class="command"><strong>make show-options</strong></span>.</p> | | 2463 | the current state with <span class="command"><strong>make show-options</strong></span>.</p> |
2462 | <p>The following settings are consulted in the order given, and | | 2464 | <p>The following settings are consulted in the order given, and |
2463 | the last setting that selects or disables an option is | | 2465 | the last setting that selects or disables an option is |
2464 | used:</p> | | 2466 | used:</p> |
2465 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 2467 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
2466 | <li class="listitem"><p>the default options as suggested by the package | | 2468 | <li class="listitem"><p>the default options as suggested by the package |
2467 | maintainer</p></li> | | 2469 | maintainer</p></li> |
2468 | <li class="listitem"><p>the options implied by the settings of legacy | | 2470 | <li class="listitem"><p>the options implied by the settings of legacy |
2469 | variables (see below)</p></li> | | 2471 | variables (see below)</p></li> |
2470 | <li class="listitem"><p><code class="varname">PKG_DEFAULT_OPTIONS</code></p></li> | | 2472 | <li class="listitem"><p><code class="varname">PKG_DEFAULT_OPTIONS</code></p></li> |
2471 | <li class="listitem"><p><code class="varname">PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em></code></p></li> | | 2473 | <li class="listitem"><p><code class="varname">PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em></code></p></li> |
2472 | </ol></div> | | 2474 | </ol></div> |
2473 | <p>For groups of mutually exclusive options, the last option | | 2475 | <p>For groups of mutually exclusive options, the last option |
2474 | selected is used, all others are automatically disabled. If an | | 2476 | selected is used, all others are automatically disabled. If an |
2475 | option of the group is explicitly disabled, the previously | | 2477 | option of the group is explicitly disabled, the previously |
2476 | selected option, if any, is used. It is an error if no option | | 2478 | selected option, if any, is used. It is an error if no option |
2477 | from a required group of options is selected, and building the | | 2479 | from a required group of options is selected, and building the |
2478 | package will fail.</p> | | 2480 | package will fail.</p> |
2479 | <p>Before the options framework was introduced, build options | | 2481 | <p>Before the options framework was introduced, build options |
2480 | were selected by setting a variable (often named | | 2482 | were selected by setting a variable (often named |
2481 | <code class="varname">USE_<em class="replaceable"><code>FOO</code></em></code>) in | | 2483 | <code class="varname">USE_<em class="replaceable"><code>FOO</code></em></code>) in |
2482 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> for each option. To ease | | 2484 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> for each option. To ease |
2483 | transition to the options framework for the user, these legacy | | 2485 | transition to the options framework for the user, these legacy |
2484 | variables are converted to the appropriate options setting | | 2486 | variables are converted to the appropriate options setting |
2485 | (<code class="varname">PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em></code>) | | 2487 | (<code class="varname">PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em></code>) |
2486 | automatically. A warning is issued to prompt the user to update | | 2488 | automatically. A warning is issued to prompt the user to update |
2487 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to use the options framework | | 2489 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to use the options framework |
2488 | directly. Support for the legacy variables will be removed | | 2490 | directly. Support for the legacy variables will be removed |
2489 | eventually.</p> | | 2491 | eventually.</p> |
2490 | </div> | | 2492 | </div> |
2491 | </div> | | 2493 | </div> |
2492 | <div class="chapter"> | | 2494 | <div class="chapter"> |
2493 | <div class="titlepage"><div><div><h2 class="title"> | | 2495 | <div class="titlepage"><div><div><h2 class="title"> |
2494 | <a name="binary"></a>Chapter 6. Creating binary packages</h2></div></div></div> | | 2496 | <a name="binary"></a>Chapter 6. Creating binary packages</h2></div></div></div> |
2495 | <div class="toc"> | | 2497 | <div class="toc"> |
2496 | <p><b>Table of Contents</b></p> | | 2498 | <p><b>Table of Contents</b></p> |
2497 | <dl> | | 2499 | <dl> |
2498 | <dt><span class="sect1"><a href="#building-a-single-binary-package">6.1. Building a single binary package</a></span></dt> | | 2500 | <dt><span class="sect1"><a href="#building-a-single-binary-package">6.1. Building a single binary package</a></span></dt> |
2499 | <dt><span class="sect1"><a href="#settings-for-creationg-of-binary-packages">6.2. Settings for creation of binary packages</a></span></dt> | | 2501 | <dt><span class="sect1"><a href="#settings-for-creationg-of-binary-packages">6.2. Settings for creation of binary packages</a></span></dt> |
2500 | </dl> | | 2502 | </dl> |
2501 | </div> | | 2503 | </div> |
2502 | <div class="sect1"> | | 2504 | <div class="sect1"> |
2503 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2505 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2504 | <a name="building-a-single-binary-package"></a>6.1. Building a single binary package</h2></div></div></div> | | 2506 | <a name="building-a-single-binary-package"></a>6.1. Building a single binary package</h2></div></div></div> |
2505 | <p>Once you have built and installed a package, you can create | | 2507 | <p>Once you have built and installed a package, you can create |
2506 | a <span class="emphasis"><em>binary package</em></span> which can be installed on | | 2508 | a <span class="emphasis"><em>binary package</em></span> which can be installed on |
2507 | another system with <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>. This saves having to build | | 2509 | another system with <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>. This saves having to build |
2508 | the same package on a group of hosts and wasting CPU time. It also | | 2510 | the same package on a group of hosts and wasting CPU time. It also |
2509 | provides a simple means for others to install your package, should | | 2511 | provides a simple means for others to install your package, should |
2510 | you distribute it.</p> | | 2512 | you distribute it.</p> |
2511 | <p>To create a binary package, change into the appropriate | | 2513 | <p>To create a binary package, change into the appropriate |
2512 | directory in pkgsrc, and run <span class="command"><strong>make | | 2514 | directory in pkgsrc, and run <span class="command"><strong>make |
2513 | package</strong></span>:</p> | | 2515 | package</strong></span>:</p> |
2514 | <pre class="screen"> | | 2516 | <pre class="screen"> |
2515 | <code class="prompt">#</code> <strong class="userinput"><code>cd misc/figlet</code></strong> | | 2517 | <code class="prompt">#</code> <strong class="userinput"><code>cd misc/figlet</code></strong> |
2516 | <code class="prompt">#</code> <strong class="userinput"><code>make package</code></strong> | | 2518 | <code class="prompt">#</code> <strong class="userinput"><code>make package</code></strong> |
2517 | </pre> | | 2519 | </pre> |
2518 | <p>This will build and install your package (if not already done), | | 2520 | <p>This will build and install your package (if not already done), |
2519 | and then build a binary package from what was installed. You can | | 2521 | and then build a binary package from what was installed. You can |
2520 | then use the <span class="command"><strong>pkg_*</strong></span> tools to manipulate | | 2522 | then use the <span class="command"><strong>pkg_*</strong></span> tools to manipulate |
2521 | it. Binary packages are created by default in | | 2523 | it. Binary packages are created by default in |
2522 | <code class="filename">/usr/pkgsrc/packages</code>, in the form of a | | 2524 | <code class="filename">/usr/pkgsrc/packages</code>, in the form of a |
2523 | gzipped tar file. See <a class="xref" href="#logs.package" title="B.2. Packaging figlet">Section B.2, “Packaging figlet”</a> for a | | 2525 | gzipped tar file. See <a class="xref" href="#logs.package" title="B.2. Packaging figlet">Section B.2, “Packaging figlet”</a> for a |
2524 | continuation of the above <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/misc/figlet/README.html" target="_top"><code class="filename">misc/figlet</code></a> example.</p> | | 2526 | continuation of the above <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/misc/figlet/README.html" target="_top"><code class="filename">misc/figlet</code></a> example.</p> |
2525 | <p>See <a class="xref" href="#submit" title="Chapter 21. Submitting and Committing">Chapter 21, <i>Submitting and Committing</i></a> for information on how to submit | | 2527 | <p>See <a class="xref" href="#submit" title="Chapter 21. Submitting and Committing">Chapter 21, <i>Submitting and Committing</i></a> for information on how to submit |
2526 | such a binary package.</p> | | 2528 | such a binary package.</p> |
2527 | </div> | | 2529 | </div> |
2528 | <div class="sect1"> | | 2530 | <div class="sect1"> |
2529 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2531 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2530 | <a name="settings-for-creationg-of-binary-packages"></a>6.2. Settings for creation of binary packages</h2></div></div></div> | | 2532 | <a name="settings-for-creationg-of-binary-packages"></a>6.2. Settings for creation of binary packages</h2></div></div></div> |
2531 | <p>See <a class="xref" href="#build.helpful-targets" title="17.17. Other helpful targets">Section 17.17, “Other helpful targets”</a>.</p> | | 2533 | <p>See <a class="xref" href="#build.helpful-targets" title="17.17. Other helpful targets">Section 17.17, “Other helpful targets”</a>.</p> |
2532 | </div> | | 2534 | </div> |
2533 | </div> | | 2535 | </div> |
2534 | <div class="chapter"> | | 2536 | <div class="chapter"> |
2535 | <div class="titlepage"><div><div><h2 class="title"> | | 2537 | <div class="titlepage"><div><div><h2 class="title"> |
2536 | <a name="bulk"></a>Chapter 7. Creating binary packages for everything in pkgsrc (bulk | | 2538 | <a name="bulk"></a>Chapter 7. Creating binary packages for everything in pkgsrc (bulk |
2537 | builds)</h2></div></div></div> | | 2539 | builds)</h2></div></div></div> |
2538 | <div class="toc"> | | 2540 | <div class="toc"> |
2539 | <p><b>Table of Contents</b></p> | | 2541 | <p><b>Table of Contents</b></p> |
2540 | <dl> | | 2542 | <dl> |
2541 | <dt><span class="sect1"><a href="#bulk.pre">7.1. Preparations</a></span></dt> | | 2543 | <dt><span class="sect1"><a href="#bulk.pre">7.1. Preparations</a></span></dt> |
2542 | <dt><span class="sect1"><a href="#bulk.pbulk">7.2. Running a pbulk-style bulk build</a></span></dt> | | 2544 | <dt><span class="sect1"><a href="#bulk.pbulk">7.2. Running a pbulk-style bulk build</a></span></dt> |
2543 | <dd><dl><dt><span class="sect2"><a href="#bulk.pbulk.conf">7.2.1. Configuration</a></span></dt></dl></dd> | | 2545 | <dd><dl><dt><span class="sect2"><a href="#bulk.pbulk.conf">7.2.1. Configuration</a></span></dt></dl></dd> |
2544 | <dt><span class="sect1"><a href="#bulk.req">7.3. Requirements of a full bulk build</a></span></dt> | | 2546 | <dt><span class="sect1"><a href="#bulk.req">7.3. Requirements of a full bulk build</a></span></dt> |
2545 | <dt><span class="sect1"><a href="#creating-cdroms">7.4. Creating a multiple CD-ROM packages collection</a></span></dt> | | 2547 | <dt><span class="sect1"><a href="#creating-cdroms">7.4. Creating a multiple CD-ROM packages collection</a></span></dt> |
2546 | <dd><dl><dt><span class="sect2"><a href="#cdpack-example">7.4.1. Example of cdpack</a></span></dt></dl></dd> | | 2548 | <dd><dl><dt><span class="sect2"><a href="#cdpack-example">7.4.1. Example of cdpack</a></span></dt></dl></dd> |
2547 | </dl> | | 2549 | </dl> |
2548 | </div> | | 2550 | </div> |
2549 | <p>For a number of reasons you may want to build binary packages | | 2551 | <p>For a number of reasons you may want to build binary packages |
2550 | for a large selected set of packages in pkgsrc or even for all pkgsrc packages. | | 2552 | for a large selected set of packages in pkgsrc or even for all pkgsrc packages. |
2551 | For instance, when you have multiple machines that should run the same software, | | 2553 | For instance, when you have multiple machines that should run the same software, |
2552 | it is wasted time if they all build their packages themselves from source. | | 2554 | it is wasted time if they all build their packages themselves from source. |
2553 | Or you may want to build a list of packages you want and check them before | | 2555 | Or you may want to build a list of packages you want and check them before |
2554 | deploying onto production system. | | 2556 | deploying onto production system. |
2555 | There is a way of getting a set of binary packages: | | 2557 | There is a way of getting a set of binary packages: |
2556 | The bulk build system, or pbulk ("p" stands for "parallel). | | 2558 | The bulk build system, or pbulk ("p" stands for "parallel). |
2557 | This chapter describes how to set it up so that the packages | | 2559 | This chapter describes how to set it up so that the packages |
2558 | are most likely to be usable later.</p> | | 2560 | are most likely to be usable later.</p> |
2559 | <div class="sect1"> | | 2561 | <div class="sect1"> |
2560 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2562 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2561 | <a name="bulk.pre"></a>7.1. Preparations</h2></div></div></div> | | 2563 | <a name="bulk.pre"></a>7.1. Preparations</h2></div></div></div> |
2562 | <p>First of all, you have to decide whether you build all packages | | 2564 | <p>First of all, you have to decide whether you build all packages |
2563 | or a limited set of them. Full bulk builds usually consume a lot more resources, | | 2565 | or a limited set of them. Full bulk builds usually consume a lot more resources, |
2564 | both space and time, than builds for some practical sets of packages. | | 2566 | both space and time, than builds for some practical sets of packages. |
2565 | There exists a number of particularly heavy packages that are not actually | | 2567 | There exists a number of particularly heavy packages that are not actually |
2566 | interesting to a wide audience. | | 2568 | interesting to a wide audience. |
2567 | | | 2569 | |
2568 | For a limited bulk builds you need to make a list of packages you want to build. | | 2570 | For a limited bulk builds you need to make a list of packages you want to build. |
2569 | Note, that all their dependencies will be built, so you don't need to track them manually. | | 2571 | Note, that all their dependencies will be built, so you don't need to track them manually. |
2570 | </p> | | 2572 | </p> |
2571 | <p>During bulk builds various packages are installed and deinstalled | | 2573 | <p>During bulk builds various packages are installed and deinstalled |
2572 | in <code class="filename">/usr/pkg</code> (or whatever <code class="filename">LOCALBASE</code> is), | | 2574 | in <code class="filename">/usr/pkg</code> (or whatever <code class="filename">LOCALBASE</code> is), |
2573 | so make sure that you don't need any package during the builds. | | 2575 | so make sure that you don't need any package during the builds. |
2574 | Essentially, you should provide fresh system, either a chroot environment | | 2576 | Essentially, you should provide fresh system, either a chroot environment |
2575 | or something even more restrictive, depending on what the operating system provides, | | 2577 | or something even more restrictive, depending on what the operating system provides, |
2576 | or dedicate the whole physical machine. | | 2578 | or dedicate the whole physical machine. |
2577 | As a useful side effect this makes sure that bulk builds cannot | | 2579 | As a useful side effect this makes sure that bulk builds cannot |
2578 | break anything in your system. There have been numerous cases where | | 2580 | break anything in your system. There have been numerous cases where |
2579 | certain packages tried to install files outside the | | 2581 | certain packages tried to install files outside the |
2580 | <code class="filename">LOCALBASE</code> or wanted to edit some files in | | 2582 | <code class="filename">LOCALBASE</code> or wanted to edit some files in |
2581 | <code class="filename">/etc</code>. | | 2583 | <code class="filename">/etc</code>. |
2582 | </p> | | 2584 | </p> |
2583 | </div> | | 2585 | </div> |
2584 | <div class="sect1"> | | 2586 | <div class="sect1"> |
2585 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2587 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2586 | <a name="bulk.pbulk"></a>7.2. Running a pbulk-style bulk build</h2></div></div></div> | | 2588 | <a name="bulk.pbulk"></a>7.2. Running a pbulk-style bulk build</h2></div></div></div> |
2587 | <p>Running a pbulk-style bulk build works roughly as follows:</p> | | 2589 | <p>Running a pbulk-style bulk build works roughly as follows:</p> |
2588 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2590 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2589 | <li class="listitem"><p>First, build the pbulk infrastructure in a fresh pkgsrc location.</p></li> | | 2591 | <li class="listitem"><p>First, build the pbulk infrastructure in a fresh pkgsrc location.</p></li> |
2590 | <li class="listitem"><p>Then, build each of the packages from a clean installation directory using the infrastructure.</p></li> | | 2592 | <li class="listitem"><p>Then, build each of the packages from a clean installation directory using the infrastructure.</p></li> |
2591 | </ul></div> | | 2593 | </ul></div> |
2592 | <div class="sect2"> | | 2594 | <div class="sect2"> |
2593 | <div class="titlepage"><div><div><h3 class="title"> | | 2595 | <div class="titlepage"><div><div><h3 class="title"> |
2594 | <a name="bulk.pbulk.conf"></a>7.2.1. Configuration</h3></div></div></div> | | 2596 | <a name="bulk.pbulk.conf"></a>7.2.1. Configuration</h3></div></div></div> |
2595 | <p>To simplify configuration we provide helper script <code class="filename">mk/pbulk/pbulk.sh</code>.</p> | | 2597 | <p>To simplify configuration we provide helper script <code class="filename">mk/pbulk/pbulk.sh</code>.</p> |
2596 | <p>In order to use it, prepare a clear system (real one, chroot environment, jail, zone, virtual machine). | | 2598 | <p>In order to use it, prepare a clear system (real one, chroot environment, jail, zone, virtual machine). |
2597 | Configure network access to fetch distribution files. | | 2599 | Configure network access to fetch distribution files. |
2598 | Create user with name "pbulk".</p> | | 2600 | Create user with name "pbulk".</p> |
2599 | <p>Fetch and extract pkgsrc. Use a command like one of these:</p> | | 2601 | <p>Fetch and extract pkgsrc. Use a command like one of these:</p> |
2600 | <pre class="screen"> | | 2602 | <pre class="screen"> |
2601 | <code class="prompt">#</code> <strong class="userinput"><code>(cd /usr && ftp -o - http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz | tar -zxf-)</code></strong> | | 2603 | <code class="prompt">#</code> <strong class="userinput"><code>(cd /usr && ftp -o - http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz | tar -zxf-)</code></strong> |
2602 | <code class="prompt">#</code> <strong class="userinput"><code>(cd /usr && fetch -o - http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz | tar -zxf-)</code></strong> | | 2604 | <code class="prompt">#</code> <strong class="userinput"><code>(cd /usr && fetch -o - http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz | tar -zxf-)</code></strong> |
2603 | <code class="prompt">#</code> <strong class="userinput"><code>(cd /usr && cvs -Q -z3 -d anoncvs@anoncvs.NetBSD.org:/cvsroot get -P pkgsrc)</code></strong> | | 2605 | <code class="prompt">#</code> <strong class="userinput"><code>(cd /usr && cvs -Q -z3 -d anoncvs@anoncvs.NetBSD.org:/cvsroot get -P pkgsrc)</code></strong> |
2604 | </pre> | | 2606 | </pre> |
2605 | <p>Or any other way that fits (e.g., curl, wget).</p> | | 2607 | <p>Or any other way that fits (e.g., curl, wget).</p> |
2606 | <p>Deploy and configure pbulk tools, e.g.:</p> | | 2608 | <p>Deploy and configure pbulk tools, e.g.:</p> |
2607 | <pre class="screen"> | | 2609 | <pre class="screen"> |
2608 | <code class="prompt">#</code> <strong class="userinput"><code>sh pbulk.sh -n # native (NetBSD)</code></strong> | | 2610 | <code class="prompt">#</code> <strong class="userinput"><code>sh pbulk.sh -n # native (NetBSD)</code></strong> |
2609 | <code class="prompt">#</code> <strong class="userinput"><code>sh pbulk.sh -n -c mk.conf.frag # native, apply settings from given mk.conf fragment</code></strong> | | 2611 | <code class="prompt">#</code> <strong class="userinput"><code>sh pbulk.sh -n -c mk.conf.frag # native, apply settings from given mk.conf fragment</code></strong> |
2610 | <code class="prompt">#</code> <strong class="userinput"><code>sh pbulk.sh -nlc mk.conf.frag # native, apply settings, configure for limited build</code></strong> | | 2612 | <code class="prompt">#</code> <strong class="userinput"><code>sh pbulk.sh -nlc mk.conf.frag # native, apply settings, configure for limited build</code></strong> |
2611 | </pre> | | 2613 | </pre> |
2612 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 2614 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
2613 | <h3 class="title">Note</h3> | | 2615 | <h3 class="title">Note</h3> |
2614 | <p><code class="filename">mk.conf.frag</code> is a fragment of | | 2616 | <p><code class="filename">mk.conf.frag</code> is a fragment of |
2615 | <code class="filename">mk.conf</code> that contains settings you want to | | 2617 | <code class="filename">mk.conf</code> that contains settings you want to |
2616 | apply to packages you build. For instance,</p> | | 2618 | apply to packages you build. For instance,</p> |
2617 | <pre class="programlisting"> | | 2619 | <pre class="programlisting"> |
2618 | PKG_DEVELOPER= yes # perform more checks | | 2620 | PKG_DEVELOPER= yes # perform more checks |
2619 | X11_TYPE= modular # use pkgsrc X11 | | 2621 | X11_TYPE= modular # use pkgsrc X11 |
2620 | SKIP_LICENSE_CHECK= yes # accept all licences (useful when building all packages) | | 2622 | SKIP_LICENSE_CHECK= yes # accept all licences (useful when building all packages) |
2621 | </pre> | | 2623 | </pre> |
2622 | </div> | | 2624 | </div> |
2623 | <p>If configured for limited list, replace the list in <code class="filename">/usr/pbulk/etc/pbulk.list</code> | | 2625 | <p>If configured for limited list, replace the list in <code class="filename">/usr/pbulk/etc/pbulk.list</code> |
2624 | with your list of packages one per line without empty lines or comments. E.g.:</p> | | 2626 | with your list of packages one per line without empty lines or comments. E.g.:</p> |
2625 | <pre class="programlisting"> | | 2627 | <pre class="programlisting"> |
2626 | www/firefox | | 2628 | www/firefox |
2627 | mail/thunderbird | | 2629 | mail/thunderbird |
2628 | misc/libreoffice4 | | 2630 | misc/libreoffice4 |
2629 | </pre> | | 2631 | </pre> |
2630 | <p>At this point you can also review configuration in <code class="filename">/usr/pbulk/etc</code> | | 2632 | <p>At this point you can also review configuration in <code class="filename">/usr/pbulk/etc</code> |
2631 | and make final amendments, if wanted.</p> | | 2633 | and make final amendments, if wanted.</p> |
2632 | <p>Start it:</p> | | 2634 | <p>Start it:</p> |
2633 | <pre class="screen"> | | 2635 | <pre class="screen"> |
2634 | <code class="prompt">#</code> <strong class="userinput"><code>/usr/pbulk/bin/bulkbuild</code></strong> | | 2636 | <code class="prompt">#</code> <strong class="userinput"><code>/usr/pbulk/bin/bulkbuild</code></strong> |
2635 | </pre> | | 2637 | </pre> |
2636 | <p>After it finishes, you'll have <code class="filename">/mnt</code> filled with distribution files, binary packages, and reports, | | 2638 | <p>After it finishes, you'll have <code class="filename">/mnt</code> filled with distribution files, binary packages, and reports, |
2637 | plain text summary in <code class="filename">/mnt/bulklog/meta/report.txt</code> | | 2639 | plain text summary in <code class="filename">/mnt/bulklog/meta/report.txt</code> |
2638 | </p> | | 2640 | </p> |
2639 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 2641 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
2640 | <h3 class="title">Note</h3> | | 2642 | <h3 class="title">Note</h3> |
2641 | <p>The <code class="filename">pbulk.sh</code> script does not cover all possible use cases. | | 2643 | <p>The <code class="filename">pbulk.sh</code> script does not cover all possible use cases. |
2642 | While being ready to run, it serves as a good starting point to understand and build more complex setups. | | 2644 | While being ready to run, it serves as a good starting point to understand and build more complex setups. |
2643 | The script is kept small enough for better understanding.</p> | | 2645 | The script is kept small enough for better understanding.</p> |
2644 | </div> | | 2646 | </div> |
2645 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 2647 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
2646 | <h3 class="title">Note</h3> | | 2648 | <h3 class="title">Note</h3> |
2647 | <p>The <code class="filename">pbulk.sh</code> script supports running | | 2649 | <p>The <code class="filename">pbulk.sh</code> script supports running |
2648 | unprivileged bulk build and helps configuring distributed bulk builds.</p> | | 2650 | unprivileged bulk build and helps configuring distributed bulk builds.</p> |
2649 | </div> | | 2651 | </div> |
2650 | </div> | | 2652 | </div> |
2651 | </div> | | 2653 | </div> |
2652 | <div class="sect1"> | | 2654 | <div class="sect1"> |
2653 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2655 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2654 | <a name="bulk.req"></a>7.3. Requirements of a full bulk build</h2></div></div></div> | | 2656 | <a name="bulk.req"></a>7.3. Requirements of a full bulk build</h2></div></div></div> |
2655 | <p>A complete bulk build requires lots of disk space. Some of the | | 2657 | <p>A complete bulk build requires lots of disk space. Some of the |
2656 | disk space can be read-only, some other must be writable. Some can be on | | 2658 | disk space can be read-only, some other must be writable. Some can be on |
2657 | remote filesystems (such as NFS) and some should be local. Some can be | | 2659 | remote filesystems (such as NFS) and some should be local. Some can be |
2658 | temporary filesystems, others must survive a sudden reboot.</p> | | 2660 | temporary filesystems, others must survive a sudden reboot.</p> |
2659 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2661 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2660 | <li class="listitem"><p>40 GB for the distfiles (read-write, remote, temporary)</p></li> | | 2662 | <li class="listitem"><p>40 GB for the distfiles (read-write, remote, temporary)</p></li> |
2661 | <li class="listitem"><p>30 GB for the binary packages (read-write, remote, permanent)</p></li> | | 2663 | <li class="listitem"><p>30 GB for the binary packages (read-write, remote, permanent)</p></li> |
2662 | <li class="listitem"><p>1 GB for the pkgsrc tree (read-only, remote, permanent)</p></li> | | 2664 | <li class="listitem"><p>1 GB for the pkgsrc tree (read-only, remote, permanent)</p></li> |
2663 | <li class="listitem"><p>5 GB for <code class="filename">LOCALBASE</code> (read-write, local, temporary)</p></li> | | 2665 | <li class="listitem"><p>5 GB for <code class="filename">LOCALBASE</code> (read-write, local, temporary)</p></li> |
2664 | <li class="listitem"><p>10 GB for the log files (read-write, remote, permanent)</p></li> | | 2666 | <li class="listitem"><p>10 GB for the log files (read-write, remote, permanent)</p></li> |
2665 | <li class="listitem"><p>5 GB for temporary files (read-write, local, temporary)</p></li> | | 2667 | <li class="listitem"><p>5 GB for temporary files (read-write, local, temporary)</p></li> |
2666 | </ul></div> | | 2668 | </ul></div> |
2667 | </div> | | 2669 | </div> |
2668 | <div class="sect1"> | | 2670 | <div class="sect1"> |
2669 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2671 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2670 | <a name="creating-cdroms"></a>7.4. Creating a multiple CD-ROM packages collection</h2></div></div></div> | | 2672 | <a name="creating-cdroms"></a>7.4. Creating a multiple CD-ROM packages collection</h2></div></div></div> |
2671 | <p>After your pkgsrc bulk-build has completed, you may wish to | | 2673 | <p>After your pkgsrc bulk-build has completed, you may wish to |
2672 | create a CD-ROM set of the resulting binary packages to assist | | 2674 | create a CD-ROM set of the resulting binary packages to assist |
2673 | in installing packages on other machines. The | | 2675 | in installing packages on other machines. The |
2674 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/cdpack/README.html" target="_top"><code class="filename">pkgtools/cdpack</code></a> package provides | | 2676 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/cdpack/README.html" target="_top"><code class="filename">pkgtools/cdpack</code></a> package provides |
2675 | a simple tool for creating the ISO 9660 images. | | 2677 | a simple tool for creating the ISO 9660 images. |
2676 | <span class="command"><strong>cdpack</strong></span> arranges the packages on the CD-ROMs in a | | 2678 | <span class="command"><strong>cdpack</strong></span> arranges the packages on the CD-ROMs in a |
2677 | way that keeps all the dependencies for a given package on the same | | 2679 | way that keeps all the dependencies for a given package on the same |
2678 | CD as that package.</p> | | 2680 | CD as that package.</p> |
2679 | <div class="sect2"> | | 2681 | <div class="sect2"> |
2680 | <div class="titlepage"><div><div><h3 class="title"> | | 2682 | <div class="titlepage"><div><div><h3 class="title"> |
2681 | <a name="cdpack-example"></a>7.4.1. Example of cdpack</h3></div></div></div> | | 2683 | <a name="cdpack-example"></a>7.4.1. Example of cdpack</h3></div></div></div> |
2682 | <p>Complete documentation for cdpack is found in the cdpack(1) | | 2684 | <p>Complete documentation for cdpack is found in the cdpack(1) |
2683 | man page. The following short example assumes that the binary | | 2685 | man page. The following short example assumes that the binary |
2684 | packages are left in | | 2686 | packages are left in |
2685 | <code class="filename">/usr/pkgsrc/packages/All</code> and that | | 2687 | <code class="filename">/usr/pkgsrc/packages/All</code> and that |
2686 | sufficient disk space exists in <code class="filename">/u2</code> to | | 2688 | sufficient disk space exists in <code class="filename">/u2</code> to |
2687 | hold the ISO 9660 images.</p> | | 2689 | hold the ISO 9660 images.</p> |
2688 | <pre class="screen"> | | 2690 | <pre class="screen"> |
2689 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir /u2/images</code></strong> | | 2691 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir /u2/images</code></strong> |
2690 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_add /usr/pkgsrc/packages/All/cdpack</code></strong> | | 2692 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_add /usr/pkgsrc/packages/All/cdpack</code></strong> |
2691 | <code class="prompt">#</code> <strong class="userinput"><code>cdpack /usr/pkgsrc/packages/All /u2/images</code></strong> | | 2693 | <code class="prompt">#</code> <strong class="userinput"><code>cdpack /usr/pkgsrc/packages/All /u2/images</code></strong> |
2692 | </pre> | | 2694 | </pre> |
2693 | <p>If you wish to include a common set of files | | 2695 | <p>If you wish to include a common set of files |
2694 | (<code class="filename">COPYRIGHT</code>, <code class="filename">README</code>, | | 2696 | (<code class="filename">COPYRIGHT</code>, <code class="filename">README</code>, |
2695 | etc.) on each CD in the collection, then you need to create a | | 2697 | etc.) on each CD in the collection, then you need to create a |
2696 | directory which contains these files. e.g.</p> | | 2698 | directory which contains these files. e.g.</p> |
2697 | <pre class="screen"> | | 2699 | <pre class="screen"> |
2698 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir /tmp/common</code></strong> | | 2700 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir /tmp/common</code></strong> |
2699 | <code class="prompt">#</code> <strong class="userinput"><code>echo "This is a README" > /tmp/common/README</code></strong> | | 2701 | <code class="prompt">#</code> <strong class="userinput"><code>echo "This is a README" > /tmp/common/README</code></strong> |
2700 | <code class="prompt">#</code> <strong class="userinput"><code>echo "Another file" > /tmp/common/COPYING</code></strong> | | 2702 | <code class="prompt">#</code> <strong class="userinput"><code>echo "Another file" > /tmp/common/COPYING</code></strong> |
2701 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir /tmp/common/bin</code></strong> | | 2703 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir /tmp/common/bin</code></strong> |
2702 | <code class="prompt">#</code> <strong class="userinput"><code>echo "#!/bin/sh" > /tmp/common/bin/myscript</code></strong> | | 2704 | <code class="prompt">#</code> <strong class="userinput"><code>echo "#!/bin/sh" > /tmp/common/bin/myscript</code></strong> |
2703 | <code class="prompt">#</code> <strong class="userinput"><code>echo "echo Hello world" >> /tmp/common/bin/myscript</code></strong> | | 2705 | <code class="prompt">#</code> <strong class="userinput"><code>echo "echo Hello world" >> /tmp/common/bin/myscript</code></strong> |
2704 | <code class="prompt">#</code> <strong class="userinput"><code>chmod 755 /tmp/common/bin/myscript</code></strong> | | 2706 | <code class="prompt">#</code> <strong class="userinput"><code>chmod 755 /tmp/common/bin/myscript</code></strong> |
2705 | </pre> | | 2707 | </pre> |
2706 | <p>Now create the images:</p> | | 2708 | <p>Now create the images:</p> |
2707 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>cdpack -x /tmp/common /usr/pkgsrc/packages/All /u2/images</code></strong></pre> | | 2709 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>cdpack -x /tmp/common /usr/pkgsrc/packages/All /u2/images</code></strong></pre> |
2708 | <p>Each image will contain <code class="filename">README</code>, | | 2710 | <p>Each image will contain <code class="filename">README</code>, |
2709 | <code class="filename">COPYING</code>, and <code class="filename">bin/myscript</code> | | 2711 | <code class="filename">COPYING</code>, and <code class="filename">bin/myscript</code> |
2710 | in their root directories.</p> | | 2712 | in their root directories.</p> |
2711 | </div> | | 2713 | </div> |
2712 | </div> | | 2714 | </div> |
2713 | </div> | | 2715 | </div> |
2714 | <div class="chapter"> | | 2716 | <div class="chapter"> |
2715 | <div class="titlepage"><div><div><h2 class="title"> | | 2717 | <div class="titlepage"><div><div><h2 class="title"> |
2716 | <a name="files"></a>Chapter 8. Directory layout of the installed files</h2></div></div></div> | | 2718 | <a name="files"></a>Chapter 8. Directory layout of the installed files</h2></div></div></div> |
2717 | <div class="toc"> | | 2719 | <div class="toc"> |
2718 | <p><b>Table of Contents</b></p> | | 2720 | <p><b>Table of Contents</b></p> |
2719 | <dl> | | 2721 | <dl> |
2720 | <dt><span class="sect1"><a href="#files.localbase">8.1. File system layout in <code class="literal">${LOCALBASE}</code></a></span></dt> | | 2722 | <dt><span class="sect1"><a href="#files.localbase">8.1. File system layout in <code class="literal">${LOCALBASE}</code></a></span></dt> |
2721 | <dt><span class="sect1"><a href="#files.varbase">8.2. File system layout in <code class="literal">${VARBASE}</code></a></span></dt> | | 2723 | <dt><span class="sect1"><a href="#files.varbase">8.2. File system layout in <code class="literal">${VARBASE}</code></a></span></dt> |
2722 | </dl> | | 2724 | </dl> |
2723 | </div> | | 2725 | </div> |
2724 | <p>The files that are installed by pkgsrc are organized in a way that | | 2726 | <p>The files that are installed by pkgsrc are organized in a way that |
2725 | is similar to what you find in the <code class="filename">/usr</code> directory | | 2727 | is similar to what you find in the <code class="filename">/usr</code> directory |
2726 | of the base system. But some details are different. This is because | | 2728 | of the base system. But some details are different. This is because |
2727 | pkgsrc initially came from FreeBSD and had adopted its file system | | 2729 | pkgsrc initially came from FreeBSD and had adopted its file system |
2728 | hierarchy. Later it was largely influenced by NetBSD. But no matter | | 2730 | hierarchy. Later it was largely influenced by NetBSD. But no matter |
2729 | which operating system you are using pkgsrc with, you can expect the | | 2731 | which operating system you are using pkgsrc with, you can expect the |
2730 | same layout for pkgsrc.</p> | | 2732 | same layout for pkgsrc.</p> |
2731 | <p>There are mainly four root directories for pkgsrc, which are all | | 2733 | <p>There are mainly four root directories for pkgsrc, which are all |
2732 | configurable in the <code class="filename">bootstrap/bootstrap</code> script. | | 2734 | configurable in the <code class="filename">bootstrap/bootstrap</code> script. |
2733 | When pkgsrc has been installed as root, the default locations | | 2735 | When pkgsrc has been installed as root, the default locations |
2734 | are:</p> | | 2736 | are:</p> |
2735 | <pre class="programlisting"> | | 2737 | <pre class="programlisting"> |
2736 | LOCALBASE= /usr/pkg | | 2738 | LOCALBASE= /usr/pkg |
2737 | PKG_SYSCONFBASE= /usr/pkg/etc | | 2739 | PKG_SYSCONFBASE= /usr/pkg/etc |
2738 | VARBASE= /var | | 2740 | VARBASE= /var |
2739 | PKG_DBDIR= /var/db/pkg | | 2741 | PKG_DBDIR= /var/db/pkg |
2740 | </pre> | | 2742 | </pre> |
2741 | <p>In unprivileged mode (when pkgsrc has been installed as any other | | 2743 | <p>In unprivileged mode (when pkgsrc has been installed as any other |
2742 | user), the default locations are:</p> | | 2744 | user), the default locations are:</p> |
2743 | <pre class="programlisting"> | | 2745 | <pre class="programlisting"> |
2744 | LOCALBASE= ${HOME}/pkg | | 2746 | LOCALBASE= ${HOME}/pkg |
2745 | PKG_SYSCONFBASE= ${HOME}/pkg/etc | | 2747 | PKG_SYSCONFBASE= ${HOME}/pkg/etc |
2746 | VARBASE= ${HOME}/pkg/var | | 2748 | VARBASE= ${HOME}/pkg/var |
2747 | PKG_DBDIR= ${HOME}/pkg/var/db/pkg | | 2749 | PKG_DBDIR= ${HOME}/pkg/var/db/pkg |
2748 | </pre> | | 2750 | </pre> |
2749 | <p>What these four directories are for, and what they look like is | | 2751 | <p>What these four directories are for, and what they look like is |
2750 | explained below.</p> | | 2752 | explained below.</p> |
2751 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2753 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2752 | <li class="listitem"><p><code class="varname">LOCALBASE</code> corresponds to the | | 2754 | <li class="listitem"><p><code class="varname">LOCALBASE</code> corresponds to the |
2753 | <code class="filename">/usr</code> directory in the base system. It is the | | 2755 | <code class="filename">/usr</code> directory in the base system. It is the |
2754 | <span class="quote">“<span class="quote">main</span>”</span> directory where the files are installed and contains | | 2756 | <span class="quote">“<span class="quote">main</span>”</span> directory where the files are installed and contains |
2755 | the well-known subdirectories like <code class="filename">bin</code>, | | 2757 | the well-known subdirectories like <code class="filename">bin</code>, |
2756 | <code class="filename">include</code>, <code class="filename">lib</code>, | | 2758 | <code class="filename">include</code>, <code class="filename">lib</code>, |
2757 | <code class="filename">share</code> and | | 2759 | <code class="filename">share</code> and |
2758 | <code class="filename">sbin</code>.</p></li> | | 2760 | <code class="filename">sbin</code>.</p></li> |
2759 | <li class="listitem"><p><code class="varname">VARBASE</code> corresponds to | | 2761 | <li class="listitem"><p><code class="varname">VARBASE</code> corresponds to |
2760 | <code class="filename">/var</code> in the base system. Some programs (especially | | 2762 | <code class="filename">/var</code> in the base system. Some programs (especially |
2761 | games, network daemons) need write access to it during normal | | 2763 | games, network daemons) need write access to it during normal |
2762 | operation.</p></li> | | 2764 | operation.</p></li> |
2763 | <li class="listitem"><p><code class="varname">PKG_SYSCONFDIR</code> corresponds to | | 2765 | <li class="listitem"><p><code class="varname">PKG_SYSCONFDIR</code> corresponds to |
2764 | <code class="filename">/etc</code> in the base system. It contains configuration | | 2766 | <code class="filename">/etc</code> in the base system. It contains configuration |
2765 | files of the packages, as well as pkgsrc's <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> | | 2767 | files of the packages, as well as pkgsrc's <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> |
2766 | itself.</p></li> | | 2768 | itself.</p></li> |
2767 | </ul></div> | | 2769 | </ul></div> |
2768 | <div class="sect1"> | | 2770 | <div class="sect1"> |
2769 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2771 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2770 | <a name="files.localbase"></a>8.1. File system layout in <code class="literal">${LOCALBASE}</code> | | 2772 | <a name="files.localbase"></a>8.1. File system layout in <code class="literal">${LOCALBASE}</code> |
2771 | </h2></div></div></div> | | 2773 | </h2></div></div></div> |
2772 | <p>The following directories exist in a typical pkgsrc installation | | 2774 | <p>The following directories exist in a typical pkgsrc installation |
2773 | in <code class="filename">${LOCALBASE}</code>.</p> | | 2775 | in <code class="filename">${LOCALBASE}</code>.</p> |
2774 | <div class="variablelist"><dl class="variablelist"> | | 2776 | <div class="variablelist"><dl class="variablelist"> |
2775 | <dt><span class="term"><code class="filename">bin</code></span></dt> | | 2777 | <dt><span class="term"><code class="filename">bin</code></span></dt> |
2776 | <dd><p>Contains executable programs that are intended to be | | 2778 | <dd><p>Contains executable programs that are intended to be |
2777 | directly used by the end user.</p></dd> | | 2779 | directly used by the end user.</p></dd> |
2778 | <dt><span class="term"><code class="filename">emul</code></span></dt> | | 2780 | <dt><span class="term"><code class="filename">emul</code></span></dt> |
2779 | <dd><p>Contains files for the emulation layers of various other | | 2781 | <dd><p>Contains files for the emulation layers of various other |
2780 | operating systems, especially for | | 2782 | operating systems, especially for |
2781 | NetBSD.</p></dd> | | 2783 | NetBSD.</p></dd> |
2782 | <dt><span class="term"><code class="filename">etc</code> (the usual location of | | 2784 | <dt><span class="term"><code class="filename">etc</code> (the usual location of |
2783 | <code class="filename">${PKG_SYSCONFDIR}</code>)</span></dt> | | 2785 | <code class="filename">${PKG_SYSCONFDIR}</code>)</span></dt> |
2784 | <dd><p>Contains | | 2786 | <dd><p>Contains |
2785 | the configuration files.</p></dd> | | 2787 | the configuration files.</p></dd> |
2786 | <dt><span class="term"><code class="filename">include</code></span></dt> | | 2788 | <dt><span class="term"><code class="filename">include</code></span></dt> |
2787 | <dd><p>Contains headers for the C and C++ programming | | 2789 | <dd><p>Contains headers for the C and C++ programming |
2788 | languages.</p></dd> | | 2790 | languages.</p></dd> |
2789 | <dt><span class="term"><code class="filename">info</code></span></dt> | | 2791 | <dt><span class="term"><code class="filename">info</code></span></dt> |
2790 | <dd><p>Contains GNU info files of various | | 2792 | <dd><p>Contains GNU info files of various |
2791 | packages.</p></dd> | | 2793 | packages.</p></dd> |
2792 | <dt><span class="term"><code class="filename">lib</code></span></dt> | | 2794 | <dt><span class="term"><code class="filename">lib</code></span></dt> |
2793 | <dd><p>Contains shared and static | | 2795 | <dd><p>Contains shared and static |
2794 | libraries.</p></dd> | | 2796 | libraries.</p></dd> |
2795 | <dt><span class="term"><code class="filename">libdata</code></span></dt> | | 2797 | <dt><span class="term"><code class="filename">libdata</code></span></dt> |
2796 | <dd><p>Contains data files that don't change after | | 2798 | <dd><p>Contains data files that don't change after |
2797 | installation. Other data files belong into | | 2799 | installation. Other data files belong into |
2798 | <code class="filename">${VARBASE}</code>.</p></dd> | | 2800 | <code class="filename">${VARBASE}</code>.</p></dd> |
2799 | <dt><span class="term"><code class="filename">libexec</code></span></dt> | | 2801 | <dt><span class="term"><code class="filename">libexec</code></span></dt> |
2800 | <dd><p>Contains programs that are not intended to be used by | | 2802 | <dd><p>Contains programs that are not intended to be used by |
2801 | end users, such as helper programs or network | | 2803 | end users, such as helper programs or network |
2802 | daemons.</p></dd> | | 2804 | daemons.</p></dd> |
2803 | <dt><span class="term"><code class="filename">libexec/cgi-bin</code></span></dt> | | 2805 | <dt><span class="term"><code class="filename">libexec/cgi-bin</code></span></dt> |
2804 | <dd><p>Contains programs that are intended to be executed as | | 2806 | <dd><p>Contains programs that are intended to be executed as |
2805 | CGI scripts by a web server.</p></dd> | | 2807 | CGI scripts by a web server.</p></dd> |
2806 | <dt><span class="term"><code class="filename">man</code> (the usual value of | | 2808 | <dt><span class="term"><code class="filename">man</code> (the usual value of |
2807 | <code class="filename">${PKGMANDIR}</code>)</span></dt> | | 2809 | <code class="filename">${PKGMANDIR}</code>)</span></dt> |
2808 | <dd><p>Contains brief | | 2810 | <dd><p>Contains brief |
2809 | documentation in form of manual pages.</p></dd> | | 2811 | documentation in form of manual pages.</p></dd> |
2810 | <dt><span class="term"><code class="filename">sbin</code></span></dt> | | 2812 | <dt><span class="term"><code class="filename">sbin</code></span></dt> |
2811 | <dd><p>Contains programs that are intended to be used only by | | 2813 | <dd><p>Contains programs that are intended to be used only by |
2812 | the super-user.</p></dd> | | 2814 | the super-user.</p></dd> |
2813 | <dt><span class="term"><code class="filename">share</code></span></dt> | | 2815 | <dt><span class="term"><code class="filename">share</code></span></dt> |
2814 | <dd><p>Contains platform-independent data files that don't | | 2816 | <dd><p>Contains platform-independent data files that don't |
2815 | change after installation.</p></dd> | | 2817 | change after installation.</p></dd> |
2816 | <dt><span class="term"><code class="filename">share/doc</code></span></dt> | | 2818 | <dt><span class="term"><code class="filename">share/doc</code></span></dt> |
2817 | <dd><p>Contains documentation files provided by the | | 2819 | <dd><p>Contains documentation files provided by the |
2818 | packages.</p></dd> | | 2820 | packages.</p></dd> |
2819 | <dt><span class="term"><code class="filename">share/examples</code></span></dt> | | 2821 | <dt><span class="term"><code class="filename">share/examples</code></span></dt> |
2820 | <dd><p>Contains example files provided by the packages. Among | | 2822 | <dd><p>Contains example files provided by the packages. Among |
2821 | others, the original configuration files are saved here and copied to | | 2823 | others, the original configuration files are saved here and copied to |
2822 | <code class="filename">${PKG_SYSCONFDIR}</code> during | | 2824 | <code class="filename">${PKG_SYSCONFDIR}</code> during |
2823 | installation.</p></dd> | | 2825 | installation.</p></dd> |
2824 | <dt><span class="term"><code class="filename">share/examples/rc.d</code></span></dt> | | 2826 | <dt><span class="term"><code class="filename">share/examples/rc.d</code></span></dt> |
2825 | <dd><p>Contains the original files for rc.d | | 2827 | <dd><p>Contains the original files for rc.d |
2826 | scripts.</p></dd> | | 2828 | scripts.</p></dd> |
2827 | <dt><span class="term"><code class="filename">var</code> (the usual location of | | 2829 | <dt><span class="term"><code class="filename">var</code> (the usual location of |
2828 | <code class="filename">${VARBASE}</code>)</span></dt> | | 2830 | <code class="filename">${VARBASE}</code>)</span></dt> |
2829 | <dd><p>Contains files | | 2831 | <dd><p>Contains files |
2830 | that may be modified after | | 2832 | that may be modified after |
2831 | installation.</p></dd> | | 2833 | installation.</p></dd> |
2832 | </dl></div> | | 2834 | </dl></div> |
2833 | </div> | | 2835 | </div> |
2834 | <div class="sect1"> | | 2836 | <div class="sect1"> |
2835 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2837 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2836 | <a name="files.varbase"></a>8.2. File system layout in <code class="literal">${VARBASE}</code> | | 2838 | <a name="files.varbase"></a>8.2. File system layout in <code class="literal">${VARBASE}</code> |
2837 | </h2></div></div></div> | | 2839 | </h2></div></div></div> |
2838 | <div class="variablelist"><dl class="variablelist"> | | 2840 | <div class="variablelist"><dl class="variablelist"> |
2839 | <dt><span class="term"><code class="filename">db/pkg</code> (the usual location of | | 2841 | <dt><span class="term"><code class="filename">db/pkg</code> (the usual location of |
2840 | <code class="filename">${PKG_DBDIR}</code>)</span></dt> | | 2842 | <code class="filename">${PKG_DBDIR}</code>)</span></dt> |
2841 | <dd><p>Contains | | 2843 | <dd><p>Contains |
2842 | information about the currently installed | | 2844 | information about the currently installed |
2843 | packages.</p></dd> | | 2845 | packages.</p></dd> |
2844 | <dt><span class="term"><code class="filename">games</code></span></dt> | | 2846 | <dt><span class="term"><code class="filename">games</code></span></dt> |
2845 | <dd><p>Contains highscore | | 2847 | <dd><p>Contains highscore |
2846 | files.</p></dd> | | 2848 | files.</p></dd> |
2847 | <dt><span class="term"><code class="filename">log</code></span></dt> | | 2849 | <dt><span class="term"><code class="filename">log</code></span></dt> |
2848 | <dd><p>Contains log files.</p></dd> | | 2850 | <dd><p>Contains log files.</p></dd> |
2849 | <dt><span class="term"><code class="filename">run</code></span></dt> | | 2851 | <dt><span class="term"><code class="filename">run</code></span></dt> |
2850 | <dd><p>Contains informational files about daemons that are | | 2852 | <dd><p>Contains informational files about daemons that are |
2851 | currently running.</p></dd> | | 2853 | currently running.</p></dd> |
2852 | </dl></div> | | 2854 | </dl></div> |
2853 | </div> | | 2855 | </div> |
2854 | </div> | | 2856 | </div> |
2855 | <div class="chapter"> | | 2857 | <div class="chapter"> |
2856 | <div class="titlepage"><div><div><h2 class="title"> | | 2858 | <div class="titlepage"><div><div><h2 class="title"> |
2857 | <a name="faq"></a>Chapter 9. Frequently Asked Questions</h2></div></div></div> | | 2859 | <a name="faq"></a>Chapter 9. Frequently Asked Questions</h2></div></div></div> |
2858 | <div class="toc"> | | 2860 | <div class="toc"> |
2859 | <p><b>Table of Contents</b></p> | | 2861 | <p><b>Table of Contents</b></p> |
2860 | <dl> | | 2862 | <dl> |
2861 | <dt><span class="sect1"><a href="#mailing-list-pointers">9.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> | | 2863 | <dt><span class="sect1"><a href="#mailing-list-pointers">9.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> |
2862 | <dt><span class="sect1"><a href="#faq-pkgtools">9.2. Utilities for package management (pkgtools)</a></span></dt> | | 2864 | <dt><span class="sect1"><a href="#pkgviews-docs">9.2. Where's the pkgviews documentation?</a></span></dt> |
2863 | <dt><span class="sect1"><a href="#non-root-pkgsrc">9.3. How to use pkgsrc as non-root</a></span></dt> | | 2865 | <dt><span class="sect1"><a href="#faq-pkgtools">9.3. Utilities for package management (pkgtools)</a></span></dt> |
2864 | <dt><span class="sect1"><a href="#resume-transfers">9.4. How to resume transfers when fetching distfiles?</a></span></dt> | | 2866 | <dt><span class="sect1"><a href="#non-root-pkgsrc">9.4. How to use pkgsrc as non-root</a></span></dt> |
2865 | <dt><span class="sect1"><a href="#x.org-from-pkgsrc">9.5. How can I install/use modular X.org from pkgsrc?</a></span></dt> | | 2867 | <dt><span class="sect1"><a href="#resume-transfers">9.5. How to resume transfers when fetching distfiles?</a></span></dt> |
2866 | <dt><span class="sect1"><a href="#fetch-behind-firewall">9.6. How to fetch files from behind a firewall</a></span></dt> | | 2868 | <dt><span class="sect1"><a href="#x.org-from-pkgsrc">9.6. How can I install/use modular X.org from pkgsrc?</a></span></dt> |
2867 | <dt><span class="sect1"><a href="#fetch-https">9.7. How to fetch files from HTTPS sites</a></span></dt> | | 2869 | <dt><span class="sect1"><a href="#fetch-behind-firewall">9.7. How to fetch files from behind a firewall</a></span></dt> |
2868 | <dt><span class="sect1"><a href="#passive-ftp">9.8. How do I tell <span class="command"><strong>make fetch</strong></span> to do passive FTP?</a></span></dt> | | 2870 | <dt><span class="sect1"><a href="#fetch-https">9.8. How to fetch files from HTTPS sites</a></span></dt> |
2869 | <dt><span class="sect1"><a href="#fetching-all-distfiles">9.9. How to fetch all distfiles at once</a></span></dt> | | 2871 | <dt><span class="sect1"><a href="#passive-ftp">9.9. How do I tell <span class="command"><strong>make fetch</strong></span> to do passive FTP?</a></span></dt> |
2870 | <dt><span class="sect1"><a href="#tmac.andoc-missing">9.10. What does <span class="quote">“<span class="quote">Don't know how to make | | 2872 | <dt><span class="sect1"><a href="#fetching-all-distfiles">9.10. How to fetch all distfiles at once</a></span></dt> |
| | | 2873 | <dt><span class="sect1"><a href="#tmac.andoc-missing">9.11. What does <span class="quote">“<span class="quote">Don't know how to make |
2871 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</a></span></dt> | | 2874 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</a></span></dt> |
2872 | <dt><span class="sect1"><a href="#bsd.own.mk-missing">9.11. What does <span class="quote">“<span class="quote">Could not find bsd.own.mk</span>”</span> mean?</a></span></dt> | | 2875 | <dt><span class="sect1"><a href="#bsd.own.mk-missing">9.12. What does <span class="quote">“<span class="quote">Could not find bsd.own.mk</span>”</span> mean?</a></span></dt> |
2873 | <dt><span class="sect1"><a href="#using-sudo-with-pkgsrc">9.12. Using 'sudo' with pkgsrc</a></span></dt> | | 2876 | <dt><span class="sect1"><a href="#using-sudo-with-pkgsrc">9.13. Using 'sudo' with pkgsrc</a></span></dt> |
2874 | <dt><span class="sect1"><a href="#faq.conf">9.13. How do I change the location of configuration files?</a></span></dt> | | 2877 | <dt><span class="sect1"><a href="#faq.conf">9.14. How do I change the location of configuration files?</a></span></dt> |
2875 | <dt><span class="sect1"><a href="#audit-packages">9.14. Automated security checks</a></span></dt> | | 2878 | <dt><span class="sect1"><a href="#audit-packages">9.15. Automated security checks</a></span></dt> |
2876 | <dt><span class="sect1"><a href="#ufaq-cflags">9.15. Why do some packages ignore my <code class="varname">CFLAGS</code>?</a></span></dt> | | 2879 | <dt><span class="sect1"><a href="#ufaq-cflags">9.16. Why do some packages ignore my <code class="varname">CFLAGS</code>?</a></span></dt> |
2877 | <dt><span class="sect1"><a href="#ufaq-fail">9.16. A package does not build. What shall I do?</a></span></dt> | | 2880 | <dt><span class="sect1"><a href="#ufaq-fail">9.17. A package does not build. What shall I do?</a></span></dt> |
2878 | <dt><span class="sect1"><a href="#faq.rcs-conflicts">9.17. What does <span class="quote">“<span class="quote">Makefile appears to contain unresolved cvs/rcs/??? merge conflicts</span>”</span> mean?</a></span></dt> | | 2881 | <dt><span class="sect1"><a href="#faq.rcs-conflicts">9.18. What does <span class="quote">“<span class="quote">Makefile appears to contain unresolved cvs/rcs/??? merge conflicts</span>”</span> mean?</a></span></dt> |
2879 | </dl> | | 2882 | </dl> |
2880 | </div> | | 2883 | </div> |
2881 | <p>This section contains hints, tips & tricks on special things in | | 2884 | <p>This section contains hints, tips & tricks on special things in |
2882 | pkgsrc that we didn't find a better place for in the previous chapters, and | | 2885 | pkgsrc that we didn't find a better place for in the previous chapters, and |
2883 | it contains items for both pkgsrc users and developers.</p> | | 2886 | it contains items for both pkgsrc users and developers.</p> |
2884 | <div class="sect1"> | | 2887 | <div class="sect1"> |
2885 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2888 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2886 | <a name="mailing-list-pointers"></a>9.1. Are there any mailing lists for pkg-related discussion?</h2></div></div></div> | | 2889 | <a name="mailing-list-pointers"></a>9.1. Are there any mailing lists for pkg-related discussion?</h2></div></div></div> |
2887 | <p>The following mailing lists may be of interest to pkgsrc users:</p> | | 2890 | <p>The following mailing lists may be of interest to pkgsrc users:</p> |
2888 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2891 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2889 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-users" target="_top">pkgsrc-users</a>: | | 2892 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-users" target="_top">pkgsrc-users</a>: |
2890 | This is a general purpose list for most issues regarding | | 2893 | This is a general purpose list for most issues regarding |
2891 | pkgsrc, regardless of platform, e.g. soliciting user help | | 2894 | pkgsrc, regardless of platform, e.g. soliciting user help |
2892 | for pkgsrc configuration, unexpected build failures, using | | 2895 | for pkgsrc configuration, unexpected build failures, using |
2893 | particular packages, upgrading pkgsrc installations, | | 2896 | particular packages, upgrading pkgsrc installations, |
2894 | questions regarding the pkgsrc release branches, etc. General announcements or | | 2897 | questions regarding the pkgsrc release branches, etc. General announcements or |
2895 | proposals for changes that impact the pkgsrc user community, | | 2898 | proposals for changes that impact the pkgsrc user community, |
2896 | e.g. major infrastructure changes, new features, package | | 2899 | e.g. major infrastructure changes, new features, package |
2897 | removals, etc., may also be posted.</p></li> | | 2900 | removals, etc., may also be posted.</p></li> |
2898 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-bulk" target="_top">pkgsrc-bulk</a>: | | 2901 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-bulk" target="_top">pkgsrc-bulk</a>: |
2899 | A list where the results of pkgsrc bulk builds are sent and | | 2902 | A list where the results of pkgsrc bulk builds are sent and |
2900 | discussed.</p></li> | | 2903 | discussed.</p></li> |
2901 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-changes" target="_top">pkgsrc-changes</a>: | | 2904 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-changes" target="_top">pkgsrc-changes</a>: |
2902 | This list is for those who are interested in getting a | | 2905 | This list is for those who are interested in getting a |
2903 | commit message for every change committed to pkgsrc. It is | | 2906 | commit message for every change committed to pkgsrc. It is |
2904 | also available in digest form, meaning one daily message | | 2907 | also available in digest form, meaning one daily message |
2905 | containing all commit messages for changes to the package | | 2908 | containing all commit messages for changes to the package |
2906 | source tree in that 24 hour period.</p></li> | | 2909 | source tree in that 24 hour period.</p></li> |
2907 | </ul></div> | | 2910 | </ul></div> |
2908 | <p>To subscribe, do:</p> | | 2911 | <p>To subscribe, do:</p> |
2909 | <pre class="programlisting"> | | 2912 | <pre class="programlisting"> |
2910 | <code class="prompt">%</code> echo subscribe <em class="replaceable"><code>listname</code></em> | mail majordomo@NetBSD.org | | 2913 | <code class="prompt">%</code> echo subscribe <em class="replaceable"><code>listname</code></em> | mail majordomo@NetBSD.org |
2911 | </pre> | | 2914 | </pre> |
2912 | <p>Archives for all these mailing lists are available from | | 2915 | <p>Archives for all these mailing lists are available from |
2913 | <a class="ulink" href="http://mail-index.NetBSD.org/" target="_top">http://mail-index.NetBSD.org/</a>.</p> | | 2916 | <a class="ulink" href="http://mail-index.NetBSD.org/" target="_top">http://mail-index.NetBSD.org/</a>.</p> |
2914 | </div> | | 2917 | </div> |
2915 | <div class="sect1"> | | 2918 | <div class="sect1"> |
2916 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2919 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2917 | <a name="faq-pkgtools"></a>9.2. Utilities for package management (pkgtools)</h2></div></div></div> | | 2920 | <a name="pkgviews-docs"></a>9.2. Where's the pkgviews documentation?</h2></div></div></div> |
| | | 2921 | <p>Pkgviews is tightly integrated with buildlink. You can find a |
| | | 2922 | pkgviews User's guide in |
| | | 2923 | <code class="filename">pkgsrc/mk/buildlink3/PKGVIEWS_UG</code>.</p> |
| | | 2924 | </div> |
| | | 2925 | <div class="sect1"> |
| | | 2926 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
| | | 2927 | <a name="faq-pkgtools"></a>9.3. Utilities for package management (pkgtools)</h2></div></div></div> |
2918 | <p>The directory <code class="filename">pkgsrc/pkgtools</code> contains | | 2928 | <p>The directory <code class="filename">pkgsrc/pkgtools</code> contains |
2919 | a number of useful utilities for both users and developers of pkgsrc. This | | 2929 | a number of useful utilities for both users and developers of pkgsrc. This |
2920 | section attempts only to make the reader aware of the utilities and when | | 2930 | section attempts only to make the reader aware of the utilities and when |
2921 | they might be useful, and not to duplicate the documentation that comes | | 2931 | they might be useful, and not to duplicate the documentation that comes |
2922 | with each package.</p> | | 2932 | with each package.</p> |
2923 | <p>Utilities used by pkgsrc (automatically installed when needed):</p> | | 2933 | <p>Utilities used by pkgsrc (automatically installed when needed):</p> |
2924 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/x11-links/README.html" target="_top"><code class="filename">pkgtools/x11-links</code></a>: | | 2934 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/x11-links/README.html" target="_top"><code class="filename">pkgtools/x11-links</code></a>: |
2925 | Symlinks for use by buildlink.</p></li></ul></div> | | 2935 | Symlinks for use by buildlink.</p></li></ul></div> |
2926 | <p>OS tool augmentation (automatically installed when needed):</p> | | 2936 | <p>OS tool augmentation (automatically installed when needed):</p> |
2927 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2937 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2928 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/digest/README.html" target="_top"><code class="filename">pkgtools/digest</code></a>: | | 2938 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/digest/README.html" target="_top"><code class="filename">pkgtools/digest</code></a>: |
2929 | Calculates various kinds of checksums (including SHA1).</p></li> | | 2939 | Calculates various kinds of checksums (including SHA1).</p></li> |
2930 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/libnbcompat/README.html" target="_top"><code class="filename">pkgtools/libnbcompat</code></a>: | | 2940 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/libnbcompat/README.html" target="_top"><code class="filename">pkgtools/libnbcompat</code></a>: |
2931 | Compatibility library for pkgsrc tools.</p></li> | | 2941 | Compatibility library for pkgsrc tools.</p></li> |
2932 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/mtree/README.html" target="_top"><code class="filename">pkgtools/mtree</code></a>: Installed on | | 2942 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/mtree/README.html" target="_top"><code class="filename">pkgtools/mtree</code></a>: Installed on |
2933 | non-BSD systems due to lack of native mtree.</p></li> | | 2943 | non-BSD systems due to lack of native mtree.</p></li> |
2934 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a>: | | 2944 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a>: |
2935 | Up-to-date replacement for | | 2945 | Up-to-date replacement for |
2936 | <code class="filename">/usr/sbin/pkg_install</code>, or for use on operating | | 2946 | <code class="filename">/usr/sbin/pkg_install</code>, or for use on operating |
2937 | systems where pkg_install is not present.</p></li> | | 2947 | systems where pkg_install is not present.</p></li> |
2938 | </ul></div> | | 2948 | </ul></div> |
2939 | <p>Utilities used by pkgsrc (not automatically installed):</p> | | 2949 | <p>Utilities used by pkgsrc (not automatically installed):</p> |
2940 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2950 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2941 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_tarup/README.html" target="_top"><code class="filename">pkgtools/pkg_tarup</code></a>: | | 2951 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_tarup/README.html" target="_top"><code class="filename">pkgtools/pkg_tarup</code></a>: |
2942 | Create a binary package from an | | 2952 | Create a binary package from an |
2943 | already-installed package. Used by <span class="command"><strong>make replace</strong></span> to | | 2953 | already-installed package. Used by <span class="command"><strong>make replace</strong></span> to |
2944 | save the old package.</p></li> | | 2954 | save the old package.</p></li> |
2945 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/dfdisk/README.html" target="_top"><code class="filename">pkgtools/dfdisk</code></a>: | | 2955 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/dfdisk/README.html" target="_top"><code class="filename">pkgtools/dfdisk</code></a>: |
2946 | Adds extra functionality to pkgsrc, allowing it to fetch distfiles | | 2956 | Adds extra functionality to pkgsrc, allowing it to fetch distfiles |
2947 | from multiple locations. It currently supports the following | | 2957 | from multiple locations. It currently supports the following |
2948 | methods: multiple CD-ROMs and network FTP/HTTP connections.</p></li> | | 2958 | methods: multiple CD-ROMs and network FTP/HTTP connections.</p></li> |
2949 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/cpuflags/README.html" target="_top"><code class="filename">devel/cpuflags</code></a>: Determine | | 2959 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/cpuflags/README.html" target="_top"><code class="filename">devel/cpuflags</code></a>: Determine |
2950 | the best compiler flags to optimise code for your current | | 2960 | the best compiler flags to optimise code for your current |
2951 | CPU and compiler. </p></li> | | 2961 | CPU and compiler. </p></li> |
2952 | </ul></div> | | 2962 | </ul></div> |
2953 | <p>Utilities for keeping track of installed packages, being up to date, | | 2963 | <p>Utilities for keeping track of installed packages, being up to date, |
2954 | etc:</p> | | 2964 | etc:</p> |
2955 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2965 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2956 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgin/README.html" target="_top"><code class="filename">pkgtools/pkgin</code></a>: A package | | 2966 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgin/README.html" target="_top"><code class="filename">pkgtools/pkgin</code></a>: A package |
2957 | update tool similar to apt(1). Download, install, and upgrade | | 2967 | update tool similar to apt(1). Download, install, and upgrade |
2958 | binary packages easily.</p></li> | | 2968 | binary packages easily.</p></li> |
2959 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_chk/README.html" target="_top"><code class="filename">pkgtools/pkg_chk</code></a>: Reports on | | 2969 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_chk/README.html" target="_top"><code class="filename">pkgtools/pkg_chk</code></a>: Reports on |
2960 | packages whose installed versions do not match the latest pkgsrc | | 2970 | packages whose installed versions do not match the latest pkgsrc |
2961 | entries.</p></li> | | 2971 | entries.</p></li> |
2962 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdep/README.html" target="_top"><code class="filename">pkgtools/pkgdep</code></a>: Makes | | 2972 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdep/README.html" target="_top"><code class="filename">pkgtools/pkgdep</code></a>: Makes |
2963 | dependency graphs of packages, to aid in choosing a strategy for | | 2973 | dependency graphs of packages, to aid in choosing a strategy for |
2964 | updating.</p></li> | | 2974 | updating.</p></li> |
2965 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdepgraph/README.html" target="_top"><code class="filename">pkgtools/pkgdepgraph</code></a>: Makes | | 2975 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdepgraph/README.html" target="_top"><code class="filename">pkgtools/pkgdepgraph</code></a>: Makes |
2966 | graphs from the output of <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdep/README.html" target="_top"><code class="filename">pkgtools/pkgdep</code></a> (uses graphviz).</p></li> | | 2976 | graphs from the output of <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdep/README.html" target="_top"><code class="filename">pkgtools/pkgdep</code></a> (uses graphviz).</p></li> |
2967 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>: The | | 2977 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>: The |
2968 | pkglint(1) program checks a pkgsrc entry for errors.</p></li> | | 2978 | pkglint(1) program checks a pkgsrc entry for errors.</p></li> |
2969 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/lintpkgsrc/README.html" target="_top"><code class="filename">pkgtools/lintpkgsrc</code></a>: The lintpkgsrc(1) program | | 2979 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/lintpkgsrc/README.html" target="_top"><code class="filename">pkgtools/lintpkgsrc</code></a>: The lintpkgsrc(1) program |
2970 | does various checks on the complete pkgsrc system.</p></li> | | 2980 | does various checks on the complete pkgsrc system.</p></li> |
2971 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgsurvey/README.html" target="_top"><code class="filename">pkgtools/pkgsurvey</code></a>: Report what | | 2981 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgsurvey/README.html" target="_top"><code class="filename">pkgtools/pkgsurvey</code></a>: Report what |
2972 | packages you have installed.</p></li> | | 2982 | packages you have installed.</p></li> |
2973 | </ul></div> | | 2983 | </ul></div> |
2974 | <p>Utilities for people maintaining or creating individual packages:</p> | | 2984 | <p>Utilities for people maintaining or creating individual packages:</p> |
2975 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2985 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2976 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a>: Automate | | 2986 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a>: Automate |
2977 | making and maintaining patches for a package (includes pkgdiff, | | 2987 | making and maintaining patches for a package (includes pkgdiff, |
2978 | pkgvi, mkpatches, etc.).</p></li> | | 2988 | pkgvi, mkpatches, etc.).</p></li> |
2979 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/url2pkg/README.html" target="_top"><code class="filename">pkgtools/url2pkg</code></a>: Aids in | | 2989 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/url2pkg/README.html" target="_top"><code class="filename">pkgtools/url2pkg</code></a>: Aids in |
2980 | converting to pkgsrc.</p></li> | | 2990 | converting to pkgsrc.</p></li> |
2981 | </ul></div> | | 2991 | </ul></div> |
2982 | <p>Utilities for people maintaining pkgsrc (or: more obscure pkg | | 2992 | <p>Utilities for people maintaining pkgsrc (or: more obscure pkg |
2983 | utilities)</p> | | 2993 | utilities)</p> |
2984 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2994 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2985 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_comp/README.html" target="_top"><code class="filename">pkgtools/pkg_comp</code></a>: Build | | 2995 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_comp/README.html" target="_top"><code class="filename">pkgtools/pkg_comp</code></a>: Build |
2986 | packages in a chrooted area.</p></li> | | 2996 | packages in a chrooted area.</p></li> |
2987 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/libkver/README.html" target="_top"><code class="filename">pkgtools/libkver</code></a>: Spoof | | 2997 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/libkver/README.html" target="_top"><code class="filename">pkgtools/libkver</code></a>: Spoof |
2988 | kernel version for chrooted cross builds.</p></li> | | 2998 | kernel version for chrooted cross builds.</p></li> |
2989 | </ul></div> | | 2999 | </ul></div> |
2990 | </div> | | 3000 | </div> |
2991 | <div class="sect1"> | | 3001 | <div class="sect1"> |
2992 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3002 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2993 | <a name="non-root-pkgsrc"></a>9.3. How to use pkgsrc as non-root</h2></div></div></div> | | 3003 | <a name="non-root-pkgsrc"></a>9.4. How to use pkgsrc as non-root</h2></div></div></div> |
2994 | <p>If you want to use pkgsrc as non-root user, you can set some | | 3004 | <p>If you want to use pkgsrc as non-root user, you can set some |
2995 | variables to make pkgsrc work under these conditions. At the very least, | | 3005 | variables to make pkgsrc work under these conditions. At the very least, |
2996 | you need to set <code class="varname">UNPRIVILEGED</code> to <span class="quote">“<span class="quote">yes</span>”</span>; this | | 3006 | you need to set <code class="varname">UNPRIVILEGED</code> to <span class="quote">“<span class="quote">yes</span>”</span>; this |
2997 | will turn on unprivileged mode and set multiple related variables to allow | | 3007 | will turn on unprivileged mode and set multiple related variables to allow |
2998 | installation of packages as non-root.</p> | | 3008 | installation of packages as non-root.</p> |
2999 | <p>In case the defaults are not enough, you may want to tune some other | | 3009 | <p>In case the defaults are not enough, you may want to tune some other |
3000 | variables used. For example, if the automatic user/group detection leads | | 3010 | variables used. For example, if the automatic user/group detection leads |
3001 | to incorrect values (or not the ones you would like to use), you can change | | 3011 | to incorrect values (or not the ones you would like to use), you can change |
3002 | them by setting <code class="varname">UNPRIVILEGED_USER</code> and | | 3012 | them by setting <code class="varname">UNPRIVILEGED_USER</code> and |
3003 | <code class="varname">UNPRIVILEGED_GROUP</code> respectively.</p> | | 3013 | <code class="varname">UNPRIVILEGED_GROUP</code> respectively.</p> |
3004 | <p>As regards bootstrapping, please note that the | | 3014 | <p>As regards bootstrapping, please note that the |
3005 | <span class="command"><strong>bootstrap</strong></span> script will ease non-root configuration when | | 3015 | <span class="command"><strong>bootstrap</strong></span> script will ease non-root configuration when |
3006 | given the <span class="quote">“<span class="quote">--ignore-user-check</span>”</span> flag, as it will choose and | | 3016 | given the <span class="quote">“<span class="quote">--ignore-user-check</span>”</span> flag, as it will choose and |
3007 | use multiple default directories under <code class="filename">~/pkg</code> as the | | 3017 | use multiple default directories under <code class="filename">~/pkg</code> as the |
3008 | installation targets. These directories can be overridden by the | | 3018 | installation targets. These directories can be overridden by the |
3009 | <span class="quote">“<span class="quote">--prefix</span>”</span> flag provided by the script, as well as some others | | 3019 | <span class="quote">“<span class="quote">--prefix</span>”</span> flag provided by the script, as well as some others |
3010 | that allow finer tuning of the tree layout.</p> | | 3020 | that allow finer tuning of the tree layout.</p> |
3011 | </div> | | 3021 | </div> |
3012 | <div class="sect1"> | | 3022 | <div class="sect1"> |
3013 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3023 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3014 | <a name="resume-transfers"></a>9.4. How to resume transfers when fetching distfiles?</h2></div></div></div> | | 3024 | <a name="resume-transfers"></a>9.5. How to resume transfers when fetching distfiles?</h2></div></div></div> |
3015 | <p>By default, resuming transfers in pkgsrc is disabled, but you can | | 3025 | <p>By default, resuming transfers in pkgsrc is disabled, but you can |
3016 | enable this feature by adding the option | | 3026 | enable this feature by adding the option |
3017 | <code class="varname">PKG_RESUME_TRANSFERS=YES</code> into | | 3027 | <code class="varname">PKG_RESUME_TRANSFERS=YES</code> into |
3018 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. If, during a fetch step, an incomplete | | 3028 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. If, during a fetch step, an incomplete |
3019 | distfile is found, pkgsrc will try to resume it.</p> | | 3029 | distfile is found, pkgsrc will try to resume it.</p> |
3020 | <p>You can also | | 3030 | <p>You can also |
3021 | use a different program than the platform default program by changing the | | 3031 | use a different program than the platform default program by changing the |
3022 | <code class="varname">FETCH_USING</code> variable. You can specify the program by | | 3032 | <code class="varname">FETCH_USING</code> variable. You can specify the program by |
3023 | using of ftp, fetch, wget or curl. Alternatively, fetching can be disabled | | 3033 | using of ftp, fetch, wget or curl. Alternatively, fetching can be disabled |
3024 | by using the value manual. A value of custom disables the system defaults | | 3034 | by using the value manual. A value of custom disables the system defaults |
3025 | and dependency tracking for the fetch program. In that case you have to | | 3035 | and dependency tracking for the fetch program. In that case you have to |
3026 | provide <code class="varname">FETCH_CMD</code>, <code class="varname">FETCH_BEFORE_ARGS</code>, | | 3036 | provide <code class="varname">FETCH_CMD</code>, <code class="varname">FETCH_BEFORE_ARGS</code>, |
3027 | <code class="varname">FETCH_RESUME_ARGS</code>, <code class="varname">FETCH_OUTPUT_ARGS</code>, | | 3037 | <code class="varname">FETCH_RESUME_ARGS</code>, <code class="varname">FETCH_OUTPUT_ARGS</code>, |
3028 | <code class="varname">FETCH_AFTER_ARGS</code>.</p> | | 3038 | <code class="varname">FETCH_AFTER_ARGS</code>.</p> |
3029 | <p>For example, if you want to use | | 3039 | <p>For example, if you want to use |
3030 | <code class="filename">wget</code> to download, you'll have to use something | | 3040 | <code class="filename">wget</code> to download, you'll have to use something |
3031 | like:</p> | | 3041 | like:</p> |
3032 | <pre class="programlisting"> | | 3042 | <pre class="programlisting"> |
3033 | FETCH_USING= wget | | 3043 | FETCH_USING= wget |
3034 | </pre> | | 3044 | </pre> |
3035 | </div> | | 3045 | </div> |
3036 | <div class="sect1"> | | 3046 | <div class="sect1"> |
3037 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3047 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3038 | <a name="x.org-from-pkgsrc"></a>9.5. How can I install/use modular X.org from pkgsrc?</h2></div></div></div> | | 3048 | <a name="x.org-from-pkgsrc"></a>9.6. How can I install/use modular X.org from pkgsrc?</h2></div></div></div> |
3039 | <p>If you want to use modular X.org from pkgsrc instead of your system's own X11 | | 3049 | <p>If you want to use modular X.org from pkgsrc instead of your system's own X11 |
3040 | (<code class="filename">/usr/X11R6</code>, <code class="filename">/usr/openwin</code>, ...) | | 3050 | (<code class="filename">/usr/X11R6</code>, <code class="filename">/usr/openwin</code>, ...) |
3041 | you will have to add the following line into | | 3051 | you will have to add the following line into |
3042 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>:</p> | | 3052 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>:</p> |
3043 | <pre class="programlisting"> | | 3053 | <pre class="programlisting"> |
3044 | X11_TYPE=modular | | 3054 | X11_TYPE=modular |
3045 | </pre> | | 3055 | </pre> |
3046 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 3056 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
3047 | <h3 class="title">Note</h3> | | 3057 | <h3 class="title">Note</h3> |
3048 | <p>The DragonFly operating system defaults to using modular X.org from pkgsrc. | | 3058 | <p>The DragonFly operating system defaults to using modular X.org from pkgsrc. |
3049 | </p> | | 3059 | </p> |
3050 | </div> | | 3060 | </div> |
3051 | </div> | | 3061 | </div> |
3052 | <div class="sect1"> | | 3062 | <div class="sect1"> |
3053 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3063 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3054 | <a name="fetch-behind-firewall"></a>9.6. How to fetch files from behind a firewall</h2></div></div></div> | | 3064 | <a name="fetch-behind-firewall"></a>9.7. How to fetch files from behind a firewall</h2></div></div></div> |
3055 | <p>If you are sitting behind a firewall which does not allow direct | | 3065 | <p>If you are sitting behind a firewall which does not allow direct |
3056 | connections to Internet hosts (i.e. non-NAT), you may specify the | | 3066 | connections to Internet hosts (i.e. non-NAT), you may specify the |
3057 | relevant proxy hosts. This is done using an environment variable in the | | 3067 | relevant proxy hosts. This is done using an environment variable in the |
3058 | form of a URL, e.g. in Amdahl, the machine | | 3068 | form of a URL, e.g. in Amdahl, the machine |
3059 | <span class="quote">“<span class="quote">orpheus.amdahl.com</span>”</span> is one of the firewalls, and it uses | | 3069 | <span class="quote">“<span class="quote">orpheus.amdahl.com</span>”</span> is one of the firewalls, and it uses |
3060 | port 80 as the proxy port number. So the proxy environment variables | | 3070 | port 80 as the proxy port number. So the proxy environment variables |
3061 | are:</p> | | 3071 | are:</p> |
3062 | <pre class="programlisting"> | | 3072 | <pre class="programlisting"> |
3063 | ftp_proxy=ftp://orpheus.amdahl.com:80/ | | 3073 | ftp_proxy=ftp://orpheus.amdahl.com:80/ |
3064 | http_proxy=http://orpheus.amdahl.com:80/ | | 3074 | http_proxy=http://orpheus.amdahl.com:80/ |
3065 | </pre> | | 3075 | </pre> |
3066 | </div> | | 3076 | </div> |
3067 | <div class="sect1"> | | 3077 | <div class="sect1"> |
3068 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3078 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3069 | <a name="fetch-https"></a>9.7. How to fetch files from HTTPS sites</h2></div></div></div> | | 3079 | <a name="fetch-https"></a>9.8. How to fetch files from HTTPS sites</h2></div></div></div> |
3070 | <p>Some fetch tools are not prepared to support HTTPS by default | | 3080 | <p>Some fetch tools are not prepared to support HTTPS by default |
3071 | (for example, the one in NetBSD 6.0), or the one installed by the | | 3081 | (for example, the one in NetBSD 6.0), or the one installed by the |
3072 | pkgsrc bootstrap (to avoid an openssl dependency that low in the | | 3082 | pkgsrc bootstrap (to avoid an openssl dependency that low in the |
3073 | dependency graph).</p> | | 3083 | dependency graph).</p> |
3074 | <p>Usually you won't notice, because distribution files are | | 3084 | <p>Usually you won't notice, because distribution files are |
3075 | mirrored weekly to <span class="quote">“<span class="quote">ftp.NetBSD.org</span>”</span>, but that might not | | 3085 | mirrored weekly to <span class="quote">“<span class="quote">ftp.NetBSD.org</span>”</span>, but that might not |
3076 | be often enough if you are following pkgsrc-current. In that case, set | | 3086 | be often enough if you are following pkgsrc-current. In that case, set |
3077 | <code class="varname">FETCH_USING</code> in your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file to | | 3087 | <code class="varname">FETCH_USING</code> in your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file to |
3078 | <span class="quote">“<span class="quote">curl</span>”</span> or <span class="quote">“<span class="quote">wget</span>”</span>, which are both compiled | | 3088 | <span class="quote">“<span class="quote">curl</span>”</span> or <span class="quote">“<span class="quote">wget</span>”</span>, which are both compiled |
3079 | with HTTPS support by default. Of course, these tools need to be | | 3089 | with HTTPS support by default. Of course, these tools need to be |
3080 | installed before you can use them this way.</p> | | 3090 | installed before you can use them this way.</p> |
3081 | </div> | | 3091 | </div> |
3082 | <div class="sect1"> | | 3092 | <div class="sect1"> |
3083 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3093 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3084 | <a name="passive-ftp"></a>9.8. How do I tell <span class="command"><strong>make fetch</strong></span> to do passive FTP?</h2></div></div></div> | | 3094 | <a name="passive-ftp"></a>9.9. How do I tell <span class="command"><strong>make fetch</strong></span> to do passive FTP?</h2></div></div></div> |
3085 | <p>This depends on which utility is used to retrieve distfiles. From | | 3095 | <p>This depends on which utility is used to retrieve distfiles. From |
3086 | <code class="filename">bsd.pkg.mk</code>, <code class="varname">FETCH_CMD</code> is assigned | | 3096 | <code class="filename">bsd.pkg.mk</code>, <code class="varname">FETCH_CMD</code> is assigned |
3087 | the first available command from the following list:</p> | | 3097 | the first available command from the following list:</p> |
3088 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 3098 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
3089 | <li class="listitem"><p><code class="filename">${LOCALBASE}/bin/ftp</code></p></li> | | 3099 | <li class="listitem"><p><code class="filename">${LOCALBASE}/bin/ftp</code></p></li> |
3090 | <li class="listitem"><p><code class="filename">/usr/bin/ftp</code></p></li> | | 3100 | <li class="listitem"><p><code class="filename">/usr/bin/ftp</code></p></li> |
3091 | </ul></div> | | 3101 | </ul></div> |
3092 | <p>On a default NetBSD installation, this will be | | 3102 | <p>On a default NetBSD installation, this will be |
3093 | <code class="filename">/usr/bin/ftp</code>, which automatically tries passive | | 3103 | <code class="filename">/usr/bin/ftp</code>, which automatically tries passive |
3094 | connections first, and falls back to active connections if the server | | 3104 | connections first, and falls back to active connections if the server |
3095 | refuses to do passive. For the other tools, add the following to your | | 3105 | refuses to do passive. For the other tools, add the following to your |
3096 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file: | | 3106 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file: |
3097 | <code class="varname">PASSIVE_FETCH=1</code>.</p> | | 3107 | <code class="varname">PASSIVE_FETCH=1</code>.</p> |
3098 | <p>Having that option present will prevent | | 3108 | <p>Having that option present will prevent |
3099 | <code class="filename">/usr/bin/ftp</code> from falling back to active | | 3109 | <code class="filename">/usr/bin/ftp</code> from falling back to active |
3100 | transfers.</p> | | 3110 | transfers.</p> |
3101 | </div> | | 3111 | </div> |
3102 | <div class="sect1"> | | 3112 | <div class="sect1"> |
3103 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3113 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3104 | <a name="fetching-all-distfiles"></a>9.9. How to fetch all distfiles at once</h2></div></div></div> | | 3114 | <a name="fetching-all-distfiles"></a>9.10. How to fetch all distfiles at once</h2></div></div></div> |
3105 | <p>You would like to download all the distfiles in a single batch | | 3115 | <p>You would like to download all the distfiles in a single batch |
3106 | from work or university, where you can't run a <span class="command"><strong>make | | 3116 | from work or university, where you can't run a <span class="command"><strong>make |
3107 | fetch</strong></span>. There is an archive of distfiles on <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/" target="_top">ftp.NetBSD.org</a>, | | 3117 | fetch</strong></span>. There is an archive of distfiles on <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/" target="_top">ftp.NetBSD.org</a>, |
3108 | but downloading the entire directory may not be appropriate.</p> | | 3118 | but downloading the entire directory may not be appropriate.</p> |
3109 | <p>The answer here is to do a <span class="command"><strong>make fetch-list</strong></span> in | | 3119 | <p>The answer here is to do a <span class="command"><strong>make fetch-list</strong></span> in |
3110 | <code class="filename">/usr/pkgsrc</code> or one of its subdirectories, carry the | | 3120 | <code class="filename">/usr/pkgsrc</code> or one of its subdirectories, carry the |
3111 | resulting list to your machine at work/school and use it there. If you | | 3121 | resulting list to your machine at work/school and use it there. If you |
3112 | don't have a NetBSD-compatible <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?ftp+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">ftp</span>(1)</span></a> (like tnftp) at work, don't | | 3122 | don't have a NetBSD-compatible <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?ftp+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">ftp</span>(1)</span></a> (like tnftp) at work, don't |
3113 | forget to set <code class="varname">FETCH_CMD</code> to something that fetches a | | 3123 | forget to set <code class="varname">FETCH_CMD</code> to something that fetches a |
3114 | URL:</p> | | 3124 | URL:</p> |
3115 | <p>At home:</p> | | 3125 | <p>At home:</p> |
3116 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cd /usr/pkgsrc</code></strong> | | 3126 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cd /usr/pkgsrc</code></strong> |
3117 | <code class="prompt">%</code> <strong class="userinput"><code>make fetch-list FETCH_CMD=wget DISTDIR=/tmp/distfiles >/tmp/fetch.sh</code></strong> | | 3127 | <code class="prompt">%</code> <strong class="userinput"><code>make fetch-list FETCH_CMD=wget DISTDIR=/tmp/distfiles >/tmp/fetch.sh</code></strong> |
3118 | <code class="prompt">%</code> <strong class="userinput"><code>scp /tmp/fetch.sh work:/tmp</code></strong></pre> | | 3128 | <code class="prompt">%</code> <strong class="userinput"><code>scp /tmp/fetch.sh work:/tmp</code></strong></pre> |
3119 | <p>At work:</p> | | 3129 | <p>At work:</p> |
3120 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>sh /tmp/fetch.sh</code></strong></pre> | | 3130 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>sh /tmp/fetch.sh</code></strong></pre> |
3121 | <p>then tar up <code class="filename">/tmp/distfiles</code> and take it | | 3131 | <p>then tar up <code class="filename">/tmp/distfiles</code> and take it |
3122 | home.</p> | | 3132 | home.</p> |
3123 | <p>If you have a machine running NetBSD, and you want to get | | 3133 | <p>If you have a machine running NetBSD, and you want to get |
3124 | <span class="emphasis"><em>all</em></span> distfiles (even ones that aren't for your | | 3134 | <span class="emphasis"><em>all</em></span> distfiles (even ones that aren't for your |
3125 | machine architecture), you can do so by using the above-mentioned | | 3135 | machine architecture), you can do so by using the above-mentioned |
3126 | <span class="command"><strong>make fetch-list</strong></span> approach, or fetch the distfiles | | 3136 | <span class="command"><strong>make fetch-list</strong></span> approach, or fetch the distfiles |
3127 | directly by running:</p> | | 3137 | directly by running:</p> |
3128 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make mirror-distfiles</code></strong></pre> | | 3138 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make mirror-distfiles</code></strong></pre> |
3129 | <p>If you even decide to ignore | | 3139 | <p>If you even decide to ignore |
3130 | <code class="varname">NO_{SRC,BIN}_ON_{FTP,CDROM}</code>, then you can get everything | | 3140 | <code class="varname">NO_{SRC,BIN}_ON_{FTP,CDROM}</code>, then you can get everything |
3131 | by running:</p> | | 3141 | by running:</p> |
3132 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make fetch NO_SKIP=yes</code></strong></pre> | | 3142 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make fetch NO_SKIP=yes</code></strong></pre> |
3133 | </div> | | 3143 | </div> |
3134 | <div class="sect1"> | | 3144 | <div class="sect1"> |
3135 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3145 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3136 | <a name="tmac.andoc-missing"></a>9.10. What does <span class="quote">“<span class="quote">Don't know how to make | | 3146 | <a name="tmac.andoc-missing"></a>9.11. What does <span class="quote">“<span class="quote">Don't know how to make |
3137 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</h2></div></div></div> | | 3147 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</h2></div></div></div> |
3138 | <p>When compiling the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a> | | 3148 | <p>When compiling the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a> |
3139 | package, you get the error from make that it doesn't know how to make | | 3149 | package, you get the error from make that it doesn't know how to make |
3140 | <code class="filename">/usr/share/tmac/tmac.andoc</code>? This indicates that | | 3150 | <code class="filename">/usr/share/tmac/tmac.andoc</code>? This indicates that |
3141 | you don't have installed the <span class="quote">“<span class="quote">text</span>”</span> set (nroff, ...) from | | 3151 | you don't have installed the <span class="quote">“<span class="quote">text</span>”</span> set (nroff, ...) from |
3142 | the NetBSD base distribution on your machine. It is recommended to do | | 3152 | the NetBSD base distribution on your machine. It is recommended to do |
3143 | that to format man pages.</p> | | 3153 | that to format man pages.</p> |
3144 | <p>In the case of the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a> package, you | | 3154 | <p>In the case of the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a> package, you |
3145 | can get away with setting <code class="varname">NOMAN=YES</code> either in the | | 3155 | can get away with setting <code class="varname">NOMAN=YES</code> either in the |
3146 | environment or in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p> | | 3156 | environment or in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p> |
3147 | </div> | | 3157 | </div> |
3148 | <div class="sect1"> | | 3158 | <div class="sect1"> |
3149 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3159 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3150 | <a name="bsd.own.mk-missing"></a>9.11. What does <span class="quote">“<span class="quote">Could not find bsd.own.mk</span>”</span> mean?</h2></div></div></div> | | 3160 | <a name="bsd.own.mk-missing"></a>9.12. What does <span class="quote">“<span class="quote">Could not find bsd.own.mk</span>”</span> mean?</h2></div></div></div> |
3151 | <p>You didn't install the compiler set, <code class="filename">comp.tgz</code>, | | 3161 | <p>You didn't install the compiler set, <code class="filename">comp.tgz</code>, |
3152 | when you installed your NetBSD machine. Please get and install it, by | | 3162 | when you installed your NetBSD machine. Please get and install it, by |
3153 | extracting it in <code class="filename">/</code>:</p> | | 3163 | extracting it in <code class="filename">/</code>:</p> |
3154 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>cd /</code></strong> | | 3164 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>cd /</code></strong> |
3155 | <code class="prompt">#</code> <strong class="userinput"><code>tar --unlink -zxvpf .../comp.tgz</code></strong></pre> | | 3165 | <code class="prompt">#</code> <strong class="userinput"><code>tar --unlink -zxvpf .../comp.tgz</code></strong></pre> |
3156 | <p><code class="filename">comp.tgz</code> is part of every NetBSD release. Get | | 3166 | <p><code class="filename">comp.tgz</code> is part of every NetBSD release. Get |
3157 | the one that corresponds to your release (determine via <span class="command"><strong>uname | | 3167 | the one that corresponds to your release (determine via <span class="command"><strong>uname |
3158 | -r</strong></span>).</p> | | 3168 | -r</strong></span>).</p> |
3159 | </div> | | 3169 | </div> |
3160 | <div class="sect1"> | | 3170 | <div class="sect1"> |
3161 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3171 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3162 | <a name="using-sudo-with-pkgsrc"></a>9.12. Using 'sudo' with pkgsrc</h2></div></div></div> | | 3172 | <a name="using-sudo-with-pkgsrc"></a>9.13. Using 'sudo' with pkgsrc</h2></div></div></div> |
3163 | <p>When installing packages as non-root user and using the just-in-time | | 3173 | <p>When installing packages as non-root user and using the just-in-time |
3164 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?su+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">su</span>(1)</span></a> feature of pkgsrc, it can become annoying to type in the root | | 3174 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?su+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">su</span>(1)</span></a> feature of pkgsrc, it can become annoying to type in the root |
3165 | password for each required package installed. To avoid this, the sudo | | 3175 | password for each required package installed. To avoid this, the sudo |
3166 | package can be used, which does password caching over a limited time. To | | 3176 | package can be used, which does password caching over a limited time. To |
3167 | use it, install sudo (either as binary package or from | | 3177 | use it, install sudo (either as binary package or from |
3168 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/security/sudo/README.html" target="_top"><code class="filename">security/sudo</code></a>) and then put the | | 3178 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/security/sudo/README.html" target="_top"><code class="filename">security/sudo</code></a>) and then put the |
3169 | following into your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>, somewhere | | 3179 | following into your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>, somewhere |
3170 | <span class="emphasis"><em>after</em></span> the definition of the | | 3180 | <span class="emphasis"><em>after</em></span> the definition of the |
3171 | <code class="varname">LOCALBASE</code> variable:</p> | | 3181 | <code class="varname">LOCALBASE</code> variable:</p> |
3172 | <pre class="programlisting"> | | 3182 | <pre class="programlisting"> |
3173 | .if exists(${LOCALBASE}/bin/sudo) | | 3183 | .if exists(${LOCALBASE}/bin/sudo) |
3174 | SU_CMD= ${LOCALBASE}/bin/sudo /bin/sh -c | | 3184 | SU_CMD= ${LOCALBASE}/bin/sudo /bin/sh -c |
3175 | .endif | | 3185 | .endif |
3176 | </pre> | | 3186 | </pre> |
3177 | </div> | | 3187 | </div> |
3178 | <div class="sect1"> | | 3188 | <div class="sect1"> |
3179 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3189 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3180 | <a name="faq.conf"></a>9.13. How do I change the location of configuration files?</h2></div></div></div> | | 3190 | <a name="faq.conf"></a>9.14. How do I change the location of configuration files?</h2></div></div></div> |
3181 | <p>As the system administrator, you can choose where configuration files | | 3191 | <p>As the system administrator, you can choose where configuration files |
3182 | are installed. The default settings make all these files go into | | 3192 | are installed. The default settings make all these files go into |
3183 | <code class="filename">${PREFIX}/etc</code> or some of its subdirectories; this may | | 3193 | <code class="filename">${PREFIX}/etc</code> or some of its subdirectories; this may |
3184 | be suboptimal depending on your expectations (e.g., a read-only, | | 3194 | be suboptimal depending on your expectations (e.g., a read-only, |
3185 | NFS-exported <code class="varname">PREFIX</code> with a need of per-machine | | 3195 | NFS-exported <code class="varname">PREFIX</code> with a need of per-machine |
3186 | configuration of the provided packages).</p> | | 3196 | configuration of the provided packages).</p> |
3187 | <p>In order to change the defaults, you can modify the | | 3197 | <p>In order to change the defaults, you can modify the |
3188 | <code class="varname">PKG_SYSCONFBASE</code> variable (in | | 3198 | <code class="varname">PKG_SYSCONFBASE</code> variable (in |
3189 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>) to point to your preferred configuration | | 3199 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>) to point to your preferred configuration |
3190 | directory; some common examples include <code class="filename">/etc</code> or | | 3200 | directory; some common examples include <code class="filename">/etc</code> or |
3191 | <code class="filename">/etc/pkg</code>.</p> | | 3201 | <code class="filename">/etc/pkg</code>.</p> |
3192 | <p>Furthermore, you can change this value on a per-package basis by | | 3202 | <p>Furthermore, you can change this value on a per-package basis by |
3193 | setting the <code class="varname">PKG_SYSCONFDIR.${PKG_SYSCONFVAR}</code> variable. | | 3203 | setting the <code class="varname">PKG_SYSCONFDIR.${PKG_SYSCONFVAR}</code> variable. |
3194 | <code class="varname">PKG_SYSCONFVAR</code>'s value usually matches the name of the | | 3204 | <code class="varname">PKG_SYSCONFVAR</code>'s value usually matches the name of the |
3195 | package you would like to modify, that is, the contents of | | 3205 | package you would like to modify, that is, the contents of |
3196 | <code class="varname">PKGBASE</code>.</p> | | 3206 | <code class="varname">PKGBASE</code>.</p> |
3197 | <p>Note that after changing these settings, you must rebuild and | | 3207 | <p>Note that after changing these settings, you must rebuild and |
3198 | reinstall any affected packages.</p> | | 3208 | reinstall any affected packages.</p> |
3199 | </div> | | 3209 | </div> |
3200 | <div class="sect1"> | | 3210 | <div class="sect1"> |
3201 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3211 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3202 | <a name="audit-packages"></a>9.14. Automated security checks</h2></div></div></div> | | 3212 | <a name="audit-packages"></a>9.15. Automated security checks</h2></div></div></div> |
3203 | <p>Please be aware that there can often be bugs in third-party software, | | 3213 | <p>Please be aware that there can often be bugs in third-party software, |
3204 | and some of these bugs can leave a machine vulnerable to exploitation by | | 3214 | and some of these bugs can leave a machine vulnerable to exploitation by |
3205 | attackers. In an effort to lessen the exposure, the NetBSD packages team | | 3215 | attackers. In an effort to lessen the exposure, the NetBSD packages team |
3206 | maintains a database of known-exploits to packages which have at one time | | 3216 | maintains a database of known-exploits to packages which have at one time |
3207 | been included in pkgsrc. The database can be downloaded automatically, and | | 3217 | been included in pkgsrc. The database can be downloaded automatically, and |
3208 | a security audit of all packages installed on a system can take place. To | | 3218 | a security audit of all packages installed on a system can take place. To |
3209 | do this, refer to the following two tools (installed as part of the | | 3219 | do this, refer to the following two tools (installed as part of the |
3210 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a> package):</p> | | 3220 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a> package):</p> |
3211 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 3221 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
3212 | <li class="listitem"> | | 3222 | <li class="listitem"> |
3213 | <p><span class="command"><strong>pkg_admin fetch-pkg-vulnerabilities</strong></span>, an easy way to | | 3223 | <p><span class="command"><strong>pkg_admin fetch-pkg-vulnerabilities</strong></span>, an easy way to |
3214 | download a list of the security vulnerabilities information. This list | | 3224 | download a list of the security vulnerabilities information. This list |
3215 | is kept up to date by the pkgsrc security team, and is distributed | | 3225 | is kept up to date by the pkgsrc security team, and is distributed |
3216 | from the NetBSD ftp server:</p> | | 3226 | from the NetBSD ftp server:</p> |
3217 | <p><a class="ulink" href="ftp://ftp.NetBSD.org/pkgsrc/distfiles/pkg-vulnerabilities" target="_top">ftp://ftp.NetBSD.org/pkgsrc/distfiles/pkg-vulnerabilities</a></p> | | 3227 | <p><a class="ulink" href="ftp://ftp.NetBSD.org/pkgsrc/distfiles/pkg-vulnerabilities" target="_top">ftp://ftp.NetBSD.org/pkgsrc/distfiles/pkg-vulnerabilities</a></p> |
3218 | </li> | | 3228 | </li> |
3219 | <li class="listitem"><p><span class="command"><strong>pkg_admin audit</strong></span>, an easy way to audit the | | 3229 | <li class="listitem"><p><span class="command"><strong>pkg_admin audit</strong></span>, an easy way to audit the |
3220 | current machine, checking each known vulnerability. If a | | 3230 | current machine, checking each known vulnerability. If a |
3221 | vulnerable package is installed, it will be shown by output to stdout, | | 3231 | vulnerable package is installed, it will be shown by output to stdout, |
3222 | including a description of the type of vulnerability, and a URL | | 3232 | including a description of the type of vulnerability, and a URL |
3223 | containing more information.</p></li> | | 3233 | containing more information.</p></li> |
3224 | </ol></div> | | 3234 | </ol></div> |
3225 | <p>Use of these tools is strongly recommended! After | | 3235 | <p>Use of these tools is strongly recommended! After |
3226 | <span class="quote">“<span class="quote">pkg_install</span>”</span> is installed, please read | | 3236 | <span class="quote">“<span class="quote">pkg_install</span>”</span> is installed, please read |
3227 | the package's message, which you can get by running <strong class="userinput"><code>pkg_info -D | | 3237 | the package's message, which you can get by running <strong class="userinput"><code>pkg_info -D |
3228 | pkg_install</code></strong>.</p> | | 3238 | pkg_install</code></strong>.</p> |
3229 | <p>If this package is installed, pkgsrc builds will use it to | | 3239 | <p>If this package is installed, pkgsrc builds will use it to |
3230 | perform a security check before building any package. See <a class="xref" href="#variables-affecting-build" title="5.2. Variables affecting the build process">Section 5.2, “Variables affecting the build process”</a> for ways to control this | | 3240 | perform a security check before building any package. See <a class="xref" href="#variables-affecting-build" title="5.2. Variables affecting the build process">Section 5.2, “Variables affecting the build process”</a> for ways to control this |
3231 | check.</p> | | 3241 | check.</p> |
3232 | </div> | | 3242 | </div> |
3233 | <div class="sect1"> | | 3243 | <div class="sect1"> |
3234 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3244 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3235 | <a name="ufaq-cflags"></a>9.15. Why do some packages ignore my <code class="varname">CFLAGS</code>?</h2></div></div></div> | | 3245 | <a name="ufaq-cflags"></a>9.16. Why do some packages ignore my <code class="varname">CFLAGS</code>?</h2></div></div></div> |
3236 | <p>When you add your own preferences to the | | 3246 | <p>When you add your own preferences to the |
3237 | <code class="varname">CFLAGS</code> variable in your | | 3247 | <code class="varname">CFLAGS</code> variable in your |
3238 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>, these flags are passed in | | 3248 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>, these flags are passed in |
3239 | environment variables to the <code class="filename">./configure</code> | | 3249 | environment variables to the <code class="filename">./configure</code> |
3240 | scripts and to <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a>. Some package authors ignore the | | 3250 | scripts and to <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a>. Some package authors ignore the |
3241 | <code class="varname">CFLAGS</code> from the environment variable by | | 3251 | <code class="varname">CFLAGS</code> from the environment variable by |
3242 | overriding them in the <code class="filename">Makefile</code>s of their | | 3252 | overriding them in the <code class="filename">Makefile</code>s of their |
3243 | package.</p> | | 3253 | package.</p> |
3244 | <p>Currently there is no solution to this problem. If you | | 3254 | <p>Currently there is no solution to this problem. If you |
3245 | really need the package to use your <code class="varname">CFLAGS</code> | | 3255 | really need the package to use your <code class="varname">CFLAGS</code> |
3246 | you should run <span class="command"><strong>make patch</strong></span> in the package | | 3256 | you should run <span class="command"><strong>make patch</strong></span> in the package |
3247 | directory and then inspect any <code class="filename">Makefile</code> and | | 3257 | directory and then inspect any <code class="filename">Makefile</code> and |
3248 | <code class="filename">Makefile.in</code> for whether they define | | 3258 | <code class="filename">Makefile.in</code> for whether they define |
3249 | <code class="varname">CFLAGS</code> explicitly. Usually you can remove | | 3259 | <code class="varname">CFLAGS</code> explicitly. Usually you can remove |
3250 | these lines. But be aware that some <span class="quote">“<span class="quote">smart</span>”</span> | | 3260 | these lines. But be aware that some <span class="quote">“<span class="quote">smart</span>”</span> |
3251 | programmers write so bad code that it only works for the | | 3261 | programmers write so bad code that it only works for the |
3252 | specific combination of <code class="varname">CFLAGS</code> they have | | 3262 | specific combination of <code class="varname">CFLAGS</code> they have |
3253 | chosen.</p> | | 3263 | chosen.</p> |
3254 | </div> | | 3264 | </div> |
3255 | <div class="sect1"> | | 3265 | <div class="sect1"> |
3256 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3266 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3257 | <a name="ufaq-fail"></a>9.16. A package does not build. What shall I do?</h2></div></div></div> | | 3267 | <a name="ufaq-fail"></a>9.17. A package does not build. What shall I do?</h2></div></div></div> |
3258 | <div class="procedure"><ol class="procedure" type="1"> | | 3268 | <div class="procedure"><ol class="procedure" type="1"> |
3259 | <li class="step"><p>Make sure that your copy of pkgsrc is consistent. A | | 3269 | <li class="step"><p>Make sure that your copy of pkgsrc is consistent. A |
3260 | case that occurs often is that people only update pkgsrc in | | 3270 | case that occurs often is that people only update pkgsrc in |
3261 | parts, because of performance reasons. Since pkgsrc is one large | | 3271 | parts, because of performance reasons. Since pkgsrc is one large |
3262 | system, not a collection of many small systems, there are | | 3272 | system, not a collection of many small systems, there are |
3263 | sometimes changes that only work when the whole pkgsrc tree is | | 3273 | sometimes changes that only work when the whole pkgsrc tree is |
3264 | updated.</p></li> | | 3274 | updated.</p></li> |
3265 | <li class="step"><p>Make sure that you don't have any CVS conflicts. | | 3275 | <li class="step"><p>Make sure that you don't have any CVS conflicts. |
3266 | Search for <span class="quote">“<span class="quote"><<<<<<</span>”</span> or | | 3276 | Search for <span class="quote">“<span class="quote"><<<<<<</span>”</span> or |
3267 | <span class="quote">“<span class="quote">>>>>>></span>”</span> in all your pkgsrc | | 3277 | <span class="quote">“<span class="quote">>>>>>></span>”</span> in all your pkgsrc |
3268 | files.</p></li> | | 3278 | files.</p></li> |
3269 | <li class="step"><p>Make sure that you don't have old copies of the packages | | 3279 | <li class="step"><p>Make sure that you don't have old copies of the packages |
3270 | extracted. Run <span class="command"><strong>make clean clean-depends</strong></span> to | | 3280 | extracted. Run <span class="command"><strong>make clean clean-depends</strong></span> to |
3271 | verify this.</p></li> | | 3281 | verify this.</p></li> |
3272 | <li class="step"><p>If the problem still exists, write a mail to the | | 3282 | <li class="step"><p>If the problem still exists, write a mail to the |
3273 | <code class="literal">pkgsrc-users</code> mailing list.</p></li> | | 3283 | <code class="literal">pkgsrc-users</code> mailing list.</p></li> |
3274 | </ol></div> | | 3284 | </ol></div> |
3275 | </div> | | 3285 | </div> |
3276 | <div class="sect1"> | | 3286 | <div class="sect1"> |
3277 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3287 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3278 | <a name="faq.rcs-conflicts"></a>9.17. What does <span class="quote">“<span class="quote">Makefile appears to contain unresolved cvs/rcs/??? merge conflicts</span>”</span> mean?</h2></div></div></div> | | 3288 | <a name="faq.rcs-conflicts"></a>9.18. What does <span class="quote">“<span class="quote">Makefile appears to contain unresolved cvs/rcs/??? merge conflicts</span>”</span> mean?</h2></div></div></div> |
3279 | <p>You have modified a file from pkgsrc, and someone else has | | 3289 | <p>You have modified a file from pkgsrc, and someone else has |
3280 | modified that same file afterwards in the CVS repository. Both changes | | 3290 | modified that same file afterwards in the CVS repository. Both changes |
3281 | are in the same region of the file, so when you updated pkgsrc, the | | 3291 | are in the same region of the file, so when you updated pkgsrc, the |
3282 | <code class="literal">cvs</code> command marked the conflicting changes in the | | 3292 | <code class="literal">cvs</code> command marked the conflicting changes in the |
3283 | file. Because of these markers, the file is no longer a valid | | 3293 | file. Because of these markers, the file is no longer a valid |
3284 | <code class="filename">Makefile</code>.</p> | | 3294 | <code class="filename">Makefile</code>.</p> |
3285 | <p>Have a look at that file, and if you don't need your local changes | | 3295 | <p>Have a look at that file, and if you don't need your local changes |
3286 | anymore, you can remove that file and run <span class="command"><strong>cvs -q update | | 3296 | anymore, you can remove that file and run <span class="command"><strong>cvs -q update |
3287 | -dP</strong></span> in that directory to download the current version.</p> | | 3297 | -dP</strong></span> in that directory to download the current version.</p> |
3288 | </div> | | 3298 | </div> |
3289 | </div> | | 3299 | </div> |
3290 | </div> | | 3300 | </div> |
3291 | <div class="part"> | | 3301 | <div class="part"> |
3292 | <div class="titlepage"><div><div><h1 class="title"> | | 3302 | <div class="titlepage"><div><div><h1 class="title"> |
3293 | <a name="developers-guide"></a>Part II. The pkgsrc developer's guide</h1></div></div></div> | | 3303 | <a name="developers-guide"></a>Part II. The pkgsrc developer's guide</h1></div></div></div> |
3294 | <div class="partintro"> | | 3304 | <div class="partintro"> |
3295 | <div></div> | | 3305 | <div></div> |
3296 | <p>This part of the book deals with creating and | | 3306 | <p>This part of the book deals with creating and |
3297 | modifying packages. It starts with a <span class="quote">“<span class="quote">HOWTO</span>”</span>-like | | 3307 | modifying packages. It starts with a <span class="quote">“<span class="quote">HOWTO</span>”</span>-like |
3298 | guide on creating a new package. The remaining chapters are more | | 3308 | guide on creating a new package. The remaining chapters are more |
3299 | like a reference manual for pkgsrc.</p> | | 3309 | like a reference manual for pkgsrc.</p> |
3300 | <div class="toc"> | | 3310 | <div class="toc"> |
3301 | <p><b>Table of Contents</b></p> | | 3311 | <p><b>Table of Contents</b></p> |
3302 | <dl> | | 3312 | <dl> |
3303 | <dt><span class="chapter"><a href="#creating">10. Creating a new pkgsrc package from scratch</a></span></dt> | | 3313 | <dt><span class="chapter"><a href="#creating">10. Creating a new pkgsrc package from scratch</a></span></dt> |
3304 | <dd><dl> | | 3314 | <dd><dl> |
3305 | <dt><span class="sect1"><a href="#creating.common">10.1. Common types of packages</a></span></dt> | | 3315 | <dt><span class="sect1"><a href="#creating.common">10.1. Common types of packages</a></span></dt> |
3306 | <dd><dl> | | 3316 | <dd><dl> |
3307 | <dt><span class="sect2"><a href="#creating.perl-module">10.1.1. Perl modules</a></span></dt> | | 3317 | <dt><span class="sect2"><a href="#creating.perl-module">10.1.1. Perl modules</a></span></dt> |
3308 | <dt><span class="sect2"><a href="#creating.kde-app">10.1.2. KDE3 applications</a></span></dt> | | 3318 | <dt><span class="sect2"><a href="#creating.kde-app">10.1.2. KDE3 applications</a></span></dt> |
3309 | <dt><span class="sect2"><a href="#creating.python-module">10.1.3. Python modules and programs</a></span></dt> | | 3319 | <dt><span class="sect2"><a href="#creating.python-module">10.1.3. Python modules and programs</a></span></dt> |
3310 | </dl></dd> | | 3320 | </dl></dd> |
3311 | <dt><span class="sect1"><a href="#creating.examples">10.2. Examples</a></span></dt> | | 3321 | <dt><span class="sect1"><a href="#creating.examples">10.2. Examples</a></span></dt> |
3312 | <dd><dl><dt><span class="sect2"><a href="#creating.nvu">10.2.1. How the www/nvu package came into pkgsrc</a></span></dt></dl></dd> | | 3322 | <dd><dl><dt><span class="sect2"><a href="#creating.nvu">10.2.1. How the www/nvu package came into pkgsrc</a></span></dt></dl></dd> |
3313 | </dl></dd> | | 3323 | </dl></dd> |
3314 | <dt><span class="chapter"><a href="#components">11. Package components - files, directories and contents</a></span></dt> | | 3324 | <dt><span class="chapter"><a href="#components">11. Package components - files, directories and contents</a></span></dt> |
3315 | <dd><dl> | | 3325 | <dd><dl> |
3316 | <dt><span class="sect1"><a href="#components.Makefile">11.1. <code class="filename">Makefile</code></a></span></dt> | | 3326 | <dt><span class="sect1"><a href="#components.Makefile">11.1. <code class="filename">Makefile</code></a></span></dt> |
3317 | <dt><span class="sect1"><a href="#components.distinfo">11.2. <code class="filename">distinfo</code></a></span></dt> | | 3327 | <dt><span class="sect1"><a href="#components.distinfo">11.2. <code class="filename">distinfo</code></a></span></dt> |
3318 | <dt><span class="sect1"><a href="#components.patches">11.3. patches/*</a></span></dt> | | 3328 | <dt><span class="sect1"><a href="#components.patches">11.3. patches/*</a></span></dt> |
3319 | <dd><dl> | | 3329 | <dd><dl> |
3320 | <dt><span class="sect2"><a href="#components.patch.structure">11.3.1. Structure of a single patch file</a></span></dt> | | 3330 | <dt><span class="sect2"><a href="#components.patch.structure">11.3.1. Structure of a single patch file</a></span></dt> |
3321 | <dt><span class="sect2"><a href="#components.patches.caveats">11.3.2. Creating patch files</a></span></dt> | | 3331 | <dt><span class="sect2"><a href="#components.patches.caveats">11.3.2. Creating patch files</a></span></dt> |
3322 | <dt><span class="sect2"><a href="#components.patches.sources">11.3.3. Sources where the patch files come from</a></span></dt> | | 3332 | <dt><span class="sect2"><a href="#components.patches.sources">11.3.3. Sources where the patch files come from</a></span></dt> |
3323 | <dt><span class="sect2"><a href="#components.patches.guidelines">11.3.4. Patching guidelines</a></span></dt> | | 3333 | <dt><span class="sect2"><a href="#components.patches.guidelines">11.3.4. Patching guidelines</a></span></dt> |
3324 | <dt><span class="sect2"><a href="#components.patches.feedback">11.3.5. Feedback to the author</a></span></dt> | | 3334 | <dt><span class="sect2"><a href="#components.patches.feedback">11.3.5. Feedback to the author</a></span></dt> |
3325 | </dl></dd> | | 3335 | </dl></dd> |
3326 | <dt><span class="sect1"><a href="#other-mandatory-files">11.4. Other mandatory files</a></span></dt> | | 3336 | <dt><span class="sect1"><a href="#other-mandatory-files">11.4. Other mandatory files</a></span></dt> |
3327 | <dt><span class="sect1"><a href="#components.optional">11.5. Optional files</a></span></dt> | | 3337 | <dt><span class="sect1"><a href="#components.optional">11.5. Optional files</a></span></dt> |
3328 | <dd><dl> | | 3338 | <dd><dl> |
3329 | <dt><span class="sect2"><a href="#components.optional.bin">11.5.1. Files affecting the binary package</a></span></dt> | | 3339 | <dt><span class="sect2"><a href="#components.optional.bin">11.5.1. Files affecting the binary package</a></span></dt> |
3330 | <dt><span class="sect2"><a href="#components.optional.build">11.5.2. Files affecting the build process</a></span></dt> | | 3340 | <dt><span class="sect2"><a href="#components.optional.build">11.5.2. Files affecting the build process</a></span></dt> |
3331 | <dt><span class="sect2"><a href="#components.optional.none">11.5.3. Files affecting nothing at all</a></span></dt> | | 3341 | <dt><span class="sect2"><a href="#components.optional.none">11.5.3. Files affecting nothing at all</a></span></dt> |
3332 | </dl></dd> | | 3342 | </dl></dd> |
3333 | <dt><span class="sect1"><a href="#work-dir">11.6. <code class="filename">work*</code></a></span></dt> | | 3343 | <dt><span class="sect1"><a href="#work-dir">11.6. <code class="filename">work*</code></a></span></dt> |
3334 | <dt><span class="sect1"><a href="#files-dir">11.7. <code class="filename">files/*</code></a></span></dt> | | 3344 | <dt><span class="sect1"><a href="#files-dir">11.7. <code class="filename">files/*</code></a></span></dt> |
3335 | </dl></dd> | | 3345 | </dl></dd> |
3336 | <dt><span class="chapter"><a href="#makefile">12. Programming in <code class="filename">Makefile</code>s</a></span></dt> | | 3346 | <dt><span class="chapter"><a href="#makefile">12. Programming in <code class="filename">Makefile</code>s</a></span></dt> |
3337 | <dd><dl> | | 3347 | <dd><dl> |
3338 | <dt><span class="sect1"><a href="#makefile.style">12.1. Caveats</a></span></dt> | | 3348 | <dt><span class="sect1"><a href="#makefile.style">12.1. Caveats</a></span></dt> |
3339 | <dt><span class="sect1"><a href="#makefile.variables">12.2. <code class="filename">Makefile</code> variables</a></span></dt> | | 3349 | <dt><span class="sect1"><a href="#makefile.variables">12.2. <code class="filename">Makefile</code> variables</a></span></dt> |
3340 | <dd><dl><dt><span class="sect2"><a href="#makefile.variables.names">12.2.1. Naming conventions</a></span></dt></dl></dd> | | 3350 | <dd><dl><dt><span class="sect2"><a href="#makefile.variables.names">12.2.1. Naming conventions</a></span></dt></dl></dd> |
3341 | <dt><span class="sect1"><a href="#makefile.code">12.3. Code snippets</a></span></dt> | | 3351 | <dt><span class="sect1"><a href="#makefile.code">12.3. Code snippets</a></span></dt> |
3342 | <dd><dl> | | 3352 | <dd><dl> |
3343 | <dt><span class="sect2"><a href="#adding-to-list">12.3.1. Adding things to a list</a></span></dt> | | 3353 | <dt><span class="sect2"><a href="#adding-to-list">12.3.1. Adding things to a list</a></span></dt> |
3344 | <dt><span class="sect2"><a href="#converting-internal-to-external">12.3.2. Converting an internal list into an external list</a></span></dt> | | 3354 | <dt><span class="sect2"><a href="#converting-internal-to-external">12.3.2. Converting an internal list into an external list</a></span></dt> |
3345 | <dt><span class="sect2"><a href="#passing-variable-to-shell">12.3.3. Passing variables to a shell command</a></span></dt> | | 3355 | <dt><span class="sect2"><a href="#passing-variable-to-shell">12.3.3. Passing variables to a shell command</a></span></dt> |
3346 | <dt><span class="sect2"><a href="#quoting-guideline">12.3.4. Quoting guideline</a></span></dt> | | 3356 | <dt><span class="sect2"><a href="#quoting-guideline">12.3.4. Quoting guideline</a></span></dt> |
3347 | <dt><span class="sect2"><a href="#bsd-make-bug-workaround">12.3.5. Workaround for a bug in BSD Make</a></span></dt> | | 3357 | <dt><span class="sect2"><a href="#bsd-make-bug-workaround">12.3.5. Workaround for a bug in BSD Make</a></span></dt> |
3348 | </dl></dd> | | 3358 | </dl></dd> |
3349 | </dl></dd> | | 3359 | </dl></dd> |
3350 | <dt><span class="chapter"><a href="#plist">13. PLIST issues</a></span></dt> | | 3360 | <dt><span class="chapter"><a href="#plist">13. PLIST issues</a></span></dt> |
3351 | <dd><dl> | | 3361 | <dd><dl> |
3352 | <dt><span class="sect1"><a href="#rcs-id">13.1. RCS ID</a></span></dt> | | 3362 | <dt><span class="sect1"><a href="#rcs-id">13.1. RCS ID</a></span></dt> |
3353 | <dt><span class="sect1"><a href="#automatic-plist-generation">13.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> | | 3363 | <dt><span class="sect1"><a href="#automatic-plist-generation">13.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> |
3354 | <dt><span class="sect1"><a href="#print-PLIST">13.3. Tweaking output of <span class="command"><strong>make print-PLIST</strong></span></a></span></dt> | | 3364 | <dt><span class="sect1"><a href="#print-PLIST">13.3. Tweaking output of <span class="command"><strong>make print-PLIST</strong></span></a></span></dt> |
3355 | <dt><span class="sect1"><a href="#plist.misc">13.4. Variable substitution in PLIST</a></span></dt> | | 3365 | <dt><span class="sect1"><a href="#plist.misc">13.4. Variable substitution in PLIST</a></span></dt> |
3356 | <dt><span class="sect1"><a href="#manpage-compression">13.5. Man page compression</a></span></dt> | | 3366 | <dt><span class="sect1"><a href="#manpage-compression">13.5. Man page compression</a></span></dt> |
3357 | <dt><span class="sect1"><a href="#using-PLIST_SRC">13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code></a></span></dt> | | 3367 | <dt><span class="sect1"><a href="#using-PLIST_SRC">13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code></a></span></dt> |
3358 | <dt><span class="sect1"><a href="#platform-specific-plist">13.7. Platform-specific and differing PLISTs</a></span></dt> | | 3368 | <dt><span class="sect1"><a href="#platform-specific-plist">13.7. Platform-specific and differing PLISTs</a></span></dt> |
3359 | <dt><span class="sect1"><a href="#faq.common-dirs">13.8. Sharing directories between packages</a></span></dt> | | 3369 | <dt><span class="sect1"><a href="#faq.common-dirs">13.8. Sharing directories between packages</a></span></dt> |
3360 | </dl></dd> | | 3370 | </dl></dd> |
3361 | <dt><span class="chapter"><a href="#buildlink">14. Buildlink methodology</a></span></dt> | | 3371 | <dt><span class="chapter"><a href="#buildlink">14. Buildlink methodology</a></span></dt> |
3362 | <dd><dl> | | 3372 | <dd><dl> |
3363 | <dt><span class="sect1"><a href="#converting-to-buildlink3">14.1. Converting packages to use buildlink3</a></span></dt> | | 3373 | <dt><span class="sect1"><a href="#converting-to-buildlink3">14.1. Converting packages to use buildlink3</a></span></dt> |
3364 | <dt><span class="sect1"><a href="#creating-buildlink3.mk">14.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> | | 3374 | <dt><span class="sect1"><a href="#creating-buildlink3.mk">14.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> |
3365 | <dd><dl> | | 3375 | <dd><dl> |
3366 | <dt><span class="sect2"><a href="#anatomy-of-bl3">14.2.1. Anatomy of a buildlink3.mk file</a></span></dt> | | 3376 | <dt><span class="sect2"><a href="#anatomy-of-bl3">14.2.1. Anatomy of a buildlink3.mk file</a></span></dt> |
3367 | <dt><span class="sect2"><a href="#updating-buildlink-depends">14.2.2. Updating | | 3377 | <dt><span class="sect2"><a href="#updating-buildlink-depends">14.2.2. Updating |
3368 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 3378 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
3369 | and | | 3379 | and |
3370 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 3380 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
3371 | in <code class="filename">buildlink3.mk</code> files</a></span></dt> | | 3381 | in <code class="filename">buildlink3.mk</code> files</a></span></dt> |
3372 | </dl></dd> | | 3382 | </dl></dd> |
3373 | <dt><span class="sect1"><a href="#writing-builtin.mk">14.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> | | 3383 | <dt><span class="sect1"><a href="#writing-builtin.mk">14.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> |
3374 | <dd><dl> | | 3384 | <dd><dl> |
3375 | <dt><span class="sect2"><a href="#anatomy-of-builtin.mk">14.3.1. Anatomy of a <code class="filename">builtin.mk</code> file</a></span></dt> | | 3385 | <dt><span class="sect2"><a href="#anatomy-of-builtin.mk">14.3.1. Anatomy of a <code class="filename">builtin.mk</code> file</a></span></dt> |
3376 | <dt><span class="sect2"><a href="#native-or-pkgsrc-preference">14.3.2. Global preferences for native or pkgsrc software</a></span></dt> | | 3386 | <dt><span class="sect2"><a href="#native-or-pkgsrc-preference">14.3.2. Global preferences for native or pkgsrc software</a></span></dt> |
3377 | </dl></dd> | | 3387 | </dl></dd> |
3378 | </dl></dd> | | 3388 | </dl></dd> |
3379 | <dt><span class="chapter"><a href="#pkginstall">15. The pkginstall framework</a></span></dt> | | 3389 | <dt><span class="chapter"><a href="#pkginstall">15. The pkginstall framework</a></span></dt> |
3380 | <dd><dl> | | 3390 | <dd><dl> |
3381 | <dt><span class="sect1"><a href="#files-and-dirs-outside-prefix">15.1. Files and directories outside the installation prefix</a></span></dt> | | 3391 | <dt><span class="sect1"><a href="#files-and-dirs-outside-prefix">15.1. Files and directories outside the installation prefix</a></span></dt> |
3382 | <dd><dl> | | 3392 | <dd><dl> |
3383 | <dt><span class="sect2"><a href="#dirs-outside-prefix">15.1.1. Directory manipulation</a></span></dt> | | 3393 | <dt><span class="sect2"><a href="#dirs-outside-prefix">15.1.1. Directory manipulation</a></span></dt> |
3384 | <dt><span class="sect2"><a href="#files-outside-prefix">15.1.2. File manipulation</a></span></dt> | | 3394 | <dt><span class="sect2"><a href="#files-outside-prefix">15.1.2. File manipulation</a></span></dt> |
3385 | </dl></dd> | | 3395 | </dl></dd> |
3386 | <dt><span class="sect1"><a href="#conf-files">15.2. Configuration files</a></span></dt> | | 3396 | <dt><span class="sect1"><a href="#conf-files">15.2. Configuration files</a></span></dt> |
3387 | <dd><dl> | | 3397 | <dd><dl> |
3388 | <dt><span class="sect2"><a href="#conf-files-sysconfdir">15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</a></span></dt> | | 3398 | <dt><span class="sect2"><a href="#conf-files-sysconfdir">15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</a></span></dt> |
3389 | <dt><span class="sect2"><a href="#conf-files-configure">15.2.2. Telling the software where configuration files are</a></span></dt> | | 3399 | <dt><span class="sect2"><a href="#conf-files-configure">15.2.2. Telling the software where configuration files are</a></span></dt> |
3390 | <dt><span class="sect2"><a href="#conf-files-patching">15.2.3. Patching installations</a></span></dt> | | 3400 | <dt><span class="sect2"><a href="#conf-files-patching">15.2.3. Patching installations</a></span></dt> |
3391 | <dt><span class="sect2"><a href="#conf-files-disable">15.2.4. Disabling handling of configuration files</a></span></dt> | | 3401 | <dt><span class="sect2"><a href="#conf-files-disable">15.2.4. Disabling handling of configuration files</a></span></dt> |
3392 | </dl></dd> | | 3402 | </dl></dd> |
3393 | <dt><span class="sect1"><a href="#rcd-scripts">15.3. System startup scripts</a></span></dt> | | 3403 | <dt><span class="sect1"><a href="#rcd-scripts">15.3. System startup scripts</a></span></dt> |
3394 | <dd><dl><dt><span class="sect2"><a href="#rcd-scripts-disable">15.3.1. Disabling handling of system startup scripts</a></span></dt></dl></dd> | | 3404 | <dd><dl><dt><span class="sect2"><a href="#rcd-scripts-disable">15.3.1. Disabling handling of system startup scripts</a></span></dt></dl></dd> |
3395 | <dt><span class="sect1"><a href="#users-and-groups">15.4. System users and groups</a></span></dt> | | 3405 | <dt><span class="sect1"><a href="#users-and-groups">15.4. System users and groups</a></span></dt> |
3396 | <dt><span class="sect1"><a href="#shells">15.5. System shells</a></span></dt> | | 3406 | <dt><span class="sect1"><a href="#shells">15.5. System shells</a></span></dt> |
3397 | <dd><dl><dt><span class="sect2"><a href="#shells-disable">15.5.1. Disabling shell registration</a></span></dt></dl></dd> | | 3407 | <dd><dl><dt><span class="sect2"><a href="#shells-disable">15.5.1. Disabling shell registration</a></span></dt></dl></dd> |
3398 | <dt><span class="sect1"><a href="#fonts">15.6. Fonts</a></span></dt> | | 3408 | <dt><span class="sect1"><a href="#fonts">15.6. Fonts</a></span></dt> |
3399 | <dd><dl><dt><span class="sect2"><a href="#fonts-disable">15.6.1. Disabling automatic update of the fonts databases</a></span></dt></dl></dd> | | 3409 | <dd><dl><dt><span class="sect2"><a href="#fonts-disable">15.6.1. Disabling automatic update of the fonts databases</a></span></dt></dl></dd> |
3400 | </dl></dd> | | 3410 | </dl></dd> |
3401 | <dt><span class="chapter"><a href="#options">16. Options handling</a></span></dt> | | 3411 | <dt><span class="chapter"><a href="#options">16. Options handling</a></span></dt> |
3402 | <dd><dl> | | 3412 | <dd><dl> |
3403 | <dt><span class="sect1"><a href="#global-default-options">16.1. Global default options</a></span></dt> | | 3413 | <dt><span class="sect1"><a href="#global-default-options">16.1. Global default options</a></span></dt> |
3404 | <dt><span class="sect1"><a href="#converting-to-options">16.2. Converting packages to use <code class="filename">bsd.options.mk</code></a></span></dt> | | 3414 | <dt><span class="sect1"><a href="#converting-to-options">16.2. Converting packages to use <code class="filename">bsd.options.mk</code></a></span></dt> |
3405 | <dt><span class="sect1"><a href="#option-names">16.3. Option Names</a></span></dt> | | 3415 | <dt><span class="sect1"><a href="#option-names">16.3. Option Names</a></span></dt> |
3406 | <dt><span class="sect1"><a href="#option-build">16.4. Determining the options of dependencies</a></span></dt> | | 3416 | <dt><span class="sect1"><a href="#option-build">16.4. Determining the options of dependencies</a></span></dt> |
3407 | </dl></dd> | | 3417 | </dl></dd> |
3408 | <dt><span class="chapter"><a href="#build">17. The build process</a></span></dt> | | 3418 | <dt><span class="chapter"><a href="#build">17. The build process</a></span></dt> |
3409 | <dd><dl> | | 3419 | <dd><dl> |
3410 | <dt><span class="sect1"><a href="#build.intro">17.1. Introduction</a></span></dt> | | 3420 | <dt><span class="sect1"><a href="#build.intro">17.1. Introduction</a></span></dt> |
3411 | <dt><span class="sect1"><a href="#build.prefix">17.2. Program location</a></span></dt> | | 3421 | <dt><span class="sect1"><a href="#build.prefix">17.2. Program location</a></span></dt> |
3412 | <dt><span class="sect1"><a href="#build.builddirs">17.3. Directories used during the build process</a></span></dt> | | 3422 | <dt><span class="sect1"><a href="#build.builddirs">17.3. Directories used during the build process</a></span></dt> |
3413 | <dt><span class="sect1"><a href="#build.running">17.4. Running a phase</a></span></dt> | | 3423 | <dt><span class="sect1"><a href="#build.running">17.4. Running a phase</a></span></dt> |
3414 | <dt><span class="sect1"><a href="#build.fetch">17.5. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> | | 3424 | <dt><span class="sect1"><a href="#build.fetch">17.5. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> |
3415 | <dd><dl> | | 3425 | <dd><dl> |
3416 | <dt><span class="sect2"><a href="#build.fetch.what">17.5.1. What to fetch and where to get it from</a></span></dt> | | 3426 | <dt><span class="sect2"><a href="#build.fetch.what">17.5.1. What to fetch and where to get it from</a></span></dt> |
3417 | <dt><span class="sect2"><a href="#build.fetch.how">17.5.2. How are the files fetched?</a></span></dt> | | 3427 | <dt><span class="sect2"><a href="#build.fetch.how">17.5.2. How are the files fetched?</a></span></dt> |
3418 | </dl></dd> | | 3428 | </dl></dd> |
3419 | <dt><span class="sect1"><a href="#build.checksum">17.6. The <span class="emphasis"><em>checksum</em></span> phase</a></span></dt> | | 3429 | <dt><span class="sect1"><a href="#build.checksum">17.6. The <span class="emphasis"><em>checksum</em></span> phase</a></span></dt> |
3420 | <dt><span class="sect1"><a href="#build.extract">17.7. The <span class="emphasis"><em>extract</em></span> phase</a></span></dt> | | 3430 | <dt><span class="sect1"><a href="#build.extract">17.7. The <span class="emphasis"><em>extract</em></span> phase</a></span></dt> |
3421 | <dt><span class="sect1"><a href="#build.patch">17.8. The <span class="emphasis"><em>patch</em></span> phase</a></span></dt> | | 3431 | <dt><span class="sect1"><a href="#build.patch">17.8. The <span class="emphasis"><em>patch</em></span> phase</a></span></dt> |
3422 | <dt><span class="sect1"><a href="#build.tools">17.9. The <span class="emphasis"><em>tools</em></span> phase</a></span></dt> | | 3432 | <dt><span class="sect1"><a href="#build.tools">17.9. The <span class="emphasis"><em>tools</em></span> phase</a></span></dt> |
3423 | <dt><span class="sect1"><a href="#build.wrapper">17.10. The <span class="emphasis"><em>wrapper</em></span> phase</a></span></dt> | | 3433 | <dt><span class="sect1"><a href="#build.wrapper">17.10. The <span class="emphasis"><em>wrapper</em></span> phase</a></span></dt> |
3424 | <dt><span class="sect1"><a href="#build.configure">17.11. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> | | 3434 | <dt><span class="sect1"><a href="#build.configure">17.11. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> |
3425 | <dt><span class="sect1"><a href="#build.build">17.12. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> | | 3435 | <dt><span class="sect1"><a href="#build.build">17.12. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> |
3426 | <dt><span class="sect1"><a href="#build.test">17.13. The <span class="emphasis"><em>test</em></span> phase</a></span></dt> | | 3436 | <dt><span class="sect1"><a href="#build.test">17.13. The <span class="emphasis"><em>test</em></span> phase</a></span></dt> |
3427 | <dt><span class="sect1"><a href="#build.install">17.14. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> | | 3437 | <dt><span class="sect1"><a href="#build.install">17.14. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> |
3428 | <dt><span class="sect1"><a href="#build.package">17.15. The <span class="emphasis"><em>package</em></span> phase</a></span></dt> | | 3438 | <dt><span class="sect1"><a href="#build.package">17.15. The <span class="emphasis"><em>package</em></span> phase</a></span></dt> |
3429 | <dt><span class="sect1"><a href="#build.clean">17.16. Cleaning up</a></span></dt> | | 3439 | <dt><span class="sect1"><a href="#build.clean">17.16. Cleaning up</a></span></dt> |
3430 | <dt><span class="sect1"><a href="#build.helpful-targets">17.17. Other helpful targets</a></span></dt> | | 3440 | <dt><span class="sect1"><a href="#build.helpful-targets">17.17. Other helpful targets</a></span></dt> |
3431 | </dl></dd> | | 3441 | </dl></dd> |
3432 | <dt><span class="chapter"><a href="#tools">18. Tools needed for building or running</a></span></dt> | | 3442 | <dt><span class="chapter"><a href="#tools">18. Tools needed for building or running</a></span></dt> |
3433 | <dd><dl> | | 3443 | <dd><dl> |
3434 | <dt><span class="sect1"><a href="#pkgsrc-tools">18.1. Tools for pkgsrc builds</a></span></dt> | | 3444 | <dt><span class="sect1"><a href="#pkgsrc-tools">18.1. Tools for pkgsrc builds</a></span></dt> |
3435 | <dt><span class="sect1"><a href="#package-tools">18.2. Tools needed by packages</a></span></dt> | | 3445 | <dt><span class="sect1"><a href="#package-tools">18.2. Tools needed by packages</a></span></dt> |
3436 | <dt><span class="sect1"><a href="#platform-tools">18.3. Tools provided by platforms</a></span></dt> | | 3446 | <dt><span class="sect1"><a href="#platform-tools">18.3. Tools provided by platforms</a></span></dt> |
3437 | <dt><span class="sect1"><a href="#tools.questions">18.4. Questions regarding the tools</a></span></dt> | | 3447 | <dt><span class="sect1"><a href="#tools.questions">18.4. Questions regarding the tools</a></span></dt> |
3438 | </dl></dd> | | 3448 | </dl></dd> |
3439 | <dt><span class="chapter"><a href="#fixes">19. Making your package work</a></span></dt> | | 3449 | <dt><span class="chapter"><a href="#fixes">19. Making your package work</a></span></dt> |
3440 | <dd><dl> | | 3450 | <dd><dl> |
3441 | <dt><span class="sect1"><a href="#general-operation">19.1. General operation</a></span></dt> | | 3451 | <dt><span class="sect1"><a href="#general-operation">19.1. General operation</a></span></dt> |
3442 | <dd><dl> | | 3452 | <dd><dl> |
3443 | <dt><span class="sect2"><a href="#portability-of-packages">19.1.1. Portability of packages</a></span></dt> | | 3453 | <dt><span class="sect2"><a href="#portability-of-packages">19.1.1. Portability of packages</a></span></dt> |
3444 | <dt><span class="sect2"><a href="#pulling-vars-from-etc-mk.conf">19.1.2. How to pull in user-settable variables from <code class="filename">mk.conf</code></a></span></dt> | | 3454 | <dt><span class="sect2"><a href="#pulling-vars-from-etc-mk.conf">19.1.2. How to pull in user-settable variables from <code class="filename">mk.conf</code></a></span></dt> |
3445 | <dt><span class="sect2"><a href="#user-interaction">19.1.3. User interaction</a></span></dt> | | 3455 | <dt><span class="sect2"><a href="#user-interaction">19.1.3. User interaction</a></span></dt> |
3446 | <dt><span class="sect2"><a href="#handling-licenses">19.1.4. Handling licenses</a></span></dt> | | 3456 | <dt><span class="sect2"><a href="#handling-licenses">19.1.4. Handling licenses</a></span></dt> |
3447 | <dt><span class="sect2"><a href="#restricted-packages">19.1.5. Restricted packages</a></span></dt> | | 3457 | <dt><span class="sect2"><a href="#restricted-packages">19.1.5. Restricted packages</a></span></dt> |
3448 | <dt><span class="sect2"><a href="#dependencies">19.1.6. Handling dependencies</a></span></dt> | | 3458 | <dt><span class="sect2"><a href="#dependencies">19.1.6. Handling dependencies</a></span></dt> |
3449 | <dt><span class="sect2"><a href="#conflicts">19.1.7. Handling conflicts with other packages</a></span></dt> | | 3459 | <dt><span class="sect2"><a href="#conflicts">19.1.7. Handling conflicts with other packages</a></span></dt> |
3450 | <dt><span class="sect2"><a href="#not-building-packages">19.1.8. Packages that cannot or should not be built</a></span></dt> | | 3460 | <dt><span class="sect2"><a href="#not-building-packages">19.1.8. Packages that cannot or should not be built</a></span></dt> |
3451 | <dt><span class="sect2"><a href="#undeletable-packages">19.1.9. Packages which should not be deleted, once installed</a></span></dt> | | 3461 | <dt><span class="sect2"><a href="#undeletable-packages">19.1.9. Packages which should not be deleted, once installed</a></span></dt> |
3452 | <dt><span class="sect2"><a href="#security-handling">19.1.10. Handling packages with security problems</a></span></dt> | | 3462 | <dt><span class="sect2"><a href="#security-handling">19.1.10. Handling packages with security problems</a></span></dt> |
3453 | <dt><span class="sect2"><a href="#bumping-pkgrevision">19.1.11. How to handle incrementing versions when fixing an existing package</a></span></dt> | | 3463 | <dt><span class="sect2"><a href="#bumping-pkgrevision">19.1.11. How to handle incrementing versions when fixing an existing package</a></span></dt> |
3454 | <dt><span class="sect2"><a href="#fixes.subst">19.1.12. Substituting variable text in the package files (the SUBST framework)</a></span></dt> | | 3464 | <dt><span class="sect2"><a href="#fixes.subst">19.1.12. Substituting variable text in the package files (the SUBST framework)</a></span></dt> |
3455 | </dl></dd> | | 3465 | </dl></dd> |
3456 | <dt><span class="sect1"><a href="#fixes.fetch">19.2. Fixing problems in the <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> | | 3466 | <dt><span class="sect1"><a href="#fixes.fetch">19.2. Fixing problems in the <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> |
3457 | <dd><dl> | | 3467 | <dd><dl> |
3458 | <dt><span class="sect2"><a href="#no-plain-download">19.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> | | 3468 | <dt><span class="sect2"><a href="#no-plain-download">19.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> |
3459 | <dt><span class="sect2"><a href="#modified-distfiles-same-name">19.2.2. How to handle modified distfiles with the 'old' name</a></span></dt> | | 3469 | <dt><span class="sect2"><a href="#modified-distfiles-same-name">19.2.2. How to handle modified distfiles with the 'old' name</a></span></dt> |
3460 | </dl></dd> | | 3470 | </dl></dd> |
3461 | <dt><span class="sect1"><a href="#fixes.configure">19.3. Fixing problems in the <span class="emphasis"><em>configure</em></span> phase</a></span></dt> | | 3471 | <dt><span class="sect1"><a href="#fixes.configure">19.3. Fixing problems in the <span class="emphasis"><em>configure</em></span> phase</a></span></dt> |
3462 | <dd><dl> | | 3472 | <dd><dl> |
3463 | <dt><span class="sect2"><a href="#fixes.libtool">19.3.1. Shared libraries - libtool</a></span></dt> | | 3473 | <dt><span class="sect2"><a href="#fixes.libtool">19.3.1. Shared libraries - libtool</a></span></dt> |
3464 | <dt><span class="sect2"><a href="#using-libtool">19.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> | | 3474 | <dt><span class="sect2"><a href="#using-libtool">19.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> |
3465 | <dt><span class="sect2"><a href="#autoconf-automake">19.3.3. GNU Autoconf/Automake</a></span></dt> | | 3475 | <dt><span class="sect2"><a href="#autoconf-automake">19.3.3. GNU Autoconf/Automake</a></span></dt> |
3466 | </dl></dd> | | 3476 | </dl></dd> |
3467 | <dt><span class="sect1"><a href="#programming-languages">19.4. Programming languages</a></span></dt> | | 3477 | <dt><span class="sect1"><a href="#programming-languages">19.4. Programming languages</a></span></dt> |
3468 | <dd><dl> | | 3478 | <dd><dl> |
3469 | <dt><span class="sect2"><a href="#basic-programming-languages">19.4.1. C, C++, and Fortran</a></span></dt> | | 3479 | <dt><span class="sect2"><a href="#basic-programming-languages">19.4.1. C, C++, and Fortran</a></span></dt> |
3470 | <dt><span class="sect2"><a href="#java-programming-language">19.4.2. Java</a></span></dt> | | 3480 | <dt><span class="sect2"><a href="#java-programming-language">19.4.2. Java</a></span></dt> |
3471 | <dt><span class="sect2"><a href="#perl-scripts">19.4.3. Packages containing perl scripts</a></span></dt> | | 3481 | <dt><span class="sect2"><a href="#perl-scripts">19.4.3. Packages containing perl scripts</a></span></dt> |
3472 | <dt><span class="sect2"><a href="#shell-scripts">19.4.4. Packages containing shell scripts</a></span></dt> | | 3482 | <dt><span class="sect2"><a href="#shell-scripts">19.4.4. Packages containing shell scripts</a></span></dt> |
3473 | <dt><span class="sect2"><a href="#other-programming-languages">19.4.5. Other programming languages</a></span></dt> | | 3483 | <dt><span class="sect2"><a href="#other-programming-languages">19.4.5. Other programming languages</a></span></dt> |
3474 | </dl></dd> | | 3484 | </dl></dd> |
3475 | <dt><span class="sect1"><a href="#fixes.build">19.5. Fixing problems in the <span class="emphasis"><em>build</em></span> phase</a></span></dt> | | 3485 | <dt><span class="sect1"><a href="#fixes.build">19.5. Fixing problems in the <span class="emphasis"><em>build</em></span> phase</a></span></dt> |
3476 | <dd><dl> | | 3486 | <dd><dl> |
3477 | <dt><span class="sect2"><a href="#fixes.build.cpp">19.5.1. Compiling C and C++ code conditionally</a></span></dt> | | 3487 | <dt><span class="sect2"><a href="#fixes.build.cpp">19.5.1. Compiling C and C++ code conditionally</a></span></dt> |
3478 | <dt><span class="sect2"><a href="#compiler-bugs">19.5.2. How to handle compiler bugs</a></span></dt> | | 3488 | <dt><span class="sect2"><a href="#compiler-bugs">19.5.2. How to handle compiler bugs</a></span></dt> |
3479 | <dt><span class="sect2"><a href="#undefined-reference">19.5.3. Undefined reference to <span class="quote">“<span class="quote">...</span>”</span></a></span></dt> | | 3489 | <dt><span class="sect2"><a href="#undefined-reference">19.5.3. Undefined reference to <span class="quote">“<span class="quote">...</span>”</span></a></span></dt> |
3480 | <dt><span class="sect2"><a href="#out-of-memory">19.5.4. Running out of memory</a></span></dt> | | 3490 | <dt><span class="sect2"><a href="#out-of-memory">19.5.4. Running out of memory</a></span></dt> |
3481 | </dl></dd> | | 3491 | </dl></dd> |
3482 | <dt><span class="sect1"><a href="#fixes.install">19.6. Fixing problems in the <span class="emphasis"><em>install</em></span> phase</a></span></dt> | | 3492 | <dt><span class="sect1"><a href="#fixes.install">19.6. Fixing problems in the <span class="emphasis"><em>install</em></span> phase</a></span></dt> |
3483 | <dd><dl> | | 3493 | <dd><dl> |
3484 | <dt><span class="sect2"><a href="#install-scripts">19.6.1. Creating needed directories</a></span></dt> | | 3494 | <dt><span class="sect2"><a href="#install-scripts">19.6.1. Creating needed directories</a></span></dt> |
3485 | <dt><span class="sect2"><a href="#where-to-install-documentation">19.6.2. Where to install documentation</a></span></dt> | | 3495 | <dt><span class="sect2"><a href="#where-to-install-documentation">19.6.2. Where to install documentation</a></span></dt> |
3486 | <dt><span class="sect2"><a href="#installing-score-files">19.6.3. Installing highscore files</a></span></dt> | | 3496 | <dt><span class="sect2"><a href="#installing-score-files">19.6.3. Installing highscore files</a></span></dt> |
3487 | <dt><span class="sect2"><a href="#destdir-support">19.6.4. Adding DESTDIR support to packages</a></span></dt> | | 3497 | <dt><span class="sect2"><a href="#destdir-support">19.6.4. Adding DESTDIR support to packages</a></span></dt> |
3488 | <dt><span class="sect2"><a href="#hardcoded-paths">19.6.5. Packages with hardcoded paths to other interpreters</a></span></dt> | | 3498 | <dt><span class="sect2"><a href="#hardcoded-paths">19.6.5. Packages with hardcoded paths to other interpreters</a></span></dt> |
3489 | <dt><span class="sect2"><a href="#perl-modules">19.6.6. Packages installing perl modules</a></span></dt> | | 3499 | <dt><span class="sect2"><a href="#perl-modules">19.6.6. Packages installing perl modules</a></span></dt> |
3490 | <dt><span class="sect2"><a href="#faq.info-files">19.6.7. Packages installing info files</a></span></dt> | | 3500 | <dt><span class="sect2"><a href="#faq.info-files">19.6.7. Packages installing info files</a></span></dt> |
3491 | <dt><span class="sect2"><a href="#manpages">19.6.8. Packages installing man pages</a></span></dt> | | 3501 | <dt><span class="sect2"><a href="#manpages">19.6.8. Packages installing man pages</a></span></dt> |
3492 | <dt><span class="sect2"><a href="#gconf-data-files">19.6.9. Packages installing GConf data files</a></span></dt> | | 3502 | <dt><span class="sect2"><a href="#gconf-data-files">19.6.9. Packages installing GConf data files</a></span></dt> |
3493 | <dt><span class="sect2"><a href="#scrollkeeper-data-files">19.6.10. Packages installing scrollkeeper/rarian data files</a></span></dt> | | 3503 | <dt><span class="sect2"><a href="#scrollkeeper-data-files">19.6.10. Packages installing scrollkeeper/rarian data files</a></span></dt> |
3494 | <dt><span class="sect2"><a href="#x11-fonts">19.6.11. Packages installing X11 fonts</a></span></dt> | | 3504 | <dt><span class="sect2"><a href="#x11-fonts">19.6.11. Packages installing X11 fonts</a></span></dt> |
3495 | <dt><span class="sect2"><a href="#gtk2-modules">19.6.12. Packages installing GTK2 modules</a></span></dt> | | 3505 | <dt><span class="sect2"><a href="#gtk2-modules">19.6.12. Packages installing GTK2 modules</a></span></dt> |
3496 | <dt><span class="sect2"><a href="#sgml-xml-data">19.6.13. Packages installing SGML or XML data</a></span></dt> | | 3506 | <dt><span class="sect2"><a href="#sgml-xml-data">19.6.13. Packages installing SGML or XML data</a></span></dt> |
3497 | <dt><span class="sect2"><a href="#mime-database">19.6.14. Packages installing extensions to the MIME database</a></span></dt> | | 3507 | <dt><span class="sect2"><a href="#mime-database">19.6.14. Packages installing extensions to the MIME database</a></span></dt> |
3498 | <dt><span class="sect2"><a href="#intltool">19.6.15. Packages using intltool</a></span></dt> | | 3508 | <dt><span class="sect2"><a href="#intltool">19.6.15. Packages using intltool</a></span></dt> |
3499 | <dt><span class="sect2"><a href="#startup-scripts">19.6.16. Packages installing startup scripts</a></span></dt> | | 3509 | <dt><span class="sect2"><a href="#startup-scripts">19.6.16. Packages installing startup scripts</a></span></dt> |
3500 | <dt><span class="sect2"><a href="#tex-packages">19.6.17. Packages installing TeX modules</a></span></dt> | | 3510 | <dt><span class="sect2"><a href="#tex-packages">19.6.17. Packages installing TeX modules</a></span></dt> |
3501 | <dt><span class="sect2"><a href="#emulation-packages">19.6.18. Packages supporting running binaries in | | 3511 | <dt><span class="sect2"><a href="#emulation-packages">19.6.18. Packages supporting running binaries in |
3502 | emulation</a></span></dt> | | 3512 | emulation</a></span></dt> |
3503 | <dt><span class="sect2"><a href="#hicolor-theme">19.6.19. Packages installing hicolor theme icons</a></span></dt> | | 3513 | <dt><span class="sect2"><a href="#hicolor-theme">19.6.19. Packages installing hicolor theme icons</a></span></dt> |
3504 | <dt><span class="sect2"><a href="#desktop-files">19.6.20. Packages installing desktop files</a></span></dt> | | 3514 | <dt><span class="sect2"><a href="#desktop-files">19.6.20. Packages installing desktop files</a></span></dt> |
3505 | </dl></dd> | | 3515 | </dl></dd> |
3506 | <dt><span class="sect1"><a href="#punting">19.7. Marking packages as having problems</a></span></dt> | | 3516 | <dt><span class="sect1"><a href="#punting">19.7. Marking packages as having problems</a></span></dt> |
3507 | </dl></dd> | | 3517 | </dl></dd> |
3508 | <dt><span class="chapter"><a href="#debug">20. Debugging</a></span></dt> | | 3518 | <dt><span class="chapter"><a href="#debug">20. Debugging</a></span></dt> |
3509 | <dt><span class="chapter"><a href="#submit">21. Submitting and Committing</a></span></dt> | | 3519 | <dt><span class="chapter"><a href="#submit">21. Submitting and Committing</a></span></dt> |
3510 | <dd><dl> | | 3520 | <dd><dl> |
3511 | <dt><span class="sect1"><a href="#submitting-binary-packages">21.1. Submitting binary packages</a></span></dt> | | 3521 | <dt><span class="sect1"><a href="#submitting-binary-packages">21.1. Submitting binary packages</a></span></dt> |
3512 | <dt><span class="sect1"><a href="#submitting-your-package">21.2. Submitting source packages (for non-NetBSD-developers)</a></span></dt> | | 3522 | <dt><span class="sect1"><a href="#submitting-your-package">21.2. Submitting source packages (for non-NetBSD-developers)</a></span></dt> |
3513 | <dt><span class="sect1"><a href="#general-notes-for-changes">21.3. General notes when adding, updating, or removing packages</a></span></dt> | | 3523 | <dt><span class="sect1"><a href="#general-notes-for-changes">21.3. General notes when adding, updating, or removing packages</a></span></dt> |
3514 | <dt><span class="sect1"><a href="#committing-importing">21.4. Committing: Adding a package to CVS</a></span></dt> | | 3524 | <dt><span class="sect1"><a href="#committing-importing">21.4. Committing: Adding a package to CVS</a></span></dt> |
3515 | <dt><span class="sect1"><a href="#updating-package">21.5. Updating a package to a newer version</a></span></dt> | | 3525 | <dt><span class="sect1"><a href="#updating-package">21.5. Updating a package to a newer version</a></span></dt> |
3516 | <dt><span class="sect1"><a href="#renaming-package">21.6. Renaming a package in pkgsrc</a></span></dt> | | 3526 | <dt><span class="sect1"><a href="#renaming-package">21.6. Renaming a package in pkgsrc</a></span></dt> |
3517 | <dt><span class="sect1"><a href="#moving-package">21.7. Moving a package in pkgsrc</a></span></dt> | | 3527 | <dt><span class="sect1"><a href="#moving-package">21.7. Moving a package in pkgsrc</a></span></dt> |
3518 | </dl></dd> | | 3528 | </dl></dd> |
3519 | <dt><span class="chapter"><a href="#devfaq">22. Frequently Asked Questions</a></span></dt> | | 3529 | <dt><span class="chapter"><a href="#devfaq">22. Frequently Asked Questions</a></span></dt> |
3520 | <dt><span class="chapter"><a href="#gnome">23. GNOME packaging and porting</a></span></dt> | | 3530 | <dt><span class="chapter"><a href="#gnome">23. GNOME packaging and porting</a></span></dt> |
3521 | <dd><dl> | | 3531 | <dd><dl> |
3522 | <dt><span class="sect1"><a href="#meta-packages">23.1. Meta packages</a></span></dt> | | 3532 | <dt><span class="sect1"><a href="#meta-packages">23.1. Meta packages</a></span></dt> |
3523 | <dt><span class="sect1"><a href="#new-package">23.2. Packaging a GNOME application</a></span></dt> | | 3533 | <dt><span class="sect1"><a href="#new-package">23.2. Packaging a GNOME application</a></span></dt> |
3524 | <dt><span class="sect1"><a href="#full-update">23.3. Updating GNOME to a newer version</a></span></dt> | | 3534 | <dt><span class="sect1"><a href="#full-update">23.3. Updating GNOME to a newer version</a></span></dt> |
3525 | <dt><span class="sect1"><a href="#patching">23.4. Patching guidelines</a></span></dt> | | 3535 | <dt><span class="sect1"><a href="#patching">23.4. Patching guidelines</a></span></dt> |
3526 | </dl></dd> | | 3536 | </dl></dd> |
3527 | </dl> | | 3537 | </dl> |
3528 | </div> | | 3538 | </div> |
3529 | </div> | | 3539 | </div> |
3530 | <div class="chapter"> | | 3540 | <div class="chapter"> |
3531 | <div class="titlepage"><div><div><h2 class="title"> | | 3541 | <div class="titlepage"><div><div><h2 class="title"> |
3532 | <a name="creating"></a>Chapter 10. Creating a new pkgsrc package from scratch</h2></div></div></div> | | 3542 | <a name="creating"></a>Chapter 10. Creating a new pkgsrc package from scratch</h2></div></div></div> |
3533 | <div class="toc"> | | 3543 | <div class="toc"> |
3534 | <p><b>Table of Contents</b></p> | | 3544 | <p><b>Table of Contents</b></p> |
3535 | <dl> | | 3545 | <dl> |
3536 | <dt><span class="sect1"><a href="#creating.common">10.1. Common types of packages</a></span></dt> | | 3546 | <dt><span class="sect1"><a href="#creating.common">10.1. Common types of packages</a></span></dt> |
3537 | <dd><dl> | | 3547 | <dd><dl> |
3538 | <dt><span class="sect2"><a href="#creating.perl-module">10.1.1. Perl modules</a></span></dt> | | 3548 | <dt><span class="sect2"><a href="#creating.perl-module">10.1.1. Perl modules</a></span></dt> |
3539 | <dt><span class="sect2"><a href="#creating.kde-app">10.1.2. KDE3 applications</a></span></dt> | | 3549 | <dt><span class="sect2"><a href="#creating.kde-app">10.1.2. KDE3 applications</a></span></dt> |
3540 | <dt><span class="sect2"><a href="#creating.python-module">10.1.3. Python modules and programs</a></span></dt> | | 3550 | <dt><span class="sect2"><a href="#creating.python-module">10.1.3. Python modules and programs</a></span></dt> |
3541 | </dl></dd> | | 3551 | </dl></dd> |
3542 | <dt><span class="sect1"><a href="#creating.examples">10.2. Examples</a></span></dt> | | 3552 | <dt><span class="sect1"><a href="#creating.examples">10.2. Examples</a></span></dt> |
3543 | <dd><dl><dt><span class="sect2"><a href="#creating.nvu">10.2.1. How the www/nvu package came into pkgsrc</a></span></dt></dl></dd> | | 3553 | <dd><dl><dt><span class="sect2"><a href="#creating.nvu">10.2.1. How the www/nvu package came into pkgsrc</a></span></dt></dl></dd> |
3544 | </dl> | | 3554 | </dl> |
3545 | </div> | | 3555 | </div> |
3546 | <p>When you find a package that is not yet in pkgsrc, you | | 3556 | <p>When you find a package that is not yet in pkgsrc, you |
3547 | most likely have a URL from where you can download the source | | 3557 | most likely have a URL from where you can download the source |
3548 | code. Starting with this URL, creating a package involves only a | | 3558 | code. Starting with this URL, creating a package involves only a |
3549 | few steps.</p> | | 3559 | few steps.</p> |
3550 | <div class="procedure"><ol class="procedure" type="1"> | | 3560 | <div class="procedure"><ol class="procedure" type="1"> |
3551 | <li class="step"><p>First, install the packages <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/url2pkg/README.html" target="_top"><code class="filename">pkgtools/url2pkg</code></a> and <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>.</p></li> | | 3561 | <li class="step"><p>First, install the packages <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/url2pkg/README.html" target="_top"><code class="filename">pkgtools/url2pkg</code></a> and <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>.</p></li> |
3552 | <li class="step"><p>Then, choose one of the top-level directories as the | | 3562 | <li class="step"><p>Then, choose one of the top-level directories as the |
3553 | category in which you want to place your package. You can also create a | | 3563 | category in which you want to place your package. You can also create a |
3554 | directory of your own (maybe called <code class="filename">local</code>). In that | | 3564 | directory of your own (maybe called <code class="filename">local</code>). In that |
3555 | category directory, create another directory for your package and change | | 3565 | category directory, create another directory for your package and change |
3556 | into it.</p></li> | | 3566 | into it.</p></li> |
3557 | <li class="step"><p>Run the program <span class="command"><strong>url2pkg</strong></span>, which will ask | | 3567 | <li class="step"><p>Run the program <span class="command"><strong>url2pkg</strong></span>, which will ask |
3558 | you for a URL. Enter the URL of the distribution file (in most cases a | | 3568 | you for a URL. Enter the URL of the distribution file (in most cases a |
3559 | <code class="filename">.tar.gz</code> file) and watch how the basic ingredients | | 3569 | <code class="filename">.tar.gz</code> file) and watch how the basic ingredients |
3560 | of your package are created automatically. The distribution file is | | 3570 | of your package are created automatically. The distribution file is |
3561 | extracted automatically to fill in some details in the | | 3571 | extracted automatically to fill in some details in the |
3562 | <code class="filename">Makefile</code> that would otherwise have to be done | | 3572 | <code class="filename">Makefile</code> that would otherwise have to be done |
3563 | manually.</p></li> | | 3573 | manually.</p></li> |
3564 | <li class="step"> | | 3574 | <li class="step"> |
3565 | <p>Examine the extracted files to determine the dependencies of | | 3575 | <p>Examine the extracted files to determine the dependencies of |
3566 | your package. Ideally, this is mentioned in some | | 3576 | your package. Ideally, this is mentioned in some |
3567 | <code class="filename">README</code> file, but things may differ. For each of | | 3577 | <code class="filename">README</code> file, but things may differ. For each of |
3568 | these dependencies, look where it exists in pkgsrc, and if there is a | | 3578 | these dependencies, look where it exists in pkgsrc, and if there is a |
3569 | file called <code class="filename">buildlink3.mk</code> in that directory, add a | | 3579 | file called <code class="filename">buildlink3.mk</code> in that directory, add a |
3570 | line to your package <code class="filename">Makefile</code> which includes that | | 3580 | line to your package <code class="filename">Makefile</code> which includes that |
3571 | file just before the last line. If the | | 3581 | file just before the last line. If the |
3572 | <code class="filename">buildlink3.mk</code> file does not exist, it must be | | 3582 | <code class="filename">buildlink3.mk</code> file does not exist, it must be |
3573 | created first. The <code class="filename">buildlink3.mk</code> file makes sure that the package's include files and libraries are provided.</p> | | 3583 | created first. The <code class="filename">buildlink3.mk</code> file makes sure that the package's include files and libraries are provided.</p> |
3574 | <p>If you just need binaries from a package, add a | | 3584 | <p>If you just need binaries from a package, add a |
3575 | <code class="varname">DEPENDS</code> line to the Makefile, which specifies the | | 3585 | <code class="varname">DEPENDS</code> line to the Makefile, which specifies the |
3576 | version of the dependency and where it can be found in pkgsrc. This line | | 3586 | version of the dependency and where it can be found in pkgsrc. This line |
3577 | should be placed in the third paragraph. If the dependency is only | | 3587 | should be placed in the third paragraph. If the dependency is only |
3578 | needed for building the package, but not when using it, use | | 3588 | needed for building the package, but not when using it, use |
3579 | <code class="varname">BUILD_DEPENDS</code> instead of <code class="varname">DEPENDS</code>. | | 3589 | <code class="varname">BUILD_DEPENDS</code> instead of <code class="varname">DEPENDS</code>. |
3580 | Your package may then look like this:</p> | | 3590 | Your package may then look like this:</p> |
3581 | <pre class="programlisting"> | | 3591 | <pre class="programlisting"> |
3582 | [...] | | 3592 | [...] |
3583 | | | 3593 | |
3584 | BUILD_DEPENDS+= libxslt-[0-9]*:../../textproc/libxslt | | 3594 | BUILD_DEPENDS+= libxslt-[0-9]*:../../textproc/libxslt |
3585 | DEPENDS+= screen-[0-9]*:../../misc/screen | | 3595 | DEPENDS+= screen-[0-9]*:../../misc/screen |
3586 | DEPENDS+= screen>=4.0:../../misc/screen | | 3596 | DEPENDS+= screen>=4.0:../../misc/screen |
3587 | | | 3597 | |
3588 | [...] | | 3598 | [...] |
3589 | | | 3599 | |
3590 | .include "../../<em class="replaceable"><code>category</code></em>/<em class="replaceable"><code>package</code></em>/buildlink3.mk" | | 3600 | .include "../../<em class="replaceable"><code>category</code></em>/<em class="replaceable"><code>package</code></em>/buildlink3.mk" |
3591 | .include "../../devel/glib2/buildlink3.mk" | | 3601 | .include "../../devel/glib2/buildlink3.mk" |
3592 | .include "../../mk/bsd.pkg.mk" | | 3602 | .include "../../mk/bsd.pkg.mk" |
3593 | </pre> | | 3603 | </pre> |
3594 | </li> | | 3604 | </li> |
3595 | <li class="step"><p>Run <span class="command"><strong>pkglint</strong></span> to see what things still need | | 3605 | <li class="step"><p>Run <span class="command"><strong>pkglint</strong></span> to see what things still need |
3596 | to be done to make your package a <span class="quote">“<span class="quote">good</span>”</span> one. If you don't | | 3606 | to be done to make your package a <span class="quote">“<span class="quote">good</span>”</span> one. If you don't |
3597 | know what pkglint's warnings want to tell you, try <span class="command"><strong>pkglint | | 3607 | know what pkglint's warnings want to tell you, try <span class="command"><strong>pkglint |
3598 | --explain</strong></span> or <span class="command"><strong>pkglint | | 3608 | --explain</strong></span> or <span class="command"><strong>pkglint |
3599 | -e</strong></span>, which outputs additional | | 3609 | -e</strong></span>, which outputs additional |
3600 | explanations.</p></li> | | 3610 | explanations.</p></li> |
3601 | <li class="step"><p>In many cases the package is not yet ready to build. You can | | 3611 | <li class="step"><p>In many cases the package is not yet ready to build. You can |
3602 | find instructions for the most common cases in the next section, <a class="xref" href="#creating.common" title="10.1. Common types of packages">Section 10.1, “Common types of packages”</a>. After you have followed the instructions | | 3612 | find instructions for the most common cases in the next section, <a class="xref" href="#creating.common" title="10.1. Common types of packages">Section 10.1, “Common types of packages”</a>. After you have followed the instructions |
3603 | over there, you can hopefully continue here.</p></li> | | 3613 | over there, you can hopefully continue here.</p></li> |
3604 | <li class="step"><p>Run <span class="command"><strong>bmake clean</strong></span> to clean the working | | 3614 | <li class="step"><p>Run <span class="command"><strong>bmake clean</strong></span> to clean the working |
3605 | directory from the extracted files. Besides these files, a lot of cache | | 3615 | directory from the extracted files. Besides these files, a lot of cache |
3606 | files and other system information has been saved in the working | | 3616 | files and other system information has been saved in the working |
3607 | directory, which may become wrong after you edited the | | 3617 | directory, which may become wrong after you edited the |
3608 | <code class="filename">Makefile</code>.</p></li> | | 3618 | <code class="filename">Makefile</code>.</p></li> |
3609 | <li class="step"><p>Now, run <span class="command"><strong>bmake</strong></span> to build the package. For | | 3619 | <li class="step"><p>Now, run <span class="command"><strong>bmake</strong></span> to build the package. For |
3610 | the various things that can go wrong in this phase, consult <a class="xref" href="#fixes" title="Chapter 19. Making your package work">Chapter 19, <i>Making your package work</i></a>.</p></li> | | 3620 | the various things that can go wrong in this phase, consult <a class="xref" href="#fixes" title="Chapter 19. Making your package work">Chapter 19, <i>Making your package work</i></a>.</p></li> |
3611 | <li class="step"><p>When the package builds fine, the next step is to install | | 3621 | <li class="step"><p>When the package builds fine, the next step is to install |
3612 | the package. Run <span class="command"><strong>bmake install</strong></span> and hope that | | 3622 | the package. Run <span class="command"><strong>bmake install</strong></span> and hope that |
3613 | everything works.</p></li> | | 3623 | everything works.</p></li> |
3614 | <li class="step"><p>Up to now, the file <code class="filename">PLIST</code>, which | | 3624 | <li class="step"><p>Up to now, the file <code class="filename">PLIST</code>, which |
3615 | contains a list of the files that are installed by the package, is | | 3625 | contains a list of the files that are installed by the package, is |
3616 | nearly empty. Run <span class="command"><strong>bmake print-PLIST | | 3626 | nearly empty. Run <span class="command"><strong>bmake print-PLIST |
3617 | >PLIST</strong></span> to generate a probably correct list. Check | | 3627 | >PLIST</strong></span> to generate a probably correct list. Check |
3618 | the file using your preferred text editor to see if the list of | | 3628 | the file using your preferred text editor to see if the list of |
3619 | files looks plausible.</p></li> | | 3629 | files looks plausible.</p></li> |
3620 | <li class="step"><p>Run <span class="command"><strong>pkglint</strong></span> again to see if the generated | | 3630 | <li class="step"><p>Run <span class="command"><strong>pkglint</strong></span> again to see if the generated |
3621 | <code class="filename">PLIST</code> contains garbage or not.</p></li> | | 3631 | <code class="filename">PLIST</code> contains garbage or not.</p></li> |
3622 | <li class="step"><p>When you ran <span class="command"><strong>bmake install</strong></span>, the package | | 3632 | <li class="step"><p>When you ran <span class="command"><strong>bmake install</strong></span>, the package |
3623 | has been registered in the database of installed files, but with an | | 3633 | has been registered in the database of installed files, but with an |
3624 | empty list of files. To fix this, run <span class="command"><strong>bmake deinstall</strong></span> | | 3634 | empty list of files. To fix this, run <span class="command"><strong>bmake deinstall</strong></span> |
3625 | and <span class="command"><strong>bmake install</strong></span> again. Now the package is | | 3635 | and <span class="command"><strong>bmake install</strong></span> again. Now the package is |
3626 | registered with the list of files from | | 3636 | registered with the list of files from |
3627 | <code class="filename">PLIST</code>.</p></li> | | 3637 | <code class="filename">PLIST</code>.</p></li> |
3628 | <li class="step"><p>Run <span class="command"><strong>bmake package</strong></span> to create a binary | | 3638 | <li class="step"><p>Run <span class="command"><strong>bmake package</strong></span> to create a binary |
3629 | package from the set of installed files.</p></li> | | 3639 | package from the set of installed files.</p></li> |
3630 | </ol></div> | | 3640 | </ol></div> |
3631 | <div class="sect1"> | | 3641 | <div class="sect1"> |
3632 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3642 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3633 | <a name="creating.common"></a>10.1. Common types of packages</h2></div></div></div> | | 3643 | <a name="creating.common"></a>10.1. Common types of packages</h2></div></div></div> |
3634 | <div class="sect2"> | | 3644 | <div class="sect2"> |
3635 | <div class="titlepage"><div><div><h3 class="title"> | | 3645 | <div class="titlepage"><div><div><h3 class="title"> |
3636 | <a name="creating.perl-module"></a>10.1.1. Perl modules</h3></div></div></div> | | 3646 | <a name="creating.perl-module"></a>10.1.1. Perl modules</h3></div></div></div> |
3637 | <p>Simple Perl modules are handled automatically by | | 3647 | <p>Simple Perl modules are handled automatically by |
3638 | <span class="command"><strong>url2pkg</strong></span>, including dependencies.</p> | | 3648 | <span class="command"><strong>url2pkg</strong></span>, including dependencies.</p> |
3639 | </div> | | 3649 | </div> |
3640 | <div class="sect2"> | | 3650 | <div class="sect2"> |
3641 | <div class="titlepage"><div><div><h3 class="title"> | | 3651 | <div class="titlepage"><div><div><h3 class="title"> |
3642 | <a name="creating.kde-app"></a>10.1.2. KDE3 applications</h3></div></div></div> | | 3652 | <a name="creating.kde-app"></a>10.1.2. KDE3 applications</h3></div></div></div> |
3643 | <p>KDE3 applications should always include | | 3653 | <p>KDE3 applications should always include |
3644 | <code class="filename">meta-pkgs/kde3/kde3.mk</code>, which contains numerous | | 3654 | <code class="filename">meta-pkgs/kde3/kde3.mk</code>, which contains numerous |
3645 | settings that are typical of KDE3 packages.</p> | | 3655 | settings that are typical of KDE3 packages.</p> |
3646 | </div> | | 3656 | </div> |
3647 | <div class="sect2"> | | 3657 | <div class="sect2"> |
3648 | <div class="titlepage"><div><div><h3 class="title"> | | 3658 | <div class="titlepage"><div><div><h3 class="title"> |
3649 | <a name="creating.python-module"></a>10.1.3. Python modules and programs</h3></div></div></div> | | 3659 | <a name="creating.python-module"></a>10.1.3. Python modules and programs</h3></div></div></div> |
3650 | <p>Python modules and programs packages are easily created using a | | 3660 | <p>Python modules and programs packages are easily created using a |
3651 | set of predefined variables.</p> | | 3661 | set of predefined variables.</p> |
3652 | <p> | | 3662 | <p> |
3653 | If some Python versions are not supported by the software, set the | | 3663 | If some Python versions are not supported by the software, set the |
3654 | <code class="varname">PYTHON_VERSIONS_INCOMPATIBLE</code> variable to the Python versions | | 3664 | <code class="varname">PYTHON_VERSIONS_INCOMPATIBLE</code> variable to the Python versions |
3655 | that are not supported, e.g. | | 3665 | that are not supported, e.g. |
3656 | </p> | | 3666 | </p> |
3657 | <pre class="programlisting"> | | 3667 | <pre class="programlisting"> |
3658 | PYTHON_VERSIONS_INCOMPATIBLE= 26 | | 3668 | PYTHON_VERSIONS_INCOMPATIBLE= 26 |
3659 | </pre> | | 3669 | </pre> |
3660 | <p> | | 3670 | <p> |
3661 | If the packaged software is a Python module, include | | 3671 | If the packaged software is a Python module, include |
3662 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/extension.mk</code></span>”</span>. | | 3672 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/extension.mk</code></span>”</span>. |
3663 | In this case, the package directory should be called | | 3673 | In this case, the package directory should be called |
3664 | <span class="quote">“<span class="quote">py-software</span>”</span> and <code class="varname">PKGNAME</code> should be set to | | 3674 | <span class="quote">“<span class="quote">py-software</span>”</span> and <code class="varname">PKGNAME</code> should be set to |
3665 | <span class="quote">“<span class="quote">${PYPKGPREFIX}-${DISTNAME}</span>”</span>, e.g. | | 3675 | <span class="quote">“<span class="quote">${PYPKGPREFIX}-${DISTNAME}</span>”</span>, e.g. |
3666 | </p> | | 3676 | </p> |
3667 | <pre class="programlisting"> | | 3677 | <pre class="programlisting"> |
3668 | DISTNAME= foopymodule-1.2.10 | | 3678 | DISTNAME= foopymodule-1.2.10 |
3669 | PKGNAME= ${PYPKGPREFIX}-${DISTNAME} | | 3679 | PKGNAME= ${PYPKGPREFIX}-${DISTNAME} |
3670 | </pre> | | 3680 | </pre> |
3671 | <p>If it is an application, include | | 3681 | <p>If it is an application, include |
3672 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/application.mk</code></span>”</span>. | | 3682 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/application.mk</code></span>”</span>. |
3673 | In order to correctly set the path to the Python interpreter, use the | | 3683 | In order to correctly set the path to the Python interpreter, use the |
3674 | <code class="varname">REPLACE_PYTHON</code> variable and set it to the list of files | | 3684 | <code class="varname">REPLACE_PYTHON</code> variable and set it to the list of files |
3675 | (paths relative to <code class="varname">WRKSRC</code>) that must be corrected. | | 3685 | (paths relative to <code class="varname">WRKSRC</code>) that must be corrected. |
3676 | For example: | | 3686 | For example: |
3677 | </p> | | 3687 | </p> |
3678 | <pre class="programlisting"> | | 3688 | <pre class="programlisting"> |
3679 | REPLACE_PYTHON= *.py | | 3689 | REPLACE_PYTHON= *.py |
3680 | </pre> | | 3690 | </pre> |
3681 | <p>Most Python packages use either <span class="quote">“<span class="quote">distutils</span>”</span> or | | 3691 | <p>Most Python packages use either <span class="quote">“<span class="quote">distutils</span>”</span> or |
3682 | easy-setup (<span class="quote">“<span class="quote">eggs</span>”</span>). | | 3692 | easy-setup (<span class="quote">“<span class="quote">eggs</span>”</span>). |
3683 | If the software uses <span class="quote">“<span class="quote">distutils</span>”</span>, include | | 3693 | If the software uses <span class="quote">“<span class="quote">distutils</span>”</span>, include |
3684 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/distutils.mk</code></span>”</span>. | | 3694 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/distutils.mk</code></span>”</span>. |
3685 | so pkgsrc will use this framework. | | 3695 | so pkgsrc will use this framework. |
3686 | <span class="quote">“<span class="quote">distutils</span>”</span> uses a script called <code class="filename">setup.py</code>, | | 3696 | <span class="quote">“<span class="quote">distutils</span>”</span> uses a script called <code class="filename">setup.py</code>, |
3687 | if the <span class="quote">“<span class="quote">distutils</span>”</span> driver is not called | | 3697 | if the <span class="quote">“<span class="quote">distutils</span>”</span> driver is not called |
3688 | <code class="filename">setup.py</code>, set the <code class="varname">PYSETUP</code> variable | | 3698 | <code class="filename">setup.py</code>, set the <code class="varname">PYSETUP</code> variable |
3689 | to the name of the script.</p> | | 3699 | to the name of the script.</p> |
3690 | <p>Otherwise, if the packaged software is egg-aware, you only need | | 3700 | <p>Otherwise, if the packaged software is egg-aware, you only need |
3691 | to include | | 3701 | to include |
3692 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/egg.mk</code></span>”</span>.</p> | | 3702 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/egg.mk</code></span>”</span>.</p> |
3693 | <p>Some Python modules have separate distributions for Python-2.x | | 3703 | <p>Some Python modules have separate distributions for Python-2.x |
3694 | and Python-3.x support. In pkgsrc this is handled by the | | 3704 | and Python-3.x support. In pkgsrc this is handled by the |
3695 | <code class="filename">versioned_dependencies.mk</code> file. Set | | 3705 | <code class="filename">versioned_dependencies.mk</code> file. Set |
3696 | <code class="varname">PYTHON_VERSIONED_DEPENDENCIES</code> to the list of | | 3706 | <code class="varname">PYTHON_VERSIONED_DEPENDENCIES</code> to the list of |
3697 | packages that should be depended upon and include | | 3707 | packages that should be depended upon and include |
3698 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/versioned_dependencies.mk</code></span>”</span>, | | 3708 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/versioned_dependencies.mk</code></span>”</span>, |
3699 | then the pkgsrc infrastructure will depend on the appropriate package | | 3709 | then the pkgsrc infrastructure will depend on the appropriate package |
3700 | version. For example: | | 3710 | version. For example: |
3701 | </p> | | 3711 | </p> |
3702 | <pre class="programlisting"> | | 3712 | <pre class="programlisting"> |
3703 | PYTHON_VERSIONED_DEPENDENCIES=dateutil dns | | 3713 | PYTHON_VERSIONED_DEPENDENCIES=dateutil dns |
3704 | </pre> | | 3714 | </pre> |
3705 | <p> | | 3715 | <p> |
3706 | Look inside <code class="filename">versioned_dependencies.mk</code> for a list | | 3716 | Look inside <code class="filename">versioned_dependencies.mk</code> for a list |
3707 | of supported packages.</p> | | 3717 | of supported packages.</p> |
3708 | </div> | | 3718 | </div> |
3709 | </div> | | 3719 | </div> |
3710 | <div class="sect1"> | | 3720 | <div class="sect1"> |
3711 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3721 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3712 | <a name="creating.examples"></a>10.2. Examples</h2></div></div></div> | | 3722 | <a name="creating.examples"></a>10.2. Examples</h2></div></div></div> |
3713 | <div class="sect2"> | | 3723 | <div class="sect2"> |
3714 | <div class="titlepage"><div><div><h3 class="title"> | | 3724 | <div class="titlepage"><div><div><h3 class="title"> |
3715 | <a name="creating.nvu"></a>10.2.1. How the www/nvu package came into pkgsrc</h3></div></div></div> | | 3725 | <a name="creating.nvu"></a>10.2.1. How the www/nvu package came into pkgsrc</h3></div></div></div> |
3716 | <div class="sect3"> | | 3726 | <div class="sect3"> |
3717 | <div class="titlepage"><div><div><h4 class="title"> | | 3727 | <div class="titlepage"><div><div><h4 class="title"> |
3718 | <a name="creating.nvu.init"></a>10.2.1.1. The initial package</h4></div></div></div> | | 3728 | <a name="creating.nvu.init"></a>10.2.1.1. The initial package</h4></div></div></div> |
3719 | <p>Looking at the file <code class="filename">pkgsrc/doc/TODO</code>, I saw | | 3729 | <p>Looking at the file <code class="filename">pkgsrc/doc/TODO</code>, I saw |
3720 | that the <span class="quote">“<span class="quote">nvu</span>”</span> package has not yet been imported into | | 3730 | that the <span class="quote">“<span class="quote">nvu</span>”</span> package has not yet been imported into |
3721 | pkgsrc. As the description says it has to do with the web, the obvious | | 3731 | pkgsrc. As the description says it has to do with the web, the obvious |
3722 | choice for the category is <span class="quote">“<span class="quote">www</span>”</span>.</p> | | 3732 | choice for the category is <span class="quote">“<span class="quote">www</span>”</span>.</p> |
3723 | <pre class="programlisting"> | | 3733 | <pre class="programlisting"> |
3724 | <code class="prompt">$</code> mkdir www/nvu | | 3734 | <code class="prompt">$</code> mkdir www/nvu |
3725 | <code class="prompt">$</code> cd www/nvu | | 3735 | <code class="prompt">$</code> cd www/nvu |
3726 | </pre> | | 3736 | </pre> |
3727 | <p>The web site says that the sources are available as a tar file, so | | 3737 | <p>The web site says that the sources are available as a tar file, so |
3728 | I fed that URL to the <span class="command"><strong>url2pkg</strong></span> program:</p> | | 3738 | I fed that URL to the <span class="command"><strong>url2pkg</strong></span> program:</p> |
3729 | <pre class="programlisting"> | | 3739 | <pre class="programlisting"> |
3730 | <code class="prompt">$</code> url2pkg http://cvs.nvu.com/download/nvu-1.0-sources.tar.bz2 | | 3740 | <code class="prompt">$</code> url2pkg http://cvs.nvu.com/download/nvu-1.0-sources.tar.bz2 |
3731 | </pre> | | 3741 | </pre> |
3732 | <p>My editor popped up, and I added a <code class="varname">PKGNAME</code> line | | 3742 | <p>My editor popped up, and I added a <code class="varname">PKGNAME</code> line |
3733 | below the <code class="varname">DISTNAME</code> line, as the package name should | | 3743 | below the <code class="varname">DISTNAME</code> line, as the package name should |
3734 | not have the word <span class="quote">“<span class="quote">sources</span>”</span> in it. I also filled in the | | 3744 | not have the word <span class="quote">“<span class="quote">sources</span>”</span> in it. I also filled in the |
3735 | <code class="varname">MAINTAINER</code>, <code class="varname">HOMEPAGE</code> and | | 3745 | <code class="varname">MAINTAINER</code>, <code class="varname">HOMEPAGE</code> and |
3736 | <code class="varname">COMMENT</code> fields. Then the package | | 3746 | <code class="varname">COMMENT</code> fields. Then the package |
3737 | <code class="filename">Makefile</code> looked like that:</p> | | 3747 | <code class="filename">Makefile</code> looked like that:</p> |
3738 | <pre class="programlisting"> | | 3748 | <pre class="programlisting"> |
3739 | # $NetBSD$ | | 3749 | # $NetBSD$ |
3740 | # | | 3750 | # |
3741 | | | 3751 | |
3742 | DISTNAME= nvu-1.0-sources | | 3752 | DISTNAME= nvu-1.0-sources |
3743 | PKGNAME= nvu-1.0 | | 3753 | PKGNAME= nvu-1.0 |
3744 | CATEGORIES= www | | 3754 | CATEGORIES= www |
3745 | MASTER_SITES= http://cvs.nvu.com/download/ | | 3755 | MASTER_SITES= http://cvs.nvu.com/download/ |
3746 | EXTRACT_SUFX= .tar.bz2 | | 3756 | EXTRACT_SUFX= .tar.bz2 |
3747 | | | 3757 | |
3748 | MAINTAINER= rillig@NetBSD.org | | 3758 | MAINTAINER= rillig@NetBSD.org |
3749 | HOMEPAGE= http://cvs.nvu.com/ | | 3759 | HOMEPAGE= http://cvs.nvu.com/ |
3750 | COMMENT= Web Authoring System | | 3760 | COMMENT= Web Authoring System |
3751 | | | 3761 | |
3752 | # url2pkg-marker (please do not remove this line.) | | 3762 | # url2pkg-marker (please do not remove this line.) |
3753 | .include "../../mk/bsd.pkg.mk" | | 3763 | .include "../../mk/bsd.pkg.mk" |
3754 | </pre> | | 3764 | </pre> |
3755 | <p>Then, I quit the editor and watched pkgsrc downloading a large | | 3765 | <p>Then, I quit the editor and watched pkgsrc downloading a large |
3756 | source archive:</p> | | 3766 | source archive:</p> |
3757 | <pre class="programlisting"> | | 3767 | <pre class="programlisting"> |
3758 | url2pkg> Running "make makesum" ... | | 3768 | url2pkg> Running "make makesum" ... |
3759 | => Required installed package digest>=20010302: digest-20060826 found | | 3769 | => Required installed package digest>=20010302: digest-20060826 found |
3760 | => Fetching nvu-1.0-sources.tar.bz2 | | 3770 | => Fetching nvu-1.0-sources.tar.bz2 |
3761 | Requesting http://cvs.nvu.com/download/nvu-1.0-sources.tar.bz2 | | 3771 | Requesting http://cvs.nvu.com/download/nvu-1.0-sources.tar.bz2 |
3762 | 100% |*************************************| 28992 KB 150.77 KB/s00:00 ETA | | 3772 | 100% |*************************************| 28992 KB 150.77 KB/s00:00 ETA |
3763 | 29687976 bytes retrieved in 03:12 (150.77 KB/s) | | 3773 | 29687976 bytes retrieved in 03:12 (150.77 KB/s) |
3764 | url2pkg> Running "make extract" ... | | 3774 | url2pkg> Running "make extract" ... |
3765 | => Required installed package digest>=20010302: digest-20060826 found | | 3775 | => Required installed package digest>=20010302: digest-20060826 found |
3766 | => Checksum SHA1 OK for nvu-1.0-sources.tar.bz2 | | 3776 | => Checksum SHA1 OK for nvu-1.0-sources.tar.bz2 |
3767 | => Checksum RMD160 OK for nvu-1.0-sources.tar.bz2 | | 3777 | => Checksum RMD160 OK for nvu-1.0-sources.tar.bz2 |
3768 | work.bacc -> /tmp/roland/pkgsrc/www/nvu/work.bacc | | 3778 | work.bacc -> /tmp/roland/pkgsrc/www/nvu/work.bacc |
3769 | ===> Installing dependencies for nvu-1.0 | | 3779 | ===> Installing dependencies for nvu-1.0 |
3770 | ===> Overriding tools for nvu-1.0 | | 3780 | ===> Overriding tools for nvu-1.0 |
3771 | ===> Extracting for nvu-1.0 | | 3781 | ===> Extracting for nvu-1.0 |
3772 | url2pkg> Adjusting the Makefile. | | 3782 | url2pkg> Adjusting the Makefile. |
3773 | | | 3783 | |
3774 | Remember to correct CATEGORIES, HOMEPAGE, COMMENT, and DESCR when you're done! | | 3784 | Remember to correct CATEGORIES, HOMEPAGE, COMMENT, and DESCR when you're done! |
3775 | | | 3785 | |
3776 | Good luck! (See pkgsrc/doc/pkgsrc.txt for some more help :-) | | 3786 | Good luck! (See pkgsrc/doc/pkgsrc.txt for some more help :-) |
3777 | </pre> | | 3787 | </pre> |
3778 | </div> | | 3788 | </div> |
3779 | <div class="sect3"> | | 3789 | <div class="sect3"> |
3780 | <div class="titlepage"><div><div><h4 class="title"> | | 3790 | <div class="titlepage"><div><div><h4 class="title"> |
3781 | <a name="creating.nvu.problems"></a>10.2.1.2. Fixing all kinds of problems to make the package work</h4></div></div></div> | | 3791 | <a name="creating.nvu.problems"></a>10.2.1.2. Fixing all kinds of problems to make the package work</h4></div></div></div> |
3782 | <p>Now that the package has been extracted, let's see what's inside | | 3792 | <p>Now that the package has been extracted, let's see what's inside |
3783 | it. The package has a <code class="filename">README.txt</code>, but that only | | 3793 | it. The package has a <code class="filename">README.txt</code>, but that only |
3784 | says something about mozilla, so it's probably useless for seeing what | | 3794 | says something about mozilla, so it's probably useless for seeing what |
3785 | dependencies this package has. But since there is a GNU configure script | | 3795 | dependencies this package has. But since there is a GNU configure script |
3786 | in the package, let's hope that it will complain about everything it | | 3796 | in the package, let's hope that it will complain about everything it |
3787 | needs.</p> | | 3797 | needs.</p> |
3788 | <pre class="programlisting"> | | 3798 | <pre class="programlisting"> |
3789 | <code class="prompt">$</code> bmake | | 3799 | <code class="prompt">$</code> bmake |
3790 | => Required installed package digest>=20010302: digest-20060826 found | | 3800 | => Required installed package digest>=20010302: digest-20060826 found |
3791 | => Checksum SHA1 OK for nvu-1.0-sources.tar.bz2 | | 3801 | => Checksum SHA1 OK for nvu-1.0-sources.tar.bz2 |
3792 | => Checksum RMD160 OK for nvu-1.0-sources.tar.bz2 | | 3802 | => Checksum RMD160 OK for nvu-1.0-sources.tar.bz2 |
3793 | ===> Patching for nvu-1.0 | | 3803 | ===> Patching for nvu-1.0 |
3794 | ===> Creating toolchain wrappers for nvu-1.0 | | 3804 | ===> Creating toolchain wrappers for nvu-1.0 |
3795 | ===> Configuring for nvu-1.0 | | 3805 | ===> Configuring for nvu-1.0 |
3796 | [...] | | 3806 | [...] |
3797 | configure: error: Perl 5.004 or higher is required. | | 3807 | configure: error: Perl 5.004 or higher is required. |
3798 | [...] | | 3808 | [...] |
3799 | WARNING: Please add USE_TOOLS+=perl to the package Makefile. | | 3809 | WARNING: Please add USE_TOOLS+=perl to the package Makefile. |
3800 | [...] | | 3810 | [...] |
3801 | </pre> | | 3811 | </pre> |
3802 | <p>That worked quite well. So I opened the package Makefile in my | | 3812 | <p>That worked quite well. So I opened the package Makefile in my |
3803 | editor, and since it already has a <code class="varname">USE_TOOLS</code> line, I | | 3813 | editor, and since it already has a <code class="varname">USE_TOOLS</code> line, I |
3804 | just appended <span class="quote">“<span class="quote">perl</span>”</span> to it. Since the dependencies of the | | 3814 | just appended <span class="quote">“<span class="quote">perl</span>”</span> to it. Since the dependencies of the |
3805 | package have changed now, and since a perl wrapper is automatically | | 3815 | package have changed now, and since a perl wrapper is automatically |
3806 | installed in the <span class="quote">“<span class="quote">tools</span>”</span> phase, I need to build the package | | 3816 | installed in the <span class="quote">“<span class="quote">tools</span>”</span> phase, I need to build the package |
3807 | from scratch.</p> | | 3817 | from scratch.</p> |
3808 | <pre class="programlisting"> | | 3818 | <pre class="programlisting"> |
3809 | <code class="prompt">$</code> bmake clean | | 3819 | <code class="prompt">$</code> bmake clean |
3810 | ===> Cleaning for nvu-1.0 | | 3820 | ===> Cleaning for nvu-1.0 |
3811 | <code class="prompt">$</code> bmake | | 3821 | <code class="prompt">$</code> bmake |
3812 | [...] | | 3822 | [...] |
3813 | *** /tmp/roland/pkgsrc/www/nvu/work.bacc/.tools/bin/make is not \ | | 3823 | *** /tmp/roland/pkgsrc/www/nvu/work.bacc/.tools/bin/make is not \ |
3814 | GNU Make. You will not be able to build Mozilla without GNU Make. | | 3824 | GNU Make. You will not be able to build Mozilla without GNU Make. |
3815 | [...] | | 3825 | [...] |
3816 | </pre> | | 3826 | </pre> |
3817 | <p>So I added <span class="quote">“<span class="quote">gmake</span>”</span> to the | | 3827 | <p>So I added <span class="quote">“<span class="quote">gmake</span>”</span> to the |
3818 | <code class="varname">USE_TOOLS</code> line and tried again (from scratch).</p> | | 3828 | <code class="varname">USE_TOOLS</code> line and tried again (from scratch).</p> |
3819 | <pre class="programlisting"> | | 3829 | <pre class="programlisting"> |
3820 | [...] | | 3830 | [...] |
3821 | checking for GTK - version >= 1.2.0... no | | 3831 | checking for GTK - version >= 1.2.0... no |
3822 | *** Could not run GTK test program, checking why... | | 3832 | *** Could not run GTK test program, checking why... |
3823 | [...] | | 3833 | [...] |
3824 | </pre> | | 3834 | </pre> |
3825 | <p>Now to the other dependencies. The first question is: Where is the | | 3835 | <p>Now to the other dependencies. The first question is: Where is the |
3826 | GTK package hidden in pkgsrc?</p> | | 3836 | GTK package hidden in pkgsrc?</p> |
3827 | <pre class="programlisting"> | | 3837 | <pre class="programlisting"> |
3828 | <code class="prompt">$</code> echo ../../*/gtk* | | 3838 | <code class="prompt">$</code> echo ../../*/gtk* |
3829 | [many packages ...] | | 3839 | [many packages ...] |
3830 | <code class="prompt">$</code> echo ../../*/gtk | | 3840 | <code class="prompt">$</code> echo ../../*/gtk |
3831 | ../../x11/gtk | | 3841 | ../../x11/gtk |
3832 | <code class="prompt">$</code> echo ../../*/gtk2 | | 3842 | <code class="prompt">$</code> echo ../../*/gtk2 |
3833 | ../../x11/gtk2 | | 3843 | ../../x11/gtk2 |
3834 | <code class="prompt">$</code> echo ../../*/gtk2/bui* | | 3844 | <code class="prompt">$</code> echo ../../*/gtk2/bui* |
3835 | ../../x11/gtk2/buildlink3.mk | | 3845 | ../../x11/gtk2/buildlink3.mk |
3836 | </pre> | | 3846 | </pre> |
3837 | <p>The first try was definitely too broad. The second one had exactly | | 3847 | <p>The first try was definitely too broad. The second one had exactly |
3838 | one result, which is very good. But there is one pitfall with GNOME | | 3848 | one result, which is very good. But there is one pitfall with GNOME |
3839 | packages. Before GNOME 2 had been released, there were already many | | 3849 | packages. Before GNOME 2 had been released, there were already many |
3840 | GNOME 1 packages in pkgsrc. To be able to continue to use these | | 3850 | GNOME 1 packages in pkgsrc. To be able to continue to use these |
3841 | packages, the GNOME 2 packages were imported as separate packages, and | | 3851 | packages, the GNOME 2 packages were imported as separate packages, and |
3842 | their names usually have a <span class="quote">“<span class="quote">2</span>”</span> appended. So I checked | | 3852 | their names usually have a <span class="quote">“<span class="quote">2</span>”</span> appended. So I checked |
3843 | whether this was the case here, and indeed it was.</p> | | 3853 | whether this was the case here, and indeed it was.</p> |
3844 | <p>Since the GTK2 package has a <code class="filename">buildlink3.mk</code> | | 3854 | <p>Since the GTK2 package has a <code class="filename">buildlink3.mk</code> |
3845 | file, adding the dependency is very easy. I just inserted an | | 3855 | file, adding the dependency is very easy. I just inserted an |
3846 | <code class="literal">.include</code> line before the last line of the package | | 3856 | <code class="literal">.include</code> line before the last line of the package |
3847 | <code class="filename">Makefile</code>, so that it now looks like this:</p> | | 3857 | <code class="filename">Makefile</code>, so that it now looks like this:</p> |
3848 | <pre class="programlisting"> | | 3858 | <pre class="programlisting"> |
3849 | [...] | | 3859 | [...] |
3850 | .include "../../x11/gtk2/buildlink3.mk" | | 3860 | .include "../../x11/gtk2/buildlink3.mk" |
3851 | .include "../../mk/bsd.pkg.mk | | 3861 | .include "../../mk/bsd.pkg.mk |
3852 | </pre> | | 3862 | </pre> |
3853 | <p>After another <span class="command"><strong>bmake clean && bmake</strong></span>, the answer | | 3863 | <p>After another <span class="command"><strong>bmake clean && bmake</strong></span>, the answer |
3854 | was:</p> | | 3864 | was:</p> |
3855 | <pre class="programlisting"> | | 3865 | <pre class="programlisting"> |
3856 | [...] | | 3866 | [...] |
3857 | checking for gtk-config... /home/roland/pkg/bin/gtk-config | | 3867 | checking for gtk-config... /home/roland/pkg/bin/gtk-config |
3858 | checking for GTK - version >= 1.2.0... no | | 3868 | checking for GTK - version >= 1.2.0... no |
3859 | *** Could not run GTK test program, checking why... | | 3869 | *** Could not run GTK test program, checking why... |
3860 | *** The test program failed to compile or link. See the file config.log for the | | 3870 | *** The test program failed to compile or link. See the file config.log for the |
3861 | *** exact error that occured. This usually means GTK was incorrectly installed | | 3871 | *** exact error that occured. This usually means GTK was incorrectly installed |
3862 | *** or that you have moved GTK since it was installed. In the latter case, you | | 3872 | *** or that you have moved GTK since it was installed. In the latter case, you |
3863 | *** may want to edit the gtk-config script: /home/roland/pkg/bin/gtk-config | | 3873 | *** may want to edit the gtk-config script: /home/roland/pkg/bin/gtk-config |
3864 | configure: error: Test for GTK failed. | | 3874 | configure: error: Test for GTK failed. |
3865 | [...] | | 3875 | [...] |
3866 | </pre> | | 3876 | </pre> |
3867 | <p>In this particular case, the assumption that <span class="quote">“<span class="quote">every package | | 3877 | <p>In this particular case, the assumption that <span class="quote">“<span class="quote">every package |
3868 | prefers GNOME 2</span>”</span> had been wrong. The first of the lines above | | 3878 | prefers GNOME 2</span>”</span> had been wrong. The first of the lines above |
3869 | told me that this package really wanted to have the GNOME 1 version of | | 3879 | told me that this package really wanted to have the GNOME 1 version of |
3870 | GTK. If the package had looked for GTK2, it would have looked for | | 3880 | GTK. If the package had looked for GTK2, it would have looked for |
3871 | <span class="command"><strong>pkg-config</strong></span> instead of <span class="command"><strong>gtk-config</strong></span>. | | 3881 | <span class="command"><strong>pkg-config</strong></span> instead of <span class="command"><strong>gtk-config</strong></span>. |
3872 | So I changed the <code class="literal">x11/gtk2</code> to | | 3882 | So I changed the <code class="literal">x11/gtk2</code> to |
3873 | <code class="literal">x11/gtk</code> in the package <code class="filename">Makefile</code>, | | 3883 | <code class="literal">x11/gtk</code> in the package <code class="filename">Makefile</code>, |
3874 | and tried again.</p> | | 3884 | and tried again.</p> |
3875 | <pre class="programlisting"> | | 3885 | <pre class="programlisting"> |
3876 | [...] | | 3886 | [...] |
3877 | cc -o xpidl.o -c -DOSTYPE=\"NetBSD3\" -DOSARCH=\"NetBSD\" [...] | | 3887 | cc -o xpidl.o -c -DOSTYPE=\"NetBSD3\" -DOSARCH=\"NetBSD\" [...] |
3878 | In file included from xpidl.c:42: | | 3888 | In file included from xpidl.c:42: |
3879 | xpidl.h:53:24: libIDL/IDL.h: No such file or directory | | 3889 | xpidl.h:53:24: libIDL/IDL.h: No such file or directory |
3880 | In file included from xpidl.c:42: | | 3890 | In file included from xpidl.c:42: |
3881 | xpidl.h:132: error: parse error before "IDL_ns" | | 3891 | xpidl.h:132: error: parse error before "IDL_ns" |
3882 | [...] | | 3892 | [...] |
3883 | </pre> | | 3893 | </pre> |
3884 | <p>The package still does not find all of its dependencies. Now the | | 3894 | <p>The package still does not find all of its dependencies. Now the |
3885 | question is: Which package provides the | | 3895 | question is: Which package provides the |
3886 | <code class="filename">libIDL/IDL.h</code> header file?</p> | | 3896 | <code class="filename">libIDL/IDL.h</code> header file?</p> |
3887 | <pre class="programlisting"> | | 3897 | <pre class="programlisting"> |
3888 | <code class="prompt">$</code> echo ../../*/*idl* | | 3898 | <code class="prompt">$</code> echo ../../*/*idl* |
3889 | ../../devel/py-idle ../../wip/idled ../../x11/acidlaunch | | 3899 | ../../devel/py-idle ../../wip/idled ../../x11/acidlaunch |
3890 | <code class="prompt">$</code> echo ../../*/*IDL* | | 3900 | <code class="prompt">$</code> echo ../../*/*IDL* |
3891 | ../../net/libIDL | | 3901 | ../../net/libIDL |
3892 | </pre> | | 3902 | </pre> |
3893 | <p>Let's take the one from the second try. So I included the | | 3903 | <p>Let's take the one from the second try. So I included the |
3894 | <code class="filename">../../net/libIDL/buildlink3.mk</code> file and tried | | 3904 | <code class="filename">../../net/libIDL/buildlink3.mk</code> file and tried |
3895 | again. But the error didn't change. After digging through some of the | | 3905 | again. But the error didn't change. After digging through some of the |
3896 | code, I concluded that the build process of the package was broken and | | 3906 | code, I concluded that the build process of the package was broken and |
3897 | couldn't have ever worked, but since the Mozilla source tree is quite | | 3907 | couldn't have ever worked, but since the Mozilla source tree is quite |
3898 | large, I didn't want to fix it. So I added the following to the package | | 3908 | large, I didn't want to fix it. So I added the following to the package |
3899 | <code class="filename">Makefile</code> and tried again:</p> | | 3909 | <code class="filename">Makefile</code> and tried again:</p> |
3900 | <pre class="programlisting"> | | 3910 | <pre class="programlisting"> |
3901 | CPPFLAGS+= -I${BUILDLINK_PREFIX.libIDL}/include/libIDL-2.0 | | 3911 | CPPFLAGS+= -I${BUILDLINK_PREFIX.libIDL}/include/libIDL-2.0 |
3902 | BUILDLINK_TRANSFORM+= -l:IDL:IDL-2 | | 3912 | BUILDLINK_TRANSFORM+= -l:IDL:IDL-2 |
3903 | </pre> | | 3913 | </pre> |
3904 | <p>The latter line is needed because the package expects the library | | 3914 | <p>The latter line is needed because the package expects the library |
3905 | <code class="filename">libIDL.so</code>, but only | | 3915 | <code class="filename">libIDL.so</code>, but only |
3906 | <code class="filename">libIDL-2.so</code> is available. So I told the compiler | | 3916 | <code class="filename">libIDL-2.so</code> is available. So I told the compiler |
3907 | wrapper to rewrite that on the fly.</p> | | 3917 | wrapper to rewrite that on the fly.</p> |
3908 | <p>The next problem was related to a recent change of the FreeType | | 3918 | <p>The next problem was related to a recent change of the FreeType |
3909 | interface. I looked up in <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/seamonkey/README.html" target="_top"><code class="filename">www/seamonkey</code></a> | | 3919 | interface. I looked up in <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/seamonkey/README.html" target="_top"><code class="filename">www/seamonkey</code></a> |
3910 | which patch files were relevant for this issue and copied them to the | | 3920 | which patch files were relevant for this issue and copied them to the |
3911 | <code class="filename">patches</code> directory. Then I retried, fixed the | | 3921 | <code class="filename">patches</code> directory. Then I retried, fixed the |
3912 | patches so that they applied cleanly and retried again. This time, | | 3922 | patches so that they applied cleanly and retried again. This time, |
3913 | everything worked.</p> | | 3923 | everything worked.</p> |
3914 | </div> | | 3924 | </div> |
3915 | <div class="sect3"> | | 3925 | <div class="sect3"> |
3916 | <div class="titlepage"><div><div><h4 class="title"> | | 3926 | <div class="titlepage"><div><div><h4 class="title"> |
3917 | <a name="creating.nvu.inst"></a>10.2.1.3. Installing the package</h4></div></div></div> | | 3927 | <a name="creating.nvu.inst"></a>10.2.1.3. Installing the package</h4></div></div></div> |
3918 | <pre class="programlisting"> | | 3928 | <pre class="programlisting"> |
3919 | <code class="prompt">$</code> bmake CHECK_FILES=no install | | 3929 | <code class="prompt">$</code> bmake CHECK_FILES=no install |
3920 | [...] | | 3930 | [...] |
3921 | <code class="prompt">$</code> bmake print-PLIST >PLIST | | 3931 | <code class="prompt">$</code> bmake print-PLIST >PLIST |
3922 | <code class="prompt">$</code> bmake deinstall | | 3932 | <code class="prompt">$</code> bmake deinstall |
3923 | <code class="prompt">$</code> bmake install | | 3933 | <code class="prompt">$</code> bmake install |
3924 | </pre> | | 3934 | </pre> |
3925 | </div> | | 3935 | </div> |
3926 | </div> | | 3936 | </div> |
3927 | </div> | | 3937 | </div> |
3928 | </div> | | 3938 | </div> |
3929 | <div class="chapter"> | | 3939 | <div class="chapter"> |
3930 | <div class="titlepage"><div><div><h2 class="title"> | | 3940 | <div class="titlepage"><div><div><h2 class="title"> |
3931 | <a name="components"></a>Chapter 11. Package components - files, directories and contents</h2></div></div></div> | | 3941 | <a name="components"></a>Chapter 11. Package components - files, directories and contents</h2></div></div></div> |
3932 | <div class="toc"> | | 3942 | <div class="toc"> |
3933 | <p><b>Table of Contents</b></p> | | 3943 | <p><b>Table of Contents</b></p> |
3934 | <dl> | | 3944 | <dl> |
3935 | <dt><span class="sect1"><a href="#components.Makefile">11.1. <code class="filename">Makefile</code></a></span></dt> | | 3945 | <dt><span class="sect1"><a href="#components.Makefile">11.1. <code class="filename">Makefile</code></a></span></dt> |
3936 | <dt><span class="sect1"><a href="#components.distinfo">11.2. <code class="filename">distinfo</code></a></span></dt> | | 3946 | <dt><span class="sect1"><a href="#components.distinfo">11.2. <code class="filename">distinfo</code></a></span></dt> |
3937 | <dt><span class="sect1"><a href="#components.patches">11.3. patches/*</a></span></dt> | | 3947 | <dt><span class="sect1"><a href="#components.patches">11.3. patches/*</a></span></dt> |
3938 | <dd><dl> | | 3948 | <dd><dl> |
3939 | <dt><span class="sect2"><a href="#components.patch.structure">11.3.1. Structure of a single patch file</a></span></dt> | | 3949 | <dt><span class="sect2"><a href="#components.patch.structure">11.3.1. Structure of a single patch file</a></span></dt> |
3940 | <dt><span class="sect2"><a href="#components.patches.caveats">11.3.2. Creating patch files</a></span></dt> | | 3950 | <dt><span class="sect2"><a href="#components.patches.caveats">11.3.2. Creating patch files</a></span></dt> |
3941 | <dt><span class="sect2"><a href="#components.patches.sources">11.3.3. Sources where the patch files come from</a></span></dt> | | 3951 | <dt><span class="sect2"><a href="#components.patches.sources">11.3.3. Sources where the patch files come from</a></span></dt> |
3942 | <dt><span class="sect2"><a href="#components.patches.guidelines">11.3.4. Patching guidelines</a></span></dt> | | 3952 | <dt><span class="sect2"><a href="#components.patches.guidelines">11.3.4. Patching guidelines</a></span></dt> |
3943 | <dt><span class="sect2"><a href="#components.patches.feedback">11.3.5. Feedback to the author</a></span></dt> | | 3953 | <dt><span class="sect2"><a href="#components.patches.feedback">11.3.5. Feedback to the author</a></span></dt> |
3944 | </dl></dd> | | 3954 | </dl></dd> |
3945 | <dt><span class="sect1"><a href="#other-mandatory-files">11.4. Other mandatory files</a></span></dt> | | 3955 | <dt><span class="sect1"><a href="#other-mandatory-files">11.4. Other mandatory files</a></span></dt> |
3946 | <dt><span class="sect1"><a href="#components.optional">11.5. Optional files</a></span></dt> | | 3956 | <dt><span class="sect1"><a href="#components.optional">11.5. Optional files</a></span></dt> |
3947 | <dd><dl> | | 3957 | <dd><dl> |
3948 | <dt><span class="sect2"><a href="#components.optional.bin">11.5.1. Files affecting the binary package</a></span></dt> | | 3958 | <dt><span class="sect2"><a href="#components.optional.bin">11.5.1. Files affecting the binary package</a></span></dt> |
3949 | <dt><span class="sect2"><a href="#components.optional.build">11.5.2. Files affecting the build process</a></span></dt> | | 3959 | <dt><span class="sect2"><a href="#components.optional.build">11.5.2. Files affecting the build process</a></span></dt> |
3950 | <dt><span class="sect2"><a href="#components.optional.none">11.5.3. Files affecting nothing at all</a></span></dt> | | 3960 | <dt><span class="sect2"><a href="#components.optional.none">11.5.3. Files affecting nothing at all</a></span></dt> |
3951 | </dl></dd> | | 3961 | </dl></dd> |
3952 | <dt><span class="sect1"><a href="#work-dir">11.6. <code class="filename">work*</code></a></span></dt> | | 3962 | <dt><span class="sect1"><a href="#work-dir">11.6. <code class="filename">work*</code></a></span></dt> |
3953 | <dt><span class="sect1"><a href="#files-dir">11.7. <code class="filename">files/*</code></a></span></dt> | | 3963 | <dt><span class="sect1"><a href="#files-dir">11.7. <code class="filename">files/*</code></a></span></dt> |
3954 | </dl> | | 3964 | </dl> |
3955 | </div> | | 3965 | </div> |
3956 | <p>Whenever you're preparing a package, there are a number of | | 3966 | <p>Whenever you're preparing a package, there are a number of |
3957 | files involved which are described in the following | | 3967 | files involved which are described in the following |
3958 | sections.</p> | | 3968 | sections.</p> |
3959 | <div class="sect1"> | | 3969 | <div class="sect1"> |
3960 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3970 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3961 | <a name="components.Makefile"></a>11.1. <code class="filename">Makefile</code> | | 3971 | <a name="components.Makefile"></a>11.1. <code class="filename">Makefile</code> |
3962 | </h2></div></div></div> | | 3972 | </h2></div></div></div> |
3963 | <p>Building, installation and creation of a binary package are all | | 3973 | <p>Building, installation and creation of a binary package are all |
3964 | controlled by the package's <code class="filename">Makefile</code>. | | 3974 | controlled by the package's <code class="filename">Makefile</code>. |
3965 | The <code class="filename">Makefile</code> describes various things about | | 3975 | The <code class="filename">Makefile</code> describes various things about |
3966 | a package, for example from where to get it, how to configure, | | 3976 | a package, for example from where to get it, how to configure, |
3967 | build, and install it.</p> | | 3977 | build, and install it.</p> |
3968 | <p>A package <code class="filename">Makefile</code> contains several | | 3978 | <p>A package <code class="filename">Makefile</code> contains several |
3969 | sections that describe the package.</p> | | 3979 | sections that describe the package.</p> |
3970 | <p>In the first section there are the following variables, which | | 3980 | <p>In the first section there are the following variables, which |
3971 | should appear exactly in the order given here. The order and | | 3981 | should appear exactly in the order given here. The order and |
3972 | grouping of the variables is mostly historical and has no further | | 3982 | grouping of the variables is mostly historical and has no further |
3973 | meaning.</p> | | 3983 | meaning.</p> |
3974 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 3984 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
3975 | <li class="listitem"><p><code class="varname">DISTNAME</code> is the basename of the | | 3985 | <li class="listitem"><p><code class="varname">DISTNAME</code> is the basename of the |
3976 | distribution file to be downloaded from the package's | | 3986 | distribution file to be downloaded from the package's |
3977 | website.</p></li> | | 3987 | website.</p></li> |
3978 | <li class="listitem"><p><code class="varname">PKGNAME</code> is the name of the | | 3988 | <li class="listitem"><p><code class="varname">PKGNAME</code> is the name of the |
3979 | package, as used by pkgsrc. You need to provide it if | | 3989 | package, as used by pkgsrc. You need to provide it if |
3980 | <code class="varname">DISTNAME</code> (which is the default) is not a good | | 3990 | <code class="varname">DISTNAME</code> (which is the default) is not a good |
3981 | name for the package in pkgsrc or <code class="varname">DISTNAME</code> is not | | 3991 | name for the package in pkgsrc or <code class="varname">DISTNAME</code> is not |
3982 | provided (no distribution file is required). Usually it is the pkgsrc | | 3992 | provided (no distribution file is required). Usually it is the pkgsrc |
3983 | directory name together with the version number. It must match the | | 3993 | directory name together with the version number. It must match the |
3984 | regular expression | | 3994 | regular expression |
3985 | <code class="varname">^[A-Za-z0-9][A-Za-z0-9-_.+]*$</code>, that is, it | | 3995 | <code class="varname">^[A-Za-z0-9][A-Za-z0-9-_.+]*$</code>, that is, it |
3986 | starts with a letter or digit, and contains only letters, digits, | | 3996 | starts with a letter or digit, and contains only letters, digits, |
3987 | dashes, underscores, dots and plus signs.</p></li> | | 3997 | dashes, underscores, dots and plus signs.</p></li> |
3988 | <li class="listitem"> | | 3998 | <li class="listitem"> |
3989 | <p><code class="varname">CATEGORIES</code> is a list of categories | | 3999 | <p><code class="varname">CATEGORIES</code> is a list of categories |
3990 | which the package fits in. You can choose any of the top-level | | 4000 | which the package fits in. You can choose any of the top-level |
3991 | directories of pkgsrc for it.</p> | | 4001 | directories of pkgsrc for it.</p> |
3992 | <p>Currently the following values are available for | | 4002 | <p>Currently the following values are available for |
3993 | <code class="varname">CATEGORIES</code>. If more than | | 4003 | <code class="varname">CATEGORIES</code>. If more than |
3994 | one is used, they need to be separated by spaces:</p> | | 4004 | one is used, they need to be separated by spaces:</p> |
3995 | <pre class="programlisting"> | | 4005 | <pre class="programlisting"> |
3996 | archivers cross geography meta-pkgs security | | 4006 | archivers cross geography meta-pkgs security |
3997 | audio databases graphics misc shells | | 4007 | audio databases graphics misc shells |
3998 | benchmarks devel ham multimedia sysutils | | 4008 | benchmarks devel ham multimedia sysutils |
3999 | biology editors inputmethod net textproc | | 4009 | biology editors inputmethod net textproc |
4000 | cad emulators lang news time | | 4010 | cad emulators lang news time |
4001 | chat finance mail parallel wm | | 4011 | chat finance mail parallel wm |
4002 | comms fonts math pkgtools www | | 4012 | comms fonts math pkgtools www |
4003 | converters games mbone print x11 | | 4013 | converters games mbone print x11 |
4004 | </pre> | | 4014 | </pre> |
4005 | </li> | | 4015 | </li> |
4006 | <li class="listitem"><p><code class="varname">MASTER_SITES</code>, | | 4016 | <li class="listitem"><p><code class="varname">MASTER_SITES</code>, |
4007 | <code class="varname">DYNAMIC_MASTER_SITES</code>, | | 4017 | <code class="varname">DYNAMIC_MASTER_SITES</code>, |
4008 | <code class="varname">DIST_SUBDIR</code>, <code class="varname">EXTRACT_SUFX</code> | | 4018 | <code class="varname">DIST_SUBDIR</code>, <code class="varname">EXTRACT_SUFX</code> |
4009 | and <code class="varname">DISTFILES</code> are discussed in detail in | | 4019 | and <code class="varname">DISTFILES</code> are discussed in detail in |
4010 | <a class="xref" href="#build.fetch" title="17.5. The fetch phase">Section 17.5, “The <span class="emphasis"><em>fetch</em></span> phase”</a>.</p></li> | | 4020 | <a class="xref" href="#build.fetch" title="17.5. The fetch phase">Section 17.5, “The <span class="emphasis"><em>fetch</em></span> phase”</a>.</p></li> |
4011 | </ul></div> | | 4021 | </ul></div> |
4012 | <p>The second section contains information about separately | | 4022 | <p>The second section contains information about separately |
4013 | downloaded patches, if any. | | 4023 | downloaded patches, if any. |
4014 | </p> | | 4024 | </p> |
4015 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4025 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4016 | <li class="listitem"><p><code class="varname">PATCHFILES</code>: | | 4026 | <li class="listitem"><p><code class="varname">PATCHFILES</code>: |
4017 | Name(s) of additional files that contain distribution patches. | | 4027 | Name(s) of additional files that contain distribution patches. |
4018 | There is no default. pkgsrc will look for them at | | 4028 | There is no default. pkgsrc will look for them at |
4019 | <code class="varname">PATCH_SITES</code>. | | 4029 | <code class="varname">PATCH_SITES</code>. |
4020 | They will automatically be uncompressed before patching if | | 4030 | They will automatically be uncompressed before patching if |
4021 | the names end with <code class="filename">.gz</code> or | | 4031 | the names end with <code class="filename">.gz</code> or |
4022 | <code class="filename">.Z</code>.</p></li> | | 4032 | <code class="filename">.Z</code>.</p></li> |
4023 | <li class="listitem"><p><code class="varname">PATCH_SITES</code>: | | 4033 | <li class="listitem"><p><code class="varname">PATCH_SITES</code>: |
4024 | Primary location(s) for distribution patch files (see | | 4034 | Primary location(s) for distribution patch files (see |
4025 | <code class="varname">PATCHFILES</code> above) if not found locally.</p></li> | | 4035 | <code class="varname">PATCHFILES</code> above) if not found locally.</p></li> |
4026 | <li class="listitem"><p><code class="varname">PATCH_DIST_STRIP</code>: | | 4036 | <li class="listitem"><p><code class="varname">PATCH_DIST_STRIP</code>: |
4027 | an argument to <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?patch+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">patch</span>(1)</span></a> that sets the pathname strip count to | | 4037 | an argument to <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?patch+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">patch</span>(1)</span></a> that sets the pathname strip count to |
4028 | help find the correct files to patch. It defaults to | | 4038 | help find the correct files to patch. It defaults to |
4029 | <span class="command"><strong>-p0</strong></span>.</p></li> | | 4039 | <span class="command"><strong>-p0</strong></span>.</p></li> |
4030 | </ul></div> | | 4040 | </ul></div> |
4031 | <p>The third section contains the following variables. | | 4041 | <p>The third section contains the following variables. |
4032 | </p> | | 4042 | </p> |
4033 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4043 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4034 | <li class="listitem"><p><code class="varname">MAINTAINER</code> is the email | | 4044 | <li class="listitem"><p><code class="varname">MAINTAINER</code> is the email |
4035 | address of the person who feels responsible for this package, | | 4045 | address of the person who feels responsible for this package, |
4036 | and who is most likely to look at problems or questions regarding | | 4046 | and who is most likely to look at problems or questions regarding |
4037 | this package which have been reported with <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?send-pr+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">send-pr</span>(1)</span></a>. | | 4047 | this package which have been reported with <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?send-pr+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">send-pr</span>(1)</span></a>. |
4038 | Other developers may contact the <code class="varname">MAINTAINER</code> | | 4048 | Other developers may contact the <code class="varname">MAINTAINER</code> |
4039 | before making changes to the package, but are not required to | | 4049 | before making changes to the package, but are not required to |
4040 | do so. When packaging a new program, set <code class="varname">MAINTAINER</code> | | 4050 | do so. When packaging a new program, set <code class="varname">MAINTAINER</code> |
4041 | to yourself. If you really can't maintain the package for future | | 4051 | to yourself. If you really can't maintain the package for future |
4042 | updates, set it to | | 4052 | updates, set it to |
4043 | <code class="email"><<a class="email" href="mailto:pkgsrc-users@NetBSD.org">pkgsrc-users@NetBSD.org</a>></code>.</p></li> | | 4053 | <code class="email"><<a class="email" href="mailto:pkgsrc-users@NetBSD.org">pkgsrc-users@NetBSD.org</a>></code>.</p></li> |
4044 | <li class="listitem"><p><code class="varname">OWNER</code> should be used instead | | 4054 | <li class="listitem"><p><code class="varname">OWNER</code> should be used instead |
4045 | of <code class="varname">MAINTAINER</code> when you do not want other | | 4055 | of <code class="varname">MAINTAINER</code> when you do not want other |
4046 | developers to update or change the package without contacting | | 4056 | developers to update or change the package without contacting |
4047 | you first. A package Makefile should contain one of | | 4057 | you first. A package Makefile should contain one of |
4048 | <code class="varname">MAINTAINER</code> or <code class="varname">OWNER</code>, but | | 4058 | <code class="varname">MAINTAINER</code> or <code class="varname">OWNER</code>, but |
4049 | not both. </p></li> | | 4059 | not both. </p></li> |
4050 | <li class="listitem"><p><code class="varname">HOMEPAGE</code> is a URL where users can | | 4060 | <li class="listitem"><p><code class="varname">HOMEPAGE</code> is a URL where users can |
4051 | find more information about the package.</p></li> | | 4061 | find more information about the package.</p></li> |
4052 | <li class="listitem"><p><code class="varname">COMMENT</code> is a one-line | | 4062 | <li class="listitem"><p><code class="varname">COMMENT</code> is a one-line |
4053 | description of the package (should not include the package | | 4063 | description of the package (should not include the package |
4054 | name).</p></li> | | 4064 | name).</p></li> |
4055 | </ul></div> | | 4065 | </ul></div> |
4056 | <p>Other variables that affect the build: | | 4066 | <p>Other variables that affect the build: |
4057 | </p> | | 4067 | </p> |
4058 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> | | 4068 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> |
4059 | <p><code class="varname">WRKSRC</code>: The directory where the | | 4069 | <p><code class="varname">WRKSRC</code>: The directory where the |
4060 | interesting distribution files of the package are found. The | | 4070 | interesting distribution files of the package are found. The |
4061 | default is <code class="filename">${WRKDIR}/${DISTNAME}</code>, which | | 4071 | default is <code class="filename">${WRKDIR}/${DISTNAME}</code>, which |
4062 | works for most packages.</p> | | 4072 | works for most packages.</p> |
4063 | <p>If a package doesn't create a subdirectory for itself | | 4073 | <p>If a package doesn't create a subdirectory for itself |
4064 | (most GNU software does, for instance), but extracts itself in | | 4074 | (most GNU software does, for instance), but extracts itself in |
4065 | the current directory, you should set | | 4075 | the current directory, you should set |
4066 | <code class="varname">WRKSRC=${WRKDIR}</code>.</p> | | 4076 | <code class="varname">WRKSRC=${WRKDIR}</code>.</p> |
4067 | <p>If a package doesn't create a subdirectory with the | | 4077 | <p>If a package doesn't create a subdirectory with the |
4068 | name of <code class="varname">DISTNAME</code> but some different name, | | 4078 | name of <code class="varname">DISTNAME</code> but some different name, |
4069 | set <code class="varname">WRKSRC</code> to point to the proper name in | | 4079 | set <code class="varname">WRKSRC</code> to point to the proper name in |
4070 | <code class="filename">${WRKDIR}</code>, for example | | 4080 | <code class="filename">${WRKDIR}</code>, for example |
4071 | <code class="varname">WRKSRC=${WRKDIR}/${DISTNAME}/unix</code>. See | | 4081 | <code class="varname">WRKSRC=${WRKDIR}/${DISTNAME}/unix</code>. See |
4072 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/lang/tcl/README.html" target="_top"><code class="filename">lang/tcl</code></a> and <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/x11/tk/README.html" target="_top"><code class="filename">x11/tk</code></a> for other examples.</p> | | 4082 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/lang/tcl/README.html" target="_top"><code class="filename">lang/tcl</code></a> and <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/x11/tk/README.html" target="_top"><code class="filename">x11/tk</code></a> for other examples.</p> |
4073 | <p>The name of the working directory created by pkgsrc is | | 4083 | <p>The name of the working directory created by pkgsrc is |
4074 | taken from the <code class="varname">WRKDIR_BASENAME</code> | | 4084 | taken from the <code class="varname">WRKDIR_BASENAME</code> |
4075 | variable. By default, its value is | | 4085 | variable. By default, its value is |
4076 | <code class="filename">work</code>. If you want to use the same | | 4086 | <code class="filename">work</code>. If you want to use the same |
4077 | pkgsrc tree for building different kinds of binary packages, | | 4087 | pkgsrc tree for building different kinds of binary packages, |
4078 | you can change the variable according to your needs. Two | | 4088 | you can change the variable according to your needs. Two |
4079 | other variables handle common cases of setting | | 4089 | other variables handle common cases of setting |
4080 | <code class="varname">WRKDIR_BASENAME</code> individually. If | | 4090 | <code class="varname">WRKDIR_BASENAME</code> individually. If |
4081 | <code class="varname">OBJHOSTNAME</code> is defined in | | 4091 | <code class="varname">OBJHOSTNAME</code> is defined in |
4082 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>, the first component of | | 4092 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>, the first component of |
4083 | the host's name is attached to the directory name. If | | 4093 | the host's name is attached to the directory name. If |
4084 | <code class="varname">OBJMACHINE</code> is defined, the platform name | | 4094 | <code class="varname">OBJMACHINE</code> is defined, the platform name |
4085 | is attached, which might look like | | 4095 | is attached, which might look like |
4086 | <code class="filename">work.i386</code> or | | 4096 | <code class="filename">work.i386</code> or |
4087 | <code class="filename">work.sparc</code>.</p> | | 4097 | <code class="filename">work.sparc</code>.</p> |
4088 | </li></ul></div> | | 4098 | </li></ul></div> |
4089 | <p>Please pay attention to the following gotchas:</p> | | 4099 | <p>Please pay attention to the following gotchas:</p> |
4090 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4100 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4091 | <li class="listitem"><p>Add <code class="varname">MANCOMPRESSED</code> if man pages are | | 4101 | <li class="listitem"><p>Add <code class="varname">MANCOMPRESSED</code> if man pages are |
4092 | installed in compressed form by the package. For packages using | | 4102 | installed in compressed form by the package. For packages using |
4093 | BSD-style makefiles which honor MANZ, there is | | 4103 | BSD-style makefiles which honor MANZ, there is |
4094 | <code class="varname">MANCOMPRESSED_IF_MANZ</code>.</p></li> | | 4104 | <code class="varname">MANCOMPRESSED_IF_MANZ</code>.</p></li> |
4095 | <li class="listitem"><p>Replace <code class="filename">/usr/local</code> with | | 4105 | <li class="listitem"><p>Replace <code class="filename">/usr/local</code> with |
4096 | <span class="quote">“<span class="quote">${PREFIX}</span>”</span> in all files (see patches, | | 4106 | <span class="quote">“<span class="quote">${PREFIX}</span>”</span> in all files (see patches, |
4097 | below).</p></li> | | 4107 | below).</p></li> |
4098 | <li class="listitem"><p>If the package installs any info files, see <a class="xref" href="#faq.info-files" title="19.6.7. Packages installing info files">Section 19.6.7, “Packages installing info files”</a>.</p></li> | | 4108 | <li class="listitem"><p>If the package installs any info files, see <a class="xref" href="#faq.info-files" title="19.6.7. Packages installing info files">Section 19.6.7, “Packages installing info files”</a>.</p></li> |
4099 | </ul></div> | | 4109 | </ul></div> |
4100 | </div> | | 4110 | </div> |
4101 | <div class="sect1"> | | 4111 | <div class="sect1"> |
4102 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4112 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4103 | <a name="components.distinfo"></a>11.2. <code class="filename">distinfo</code> | | 4113 | <a name="components.distinfo"></a>11.2. <code class="filename">distinfo</code> |
4104 | </h2></div></div></div> | | 4114 | </h2></div></div></div> |
4105 | <p>The <code class="filename">distinfo</code> file contains the message | | 4115 | <p>The <code class="filename">distinfo</code> file contains the message |
4106 | digest, or checksum, of each distfile needed for the package. This | | 4116 | digest, or checksum, of each distfile needed for the package. This |
4107 | ensures that the distfiles retrieved from the Internet have not been | | 4117 | ensures that the distfiles retrieved from the Internet have not been |
4108 | corrupted during transfer or altered by a malign force to introduce | | 4118 | corrupted during transfer or altered by a malign force to introduce |
4109 | a security hole. Due to recent rumor about weaknesses of digest | | 4119 | a security hole. Due to recent rumor about weaknesses of digest |
4110 | algorithms, all distfiles are protected using both SHA1 and RMD160 | | 4120 | algorithms, all distfiles are protected using both SHA1 and RMD160 |
4111 | message digests, as well as the file size.</p> | | 4121 | message digests, as well as the file size.</p> |
4112 | <p>The <code class="filename">distinfo</code> file also contains the | | 4122 | <p>The <code class="filename">distinfo</code> file also contains the |
4113 | checksums for all the patches found in the | | 4123 | checksums for all the patches found in the |
4114 | <code class="filename">patches</code> directory (see <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “patches/*”</a>).</p> | | 4124 | <code class="filename">patches</code> directory (see <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “patches/*”</a>).</p> |
4115 | <p>To regenerate the <code class="filename">distinfo</code> file, use the | | 4125 | <p>To regenerate the <code class="filename">distinfo</code> file, use the |
4116 | <span class="command"><strong>make makedistinfo</strong></span> or <span class="command"><strong>make mdi</strong></span> | | 4126 | <span class="command"><strong>make makedistinfo</strong></span> or <span class="command"><strong>make mdi</strong></span> |
4117 | command.</p> | | 4127 | command.</p> |
4118 | <p>Some packages have different sets of distfiles depending on | | 4128 | <p>Some packages have different sets of distfiles depending on |
4119 | the platform, for example <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/lang/openjdk7/README.html" target="_top"><code class="filename">lang/openjdk7</code></a>. These are kept in the same | | 4129 | the platform, for example <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/lang/openjdk7/README.html" target="_top"><code class="filename">lang/openjdk7</code></a>. These are kept in the same |
4120 | <code class="filename">distinfo</code> file and care should be taken when | | 4130 | <code class="filename">distinfo</code> file and care should be taken when |
4121 | upgrading such a package to ensure distfile information is not | | 4131 | upgrading such a package to ensure distfile information is not |
4122 | lost.</p> | | 4132 | lost.</p> |
4123 | </div> | | 4133 | </div> |
4124 | <div class="sect1"> | | 4134 | <div class="sect1"> |
4125 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4135 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4126 | <a name="components.patches"></a>11.3. patches/*</h2></div></div></div> | | 4136 | <a name="components.patches"></a>11.3. patches/*</h2></div></div></div> |
4127 | <p>Many packages still don't work out-of-the box on the various | | 4137 | <p>Many packages still don't work out-of-the box on the various |
4128 | platforms that are supported by pkgsrc. Therefore, a number of custom | | 4138 | platforms that are supported by pkgsrc. Therefore, a number of custom |
4129 | patch files are needed to make the package work. These patch files are | | 4139 | patch files are needed to make the package work. These patch files are |
4130 | found in the <code class="filename">patches/</code> directory.</p> | | 4140 | found in the <code class="filename">patches/</code> directory.</p> |
4131 | <p>In the <span class="emphasis"><em>patch</em></span> phase, these patches are | | 4141 | <p>In the <span class="emphasis"><em>patch</em></span> phase, these patches are |
4132 | applied to the files in <code class="varname">WRKSRC</code> directory after | | 4142 | applied to the files in <code class="varname">WRKSRC</code> directory after |
4133 | extracting them, in <a class="ulink" href="http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_13_03" target="_top">alphabetic | | 4143 | extracting them, in <a class="ulink" href="http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_13_03" target="_top">alphabetic |
4134 | order</a>.</p> | | 4144 | order</a>.</p> |
4135 | <div class="sect2"> | | 4145 | <div class="sect2"> |
4136 | <div class="titlepage"><div><div><h3 class="title"> | | 4146 | <div class="titlepage"><div><div><h3 class="title"> |
4137 | <a name="components.patch.structure"></a>11.3.1. Structure of a single patch file</h3></div></div></div> | | 4147 | <a name="components.patch.structure"></a>11.3.1. Structure of a single patch file</h3></div></div></div> |
4138 | <p>The <code class="filename">patch-*</code> files should be in | | 4148 | <p>The <code class="filename">patch-*</code> files should be in |
4139 | <span class="command"><strong>diff -bu</strong></span> format, and apply without a fuzz to avoid | | 4149 | <span class="command"><strong>diff -bu</strong></span> format, and apply without a fuzz to avoid |
4140 | problems. (To force patches to apply with fuzz you can set | | 4150 | problems. (To force patches to apply with fuzz you can set |
4141 | <code class="varname">PATCH_FUZZ_FACTOR=-F2</code>). Furthermore, each patch | | 4151 | <code class="varname">PATCH_FUZZ_FACTOR=-F2</code>). Furthermore, each patch |
4142 | should contain only changes for a single file, and no file should be | | 4152 | should contain only changes for a single file, and no file should be |
4143 | patched by more than one patch file. This helps to keep future | | 4153 | patched by more than one patch file. This helps to keep future |
4144 | modifications simple.</p> | | 4154 | modifications simple.</p> |
4145 | <p>Each patch file is structured as follows: In the first line, | | 4155 | <p>Each patch file is structured as follows: In the first line, |
4146 | there is the RCS Id of the patch itself. The second line should be | | 4156 | there is the RCS Id of the patch itself. The second line should be |
4147 | empty for aesthetic reasons. After that, there should be a comment for | | 4157 | empty for aesthetic reasons. After that, there should be a comment for |
4148 | each change that the patch does. There are a number of standard | | 4158 | each change that the patch does. There are a number of standard |
4149 | cases:</p> | | 4159 | cases:</p> |
4150 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4160 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4151 | <li class="listitem"><p>Patches for commonly known vulnerabilities should | | 4161 | <li class="listitem"><p>Patches for commonly known vulnerabilities should |
4152 | mention the vulnerability ID (CAN, CVE).</p></li> | | 4162 | mention the vulnerability ID (CAN, CVE).</p></li> |
4153 | <li class="listitem"><p>Patches that change source code should mention the | | 4163 | <li class="listitem"><p>Patches that change source code should mention the |
4154 | platform and other environment (for example, the compiler) that the | | 4164 | platform and other environment (for example, the compiler) that the |
4155 | patch is needed for.</p></li> | | 4165 | patch is needed for.</p></li> |
4156 | </ul></div> | | 4166 | </ul></div> |
4157 | <p>In all, the patch should be commented so that any | | 4167 | <p>In all, the patch should be commented so that any |
4158 | developer who knows the code of the application can make some use of | | 4168 | developer who knows the code of the application can make some use of |
4159 | the patch. Special care should be taken for the upstream developers, | | 4169 | the patch. Special care should be taken for the upstream developers, |
4160 | since we generally want that they accept our patches, so we have less | | 4170 | since we generally want that they accept our patches, so we have less |
4161 | work in the future.</p> | | 4171 | work in the future.</p> |
4162 | </div> | | 4172 | </div> |
4163 | <div class="sect2"> | | 4173 | <div class="sect2"> |
4164 | <div class="titlepage"><div><div><h3 class="title"> | | 4174 | <div class="titlepage"><div><div><h3 class="title"> |
4165 | <a name="components.patches.caveats"></a>11.3.2. Creating patch files</h3></div></div></div> | | 4175 | <a name="components.patches.caveats"></a>11.3.2. Creating patch files</h3></div></div></div> |
4166 | <p>One important thing to mention is to pay attention that no RCS | | 4176 | <p>One important thing to mention is to pay attention that no RCS |
4167 | IDs get stored in the patch files, as these will cause problems when | | 4177 | IDs get stored in the patch files, as these will cause problems when |
4168 | later checked into the NetBSD CVS tree. Use the | | 4178 | later checked into the NetBSD CVS tree. Use the |
4169 | <span class="command"><strong>pkgdiff</strong></span> command from the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a> package to avoid these | | 4179 | <span class="command"><strong>pkgdiff</strong></span> command from the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a> package to avoid these |
4170 | problems.</p> | | 4180 | problems.</p> |
4171 | <p>For even more automation, we recommend using | | 4181 | <p>For even more automation, we recommend using |
4172 | <span class="command"><strong>mkpatches</strong></span> from the same package to make a | | 4182 | <span class="command"><strong>mkpatches</strong></span> from the same package to make a |
4173 | whole set of patches. You just have to backup files before you | | 4183 | whole set of patches. You just have to backup files before you |
4174 | edit them to <code class="filename">filename.orig</code>, e.g. with | | 4184 | edit them to <code class="filename">filename.orig</code>, e.g. with |
4175 | <span class="command"><strong>cp -p filename filename.orig</strong></span> or, easier, by | | 4185 | <span class="command"><strong>cp -p filename filename.orig</strong></span> or, easier, by |
4176 | using <span class="command"><strong>pkgvi</strong></span> again from the same package. If | | 4186 | using <span class="command"><strong>pkgvi</strong></span> again from the same package. If |
4177 | you upgrade a package this way, you can easily compare the new | | 4187 | you upgrade a package this way, you can easily compare the new |
4178 | set of patches with the previously existing one with | | 4188 | set of patches with the previously existing one with |
4179 | <span class="command"><strong>patchdiff</strong></span>. The files in <code class="filename">patches</code> | | 4189 | <span class="command"><strong>patchdiff</strong></span>. The files in <code class="filename">patches</code> |
4180 | are replaced by new files, so carefully check if you want to take all | | 4190 | are replaced by new files, so carefully check if you want to take all |
4181 | the changes.</p> | | 4191 | the changes.</p> |
4182 | <p>When you have finished a package, remember to generate | | 4192 | <p>When you have finished a package, remember to generate |
4183 | the checksums for the patch files by using the <span class="command"><strong>make | | 4193 | the checksums for the patch files by using the <span class="command"><strong>make |
4184 | makepatchsum</strong></span> command, see <a class="xref" href="#components.distinfo" title="11.2. distinfo">Section 11.2, “<code class="filename">distinfo</code>”</a>.</p> | | 4194 | makepatchsum</strong></span> command, see <a class="xref" href="#components.distinfo" title="11.2. distinfo">Section 11.2, “<code class="filename">distinfo</code>”</a>.</p> |
4185 | <p>When adding a patch that corrects a problem in the | | 4195 | <p>When adding a patch that corrects a problem in the |
4186 | distfile (rather than e.g. enforcing pkgsrc's view of where | | 4196 | distfile (rather than e.g. enforcing pkgsrc's view of where |
4187 | man pages should go), send the patch as a bug report to the | | 4197 | man pages should go), send the patch as a bug report to the |
4188 | maintainer. This benefits non-pkgsrc users of the package, | | 4198 | maintainer. This benefits non-pkgsrc users of the package, |
4189 | and usually makes it possible to remove the patch in future | | 4199 | and usually makes it possible to remove the patch in future |
4190 | version.</p> | | 4200 | version.</p> |
4191 | <p>The file names of the patch files are usually of the form | | 4201 | <p>The file names of the patch files are usually of the form |
4192 | <code class="filename">patch-<em class="replaceable"><code>path_to_file__with__underscores.c</code></em></code>. | | 4202 | <code class="filename">patch-<em class="replaceable"><code>path_to_file__with__underscores.c</code></em></code>. |
4193 | Many packages still use the previous convention | | 4203 | Many packages still use the previous convention |
4194 | <code class="filename">patch-<em class="replaceable"><code>[a-z][a-z]</code></em></code>, | | 4204 | <code class="filename">patch-<em class="replaceable"><code>[a-z][a-z]</code></em></code>, |
4195 | but new patches should be of the form containing the filename. | | 4205 | but new patches should be of the form containing the filename. |
4196 | <span class="command"><strong>mkpatches</strong></span> included in <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a> takes care of the name | | 4206 | <span class="command"><strong>mkpatches</strong></span> included in <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a> takes care of the name |
4197 | automatically.</p> | | 4207 | automatically.</p> |
4198 | </div> | | 4208 | </div> |
4199 | <div class="sect2"> | | 4209 | <div class="sect2"> |
4200 | <div class="titlepage"><div><div><h3 class="title"> | | 4210 | <div class="titlepage"><div><div><h3 class="title"> |
4201 | <a name="components.patches.sources"></a>11.3.3. Sources where the patch files come from</h3></div></div></div> | | 4211 | <a name="components.patches.sources"></a>11.3.3. Sources where the patch files come from</h3></div></div></div> |
4202 | <p>If you want to share patches between multiple packages | | 4212 | <p>If you want to share patches between multiple packages |
4203 | in pkgsrc, e.g. because they use the same distfiles, set | | 4213 | in pkgsrc, e.g. because they use the same distfiles, set |
4204 | <code class="varname">PATCHDIR</code> to the path where the patch files | | 4214 | <code class="varname">PATCHDIR</code> to the path where the patch files |
4205 | can be found, e.g.:</p> | | 4215 | can be found, e.g.:</p> |
4206 | <pre class="programlisting"> | | 4216 | <pre class="programlisting"> |
4207 | PATCHDIR= ${.CURDIR}/../xemacs/patches | | 4217 | PATCHDIR= ${.CURDIR}/../xemacs/patches |
4208 | </pre> | | 4218 | </pre> |
4209 | <p>Patch files that are distributed by the author or other | | 4219 | <p>Patch files that are distributed by the author or other |
4210 | maintainers can be listed in | | 4220 | maintainers can be listed in |
4211 | <code class="varname">PATCHFILES</code>.</p> | | 4221 | <code class="varname">PATCHFILES</code>.</p> |
4212 | <p>If it is desired to store any patches that should not be | | 4222 | <p>If it is desired to store any patches that should not be |
4213 | committed into pkgsrc, they can be kept outside the pkgsrc | | 4223 | committed into pkgsrc, they can be kept outside the pkgsrc |
4214 | tree in the <code class="filename">$LOCALPATCHES</code> directory. The | | 4224 | tree in the <code class="filename">$LOCALPATCHES</code> directory. The |
4215 | directory tree there is expected to have the same | | 4225 | directory tree there is expected to have the same |
4216 | <span class="quote">“<span class="quote">category/package</span>”</span> structure as pkgsrc, and | | 4226 | <span class="quote">“<span class="quote">category/package</span>”</span> structure as pkgsrc, and |
4217 | patches are expected to be stored inside these dirs (also | | 4227 | patches are expected to be stored inside these dirs (also |
4218 | known as <code class="filename">$LOCALPATCHES/$PKGPATH</code>). For | | 4228 | known as <code class="filename">$LOCALPATCHES/$PKGPATH</code>). For |
4219 | example, if you want to keep a private patch for | | 4229 | example, if you want to keep a private patch for |
4220 | <code class="filename">pkgsrc/graphics/png</code>, keep it in | | 4230 | <code class="filename">pkgsrc/graphics/png</code>, keep it in |
4221 | <code class="filename">$LOCALPATCHES/graphics/png/mypatch</code>. All | | 4231 | <code class="filename">$LOCALPATCHES/graphics/png/mypatch</code>. All |
4222 | files in the named directory are expected to be patch files, | | 4232 | files in the named directory are expected to be patch files, |
4223 | and <span class="emphasis"><em>they are applied after pkgsrc patches are | | 4233 | and <span class="emphasis"><em>they are applied after pkgsrc patches are |
4224 | applied</em></span>.</p> | | 4234 | applied</em></span>.</p> |
4225 | </div> | | 4235 | </div> |
4226 | <div class="sect2"> | | 4236 | <div class="sect2"> |
4227 | <div class="titlepage"><div><div><h3 class="title"> | | 4237 | <div class="titlepage"><div><div><h3 class="title"> |
4228 | <a name="components.patches.guidelines"></a>11.3.4. Patching guidelines</h3></div></div></div> | | 4238 | <a name="components.patches.guidelines"></a>11.3.4. Patching guidelines</h3></div></div></div> |
4229 | <p>When fixing a portability issue in the code do not use | | 4239 | <p>When fixing a portability issue in the code do not use |
4230 | preprocessor magic to check for the current operating system nor | | 4240 | preprocessor magic to check for the current operating system nor |
4231 | platform. Doing so hurts portability to other platforms because | | 4241 | platform. Doing so hurts portability to other platforms because |
4232 | the OS-specific details are not abstracted appropriately.</p> | | 4242 | the OS-specific details are not abstracted appropriately.</p> |
4233 | <p>The general rule to follow is: instead of checking for the | | 4243 | <p>The general rule to follow is: instead of checking for the |
4234 | operating system the application is being built on, check for the | | 4244 | operating system the application is being built on, check for the |
4235 | specific <span class="emphasis"><em>features</em></span> you need. For example, | | 4245 | specific <span class="emphasis"><em>features</em></span> you need. For example, |
4236 | instead of assuming that kqueue is available under NetBSD and | | 4246 | instead of assuming that kqueue is available under NetBSD and |
4237 | using the <code class="varname">__NetBSD__</code> macro to conditionalize | | 4247 | using the <code class="varname">__NetBSD__</code> macro to conditionalize |
4238 | kqueue support, add a check that detects kqueue itself — | | 4248 | kqueue support, add a check that detects kqueue itself — |
4239 | yes, this generally involves patching the | | 4249 | yes, this generally involves patching the |
4240 | <span class="command"><strong>configure</strong></span> script. There is absolutely nothing | | 4250 | <span class="command"><strong>configure</strong></span> script. There is absolutely nothing |
4241 | that prevents some OSes from adopting interfaces from other OSes | | 4251 | that prevents some OSes from adopting interfaces from other OSes |
4242 | (e.g. Linux implementing kqueue), something that the above checks | | 4252 | (e.g. Linux implementing kqueue), something that the above checks |
4243 | cannot take into account.</p> | | 4253 | cannot take into account.</p> |
4244 | <p>Of course, checking for features generally involves more | | 4254 | <p>Of course, checking for features generally involves more |
4245 | work on the developer's side, but the resulting changes are | | 4255 | work on the developer's side, but the resulting changes are |
4246 | cleaner and there are chances they will work on many other | | 4256 | cleaner and there are chances they will work on many other |
4247 | platforms. Not to mention that there are higher chances of being | | 4257 | platforms. Not to mention that there are higher chances of being |
4248 | later integrated into the mainstream sources. Remember: | | 4258 | later integrated into the mainstream sources. Remember: |
4249 | <span class="emphasis"><em>It doesn't work unless it is right!</em></span></p> | | 4259 | <span class="emphasis"><em>It doesn't work unless it is right!</em></span></p> |
4250 | <p>Some typical examples:</p> | | 4260 | <p>Some typical examples:</p> |
4251 | <div class="table"> | | 4261 | <div class="table"> |
4252 | <a name="patch-examples"></a><p class="title"><b>Table 11.1. Patching examples</b></p> | | 4262 | <a name="patch-examples"></a><p class="title"><b>Table 11.1. Patching examples</b></p> |
4253 | <div class="table-contents"><table summary="Patching examples" border="1"> | | 4263 | <div class="table-contents"><table summary="Patching examples" border="1"> |
4254 | <colgroup> | | 4264 | <colgroup> |
4255 | <col> | | 4265 | <col> |
4256 | <col> | | 4266 | <col> |
4257 | <col> | | 4267 | <col> |
4258 | </colgroup> | | 4268 | </colgroup> |
4259 | <thead><tr> | | 4269 | <thead><tr> |
4260 | <th>Where</th> | | 4270 | <th>Where</th> |
4261 | <th>Incorrect</th> | | 4271 | <th>Incorrect</th> |
4262 | <th>Correct</th> | | 4272 | <th>Correct</th> |
4263 | </tr></thead> | | 4273 | </tr></thead> |
4264 | <tbody> | | 4274 | <tbody> |
4265 | <tr> | | 4275 | <tr> |
4266 | <td>configure script</td> | | 4276 | <td>configure script</td> |
4267 | <td> | | 4277 | <td> |
4268 | <pre class="programlisting"> | | 4278 | <pre class="programlisting"> |
4269 | case ${target_os} in | | 4279 | case ${target_os} in |
4270 | netbsd*) have_kvm=yes ;; | | 4280 | netbsd*) have_kvm=yes ;; |
4271 | *) have_kvm=no ;; | | 4281 | *) have_kvm=no ;; |
4272 | esac | | 4282 | esac |
4273 | </pre> | | 4283 | </pre> |
4274 | </td> | | 4284 | </td> |
4275 | <td> | | 4285 | <td> |
4276 | <pre class="programlisting"> | | 4286 | <pre class="programlisting"> |
4277 | AC_CHECK_LIB(kvm, kvm_open, have_kvm=yes, have_kvm=no) | | 4287 | AC_CHECK_LIB(kvm, kvm_open, have_kvm=yes, have_kvm=no) |
| @@ -4324,2003 +4334,2005 @@ monitor_file(...) | | | @@ -4324,2003 +4334,2005 @@ monitor_file(...) |
4324 | #endif | | 4334 | #endif |
4325 | } | | 4335 | } |
4326 | </pre> | | 4336 | </pre> |
4327 | </td> | | 4337 | </td> |
4328 | </tr> | | 4338 | </tr> |
4329 | </tbody> | | 4339 | </tbody> |
4330 | </table></div> | | 4340 | </table></div> |
4331 | </div> | | 4341 | </div> |
4332 | <br class="table-break"><p>For more information, please read the <span class="emphasis"><em>Making | | 4342 | <br class="table-break"><p>For more information, please read the <span class="emphasis"><em>Making |
4333 | packager-friendly software</em></span> article (<a class="ulink" href="http://www.onlamp.com/pub/a/onlamp/2005/03/31/packaging.html" target="_top">part | | 4343 | packager-friendly software</em></span> article (<a class="ulink" href="http://www.onlamp.com/pub/a/onlamp/2005/03/31/packaging.html" target="_top">part |
4334 | 1</a>, <a class="ulink" href="http://www.oreillynet.com/pub/a/onlamp/2005/04/28/packaging2.html" target="_top">part | | 4344 | 1</a>, <a class="ulink" href="http://www.oreillynet.com/pub/a/onlamp/2005/04/28/packaging2.html" target="_top">part |
4335 | 2</a>). It summarizes multiple details on how to make | | 4345 | 2</a>). It summarizes multiple details on how to make |
4336 | software easier to package; all the suggestions in it were | | 4346 | software easier to package; all the suggestions in it were |
4337 | collected from our experience in pkgsrc work, so they are possibly | | 4347 | collected from our experience in pkgsrc work, so they are possibly |
4338 | helpful when creating patches too.</p> | | 4348 | helpful when creating patches too.</p> |
4339 | </div> | | 4349 | </div> |
4340 | <div class="sect2"> | | 4350 | <div class="sect2"> |
4341 | <div class="titlepage"><div><div><h3 class="title"> | | 4351 | <div class="titlepage"><div><div><h3 class="title"> |
4342 | <a name="components.patches.feedback"></a>11.3.5. Feedback to the author</h3></div></div></div> | | 4352 | <a name="components.patches.feedback"></a>11.3.5. Feedback to the author</h3></div></div></div> |
4343 | <p>Always, always, <span class="strong"><strong>always</strong></span> | | 4353 | <p>Always, always, <span class="strong"><strong>always</strong></span> |
4344 | feed back any <span class="emphasis"><em>portability fixes</em></span> or | | 4354 | feed back any <span class="emphasis"><em>portability fixes</em></span> or |
4345 | improvements you do to a package to the mainstream developers. | | 4355 | improvements you do to a package to the mainstream developers. |
4346 | This is the only way to get their attention on portability issues | | 4356 | This is the only way to get their attention on portability issues |
4347 | and to ensure that future versions can be built out-of-the box on | | 4357 | and to ensure that future versions can be built out-of-the box on |
4348 | NetBSD. Furthermore, any user that gets newer distfiles will get | | 4358 | NetBSD. Furthermore, any user that gets newer distfiles will get |
4349 | the fixes straight from the packaged code.</p> | | 4359 | the fixes straight from the packaged code.</p> |
4350 | <p>This generally involves cleaning up the patches | | 4360 | <p>This generally involves cleaning up the patches |
4351 | (because sometimes the patches that are | | 4361 | (because sometimes the patches that are |
4352 | added to pkgsrc are quick hacks), filing bug reports in the | | 4362 | added to pkgsrc are quick hacks), filing bug reports in the |
4353 | appropriate trackers for the projects and working with the | | 4363 | appropriate trackers for the projects and working with the |
4354 | mainstream authors to accept your changes. It is | | 4364 | mainstream authors to accept your changes. It is |
4355 | <span class="emphasis"><em>extremely important</em></span> that you do it so that | | 4365 | <span class="emphasis"><em>extremely important</em></span> that you do it so that |
4356 | the packages in pkgsrc are kept simple and thus further changes | | 4366 | the packages in pkgsrc are kept simple and thus further changes |
4357 | can be done without much hassle.</p> | | 4367 | can be done without much hassle.</p> |
4358 | <p>When you have done this, please add a URL to the upstream | | 4368 | <p>When you have done this, please add a URL to the upstream |
4359 | bug report to the patch comment.</p> | | 4369 | bug report to the patch comment.</p> |
4360 | <p>Support the idea of free software!</p> | | 4370 | <p>Support the idea of free software!</p> |
4361 | </div> | | 4371 | </div> |
4362 | </div> | | 4372 | </div> |
4363 | <div class="sect1"> | | 4373 | <div class="sect1"> |
4364 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4374 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4365 | <a name="other-mandatory-files"></a>11.4. Other mandatory files</h2></div></div></div> | | 4375 | <a name="other-mandatory-files"></a>11.4. Other mandatory files</h2></div></div></div> |
4366 | <div class="variablelist"><dl class="variablelist"> | | 4376 | <div class="variablelist"><dl class="variablelist"> |
4367 | <dt><span class="term"><code class="filename">DESCR</code></span></dt> | | 4377 | <dt><span class="term"><code class="filename">DESCR</code></span></dt> |
4368 | <dd><p>A multi-line description of the piece of software. This should include | | 4378 | <dd><p>A multi-line description of the piece of software. This should include |
4369 | any credits where they are due. Please bear in mind that others do not | | 4379 | any credits where they are due. Please bear in mind that others do not |
4370 | share your sense of humour (or spelling idiosyncrasies), and that others | | 4380 | share your sense of humour (or spelling idiosyncrasies), and that others |
4371 | will read everything that you write here.</p></dd> | | 4381 | will read everything that you write here.</p></dd> |
4372 | <dt><span class="term"><code class="filename">PLIST</code></span></dt> | | 4382 | <dt><span class="term"><code class="filename">PLIST</code></span></dt> |
4373 | <dd><p>This file governs the files that are installed on your | | 4383 | <dd><p>This file governs the files that are installed on your |
4374 | system: all the binaries, manual pages, etc. There are other | | 4384 | system: all the binaries, manual pages, etc. There are other |
4375 | directives which may be entered in this file, to control the | | 4385 | directives which may be entered in this file, to control the |
4376 | creation and deletion of directories, and the location of | | 4386 | creation and deletion of directories, and the location of |
4377 | inserted files. See <a class="xref" href="#plist" title="Chapter 13. PLIST issues">Chapter 13, <i>PLIST issues</i></a> for more | | 4387 | inserted files. See <a class="xref" href="#plist" title="Chapter 13. PLIST issues">Chapter 13, <i>PLIST issues</i></a> for more |
4378 | information.</p></dd> | | 4388 | information.</p></dd> |
4379 | </dl></div> | | 4389 | </dl></div> |
4380 | </div> | | 4390 | </div> |
4381 | <div class="sect1"> | | 4391 | <div class="sect1"> |
4382 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4392 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4383 | <a name="components.optional"></a>11.5. Optional files</h2></div></div></div> | | 4393 | <a name="components.optional"></a>11.5. Optional files</h2></div></div></div> |
4384 | <div class="sect2"> | | 4394 | <div class="sect2"> |
4385 | <div class="titlepage"><div><div><h3 class="title"> | | 4395 | <div class="titlepage"><div><div><h3 class="title"> |
4386 | <a name="components.optional.bin"></a>11.5.1. Files affecting the binary package</h3></div></div></div> | | 4396 | <a name="components.optional.bin"></a>11.5.1. Files affecting the binary package</h3></div></div></div> |
4387 | <div class="variablelist"><dl class="variablelist"> | | 4397 | <div class="variablelist"><dl class="variablelist"> |
4388 | <dt><span class="term"><code class="filename">INSTALL</code></span></dt> | | 4398 | <dt><span class="term"><code class="filename">INSTALL</code></span></dt> |
4389 | <dd> | | 4399 | <dd> |
4390 | <p>This shell script is invoked twice by <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>. | | 4400 | <p>This shell script is invoked twice by <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>. |
4391 | First time after package extraction and before files are | | 4401 | First time after package extraction and before files are |
4392 | moved in place, the second time after the files to install | | 4402 | moved in place, the second time after the files to install |
4393 | are moved in place. This can be used to do any custom | | 4403 | are moved in place. This can be used to do any custom |
4394 | procedures not possible with @exec commands in | | 4404 | procedures not possible with @exec commands in |
4395 | <code class="filename">PLIST</code>. See <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a> and | | 4405 | <code class="filename">PLIST</code>. See <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a> and |
4396 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_create+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_create</span>(1)</span></a> for more information. See also <a class="xref" href="#files-and-dirs-outside-prefix" title="15.1. Files and directories outside the installation prefix">Section 15.1, “Files and directories outside the installation prefix”</a>. | | 4406 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_create+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_create</span>(1)</span></a> for more information. See also <a class="xref" href="#files-and-dirs-outside-prefix" title="15.1. Files and directories outside the installation prefix">Section 15.1, “Files and directories outside the installation prefix”</a>. |
4397 | Please note that you can modify variables in it easily by using | | 4407 | Please note that you can modify variables in it easily by using |
4398 | <code class="varname">FILES_SUBST</code> in the package's | | 4408 | <code class="varname">FILES_SUBST</code> in the package's |
4399 | <code class="filename">Makefile</code>:</p> | | 4409 | <code class="filename">Makefile</code>:</p> |
4400 | <pre class="programlisting"> | | 4410 | <pre class="programlisting"> |
4401 | FILES_SUBST+= SOMEVAR="somevalue" | | 4411 | FILES_SUBST+= SOMEVAR="somevalue" |
4402 | </pre> | | 4412 | </pre> |
4403 | <p>replaces "@SOMEVAR@" with <span class="quote">“<span class="quote">somevalue</span>”</span> in the | | 4413 | <p>replaces "@SOMEVAR@" with <span class="quote">“<span class="quote">somevalue</span>”</span> in the |
4404 | <code class="filename">INSTALL</code>. By default, substitution is | | 4414 | <code class="filename">INSTALL</code>. By default, substitution is |
4405 | performed for <code class="varname">PREFIX</code>, | | 4415 | performed for <code class="varname">PREFIX</code>, |
4406 | <code class="varname">LOCALBASE</code>, <code class="varname">X11BASE</code>, | | 4416 | <code class="varname">LOCALBASE</code>, <code class="varname">X11BASE</code>, |
4407 | <code class="varname">VARBASE</code>, and a few others, type | | 4417 | <code class="varname">VARBASE</code>, and a few others, type |
4408 | <span class="command"><strong>make help topic=FILES_SUBST</strong></span> for a | | 4418 | <span class="command"><strong>make help topic=FILES_SUBST</strong></span> for a |
4409 | complete list.</p> | | 4419 | complete list.</p> |
4410 | </dd> | | 4420 | </dd> |
4411 | <dt><span class="term"><code class="filename">DEINSTALL</code></span></dt> | | 4421 | <dt><span class="term"><code class="filename">DEINSTALL</code></span></dt> |
4412 | <dd><p>This script is executed before and after any files are removed. It is | | 4422 | <dd><p>This script is executed before and after any files are removed. It is |
4413 | this script's responsibility to clean up any additional messy details | | 4423 | this script's responsibility to clean up any additional messy details |
4414 | around the package's installation, since all pkg_delete knows is how to | | 4424 | around the package's installation, since all pkg_delete knows is how to |
4415 | delete the files created in the original distribution. | | 4425 | delete the files created in the original distribution. |
4416 | See <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> | | 4426 | See <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> |
4417 | and <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_create+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_create</span>(1)</span></a> for more information. | | 4427 | and <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_create+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_create</span>(1)</span></a> for more information. |
4418 | The same methods to replace variables can be used as for | | 4428 | The same methods to replace variables can be used as for |
4419 | the <code class="filename">INSTALL</code> file.</p></dd> | | 4429 | the <code class="filename">INSTALL</code> file.</p></dd> |
4420 | <dt><span class="term"><code class="filename">MESSAGE</code></span></dt> | | 4430 | <dt><span class="term"><code class="filename">MESSAGE</code></span></dt> |
4421 | <dd> | | 4431 | <dd> |
4422 | <p>This file is displayed after installation of the package. | | 4432 | <p>This file is displayed after installation of the package. |
4423 | Useful for things like legal notices on almost-free | | 4433 | Useful for things like legal notices on almost-free |
4424 | software and hints for updating config files after | | 4434 | software and hints for updating config files after |
4425 | installing modules for apache, PHP etc. | | 4435 | installing modules for apache, PHP etc. |
4426 | Please note that you can modify variables in it easily by using | | 4436 | Please note that you can modify variables in it easily by using |
4427 | <code class="varname">MESSAGE_SUBST</code> in the package's | | 4437 | <code class="varname">MESSAGE_SUBST</code> in the package's |
4428 | <code class="filename">Makefile</code>:</p> | | 4438 | <code class="filename">Makefile</code>:</p> |
4429 | <pre class="programlisting"> | | 4439 | <pre class="programlisting"> |
4430 | MESSAGE_SUBST+= SOMEVAR="somevalue" | | 4440 | MESSAGE_SUBST+= SOMEVAR="somevalue" |
4431 | </pre> | | 4441 | </pre> |
4432 | <p>replaces "${SOMEVAR}" with <span class="quote">“<span class="quote">somevalue</span>”</span> in | | 4442 | <p>replaces "${SOMEVAR}" with <span class="quote">“<span class="quote">somevalue</span>”</span> in |
4433 | <code class="filename">MESSAGE</code>. By default, substitution is | | 4443 | <code class="filename">MESSAGE</code>. By default, substitution is |
4434 | performed for <code class="varname">PKGNAME</code>, | | 4444 | performed for <code class="varname">PKGNAME</code>, |
4435 | <code class="varname">PKGBASE</code>, <code class="varname">PREFIX</code>, | | 4445 | <code class="varname">PKGBASE</code>, <code class="varname">PREFIX</code>, |
4436 | <code class="varname">LOCALBASE</code>, <code class="varname">X11PREFIX</code>, | | 4446 | <code class="varname">LOCALBASE</code>, <code class="varname">X11PREFIX</code>, |
4437 | <code class="varname">X11BASE</code>, | | 4447 | <code class="varname">X11BASE</code>, |
4438 | <code class="varname">PKG_SYSCONFDIR</code>, | | 4448 | <code class="varname">PKG_SYSCONFDIR</code>, |
4439 | <code class="varname">ROOT_GROUP</code>, and | | 4449 | <code class="varname">ROOT_GROUP</code>, and |
4440 | <code class="varname">ROOT_USER</code>.</p> | | 4450 | <code class="varname">ROOT_USER</code>.</p> |
4441 | <p>You can display a different or additional files by | | 4451 | <p>You can display a different or additional files by |
4442 | setting the <code class="varname">MESSAGE_SRC</code> variable. Its | | 4452 | setting the <code class="varname">MESSAGE_SRC</code> variable. Its |
4443 | default is <code class="filename">MESSAGE</code>, if the file | | 4453 | default is <code class="filename">MESSAGE</code>, if the file |
4444 | exists.</p> | | 4454 | exists.</p> |
4445 | </dd> | | 4455 | </dd> |
4446 | <dt><span class="term"><code class="filename">ALTERNATIVES</code></span></dt> | | 4456 | <dt><span class="term"><code class="filename">ALTERNATIVES</code></span></dt> |
4447 | <dd> | | 4457 | <dd> |
4448 | <p>This file is used by the alternatives framework. | | 4458 | <p>This file is used by the alternatives framework. |
4449 | It creates, configures, and destroys generic wrappers used to | | 4459 | It creates, configures, and destroys generic wrappers used to |
4450 | run programs with similar interfaces. | | 4460 | run programs with similar interfaces. |
4451 | See pkg_alternatives(8) from pkgtools/pkg_alternatives | | 4461 | See pkg_alternatives(8) from pkgtools/pkg_alternatives |
4452 | for more information.</p> | | 4462 | for more information.</p> |
4453 | <p>Each line of the file contains two filenames, first | | 4463 | <p>Each line of the file contains two filenames, first |
4454 | the wrapper and then the alternative provided by the package. | | 4464 | the wrapper and then the alternative provided by the package. |
4455 | Both paths are relative to <code class="varname">PREFIX</code>.</p> | | 4465 | Both paths are relative to <code class="varname">PREFIX</code>.</p> |
4456 | </dd> | | 4466 | </dd> |
4457 | </dl></div> | | 4467 | </dl></div> |
4458 | </div> | | 4468 | </div> |
4459 | <div class="sect2"> | | 4469 | <div class="sect2"> |
4460 | <div class="titlepage"><div><div><h3 class="title"> | | 4470 | <div class="titlepage"><div><div><h3 class="title"> |
4461 | <a name="components.optional.build"></a>11.5.2. Files affecting the build process</h3></div></div></div> | | 4471 | <a name="components.optional.build"></a>11.5.2. Files affecting the build process</h3></div></div></div> |
4462 | <div class="variablelist"><dl class="variablelist"> | | 4472 | <div class="variablelist"><dl class="variablelist"> |
4463 | <dt><span class="term"><code class="filename">Makefile.common</code></span></dt> | | 4473 | <dt><span class="term"><code class="filename">Makefile.common</code></span></dt> |
4464 | <dd><p>This file contains arbitrary things that could | | 4474 | <dd><p>This file contains arbitrary things that could |
4465 | also go into a <code class="filename">Makefile</code>, but its purpose is | | 4475 | also go into a <code class="filename">Makefile</code>, but its purpose is |
4466 | to be used by more than one package. This file should only be | | 4476 | to be used by more than one package. This file should only be |
4467 | used when the packages that will use the file are known in | | 4477 | used when the packages that will use the file are known in |
4468 | advance. For other purposes it is often better to write a | | 4478 | advance. For other purposes it is often better to write a |
4469 | <code class="filename">*.mk</code> file and give it a good name that | | 4479 | <code class="filename">*.mk</code> file and give it a good name that |
4470 | describes what it does.</p></dd> | | 4480 | describes what it does.</p></dd> |
4471 | <dt><span class="term"><code class="filename">buildlink3.mk</code></span></dt> | | 4481 | <dt><span class="term"><code class="filename">buildlink3.mk</code></span></dt> |
4472 | <dd><p>This file contains the dependency information | | 4482 | <dd><p>This file contains the dependency information |
4473 | for the buildlink3 framework (see <a class="xref" href="#buildlink" title="Chapter 14. Buildlink methodology">Chapter 14, <i>Buildlink methodology</i></a>).</p></dd> | | 4483 | for the buildlink3 framework (see <a class="xref" href="#buildlink" title="Chapter 14. Buildlink methodology">Chapter 14, <i>Buildlink methodology</i></a>).</p></dd> |
4474 | <dt><span class="term"><code class="filename">hacks.mk</code></span></dt> | | 4484 | <dt><span class="term"><code class="filename">hacks.mk</code></span></dt> |
4475 | <dd><p>This file contains workarounds for compiler bugs | | 4485 | <dd><p>This file contains workarounds for compiler bugs |
4476 | and similar things. It is included automatically by the pkgsrc | | 4486 | and similar things. It is included automatically by the pkgsrc |
4477 | infrastructure, so you don't need an extra | | 4487 | infrastructure, so you don't need an extra |
4478 | <code class="literal">.include</code> line for | | 4488 | <code class="literal">.include</code> line for |
4479 | it.</p></dd> | | 4489 | it.</p></dd> |
4480 | <dt><span class="term"><code class="filename">options.mk</code></span></dt> | | 4490 | <dt><span class="term"><code class="filename">options.mk</code></span></dt> |
4481 | <dd><p>This file contains the code for the | | 4491 | <dd><p>This file contains the code for the |
4482 | package-specific options (see <a class="xref" href="#options" title="Chapter 16. Options handling">Chapter 16, <i>Options handling</i></a>) that can be | | 4492 | package-specific options (see <a class="xref" href="#options" title="Chapter 16. Options handling">Chapter 16, <i>Options handling</i></a>) that can be |
4483 | selected by the user. If a package has only one or two options, | | 4493 | selected by the user. If a package has only one or two options, |
4484 | it is equally acceptable to put the code directly into the | | 4494 | it is equally acceptable to put the code directly into the |
4485 | <code class="filename">Makefile</code>.</p></dd> | | 4495 | <code class="filename">Makefile</code>.</p></dd> |
4486 | </dl></div> | | 4496 | </dl></div> |
4487 | </div> | | 4497 | </div> |
4488 | <div class="sect2"> | | 4498 | <div class="sect2"> |
4489 | <div class="titlepage"><div><div><h3 class="title"> | | 4499 | <div class="titlepage"><div><div><h3 class="title"> |
4490 | <a name="components.optional.none"></a>11.5.3. Files affecting nothing at all</h3></div></div></div> | | 4500 | <a name="components.optional.none"></a>11.5.3. Files affecting nothing at all</h3></div></div></div> |
4491 | <div class="variablelist"><dl class="variablelist"> | | 4501 | <div class="variablelist"><dl class="variablelist"> |
4492 | <dt><span class="term"><code class="filename">README*</code></span></dt> | | 4502 | <dt><span class="term"><code class="filename">README*</code></span></dt> |
4493 | <dd><p>These files do not take place in the creation of | | 4503 | <dd><p>These files do not take place in the creation of |
4494 | a package and thus are purely informative to the package | | 4504 | a package and thus are purely informative to the package |
4495 | developer.</p></dd> | | 4505 | developer.</p></dd> |
4496 | <dt><span class="term"><code class="filename">TODO</code></span></dt> | | 4506 | <dt><span class="term"><code class="filename">TODO</code></span></dt> |
4497 | <dd><p>This file contains things that need to be done | | 4507 | <dd><p>This file contains things that need to be done |
4498 | to make the package even | | 4508 | to make the package even |
4499 | better.</p></dd> | | 4509 | better.</p></dd> |
4500 | </dl></div> | | 4510 | </dl></div> |
4501 | </div> | | 4511 | </div> |
4502 | </div> | | 4512 | </div> |
4503 | <div class="sect1"> | | 4513 | <div class="sect1"> |
4504 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4514 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4505 | <a name="work-dir"></a>11.6. <code class="filename">work*</code> | | 4515 | <a name="work-dir"></a>11.6. <code class="filename">work*</code> |
4506 | </h2></div></div></div> | | 4516 | </h2></div></div></div> |
4507 | <p>When you type <span class="command"><strong>make</strong></span>, the distribution files are | | 4517 | <p>When you type <span class="command"><strong>make</strong></span>, the distribution files are |
4508 | unpacked into the directory denoted by | | 4518 | unpacked into the directory denoted by |
4509 | <code class="varname">WRKDIR</code>. It can be removed by running | | 4519 | <code class="varname">WRKDIR</code>. It can be removed by running |
4510 | <span class="command"><strong>make clean</strong></span>. Besides the sources, this | | 4520 | <span class="command"><strong>make clean</strong></span>. Besides the sources, this |
4511 | directory is also used to keep various timestamp files. | | 4521 | directory is also used to keep various timestamp files. |
4512 | The directory gets <span class="emphasis"><em>removed completely</em></span> on clean. | | 4522 | The directory gets <span class="emphasis"><em>removed completely</em></span> on clean. |
4513 | The default is <code class="filename">${.CURDIR}/work</code> | | 4523 | The default is <code class="filename">${.CURDIR}/work</code> |
4514 | or <code class="filename">${.CURDIR}/work.${MACHINE_ARCH}</code> | | 4524 | or <code class="filename">${.CURDIR}/work.${MACHINE_ARCH}</code> |
4515 | if <code class="varname">OBJMACHINE</code> is set.</p> | | 4525 | if <code class="varname">OBJMACHINE</code> is set.</p> |
4516 | </div> | | 4526 | </div> |
4517 | <div class="sect1"> | | 4527 | <div class="sect1"> |
4518 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4528 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4519 | <a name="files-dir"></a>11.7. <code class="filename">files/*</code> | | 4529 | <a name="files-dir"></a>11.7. <code class="filename">files/*</code> |
4520 | </h2></div></div></div> | | 4530 | </h2></div></div></div> |
4521 | <p>If you have any files that you wish to be placed in the package prior | | 4531 | <p>If you have any files that you wish to be placed in the package prior |
4522 | to configuration or building, you could place these files here and use | | 4532 | to configuration or building, you could place these files here and use |
4523 | a <span class="command"><strong>${CP}</strong></span> command in the | | 4533 | a <span class="command"><strong>${CP}</strong></span> command in the |
4524 | <span class="quote">“<span class="quote">pre-configure</span>”</span> target to achieve | | 4534 | <span class="quote">“<span class="quote">pre-configure</span>”</span> target to achieve |
4525 | this. Alternatively, you could simply diff the file against | | 4535 | this. Alternatively, you could simply diff the file against |
4526 | <code class="filename">/dev/null</code> and use the patch mechanism to manage | | 4536 | <code class="filename">/dev/null</code> and use the patch mechanism to manage |
4527 | the creation of this file.</p> | | 4537 | the creation of this file.</p> |
4528 | <p>If you want to share files in this way with other | | 4538 | <p>If you want to share files in this way with other |
4529 | packages, set the <code class="varname">FILESDIR</code> variable to point | | 4539 | packages, set the <code class="varname">FILESDIR</code> variable to point |
4530 | to the other package's <code class="filename">files</code> directory, | | 4540 | to the other package's <code class="filename">files</code> directory, |
4531 | e.g.:</p> | | 4541 | e.g.:</p> |
4532 | <pre class="programlisting"> | | 4542 | <pre class="programlisting"> |
4533 | FILESDIR=${.CURDIR}/../xemacs/files | | 4543 | FILESDIR=${.CURDIR}/../xemacs/files |
4534 | </pre> | | 4544 | </pre> |
4535 | </div> | | 4545 | </div> |
4536 | </div> | | 4546 | </div> |
4537 | <div class="chapter"> | | 4547 | <div class="chapter"> |
4538 | <div class="titlepage"><div><div><h2 class="title"> | | 4548 | <div class="titlepage"><div><div><h2 class="title"> |
4539 | <a name="makefile"></a>Chapter 12. Programming in <code class="filename">Makefile</code>s</h2></div></div></div> | | 4549 | <a name="makefile"></a>Chapter 12. Programming in <code class="filename">Makefile</code>s</h2></div></div></div> |
4540 | <div class="toc"> | | 4550 | <div class="toc"> |
4541 | <p><b>Table of Contents</b></p> | | 4551 | <p><b>Table of Contents</b></p> |
4542 | <dl> | | 4552 | <dl> |
4543 | <dt><span class="sect1"><a href="#makefile.style">12.1. Caveats</a></span></dt> | | 4553 | <dt><span class="sect1"><a href="#makefile.style">12.1. Caveats</a></span></dt> |
4544 | <dt><span class="sect1"><a href="#makefile.variables">12.2. <code class="filename">Makefile</code> variables</a></span></dt> | | 4554 | <dt><span class="sect1"><a href="#makefile.variables">12.2. <code class="filename">Makefile</code> variables</a></span></dt> |
4545 | <dd><dl><dt><span class="sect2"><a href="#makefile.variables.names">12.2.1. Naming conventions</a></span></dt></dl></dd> | | 4555 | <dd><dl><dt><span class="sect2"><a href="#makefile.variables.names">12.2.1. Naming conventions</a></span></dt></dl></dd> |
4546 | <dt><span class="sect1"><a href="#makefile.code">12.3. Code snippets</a></span></dt> | | 4556 | <dt><span class="sect1"><a href="#makefile.code">12.3. Code snippets</a></span></dt> |
4547 | <dd><dl> | | 4557 | <dd><dl> |
4548 | <dt><span class="sect2"><a href="#adding-to-list">12.3.1. Adding things to a list</a></span></dt> | | 4558 | <dt><span class="sect2"><a href="#adding-to-list">12.3.1. Adding things to a list</a></span></dt> |
4549 | <dt><span class="sect2"><a href="#converting-internal-to-external">12.3.2. Converting an internal list into an external list</a></span></dt> | | 4559 | <dt><span class="sect2"><a href="#converting-internal-to-external">12.3.2. Converting an internal list into an external list</a></span></dt> |
4550 | <dt><span class="sect2"><a href="#passing-variable-to-shell">12.3.3. Passing variables to a shell command</a></span></dt> | | 4560 | <dt><span class="sect2"><a href="#passing-variable-to-shell">12.3.3. Passing variables to a shell command</a></span></dt> |
4551 | <dt><span class="sect2"><a href="#quoting-guideline">12.3.4. Quoting guideline</a></span></dt> | | 4561 | <dt><span class="sect2"><a href="#quoting-guideline">12.3.4. Quoting guideline</a></span></dt> |
4552 | <dt><span class="sect2"><a href="#bsd-make-bug-workaround">12.3.5. Workaround for a bug in BSD Make</a></span></dt> | | 4562 | <dt><span class="sect2"><a href="#bsd-make-bug-workaround">12.3.5. Workaround for a bug in BSD Make</a></span></dt> |
4553 | </dl></dd> | | 4563 | </dl></dd> |
4554 | </dl> | | 4564 | </dl> |
4555 | </div> | | 4565 | </div> |
4556 | <p>Pkgsrc consists of many <code class="filename">Makefile</code> fragments, | | 4566 | <p>Pkgsrc consists of many <code class="filename">Makefile</code> fragments, |
4557 | each of which forms a well-defined part of the pkgsrc system. Using | | 4567 | each of which forms a well-defined part of the pkgsrc system. Using |
4558 | the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> system as a programming language for a big system | | 4568 | the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> system as a programming language for a big system |
4559 | like pkgsrc requires some discipline to keep the code correct and | | 4569 | like pkgsrc requires some discipline to keep the code correct and |
4560 | understandable.</p> | | 4570 | understandable.</p> |
4561 | <p>The basic ingredients for <code class="filename">Makefile</code> | | 4571 | <p>The basic ingredients for <code class="filename">Makefile</code> |
4562 | programming are variables (which are actually macros) and shell | | 4572 | programming are variables (which are actually macros) and shell |
4563 | commands. Among these shell commands may even be more complex ones | | 4573 | commands. Among these shell commands may even be more complex ones |
4564 | like <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?awk+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">awk</span>(1)</span></a> programs. To make sure that every shell command runs | | 4574 | like <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?awk+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">awk</span>(1)</span></a> programs. To make sure that every shell command runs |
4565 | as intended it is necessary to quote all variables correctly when they | | 4575 | as intended it is necessary to quote all variables correctly when they |
4566 | are used.</p> | | 4576 | are used.</p> |
4567 | <p>This chapter describes some patterns, that appear quite often in | | 4577 | <p>This chapter describes some patterns, that appear quite often in |
4568 | <code class="filename">Makefile</code>s, including the pitfalls that come along | | 4578 | <code class="filename">Makefile</code>s, including the pitfalls that come along |
4569 | with them.</p> | | 4579 | with them.</p> |
4570 | <div class="sect1"> | | 4580 | <div class="sect1"> |
4571 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4581 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4572 | <a name="makefile.style"></a>12.1. Caveats</h2></div></div></div> | | 4582 | <a name="makefile.style"></a>12.1. Caveats</h2></div></div></div> |
4573 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> | | 4583 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> |
4574 | <p>When you are creating a file as a | | 4584 | <p>When you are creating a file as a |
4575 | target of a rule, always write the data to a temporary file first | | 4585 | target of a rule, always write the data to a temporary file first |
4576 | and finally rename that file. Otherwise there might occur an error | | 4586 | and finally rename that file. Otherwise there might occur an error |
4577 | in the middle of generating the file, and when the user runs | | 4587 | in the middle of generating the file, and when the user runs |
4578 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> for the second time, the file exists and will not be | | 4588 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> for the second time, the file exists and will not be |
4579 | regenerated properly. Example:</p> | | 4589 | regenerated properly. Example:</p> |
4580 | <pre class="programlisting"> | | 4590 | <pre class="programlisting"> |
4581 | wrong: | | 4591 | wrong: |
4582 | @echo "line 1" > ${.TARGET} | | 4592 | @echo "line 1" > ${.TARGET} |
4583 | @echo "line 2" >> ${.TARGET} | | 4593 | @echo "line 2" >> ${.TARGET} |
4584 | @false | | 4594 | @false |
4585 | | | 4595 | |
4586 | correct: | | 4596 | correct: |
4587 | @echo "line 1" > ${.TARGET}.tmp | | 4597 | @echo "line 1" > ${.TARGET}.tmp |
4588 | @echo "line 2" >> ${.TARGET}.tmp | | 4598 | @echo "line 2" >> ${.TARGET}.tmp |
4589 | @false | | 4599 | @false |
4590 | @mv ${.TARGET}.tmp ${.TARGET} | | 4600 | @mv ${.TARGET}.tmp ${.TARGET} |
4591 | </pre> | | 4601 | </pre> |
4592 | <p>When you run <span class="command"><strong>make wrong</strong></span> twice, the file | | 4602 | <p>When you run <span class="command"><strong>make wrong</strong></span> twice, the file |
4593 | <code class="filename">wrong</code> will exist, although there was an error | | 4603 | <code class="filename">wrong</code> will exist, although there was an error |
4594 | message in the first run. On the other hand, running <span class="command"><strong>make | | 4604 | message in the first run. On the other hand, running <span class="command"><strong>make |
4595 | correct</strong></span> gives an error message twice, as expected.</p> | | 4605 | correct</strong></span> gives an error message twice, as expected.</p> |
4596 | <p>You might remember that <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> sometimes removes | | 4606 | <p>You might remember that <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> sometimes removes |
4597 | <code class="literal">${.TARGET}</code> in case of error, but this only | | 4607 | <code class="literal">${.TARGET}</code> in case of error, but this only |
4598 | happens when it is interrupted, for example by pressing | | 4608 | happens when it is interrupted, for example by pressing |
4599 | <code class="literal">^C</code>. This does <span class="emphasis"><em>not</em></span> happen | | 4609 | <code class="literal">^C</code>. This does <span class="emphasis"><em>not</em></span> happen |
4600 | when one of the commands fails (like <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?false+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">false</span>(1)</span></a> above).</p> | | 4610 | when one of the commands fails (like <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?false+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">false</span>(1)</span></a> above).</p> |
4601 | </li></ul></div> | | 4611 | </li></ul></div> |
4602 | </div> | | 4612 | </div> |
4603 | <div class="sect1"> | | 4613 | <div class="sect1"> |
4604 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4614 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4605 | <a name="makefile.variables"></a>12.2. <code class="filename">Makefile</code> variables</h2></div></div></div> | | 4615 | <a name="makefile.variables"></a>12.2. <code class="filename">Makefile</code> variables</h2></div></div></div> |
4606 | <p><code class="filename">Makefile</code> variables contain strings that | | 4616 | <p><code class="filename">Makefile</code> variables contain strings that |
4607 | can be processed using the five operators ``='', ``+='', ``?='', | | 4617 | can be processed using the five operators ``='', ``+='', ``?='', |
4608 | ``:='', and ``!='', which are described in the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> man | | 4618 | ``:='', and ``!='', which are described in the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> man |
4609 | page.</p> | | 4619 | page.</p> |
4610 | <p>When a variable's value is parsed from a | | 4620 | <p>When a variable's value is parsed from a |
4611 | <code class="filename">Makefile</code>, the hash character ``#'' and the | | 4621 | <code class="filename">Makefile</code>, the hash character ``#'' and the |
4612 | backslash character ``\'' are handled specially. If a backslash is | | 4622 | backslash character ``\'' are handled specially. If a backslash is |
4613 | followed by a newline, any whitespace immediately in front of the | | 4623 | followed by a newline, any whitespace immediately in front of the |
4614 | backslash, the backslash, the newline, and any whitespace | | 4624 | backslash, the backslash, the newline, and any whitespace |
4615 | immediately behind the newline are replaced with a single space. A | | 4625 | immediately behind the newline are replaced with a single space. A |
4616 | backslash character and an immediately following hash character are | | 4626 | backslash character and an immediately following hash character are |
4617 | replaced with a single hash character. Otherwise, the backslash is | | 4627 | replaced with a single hash character. Otherwise, the backslash is |
4618 | passed as is. In a variable assignment, any hash character that is | | 4628 | passed as is. In a variable assignment, any hash character that is |
4619 | not preceded by a backslash starts a comment that continues upto the | | 4629 | not preceded by a backslash starts a comment that continues upto the |
4620 | end of the logical line.</p> | | 4630 | end of the logical line.</p> |
4621 | <p><span class="emphasis"><em>Note:</em></span> Because of this parsing algorithm | | 4631 | <p><span class="emphasis"><em>Note:</em></span> Because of this parsing algorithm |
4622 | the only way to create a variable consisting of a single backslash | | 4632 | the only way to create a variable consisting of a single backslash |
4623 | is using the ``!='' operator, for example: <code class="varname">BACKSLASH!=echo "\\"</code>.</p> | | 4633 | is using the ``!='' operator, for example: <code class="varname">BACKSLASH!=echo "\\"</code>.</p> |
4624 | <p>So far for defining variables. The other thing you can do with | | 4634 | <p>So far for defining variables. The other thing you can do with |
4625 | variables is evaluating them. A variable is evaluated when it is | | 4635 | variables is evaluating them. A variable is evaluated when it is |
4626 | part of the right side of the ``:='' or the ``!='' operator, or | | 4636 | part of the right side of the ``:='' or the ``!='' operator, or |
4627 | directly before executing a shell command which the variable is part | | 4637 | directly before executing a shell command which the variable is part |
4628 | of. In all other cases, <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> performs lazy evaluation, that | | 4638 | of. In all other cases, <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> performs lazy evaluation, that |
4629 | is, variables are not evaluated until there's no other way. The | | 4639 | is, variables are not evaluated until there's no other way. The |
4630 | ``modifiers'' mentioned in the man page also evaluate the | | 4640 | ``modifiers'' mentioned in the man page also evaluate the |
4631 | variable.</p> | | 4641 | variable.</p> |
4632 | <p>Some of the modifiers split the string into words and then | | 4642 | <p>Some of the modifiers split the string into words and then |
4633 | operate on the words, others operate on the string as a whole. When | | 4643 | operate on the words, others operate on the string as a whole. When |
4634 | a string is split into words, it is split as you would expect | | 4644 | a string is split into words, it is split as you would expect |
4635 | it from <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?sh+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">sh</span>(1)</span></a>.</p> | | 4645 | it from <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?sh+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">sh</span>(1)</span></a>.</p> |
4636 | <p>No rule without exception—the <span class="command"><strong>.for</strong></span> | | 4646 | <p>No rule without exception—the <span class="command"><strong>.for</strong></span> |
4637 | loop does not follow the shell quoting rules but splits at sequences | | 4647 | loop does not follow the shell quoting rules but splits at sequences |
4638 | of whitespace.</p> | | 4648 | of whitespace.</p> |
4639 | <p>There are several types of variables that should be handled | | 4649 | <p>There are several types of variables that should be handled |
4640 | differently. Strings and two types of lists.</p> | | 4650 | differently. Strings and two types of lists.</p> |
4641 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4651 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4642 | <li class="listitem"><p><span class="emphasis"><em>Strings</em></span> can contain arbitrary | | 4652 | <li class="listitem"><p><span class="emphasis"><em>Strings</em></span> can contain arbitrary |
4643 | characters. Nevertheless, you should restrict yourself to only | | 4653 | characters. Nevertheless, you should restrict yourself to only |
4644 | using printable characters. Examples are | | 4654 | using printable characters. Examples are |
4645 | <code class="varname">PREFIX</code> and | | 4655 | <code class="varname">PREFIX</code> and |
4646 | <code class="varname">COMMENT</code>.</p></li> | | 4656 | <code class="varname">COMMENT</code>.</p></li> |
4647 | <li class="listitem"><p><span class="emphasis"><em>Internal lists</em></span> are lists that | | 4657 | <li class="listitem"><p><span class="emphasis"><em>Internal lists</em></span> are lists that |
4648 | are never exported to any shell command. Their elements are | | 4658 | are never exported to any shell command. Their elements are |
4649 | separated by whitespace. Therefore, the elements themselves cannot | | 4659 | separated by whitespace. Therefore, the elements themselves cannot |
4650 | have embedded whitespace. Any other characters are allowed. | | 4660 | have embedded whitespace. Any other characters are allowed. |
4651 | Internal lists can be used in <span class="command"><strong>.for</strong></span> loops. | | 4661 | Internal lists can be used in <span class="command"><strong>.for</strong></span> loops. |
4652 | Examples are <code class="varname">DEPENDS</code> and | | 4662 | Examples are <code class="varname">DEPENDS</code> and |
4653 | <code class="varname">BUILD_DEPENDS</code>.</p></li> | | 4663 | <code class="varname">BUILD_DEPENDS</code>.</p></li> |
4654 | <li class="listitem"><p><span class="emphasis"><em>External lists</em></span> are lists that | | 4664 | <li class="listitem"><p><span class="emphasis"><em>External lists</em></span> are lists that |
4655 | may be exported to a shell command. Their elements can contain any | | 4665 | may be exported to a shell command. Their elements can contain any |
4656 | characters, including whitespace. That's why they cannot be used | | 4666 | characters, including whitespace. That's why they cannot be used |
4657 | in <span class="command"><strong>.for</strong></span> loops. Examples are | | 4667 | in <span class="command"><strong>.for</strong></span> loops. Examples are |
4658 | <code class="varname">DISTFILES</code> and | | 4668 | <code class="varname">DISTFILES</code> and |
4659 | <code class="varname">MASTER_SITES</code>.</p></li> | | 4669 | <code class="varname">MASTER_SITES</code>.</p></li> |
4660 | </ul></div> | | 4670 | </ul></div> |
4661 | <div class="sect2"> | | 4671 | <div class="sect2"> |
4662 | <div class="titlepage"><div><div><h3 class="title"> | | 4672 | <div class="titlepage"><div><div><h3 class="title"> |
4663 | <a name="makefile.variables.names"></a>12.2.1. Naming conventions</h3></div></div></div> | | 4673 | <a name="makefile.variables.names"></a>12.2.1. Naming conventions</h3></div></div></div> |
4664 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4674 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4665 | <li class="listitem"><p>All variable names starting with an underscore | | 4675 | <li class="listitem"><p>All variable names starting with an underscore |
4666 | are reserved for use by the pkgsrc infrastructure. They shall | | 4676 | are reserved for use by the pkgsrc infrastructure. They shall |
4667 | not be used by package | | 4677 | not be used by package |
4668 | <code class="filename">Makefile</code>s.</p></li> | | 4678 | <code class="filename">Makefile</code>s.</p></li> |
4669 | <li class="listitem"><p>In <span class="command"><strong>.for</strong></span> loops you should use | | 4679 | <li class="listitem"><p>In <span class="command"><strong>.for</strong></span> loops you should use |
4670 | lowercase variable names for the iteration | | 4680 | lowercase variable names for the iteration |
4671 | variables.</p></li> | | 4681 | variables.</p></li> |
4672 | <li class="listitem"><p>All list variables should have a ``plural'' | | 4682 | <li class="listitem"><p>All list variables should have a ``plural'' |
4673 | name, e.g. <code class="varname">PKG_OPTIONS</code> or | | 4683 | name, e.g. <code class="varname">PKG_OPTIONS</code> or |
4674 | <code class="varname">DISTFILES</code>.</p></li> | | 4684 | <code class="varname">DISTFILES</code>.</p></li> |
4675 | </ul></div> | | 4685 | </ul></div> |
4676 | </div> | | 4686 | </div> |
4677 | </div> | | 4687 | </div> |
4678 | <div class="sect1"> | | 4688 | <div class="sect1"> |
4679 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4689 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4680 | <a name="makefile.code"></a>12.3. Code snippets</h2></div></div></div> | | 4690 | <a name="makefile.code"></a>12.3. Code snippets</h2></div></div></div> |
4681 | <p>This section presents you with some code snippets you should | | 4691 | <p>This section presents you with some code snippets you should |
4682 | use in your own code. If you don't find anything appropriate here, | | 4692 | use in your own code. If you don't find anything appropriate here, |
4683 | you should test your code and add it here.</p> | | 4693 | you should test your code and add it here.</p> |
4684 | <div class="sect2"> | | 4694 | <div class="sect2"> |
4685 | <div class="titlepage"><div><div><h3 class="title"> | | 4695 | <div class="titlepage"><div><div><h3 class="title"> |
4686 | <a name="adding-to-list"></a>12.3.1. Adding things to a list</h3></div></div></div> | | 4696 | <a name="adding-to-list"></a>12.3.1. Adding things to a list</h3></div></div></div> |
4687 | <pre class="programlisting"> | | 4697 | <pre class="programlisting"> |
4688 | STRING= foo * bar `date` | | 4698 | STRING= foo * bar `date` |
4689 | INT_LIST= # empty | | 4699 | INT_LIST= # empty |
4690 | ANOTHER_INT_LIST= apache-[0-9]*:../../www/apache | | 4700 | ANOTHER_INT_LIST= apache-[0-9]*:../../www/apache |
4691 | EXT_LIST= # empty | | 4701 | EXT_LIST= # empty |
4692 | ANOTHER_EXT_LIST= a=b c=d | | 4702 | ANOTHER_EXT_LIST= a=b c=d |
4693 | | | 4703 | |
4694 | INT_LIST+= ${STRING} # 1 | | 4704 | INT_LIST+= ${STRING} # 1 |
4695 | INT_LIST+= ${ANOTHER_INT_LIST} # 2 | | 4705 | INT_LIST+= ${ANOTHER_INT_LIST} # 2 |
4696 | EXT_LIST+= ${STRING:Q} # 3 | | 4706 | EXT_LIST+= ${STRING:Q} # 3 |
4697 | EXT_LIST+= ${ANOTHER_EXT_LIST} # 4 | | 4707 | EXT_LIST+= ${ANOTHER_EXT_LIST} # 4 |
4698 | </pre> | | 4708 | </pre> |
4699 | <p>When you add a string to an external list (example 3), it | | 4709 | <p>When you add a string to an external list (example 3), it |
4700 | must be quoted. In all other cases, you must not add a quoting | | 4710 | must be quoted. In all other cases, you must not add a quoting |
4701 | level. You must not merge internal and external lists, unless you | | 4711 | level. You must not merge internal and external lists, unless you |
4702 | are sure that all entries are correctly interpreted in both | | 4712 | are sure that all entries are correctly interpreted in both |
4703 | lists.</p> | | 4713 | lists.</p> |
4704 | </div> | | 4714 | </div> |
4705 | <div class="sect2"> | | 4715 | <div class="sect2"> |
4706 | <div class="titlepage"><div><div><h3 class="title"> | | 4716 | <div class="titlepage"><div><div><h3 class="title"> |
4707 | <a name="converting-internal-to-external"></a>12.3.2. Converting an internal list into an external list</h3></div></div></div> | | 4717 | <a name="converting-internal-to-external"></a>12.3.2. Converting an internal list into an external list</h3></div></div></div> |
4708 | <pre class="programlisting"> | | 4718 | <pre class="programlisting"> |
4709 | EXT_LIST= # empty | | 4719 | EXT_LIST= # empty |
4710 | .for i in ${INT_LIST} | | 4720 | .for i in ${INT_LIST} |
4711 | EXT_LIST+= ${i:Q}"" | | 4721 | EXT_LIST+= ${i:Q}"" |
4712 | .endfor | | 4722 | .endfor |
4713 | </pre> | | 4723 | </pre> |
4714 | <p>This code converts the internal list | | 4724 | <p>This code converts the internal list |
4715 | <code class="varname">INT_LIST</code> into the external list | | 4725 | <code class="varname">INT_LIST</code> into the external list |
4716 | <code class="varname">EXT_LIST</code>. As the elements of an internal list | | 4726 | <code class="varname">EXT_LIST</code>. As the elements of an internal list |
4717 | are unquoted they must be quoted here. The reason for appending | | 4727 | are unquoted they must be quoted here. The reason for appending |
4718 | <code class="varname">""</code> is explained below.</p> | | 4728 | <code class="varname">""</code> is explained below.</p> |
4719 | </div> | | 4729 | </div> |
4720 | <div class="sect2"> | | 4730 | <div class="sect2"> |
4721 | <div class="titlepage"><div><div><h3 class="title"> | | 4731 | <div class="titlepage"><div><div><h3 class="title"> |
4722 | <a name="passing-variable-to-shell"></a>12.3.3. Passing variables to a shell command</h3></div></div></div> | | 4732 | <a name="passing-variable-to-shell"></a>12.3.3. Passing variables to a shell command</h3></div></div></div> |
4723 | <p>Sometimes you may want to print an arbitrary string. There | | 4733 | <p>Sometimes you may want to print an arbitrary string. There |
4724 | are many ways to get it wrong and only few that can handle every | | 4734 | are many ways to get it wrong and only few that can handle every |
4725 | nastiness.</p> | | 4735 | nastiness.</p> |
4726 | <pre class="programlisting"> | | 4736 | <pre class="programlisting"> |
4727 | STRING= foo bar < > * `date` $$HOME ' " | | 4737 | STRING= foo bar < > * `date` $$HOME ' " |
4728 | EXT_LIST= string=${STRING:Q} x=second\ item | | 4738 | EXT_LIST= string=${STRING:Q} x=second\ item |
4729 | | | 4739 | |
4730 | all: | | 4740 | all: |
4731 | echo ${STRING} # 1 | | 4741 | echo ${STRING} # 1 |
4732 | echo "${STRING}" # 2 | | 4742 | echo "${STRING}" # 2 |
4733 | echo "${STRING:Q}" # 3 | | 4743 | echo "${STRING:Q}" # 3 |
4734 | echo ${STRING:Q} # 4 | | 4744 | echo ${STRING:Q} # 4 |
4735 | echo x${STRING:Q} | sed 1s,.,, # 5 | | 4745 | echo x${STRING:Q} | sed 1s,.,, # 5 |
4736 | printf "%s\\n" ${STRING:Q}"" # 6 | | 4746 | printf "%s\\n" ${STRING:Q}"" # 6 |
4737 | env ${EXT_LIST} /bin/sh -c 'echo "$$string"; echo "$$x"' | | 4747 | env ${EXT_LIST} /bin/sh -c 'echo "$$string"; echo "$$x"' |
4738 | </pre> | | 4748 | </pre> |
4739 | <p>Example 1 leads to a syntax error in the shell, as the | | 4749 | <p>Example 1 leads to a syntax error in the shell, as the |
4740 | characters are just copied.</p> | | 4750 | characters are just copied.</p> |
4741 | <p>Example 2 leads to a syntax error too, and if you leave out | | 4751 | <p>Example 2 leads to a syntax error too, and if you leave out |
4742 | the last " character from <code class="varname">${STRING}</code>, | | 4752 | the last " character from <code class="varname">${STRING}</code>, |
4743 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?date+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">date</span>(1)</span></a> will be executed. The <code class="varname">$HOME</code> shell | | 4753 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?date+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">date</span>(1)</span></a> will be executed. The <code class="varname">$HOME</code> shell |
4744 | variable would be evaluated, too.</p> | | 4754 | variable would be evaluated, too.</p> |
4745 | <p>Example 3 outputs each space character preceded by a | | 4755 | <p>Example 3 outputs each space character preceded by a |
4746 | backslash (or not), depending on the implementation of the | | 4756 | backslash (or not), depending on the implementation of the |
4747 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?echo+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">echo</span>(1)</span></a> command.</p> | | 4757 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?echo+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">echo</span>(1)</span></a> command.</p> |
4748 | <p>Example 4 handles correctly every string that does not start | | 4758 | <p>Example 4 handles correctly every string that does not start |
4749 | with a dash. In that case, the result depends on the | | 4759 | with a dash. In that case, the result depends on the |
4750 | implementation of the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?echo+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">echo</span>(1)</span></a> command. As long as you can | | 4760 | implementation of the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?echo+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">echo</span>(1)</span></a> command. As long as you can |
4751 | guarantee that your input does not start with a dash, this form is | | 4761 | guarantee that your input does not start with a dash, this form is |
4752 | appropriate.</p> | | 4762 | appropriate.</p> |
4753 | <p>Example 5 handles even the case of a leading dash | | 4763 | <p>Example 5 handles even the case of a leading dash |
4754 | correctly.</p> | | 4764 | correctly.</p> |
4755 | <p>Example 6 also works with every string and is the | | 4765 | <p>Example 6 also works with every string and is the |
4756 | light-weight solution, since it does not involve a pipe, which has | | 4766 | light-weight solution, since it does not involve a pipe, which has |
4757 | its own problems.</p> | | 4767 | its own problems.</p> |
4758 | <p>The <code class="varname">EXT_LIST</code> does not need to be quoted | | 4768 | <p>The <code class="varname">EXT_LIST</code> does not need to be quoted |
4759 | because the quoting has already been done when adding elements to | | 4769 | because the quoting has already been done when adding elements to |
4760 | the list.</p> | | 4770 | the list.</p> |
4761 | <p>As internal lists shall not be passed to the shell, there is | | 4771 | <p>As internal lists shall not be passed to the shell, there is |
4762 | no example for it.</p> | | 4772 | no example for it.</p> |
4763 | </div> | | 4773 | </div> |
4764 | <div class="sect2"> | | 4774 | <div class="sect2"> |
4765 | <div class="titlepage"><div><div><h3 class="title"> | | 4775 | <div class="titlepage"><div><div><h3 class="title"> |
4766 | <a name="quoting-guideline"></a>12.3.4. Quoting guideline</h3></div></div></div> | | 4776 | <a name="quoting-guideline"></a>12.3.4. Quoting guideline</h3></div></div></div> |
4767 | <p>There are many possible sources of wrongly quoted variables. | | 4777 | <p>There are many possible sources of wrongly quoted variables. |
4768 | This section lists some of the commonly known ones.</p> | | 4778 | This section lists some of the commonly known ones.</p> |
4769 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4779 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4770 | <li class="listitem"> | | 4780 | <li class="listitem"> |
4771 | <p>Whenever you use the value of a list, think | | 4781 | <p>Whenever you use the value of a list, think |
4772 | about what happens to leading or trailing whitespace. If the | | 4782 | about what happens to leading or trailing whitespace. If the |
4773 | list is a well-formed shell expression, you can apply the | | 4783 | list is a well-formed shell expression, you can apply the |
4774 | <code class="varname">:M*</code> modifier to strip leading and trailing | | 4784 | <code class="varname">:M*</code> modifier to strip leading and trailing |
4775 | whitespace from each word. The <code class="varname">:M</code> operator | | 4785 | whitespace from each word. The <code class="varname">:M</code> operator |
4776 | first splits its argument according to the rules of the shell, | | 4786 | first splits its argument according to the rules of the shell, |
4777 | and then creates a new list consisting of all words that match | | 4787 | and then creates a new list consisting of all words that match |
4778 | the shell glob expression <code class="varname">*</code>, that is: all. | | 4788 | the shell glob expression <code class="varname">*</code>, that is: all. |
4779 | One class of situations where this is needed is when adding a | | 4789 | One class of situations where this is needed is when adding a |
4780 | variable like <code class="varname">CPPFLAGS</code> to | | 4790 | variable like <code class="varname">CPPFLAGS</code> to |
4781 | <code class="varname">CONFIGURE_ARGS</code>. If the configure script | | 4791 | <code class="varname">CONFIGURE_ARGS</code>. If the configure script |
4782 | invokes other configure scripts, it strips the leading and | | 4792 | invokes other configure scripts, it strips the leading and |
4783 | trailing whitespace from the variable and then passes it to the | | 4793 | trailing whitespace from the variable and then passes it to the |
4784 | other configure scripts. But these configure scripts expect the | | 4794 | other configure scripts. But these configure scripts expect the |
4785 | (child) <code class="varname">CPPFLAGS</code> variable to be the same as | | 4795 | (child) <code class="varname">CPPFLAGS</code> variable to be the same as |
4786 | the parent <code class="varname">CPPFLAGS</code>. That's why we better | | 4796 | the parent <code class="varname">CPPFLAGS</code>. That's why we better |
4787 | pass the <code class="varname">CPPFLAGS</code> value properly trimmed. And | | 4797 | pass the <code class="varname">CPPFLAGS</code> value properly trimmed. And |
4788 | here is how we do it:</p> | | 4798 | here is how we do it:</p> |
4789 | <pre class="programlisting"> | | 4799 | <pre class="programlisting"> |
4790 | CPPFLAGS= # empty | | 4800 | CPPFLAGS= # empty |
4791 | CPPFLAGS+= -Wundef -DPREFIX=\"${PREFIX:Q}\" | | 4801 | CPPFLAGS+= -Wundef -DPREFIX=\"${PREFIX:Q}\" |
4792 | CPPFLAGS+= ${MY_CPPFLAGS} | | 4802 | CPPFLAGS+= ${MY_CPPFLAGS} |
4793 | | | 4803 | |
4794 | CONFIGURE_ARGS+= CPPFLAGS=${CPPFLAGS:M*:Q} | | 4804 | CONFIGURE_ARGS+= CPPFLAGS=${CPPFLAGS:M*:Q} |
4795 | | | 4805 | |
4796 | all: | | 4806 | all: |
4797 | echo x${CPPFLAGS:Q}x # leading and trailing whitespace | | 4807 | echo x${CPPFLAGS:Q}x # leading and trailing whitespace |
4798 | echo x${CONFIGURE_ARGS}x # properly trimmed | | 4808 | echo x${CONFIGURE_ARGS}x # properly trimmed |
4799 | </pre> | | 4809 | </pre> |
4800 | </li> | | 4810 | </li> |
4801 | <li class="listitem"><p>The example above contains one bug: The | | 4811 | <li class="listitem"><p>The example above contains one bug: The |
4802 | <code class="varname">${PREFIX}</code> is a properly quoted shell | | 4812 | <code class="varname">${PREFIX}</code> is a properly quoted shell |
4803 | expression, but there is the C compiler after it, which also | | 4813 | expression, but there is the C compiler after it, which also |
4804 | expects a properly quoted string (this time in C syntax). The | | 4814 | expects a properly quoted string (this time in C syntax). The |
4805 | version above is therefore only correct if | | 4815 | version above is therefore only correct if |
4806 | <code class="varname">${PREFIX}</code> does not have embedded backslashes | | 4816 | <code class="varname">${PREFIX}</code> does not have embedded backslashes |
4807 | or double quotes. If you want to allow these, you have to add | | 4817 | or double quotes. If you want to allow these, you have to add |
4808 | another layer of quoting to each variable that is used as a C | | 4818 | another layer of quoting to each variable that is used as a C |
4809 | string literal. You cannot use the <code class="varname">:Q</code> | | 4819 | string literal. You cannot use the <code class="varname">:Q</code> |
4810 | operator for it, as this operator only works for the | | 4820 | operator for it, as this operator only works for the |
4811 | shell.</p></li> | | 4821 | shell.</p></li> |
4812 | <li class="listitem"> | | 4822 | <li class="listitem"> |
4813 | <p>Whenever a variable can be empty, the | | 4823 | <p>Whenever a variable can be empty, the |
4814 | <code class="varname">:Q</code> operator can have surprising results. Here | | 4824 | <code class="varname">:Q</code> operator can have surprising results. Here |
4815 | are two completely different cases which can be solved with the | | 4825 | are two completely different cases which can be solved with the |
4816 | same trick.</p> | | 4826 | same trick.</p> |
4817 | <pre class="programlisting"> | | 4827 | <pre class="programlisting"> |
4818 | EMPTY= # empty | | 4828 | EMPTY= # empty |
4819 | empty_test: | | 4829 | empty_test: |
4820 | for i in a ${EMPTY:Q} c; do \ | | 4830 | for i in a ${EMPTY:Q} c; do \ |
4821 | echo "$$i"; \ | | 4831 | echo "$$i"; \ |
4822 | done | | 4832 | done |
4823 | | | 4833 | |
4824 | for_test: | | 4834 | for_test: |
4825 | .for i in a:\ a:\test.txt | | 4835 | .for i in a:\ a:\test.txt |
4826 | echo ${i:Q} | | 4836 | echo ${i:Q} |
4827 | echo "foo" | | 4837 | echo "foo" |
4828 | .endfor | | 4838 | .endfor |
4829 | </pre> | | 4839 | </pre> |
4830 | <p>The first example will only print two of the three lines | | 4840 | <p>The first example will only print two of the three lines |
4831 | we might have expected. This is because | | 4841 | we might have expected. This is because |
4832 | <code class="varname">${EMPTY:Q}</code> expands to the empty string, which | | 4842 | <code class="varname">${EMPTY:Q}</code> expands to the empty string, which |
4833 | the shell cannot see. The workaround is to write | | 4843 | the shell cannot see. The workaround is to write |
4834 | <code class="varname">${EMPTY:Q}""</code>. This pattern can be often found | | 4844 | <code class="varname">${EMPTY:Q}""</code>. This pattern can be often found |
4835 | as <code class="varname">${TEST} -z ${VAR:Q}</code> or as <code class="varname">${TEST} | | 4845 | as <code class="varname">${TEST} -z ${VAR:Q}</code> or as <code class="varname">${TEST} |
4836 | -f ${FNAME:Q}</code> (both of these are wrong).</p> | | 4846 | -f ${FNAME:Q}</code> (both of these are wrong).</p> |
4837 | <p>The second example will only print three lines instead of | | 4847 | <p>The second example will only print three lines instead of |
4838 | four. The first line looks like <code class="varname">a:\ echo foo</code>. | | 4848 | four. The first line looks like <code class="varname">a:\ echo foo</code>. |
4839 | This is because the backslash of the value | | 4849 | This is because the backslash of the value |
4840 | <code class="varname">a:\</code> is interpreted as a line-continuation by | | 4850 | <code class="varname">a:\</code> is interpreted as a line-continuation by |
4841 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a>, which makes the second line the arguments of the | | 4851 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a>, which makes the second line the arguments of the |
4842 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?echo+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">echo</span>(1)</span></a> command from the first line. To avoid this, write | | 4852 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?echo+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">echo</span>(1)</span></a> command from the first line. To avoid this, write |
4843 | <code class="varname">${i:Q}""</code>.</p> | | 4853 | <code class="varname">${i:Q}""</code>.</p> |
4844 | </li> | | 4854 | </li> |
4845 | </ul></div> | | 4855 | </ul></div> |
4846 | </div> | | 4856 | </div> |
4847 | <div class="sect2"> | | 4857 | <div class="sect2"> |
4848 | <div class="titlepage"><div><div><h3 class="title"> | | 4858 | <div class="titlepage"><div><div><h3 class="title"> |
4849 | <a name="bsd-make-bug-workaround"></a>12.3.5. Workaround for a bug in BSD Make</h3></div></div></div> | | 4859 | <a name="bsd-make-bug-workaround"></a>12.3.5. Workaround for a bug in BSD Make</h3></div></div></div> |
4850 | <p>The pkgsrc bmake program does not handle the following | | 4860 | <p>The pkgsrc bmake program does not handle the following |
4851 | assignment correctly. In case <code class="varname">_othervar_</code> | | 4861 | assignment correctly. In case <code class="varname">_othervar_</code> |
4852 | contains a ``-'' character, one of the closing braces is included | | 4862 | contains a ``-'' character, one of the closing braces is included |
4853 | in <code class="varname">${VAR}</code> after this code executes.</p> | | 4863 | in <code class="varname">${VAR}</code> after this code executes.</p> |
4854 | <pre class="programlisting"> | | 4864 | <pre class="programlisting"> |
4855 | VAR:= ${VAR:N${_othervar_:C/-//}} | | 4865 | VAR:= ${VAR:N${_othervar_:C/-//}} |
4856 | </pre> | | 4866 | </pre> |
4857 | <p>For a more complex code snippet and a workaround, see the | | 4867 | <p>For a more complex code snippet and a workaround, see the |
4858 | package <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/regress/make-quoting/README.html" target="_top"><code class="filename">regress/make-quoting</code></a>, testcase | | 4868 | package <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/regress/make-quoting/README.html" target="_top"><code class="filename">regress/make-quoting</code></a>, testcase |
4859 | <code class="varname">bug1</code>.</p> | | 4869 | <code class="varname">bug1</code>.</p> |
4860 | </div> | | 4870 | </div> |
4861 | </div> | | 4871 | </div> |
4862 | </div> | | 4872 | </div> |
4863 | <div class="chapter"> | | 4873 | <div class="chapter"> |
4864 | <div class="titlepage"><div><div><h2 class="title"> | | 4874 | <div class="titlepage"><div><div><h2 class="title"> |
4865 | <a name="plist"></a>Chapter 13. PLIST issues</h2></div></div></div> | | 4875 | <a name="plist"></a>Chapter 13. PLIST issues</h2></div></div></div> |
4866 | <div class="toc"> | | 4876 | <div class="toc"> |
4867 | <p><b>Table of Contents</b></p> | | 4877 | <p><b>Table of Contents</b></p> |
4868 | <dl> | | 4878 | <dl> |
4869 | <dt><span class="sect1"><a href="#rcs-id">13.1. RCS ID</a></span></dt> | | 4879 | <dt><span class="sect1"><a href="#rcs-id">13.1. RCS ID</a></span></dt> |
4870 | <dt><span class="sect1"><a href="#automatic-plist-generation">13.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> | | 4880 | <dt><span class="sect1"><a href="#automatic-plist-generation">13.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> |
4871 | <dt><span class="sect1"><a href="#print-PLIST">13.3. Tweaking output of <span class="command"><strong>make print-PLIST</strong></span></a></span></dt> | | 4881 | <dt><span class="sect1"><a href="#print-PLIST">13.3. Tweaking output of <span class="command"><strong>make print-PLIST</strong></span></a></span></dt> |
4872 | <dt><span class="sect1"><a href="#plist.misc">13.4. Variable substitution in PLIST</a></span></dt> | | 4882 | <dt><span class="sect1"><a href="#plist.misc">13.4. Variable substitution in PLIST</a></span></dt> |
4873 | <dt><span class="sect1"><a href="#manpage-compression">13.5. Man page compression</a></span></dt> | | 4883 | <dt><span class="sect1"><a href="#manpage-compression">13.5. Man page compression</a></span></dt> |
4874 | <dt><span class="sect1"><a href="#using-PLIST_SRC">13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code></a></span></dt> | | 4884 | <dt><span class="sect1"><a href="#using-PLIST_SRC">13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code></a></span></dt> |
4875 | <dt><span class="sect1"><a href="#platform-specific-plist">13.7. Platform-specific and differing PLISTs</a></span></dt> | | 4885 | <dt><span class="sect1"><a href="#platform-specific-plist">13.7. Platform-specific and differing PLISTs</a></span></dt> |
4876 | <dt><span class="sect1"><a href="#faq.common-dirs">13.8. Sharing directories between packages</a></span></dt> | | 4886 | <dt><span class="sect1"><a href="#faq.common-dirs">13.8. Sharing directories between packages</a></span></dt> |
4877 | </dl> | | 4887 | </dl> |
4878 | </div> | | 4888 | </div> |
4879 | <p>The <code class="filename">PLIST</code> file contains a package's | | 4889 | <p>The <code class="filename">PLIST</code> file contains a package's |
4880 | <span class="quote">“<span class="quote">packing list</span>”</span>, i.e. a list of files that belong to | | 4890 | <span class="quote">“<span class="quote">packing list</span>”</span>, i.e. a list of files that belong to |
4881 | the package (relative to the <code class="filename">${PREFIX}</code> | | 4891 | the package (relative to the <code class="filename">${PREFIX}</code> |
4882 | directory it's been installed in) plus some additional statements | | 4892 | directory it's been installed in) plus some additional statements |
4883 | - see the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_create+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_create</span>(1)</span></a> man page for a full list. | | 4893 | - see the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_create+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_create</span>(1)</span></a> man page for a full list. |
4884 | This chapter addresses some issues that need attention when | | 4894 | This chapter addresses some issues that need attention when |
4885 | dealing with the <code class="filename">PLIST</code> file (or files, see | | 4895 | dealing with the <code class="filename">PLIST</code> file (or files, see |
4886 | below!).</p> | | 4896 | below!).</p> |
4887 | <div class="sect1"> | | 4897 | <div class="sect1"> |
4888 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4898 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4889 | <a name="rcs-id"></a>13.1. RCS ID</h2></div></div></div> | | 4899 | <a name="rcs-id"></a>13.1. RCS ID</h2></div></div></div> |
4890 | <p>Be sure to add a RCS ID line as the first thing in any | | 4900 | <p>Be sure to add a RCS ID line as the first thing in any |
4891 | <code class="filename">PLIST</code> file you write:</p> | | 4901 | <code class="filename">PLIST</code> file you write:</p> |
4892 | <pre class="programlisting"> | | 4902 | <pre class="programlisting"> |
4893 | @comment $NetBSD$ | | 4903 | @comment $NetBSD$ |
4894 | </pre> | | 4904 | </pre> |
4895 | </div> | | 4905 | </div> |
4896 | <div class="sect1"> | | 4906 | <div class="sect1"> |
4897 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4907 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4898 | <a name="automatic-plist-generation"></a>13.2. Semi-automatic <code class="filename">PLIST</code> generation</h2></div></div></div> | | 4908 | <a name="automatic-plist-generation"></a>13.2. Semi-automatic <code class="filename">PLIST</code> generation</h2></div></div></div> |
4899 | <p>You can use the <span class="command"><strong>make print-PLIST</strong></span> command | | 4909 | <p>You can use the <span class="command"><strong>make print-PLIST</strong></span> command |
4900 | to output a PLIST that matches any new files since the package | | 4910 | to output a PLIST that matches any new files since the package |
4901 | was extracted. See <a class="xref" href="#build.helpful-targets" title="17.17. Other helpful targets">Section 17.17, “Other helpful targets”</a> for | | 4911 | was extracted. See <a class="xref" href="#build.helpful-targets" title="17.17. Other helpful targets">Section 17.17, “Other helpful targets”</a> for |
4902 | more information on this target.</p> | | 4912 | more information on this target.</p> |
4903 | </div> | | 4913 | </div> |
4904 | <div class="sect1"> | | 4914 | <div class="sect1"> |
4905 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4915 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4906 | <a name="print-PLIST"></a>13.3. Tweaking output of <span class="command"><strong>make print-PLIST</strong></span> | | 4916 | <a name="print-PLIST"></a>13.3. Tweaking output of <span class="command"><strong>make print-PLIST</strong></span> |
4907 | </h2></div></div></div> | | 4917 | </h2></div></div></div> |
4908 | <p>If you have used any of the *-dirs packages, as explained in | | 4918 | <p>If you have used any of the *-dirs packages, as explained in |
4909 | <a class="xref" href="#faq.common-dirs" title="13.8. Sharing directories between packages">Section 13.8, “Sharing directories between packages”</a>, you may have noticed that | | 4919 | <a class="xref" href="#faq.common-dirs" title="13.8. Sharing directories between packages">Section 13.8, “Sharing directories between packages”</a>, you may have noticed that |
4910 | <span class="command"><strong>make print-PLIST</strong></span> outputs a set of | | 4920 | <span class="command"><strong>make print-PLIST</strong></span> outputs a set of |
4911 | <code class="varname">@comment</code>s instead of real | | 4921 | <code class="varname">@comment</code>s instead of real |
4912 | <code class="varname">@dirrm</code> lines. You can also do this for | | 4922 | <code class="varname">@dirrm</code> lines. You can also do this for |
4913 | specific directories and files, so that the results of that | | 4923 | specific directories and files, so that the results of that |
4914 | command are very close to reality. This helps <span class="emphasis"><em>a | | 4924 | command are very close to reality. This helps <span class="emphasis"><em>a |
4915 | lot</em></span> during the update of packages.</p> | | 4925 | lot</em></span> during the update of packages.</p> |
4916 | <p>The <code class="varname">PRINT_PLIST_AWK</code> variable takes a set | | 4926 | <p>The <code class="varname">PRINT_PLIST_AWK</code> variable takes a set |
4917 | of AWK patterns and actions that are used to filter the output of | | 4927 | of AWK patterns and actions that are used to filter the output of |
4918 | print-PLIST. You can <span class="emphasis"><em>append</em></span> any chunk of AWK | | 4928 | print-PLIST. You can <span class="emphasis"><em>append</em></span> any chunk of AWK |
4919 | scripting you like to it, but be careful with quoting.</p> | | 4929 | scripting you like to it, but be careful with quoting.</p> |
4920 | <p>For example, to get all files inside the | | 4930 | <p>For example, to get all files inside the |
4921 | <code class="filename">libdata/foo</code> directory removed from the | | 4931 | <code class="filename">libdata/foo</code> directory removed from the |
4922 | resulting PLIST:</p> | | 4932 | resulting PLIST:</p> |
4923 | <pre class="programlisting"> | | 4933 | <pre class="programlisting"> |
4924 | PRINT_PLIST_AWK+= /^libdata\/foo/ { next; } | | 4934 | PRINT_PLIST_AWK+= /^libdata\/foo/ { next; } |
4925 | </pre> | | 4935 | </pre> |
4926 | <p>And to get all the <code class="varname">@dirrm</code> lines referring | | 4936 | <p>And to get all the <code class="varname">@dirrm</code> lines referring |
4927 | to a specific (shared) directory converted to | | 4937 | to a specific (shared) directory converted to |
4928 | <code class="varname">@comment</code>s:</p> | | 4938 | <code class="varname">@comment</code>s:</p> |
4929 | <pre class="programlisting"> | | 4939 | <pre class="programlisting"> |
4930 | PRINT_PLIST_AWK+= /^@dirrm share\/specific/ { print "@comment " $$0; next; } | | 4940 | PRINT_PLIST_AWK+= /^@dirrm share\/specific/ { print "@comment " $$0; next; } |
4931 | </pre> | | 4941 | </pre> |
4932 | </div> | | 4942 | </div> |
4933 | <div class="sect1"> | | 4943 | <div class="sect1"> |
4934 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4944 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4935 | <a name="plist.misc"></a>13.4. Variable substitution in PLIST</h2></div></div></div> | | 4945 | <a name="plist.misc"></a>13.4. Variable substitution in PLIST</h2></div></div></div> |
4936 | <p>A number of variables are substituted automatically in | | 4946 | <p>A number of variables are substituted automatically in |
4937 | PLISTs when a package is installed on a system. This includes the | | 4947 | PLISTs when a package is installed on a system. This includes the |
4938 | following variables:</p> | | 4948 | following variables:</p> |
4939 | <div class="variablelist"><dl class="variablelist"> | | 4949 | <div class="variablelist"><dl class="variablelist"> |
4940 | <dt><span class="term"><code class="varname">${MACHINE_ARCH}</code>, <code class="varname">${MACHINE_GNU_ARCH}</code></span></dt> | | 4950 | <dt><span class="term"><code class="varname">${MACHINE_ARCH}</code>, <code class="varname">${MACHINE_GNU_ARCH}</code></span></dt> |
4941 | <dd> | | 4951 | <dd> |
4942 | <p>Some packages like emacs and perl embed information | | 4952 | <p>Some packages like emacs and perl embed information |
4943 | about which architecture they were built on into the | | 4953 | about which architecture they were built on into the |
4944 | pathnames where they install their files. To handle this | | 4954 | pathnames where they install their files. To handle this |
4945 | case, PLIST will be preprocessed before actually used, and | | 4955 | case, PLIST will be preprocessed before actually used, and |
4946 | the symbol | | 4956 | the symbol |
4947 | <span class="quote">“<span class="quote"><code class="varname">${MACHINE_ARCH}</code></span>”</span> will be | | 4957 | <span class="quote">“<span class="quote"><code class="varname">${MACHINE_ARCH}</code></span>”</span> will be |
4948 | replaced by what <span class="command"><strong>uname -p</strong></span> gives. The | | 4958 | replaced by what <span class="command"><strong>uname -p</strong></span> gives. The |
4949 | same is done if the string | | 4959 | same is done if the string |
4950 | <code class="varname">${MACHINE_GNU_ARCH}</code> is embedded in | | 4960 | <code class="varname">${MACHINE_GNU_ARCH}</code> is embedded in |
4951 | PLIST somewhere - use this on packages that have GNU | | 4961 | PLIST somewhere - use this on packages that have GNU |
4952 | autoconf-created configure scripts.</p> | | 4962 | autoconf-created configure scripts.</p> |
4953 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 4963 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
4954 | <h3 class="title">Legacy note</h3> | | 4964 | <h3 class="title">Legacy note</h3> |
4955 | <p>There used to be a symbol | | 4965 | <p>There used to be a symbol |
4956 | <span class="quote">“<span class="quote"><code class="varname">$ARCH</code></span>”</span> that | | 4966 | <span class="quote">“<span class="quote"><code class="varname">$ARCH</code></span>”</span> that |
4957 | was replaced by the output of <span class="command"><strong>uname | | 4967 | was replaced by the output of <span class="command"><strong>uname |
4958 | -m</strong></span>, but that's no longer supported and has | | 4968 | -m</strong></span>, but that's no longer supported and has |
4959 | been removed.</p> | | 4969 | been removed.</p> |
4960 | </div> | | 4970 | </div> |
4961 | </dd> | | 4971 | </dd> |
4962 | <dt><span class="term"><code class="varname">${OPSYS}</code>, <code class="varname">${LOWER_OPSYS}</code>, <code class="varname">${OS_VERSION}</code></span></dt> | | 4972 | <dt><span class="term"><code class="varname">${OPSYS}</code>, <code class="varname">${LOWER_OPSYS}</code>, <code class="varname">${OS_VERSION}</code></span></dt> |
4963 | <dd> | | 4973 | <dd> |
4964 | <p>Some packages want to embed the OS name and version | | 4974 | <p>Some packages want to embed the OS name and version |
4965 | into some paths. To do this, use these variables in the | | 4975 | into some paths. To do this, use these variables in the |
4966 | <code class="filename">PLIST</code>: | | 4976 | <code class="filename">PLIST</code>: |
4967 | </p> | | 4977 | </p> |
4968 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4978 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4969 | <li class="listitem"><p><code class="varname">${OPSYS}</code> - output of <span class="quote">“<span class="quote"><span class="command"><strong>uname -s</strong></span></span>”</span></p></li> | | 4979 | <li class="listitem"><p><code class="varname">${OPSYS}</code> - output of <span class="quote">“<span class="quote"><span class="command"><strong>uname -s</strong></span></span>”</span></p></li> |
4970 | <li class="listitem"><p><code class="varname">${LOWER_OPSYS}</code> - lowercase common name (eg. <span class="quote">“<span class="quote">solaris</span>”</span>)</p></li> | | 4980 | <li class="listitem"><p><code class="varname">${LOWER_OPSYS}</code> - lowercase common name (eg. <span class="quote">“<span class="quote">solaris</span>”</span>)</p></li> |
4971 | <li class="listitem"><p><code class="varname">${OS_VERSION}</code> - <span class="quote">“<span class="quote"><span class="command"><strong>uname -r</strong></span></span>”</span></p></li> | | 4981 | <li class="listitem"><p><code class="varname">${OS_VERSION}</code> - <span class="quote">“<span class="quote"><span class="command"><strong>uname -r</strong></span></span>”</span></p></li> |
4972 | </ul></div> | | 4982 | </ul></div> |
4973 | </dd> | | 4983 | </dd> |
4974 | </dl></div> | | 4984 | </dl></div> |
4975 | <p>For a complete list of values which are replaced by | | 4985 | <p>For a complete list of values which are replaced by |
4976 | default, please look in <code class="filename">bsd.pkg.mk</code> (and | | 4986 | default, please look in <code class="filename">bsd.pkg.mk</code> (and |
4977 | search for <code class="varname">PLIST_SUBST</code>).</p> | | 4987 | search for <code class="varname">PLIST_SUBST</code>).</p> |
4978 | <p>If you want to change other variables not listed above, you | | 4988 | <p>If you want to change other variables not listed above, you |
4979 | can add variables and their expansions to this variable in the | | 4989 | can add variables and their expansions to this variable in the |
4980 | following way, similar to <code class="varname">MESSAGE_SUBST</code> (see <a class="xref" href="#components.optional" title="11.5. Optional files">Section 11.5, “Optional files”</a>):</p> | | 4990 | following way, similar to <code class="varname">MESSAGE_SUBST</code> (see <a class="xref" href="#components.optional" title="11.5. Optional files">Section 11.5, “Optional files”</a>):</p> |
4981 | <pre class="programlisting"> | | 4991 | <pre class="programlisting"> |
4982 | PLIST_SUBST+= SOMEVAR="somevalue" | | 4992 | PLIST_SUBST+= SOMEVAR="somevalue" |
4983 | </pre> | | 4993 | </pre> |
4984 | <p>This replaces all occurrences of <span class="quote">“<span class="quote">${SOMEVAR}</span>”</span> | | 4994 | <p>This replaces all occurrences of <span class="quote">“<span class="quote">${SOMEVAR}</span>”</span> |
4985 | in the <code class="filename">PLIST</code> with | | 4995 | in the <code class="filename">PLIST</code> with |
4986 | <span class="quote">“<span class="quote">somevalue</span>”</span>.</p> | | 4996 | <span class="quote">“<span class="quote">somevalue</span>”</span>.</p> |
4987 | <p>The <code class="varname">PLIST_VARS</code> variable can be used to simplify | | 4997 | <p>The <code class="varname">PLIST_VARS</code> variable can be used to simplify |
4988 | the common case of conditionally including some | | 4998 | the common case of conditionally including some |
4989 | <code class="filename">PLIST</code> entries. It can be done by adding | | 4999 | <code class="filename">PLIST</code> entries. It can be done by adding |
4990 | <code class="literal"><code class="varname">PLIST_VARS</code>+=foo</code> and | | 5000 | <code class="literal"><code class="varname">PLIST_VARS</code>+=foo</code> and |
4991 | setting the corresponding <code class="varname">PLIST.foo</code> variable | | 5001 | setting the corresponding <code class="varname">PLIST.foo</code> variable |
4992 | to <code class="literal">yes</code> if the entry should be included. | | 5002 | to <code class="literal">yes</code> if the entry should be included. |
4993 | This will substitute <span class="quote">“<span class="quote"><code class="varname">${PLIST.foo}</code></span>”</span> | | 5003 | This will substitute <span class="quote">“<span class="quote"><code class="varname">${PLIST.foo}</code></span>”</span> |
4994 | in the <code class="filename">PLIST</code> with either | | 5004 | in the <code class="filename">PLIST</code> with either |
4995 | <span class="quote">“<span class="quote"><code class="literal">""</code></span>”</span> or | | 5005 | <span class="quote">“<span class="quote"><code class="literal">""</code></span>”</span> or |
4996 | <span class="quote">“<span class="quote"><code class="literal">"@comment "</code></span>”</span>. | | 5006 | <span class="quote">“<span class="quote"><code class="literal">"@comment "</code></span>”</span>. |
4997 | For example, in <code class="filename">Makefile</code>:</p> | | 5007 | For example, in <code class="filename">Makefile</code>:</p> |
4998 | <pre class="programlisting"> | | 5008 | <pre class="programlisting"> |
4999 | PLIST_VARS+= foo | | 5009 | PLIST_VARS+= foo |
5000 | .if <em class="replaceable"><code>condition</code></em> | | 5010 | .if <em class="replaceable"><code>condition</code></em> |
5001 | PLIST.foo= yes | | 5011 | PLIST.foo= yes |
5002 | .else | | 5012 | .else |
5003 | </pre> | | 5013 | </pre> |
5004 | <p>And then in <code class="filename">PLIST</code>:</p> | | 5014 | <p>And then in <code class="filename">PLIST</code>:</p> |
5005 | <pre class="programlisting"> | | 5015 | <pre class="programlisting"> |
5006 | @comment $NetBSD$ | | 5016 | @comment $NetBSD$ |
5007 | bin/bar | | 5017 | bin/bar |
5008 | man/man1/bar.1 | | 5018 | man/man1/bar.1 |
5009 | ${PLIST.foo}bin/foo | | 5019 | ${PLIST.foo}bin/foo |
5010 | ${PLIST.foo}man/man1/foo.1 | | 5020 | ${PLIST.foo}man/man1/foo.1 |
5011 | ${PLIST.foo}share/bar/foo.data | | 5021 | ${PLIST.foo}share/bar/foo.data |
5012 | ${PLIST.foo}@dirrm share/bar | | 5022 | ${PLIST.foo}@dirrm share/bar |
5013 | </pre> | | 5023 | </pre> |
5014 | </div> | | 5024 | </div> |
5015 | <div class="sect1"> | | 5025 | <div class="sect1"> |
5016 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5026 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5017 | <a name="manpage-compression"></a>13.5. Man page compression</h2></div></div></div> | | 5027 | <a name="manpage-compression"></a>13.5. Man page compression</h2></div></div></div> |
5018 | <p>Man pages should be installed in compressed form if | | 5028 | <p>Man pages should be installed in compressed form if |
5019 | <code class="varname">MANZ</code> is set (in <code class="filename">bsd.own.mk</code>), | | 5029 | <code class="varname">MANZ</code> is set (in <code class="filename">bsd.own.mk</code>), |
5020 | and uncompressed otherwise. To handle this in the | | 5030 | and uncompressed otherwise. To handle this in the |
5021 | <code class="filename">PLIST</code> file, the suffix <span class="quote">“<span class="quote">.gz</span>”</span> is | | 5031 | <code class="filename">PLIST</code> file, the suffix <span class="quote">“<span class="quote">.gz</span>”</span> is |
5022 | appended/removed automatically for man pages according to | | 5032 | appended/removed automatically for man pages according to |
5023 | <code class="varname">MANZ</code> and <code class="varname">MANCOMPRESSED</code> being set | | 5033 | <code class="varname">MANZ</code> and <code class="varname">MANCOMPRESSED</code> being set |
5024 | or not, see above for details. This modification of the | | 5034 | or not, see above for details. This modification of the |
5025 | <code class="filename">PLIST</code> file is done on a copy of it, not | | 5035 | <code class="filename">PLIST</code> file is done on a copy of it, not |
5026 | <code class="filename">PLIST</code> itself.</p> | | 5036 | <code class="filename">PLIST</code> itself.</p> |
5027 | </div> | | 5037 | </div> |
5028 | <div class="sect1"> | | 5038 | <div class="sect1"> |
5029 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5039 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5030 | <a name="using-PLIST_SRC"></a>13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code> | | 5040 | <a name="using-PLIST_SRC"></a>13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code> |
5031 | </h2></div></div></div> | | 5041 | </h2></div></div></div> |
5032 | <p>To use one or more files as source for the <code class="filename">PLIST</code> used | | 5042 | <p>To use one or more files as source for the <code class="filename">PLIST</code> used |
5033 | in generating the binary package, set the variable | | 5043 | in generating the binary package, set the variable |
5034 | <code class="varname">PLIST_SRC</code> to the names of that file(s). | | 5044 | <code class="varname">PLIST_SRC</code> to the names of that file(s). |
5035 | The files are later concatenated using <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?cat+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">cat</span>(1)</span></a>, and the order of things is | | 5045 | The files are later concatenated using <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?cat+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">cat</span>(1)</span></a>, and the order of things is |
5036 | important. The default for <code class="varname">PLIST_SRC</code> is | | 5046 | important. The default for <code class="varname">PLIST_SRC</code> is |
5037 | <code class="filename">${PKGDIR}/PLIST</code>.</p> | | 5047 | <code class="filename">${PKGDIR}/PLIST</code>.</p> |
5038 | </div> | | 5048 | </div> |
5039 | <div class="sect1"> | | 5049 | <div class="sect1"> |
5040 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5050 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5041 | <a name="platform-specific-plist"></a>13.7. Platform-specific and differing PLISTs</h2></div></div></div> | | 5051 | <a name="platform-specific-plist"></a>13.7. Platform-specific and differing PLISTs</h2></div></div></div> |
5042 | <p>Some packages decide to install a different set of files based on | | 5052 | <p>Some packages decide to install a different set of files based on |
5043 | the operating system being used. These differences can be | | 5053 | the operating system being used. These differences can be |
5044 | automatically handled by using the following files:</p> | | 5054 | automatically handled by using the following files:</p> |
5045 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 5055 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
5046 | <li class="listitem"><p><code class="filename">PLIST.common</code></p></li> | | 5056 | <li class="listitem"><p><code class="filename">PLIST.common</code></p></li> |
5047 | <li class="listitem"><p><code class="filename">PLIST.${OPSYS}</code></p></li> | | 5057 | <li class="listitem"><p><code class="filename">PLIST.${OPSYS}</code></p></li> |
5048 | <li class="listitem"><p><code class="filename">PLIST.${MACHINE_ARCH}</code></p></li> | | 5058 | <li class="listitem"><p><code class="filename">PLIST.${MACHINE_ARCH}</code></p></li> |
5049 | <li class="listitem"><p><code class="filename">PLIST.${OPSYS}-${MACHINE_ARCH}</code></p></li> | | 5059 | <li class="listitem"><p><code class="filename">PLIST.${OPSYS}-${MACHINE_ARCH}</code></p></li> |
5050 | <li class="listitem"><p><code class="filename">PLIST.common_end</code></p></li> | | 5060 | <li class="listitem"><p><code class="filename">PLIST.common_end</code></p></li> |
5051 | </ul></div> | | 5061 | </ul></div> |
5052 | </div> | | 5062 | </div> |
5053 | <div class="sect1"> | | 5063 | <div class="sect1"> |
5054 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5064 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5055 | <a name="faq.common-dirs"></a>13.8. Sharing directories between packages</h2></div></div></div> | | 5065 | <a name="faq.common-dirs"></a>13.8. Sharing directories between packages</h2></div></div></div> |
5056 | <p>A <span class="quote">“<span class="quote">shared directory</span>”</span> is a directory where | | 5066 | <p>A <span class="quote">“<span class="quote">shared directory</span>”</span> is a directory where |
5057 | multiple (and unrelated) packages install files. These | | 5067 | multiple (and unrelated) packages install files. These |
5058 | directories were problematic because you had to add special | | 5068 | directories were problematic because you had to add special |
5059 | tricks in the PLIST to conditionally remove them, or have some | | 5069 | tricks in the PLIST to conditionally remove them, or have some |
5060 | centralized package handle them.</p> | | 5070 | centralized package handle them.</p> |
5061 | <p>In pkgsrc, it is now easy: Each package should create | | 5071 | <p>In pkgsrc, it is now easy: Each package should create |
5062 | directories and install files as needed; <span class="command"><strong>pkg_delete</strong></span> | | 5072 | directories and install files as needed; <span class="command"><strong>pkg_delete</strong></span> |
5063 | will remove any directories left empty after uninstalling a | | 5073 | will remove any directories left empty after uninstalling a |
5064 | package.</p> | | 5074 | package.</p> |
5065 | <p>If a package needs an empty directory to work, create | | 5075 | <p>If a package needs an empty directory to work, create |
5066 | the directory during installation as usual, and also add an | | 5076 | the directory during installation as usual, and also add an |
5067 | entry to the PLIST: | | 5077 | entry to the PLIST: |
5068 | </p> | | 5078 | </p> |
5069 | <pre class="programlisting"> | | 5079 | <pre class="programlisting"> |
5070 | @pkgdir path/to/empty/directory | | 5080 | @pkgdir path/to/empty/directory |
5071 | </pre> | | 5081 | </pre> |
5072 | <p> | | 5082 | <p> |
5073 | </p> | | 5083 | </p> |
5074 | </div> | | 5084 | </div> |
5075 | </div> | | 5085 | </div> |
5076 | <div class="chapter"> | | 5086 | <div class="chapter"> |
5077 | <div class="titlepage"><div><div><h2 class="title"> | | 5087 | <div class="titlepage"><div><div><h2 class="title"> |
5078 | <a name="buildlink"></a>Chapter 14. Buildlink methodology</h2></div></div></div> | | 5088 | <a name="buildlink"></a>Chapter 14. Buildlink methodology</h2></div></div></div> |
5079 | <div class="toc"> | | 5089 | <div class="toc"> |
5080 | <p><b>Table of Contents</b></p> | | 5090 | <p><b>Table of Contents</b></p> |
5081 | <dl> | | 5091 | <dl> |
5082 | <dt><span class="sect1"><a href="#converting-to-buildlink3">14.1. Converting packages to use buildlink3</a></span></dt> | | 5092 | <dt><span class="sect1"><a href="#converting-to-buildlink3">14.1. Converting packages to use buildlink3</a></span></dt> |
5083 | <dt><span class="sect1"><a href="#creating-buildlink3.mk">14.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> | | 5093 | <dt><span class="sect1"><a href="#creating-buildlink3.mk">14.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> |
5084 | <dd><dl> | | 5094 | <dd><dl> |
5085 | <dt><span class="sect2"><a href="#anatomy-of-bl3">14.2.1. Anatomy of a buildlink3.mk file</a></span></dt> | | 5095 | <dt><span class="sect2"><a href="#anatomy-of-bl3">14.2.1. Anatomy of a buildlink3.mk file</a></span></dt> |
5086 | <dt><span class="sect2"><a href="#updating-buildlink-depends">14.2.2. Updating | | 5096 | <dt><span class="sect2"><a href="#updating-buildlink-depends">14.2.2. Updating |
5087 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 5097 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
5088 | and | | 5098 | and |
5089 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 5099 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
5090 | in <code class="filename">buildlink3.mk</code> files</a></span></dt> | | 5100 | in <code class="filename">buildlink3.mk</code> files</a></span></dt> |
5091 | </dl></dd> | | 5101 | </dl></dd> |
5092 | <dt><span class="sect1"><a href="#writing-builtin.mk">14.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> | | 5102 | <dt><span class="sect1"><a href="#writing-builtin.mk">14.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> |
5093 | <dd><dl> | | 5103 | <dd><dl> |
5094 | <dt><span class="sect2"><a href="#anatomy-of-builtin.mk">14.3.1. Anatomy of a <code class="filename">builtin.mk</code> file</a></span></dt> | | 5104 | <dt><span class="sect2"><a href="#anatomy-of-builtin.mk">14.3.1. Anatomy of a <code class="filename">builtin.mk</code> file</a></span></dt> |
5095 | <dt><span class="sect2"><a href="#native-or-pkgsrc-preference">14.3.2. Global preferences for native or pkgsrc software</a></span></dt> | | 5105 | <dt><span class="sect2"><a href="#native-or-pkgsrc-preference">14.3.2. Global preferences for native or pkgsrc software</a></span></dt> |
5096 | </dl></dd> | | 5106 | </dl></dd> |
5097 | </dl> | | 5107 | </dl> |
5098 | </div> | | 5108 | </div> |
5099 | <p>Buildlink is a framework in pkgsrc that controls what headers and libraries | | 5109 | <p>Buildlink is a framework in pkgsrc that controls what headers and libraries |
5100 | are seen by a package's configure and build processes. This is implemented | | 5110 | are seen by a package's configure and build processes. This is implemented |
5101 | in a two step process:</p> | | 5111 | in a two step process:</p> |
5102 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 5112 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
5103 | <li class="listitem"><p>Symlink headers and libraries for dependencies into | | 5113 | <li class="listitem"><p>Symlink headers and libraries for dependencies into |
5104 | <code class="varname">BUILDLINK_DIR</code>, which by default is a subdirectory | | 5114 | <code class="varname">BUILDLINK_DIR</code>, which by default is a subdirectory |
5105 | of <code class="varname">WRKDIR</code>.</p></li> | | 5115 | of <code class="varname">WRKDIR</code>.</p></li> |
5106 | <li class="listitem"><p>Create wrapper scripts that are used in place of the normal compiler | | 5116 | <li class="listitem"><p>Create wrapper scripts that are used in place of the normal compiler |
5107 | tools that translate <code class="option">-I${LOCALBASE}/include</code> and | | 5117 | tools that translate <code class="option">-I${LOCALBASE}/include</code> and |
5108 | <code class="option">-L${LOCALBASE}/lib</code> into references to | | 5118 | <code class="option">-L${LOCALBASE}/lib</code> into references to |
5109 | <code class="varname">BUILDLINK_DIR</code>. The wrapper scripts also make | | 5119 | <code class="varname">BUILDLINK_DIR</code>. The wrapper scripts also make |
5110 | native compiler on some operating systems look like GCC, so that | | 5120 | native compiler on some operating systems look like GCC, so that |
5111 | packages that expect GCC won't require modifications to build with | | 5121 | packages that expect GCC won't require modifications to build with |
5112 | those native compilers.</p></li> | | 5122 | those native compilers.</p></li> |
5113 | </ol></div> | | 5123 | </ol></div> |
5114 | <p>This normalizes the environment in which a package is built so that the | | 5124 | <p>This normalizes the environment in which a package is built so that the |
5115 | package may be built consistently despite what other software may be | | 5125 | package may be built consistently despite what other software may be |
5116 | installed. Please note that the normal system header and library paths, | | 5126 | installed. Please note that the normal system header and library paths, |
5117 | e.g. <code class="filename">/usr/include</code>, | | 5127 | e.g. <code class="filename">/usr/include</code>, |
5118 | <code class="filename">/usr/lib</code>, etc., are always searched -- buildlink3 is | | 5128 | <code class="filename">/usr/lib</code>, etc., are always searched -- buildlink3 is |
5119 | designed to insulate the package build from non-system-supplied | | 5129 | designed to insulate the package build from non-system-supplied |
5120 | software.</p> | | 5130 | software.</p> |
5121 | <div class="sect1"> | | 5131 | <div class="sect1"> |
5122 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5132 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5123 | <a name="converting-to-buildlink3"></a>14.1. Converting packages to use buildlink3</h2></div></div></div> | | 5133 | <a name="converting-to-buildlink3"></a>14.1. Converting packages to use buildlink3</h2></div></div></div> |
5124 | <p>The process of converting packages to use the buildlink3 | | 5134 | <p>The process of converting packages to use the buildlink3 |
5125 | framework (<span class="quote">“<span class="quote">bl3ifying</span>”</span>) is fairly straightforward. | | 5135 | framework (<span class="quote">“<span class="quote">bl3ifying</span>”</span>) is fairly straightforward. |
5126 | The things to keep in mind are:</p> | | 5136 | The things to keep in mind are:</p> |
5127 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 5137 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
5128 | <li class="listitem"><p>Ensure that the build always calls the wrapper scripts | | 5138 | <li class="listitem"><p>Ensure that the build always calls the wrapper scripts |
5129 | instead of the actual toolchain. Some packages are tricky, | | 5139 | instead of the actual toolchain. Some packages are tricky, |
5130 | and the only way to know for sure is the check | | 5140 | and the only way to know for sure is the check |
5131 | <code class="filename">${WRKDIR}/.work.log</code> to see if the | | 5141 | <code class="filename">${WRKDIR}/.work.log</code> to see if the |
5132 | wrappers are being invoked.</p></li> | | 5142 | wrappers are being invoked.</p></li> |
5133 | <li class="listitem"><p>Don't override <code class="varname">PREFIX</code> from within | | 5143 | <li class="listitem"><p>Don't override <code class="varname">PREFIX</code> from within |
5134 | the package Makefile, e.g. Java VMs, standalone shells, | | 5144 | the package Makefile, e.g. Java VMs, standalone shells, |
5135 | etc., because the code to symlink files into | | 5145 | etc., because the code to symlink files into |
5136 | <code class="filename">${BUILDLINK_DIR}</code> looks for files | | 5146 | <code class="filename">${BUILDLINK_DIR}</code> looks for files |
5137 | relative to <span class="quote">“<span class="quote">pkg_info -qp <em class="replaceable"><code>pkgname</code></em></span>”</span>. | | 5147 | relative to <span class="quote">“<span class="quote">pkg_info -qp <em class="replaceable"><code>pkgname</code></em></span>”</span>. |
5138 | </p></li> | | 5148 | </p></li> |
5139 | <li class="listitem"><p>Remember that <span class="emphasis"><em>only</em></span> the | | 5149 | <li class="listitem"><p>Remember that <span class="emphasis"><em>only</em></span> the |
5140 | <code class="filename">buildlink3.mk</code> files that you list in a | | 5150 | <code class="filename">buildlink3.mk</code> files that you list in a |
5141 | package's Makefile are added as dependencies for that package. | | 5151 | package's Makefile are added as dependencies for that package. |
5142 | </p></li> | | 5152 | </p></li> |
5143 | </ol></div> | | 5153 | </ol></div> |
5144 | <p>If a dependency on a particular package is required for its libraries and | | 5154 | <p>If a dependency on a particular package is required for its libraries and |
5145 | headers, then we replace:</p> | | 5155 | headers, then we replace:</p> |
5146 | <pre class="programlisting"> | | 5156 | <pre class="programlisting"> |
5147 | DEPENDS+= foo>=1.1.0:../../category/foo | | 5157 | DEPENDS+= foo>=1.1.0:../../category/foo |
5148 | </pre> | | 5158 | </pre> |
5149 | <p>with</p> | | 5159 | <p>with</p> |
5150 | <pre class="programlisting"> | | 5160 | <pre class="programlisting"> |
5151 | .include "../../category/foo/buildlink3.mk" | | 5161 | .include "../../category/foo/buildlink3.mk" |
5152 | </pre> | | 5162 | </pre> |
5153 | <p>The buildlink3.mk files usually define the required dependencies. | | 5163 | <p>The buildlink3.mk files usually define the required dependencies. |
5154 | If you need a newer version of the dependency when using buildlink3.mk | | 5164 | If you need a newer version of the dependency when using buildlink3.mk |
5155 | files, then you can define it in your Makefile; for example:</p> | | 5165 | files, then you can define it in your Makefile; for example:</p> |
5156 | <pre class="programlisting"> | | 5166 | <pre class="programlisting"> |
5157 | BUILDLINK_API_DEPENDS.foo+= foo>=1.1.0 | | 5167 | BUILDLINK_API_DEPENDS.foo+= foo>=1.1.0 |
5158 | .include "../../category/foo/buildlink3.mk" | | 5168 | .include "../../category/foo/buildlink3.mk" |
5159 | </pre> | | 5169 | </pre> |
5160 | <p>There are several <code class="filename">buildlink3.mk</code> | | 5170 | <p>There are several <code class="filename">buildlink3.mk</code> |
5161 | files in <code class="filename">pkgsrc/mk</code> | | 5171 | files in <code class="filename">pkgsrc/mk</code> |
5162 | that handle special package issues:</p> | | 5172 | that handle special package issues:</p> |
5163 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 5173 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
5164 | <li class="listitem"><p><code class="filename">bdb.buildlink3.mk</code> chooses either | | 5174 | <li class="listitem"><p><code class="filename">bdb.buildlink3.mk</code> chooses either |
5165 | the native or a pkgsrc Berkeley DB implementation based on | | 5175 | the native or a pkgsrc Berkeley DB implementation based on |
5166 | the values of <code class="varname">BDB_ACCEPTED</code> and | | 5176 | the values of <code class="varname">BDB_ACCEPTED</code> and |
5167 | <code class="varname">BDB_DEFAULT</code>.</p></li> | | 5177 | <code class="varname">BDB_DEFAULT</code>.</p></li> |
5168 | <li class="listitem"><p><code class="filename">curses.buildlink3.mk</code>: If the system | | 5178 | <li class="listitem"><p><code class="filename">curses.buildlink3.mk</code>: If the system |
5169 | comes with neither Curses nor NCurses, this will take care | | 5179 | comes with neither Curses nor NCurses, this will take care |
5170 | to install the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/ncurses/README.html" target="_top"><code class="filename">devel/ncurses</code></a> package.</p></li> | | 5180 | to install the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/ncurses/README.html" target="_top"><code class="filename">devel/ncurses</code></a> package.</p></li> |
5171 | <li class="listitem"><p><code class="filename">krb5.buildlink3.mk</code> uses the value | | 5181 | <li class="listitem"><p><code class="filename">krb5.buildlink3.mk</code> uses the value |
5172 | of <code class="varname">KRB5_ACCEPTED</code> to choose between | | 5182 | of <code class="varname">KRB5_ACCEPTED</code> to choose between |
5173 | adding a dependency on Heimdal or MIT-krb5 for packages that | | 5183 | adding a dependency on Heimdal or MIT-krb5 for packages that |
5174 | require a Kerberos 5 implementation.</p></li> | | 5184 | require a Kerberos 5 implementation.</p></li> |
5175 | <li class="listitem"><p><code class="filename">motif.buildlink3.mk</code> checks for a | | 5185 | <li class="listitem"><p><code class="filename">motif.buildlink3.mk</code> checks for a |
5176 | system-provided Motif installation or adds a dependency on | | 5186 | system-provided Motif installation or adds a dependency on |
5177 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/x11/lesstif/README.html" target="_top"><code class="filename">x11/lesstif</code></a>, <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/x11/motif/README.html" target="_top"><code class="filename">x11/motif</code></a> or <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/x11/openmotif/README.html" target="_top"><code class="filename">x11/openmotif</code></a>. The user can set | | 5187 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/x11/lesstif/README.html" target="_top"><code class="filename">x11/lesstif</code></a>, <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/x11/motif/README.html" target="_top"><code class="filename">x11/motif</code></a> or <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/x11/openmotif/README.html" target="_top"><code class="filename">x11/openmotif</code></a>. The user can set |
5178 | <code class="varname">MOTIF_TYPE</code> to <span class="quote">“<span class="quote">dt</span>”</span>, | | 5188 | <code class="varname">MOTIF_TYPE</code> to <span class="quote">“<span class="quote">dt</span>”</span>, |
5179 | <span class="quote">“<span class="quote">lesstif</span>”</span>, <span class="quote">“<span class="quote">motif</span>”</span> or | | 5189 | <span class="quote">“<span class="quote">lesstif</span>”</span>, <span class="quote">“<span class="quote">motif</span>”</span> or |
5180 | <span class="quote">“<span class="quote">openmotif</span>”</span> to choose | | 5190 | <span class="quote">“<span class="quote">openmotif</span>”</span> to choose |
5181 | which Motif version will be used.</p></li> | | 5191 | which Motif version will be used.</p></li> |
5182 | <li class="listitem"><p><code class="filename">readline.buildlink3.mk</code> checks for a | | 5192 | <li class="listitem"><p><code class="filename">readline.buildlink3.mk</code> checks for a |
5183 | system-provided GNU readline or editline (libedit) installation, | | 5193 | system-provided GNU readline or editline (libedit) installation, |
5184 | or adds a dependency on <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/readline/README.html" target="_top"><code class="filename">devel/readline</code></a>, | | 5194 | or adds a dependency on <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/readline/README.html" target="_top"><code class="filename">devel/readline</code></a>, |
5185 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/editline/README.html" target="_top"><code class="filename">devel/editline</code></a>. The user can set | | 5195 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/editline/README.html" target="_top"><code class="filename">devel/editline</code></a>. The user can set |
5186 | <code class="varname">READLINE_DEFAULT</code> to choose readline implementation. | | 5196 | <code class="varname">READLINE_DEFAULT</code> to choose readline implementation. |
5187 | If your package really needs GNU readline library, its Makefile | | 5197 | If your package really needs GNU readline library, its Makefile |
5188 | should include <code class="filename">devel/readline/buildlink3.mk</code> | | 5198 | should include <code class="filename">devel/readline/buildlink3.mk</code> |
5189 | instead of <code class="filename">readline.buildlink3.mk</code>.</p></li> | | 5199 | instead of <code class="filename">readline.buildlink3.mk</code>.</p></li> |
5190 | <li class="listitem"><p><code class="filename">oss.buildlink3.mk</code> defines several | | 5200 | <li class="listitem"><p><code class="filename">oss.buildlink3.mk</code> defines several |
5191 | variables that may be used by packages that use the | | 5201 | variables that may be used by packages that use the |
5192 | Open Sound System (OSS) API.</p></li> | | 5202 | Open Sound System (OSS) API.</p></li> |
5193 | <li class="listitem"><p><code class="filename">pgsql.buildlink3.mk</code> will accept | | 5203 | <li class="listitem"><p><code class="filename">pgsql.buildlink3.mk</code> will accept |
5194 | any of the Postgres versions in the variable | | 5204 | any of the Postgres versions in the variable |
5195 | <code class="varname">PGSQL_VERSIONS_ACCEPTED</code> and default to | | 5205 | <code class="varname">PGSQL_VERSIONS_ACCEPTED</code> and default to |
5196 | the version <code class="varname">PGSQL_VERSION_DEFAULT</code>. See | | 5206 | the version <code class="varname">PGSQL_VERSION_DEFAULT</code>. See |
5197 | the file for more information.</p></li> | | 5207 | the file for more information.</p></li> |
5198 | <li class="listitem"><p><code class="filename">pthread.buildlink3.mk</code> uses the value of | | 5208 | <li class="listitem"><p><code class="filename">pthread.buildlink3.mk</code> uses the value of |
5199 | <code class="varname">PTHREAD_OPTS</code> and checks for native pthreads or adds | | 5209 | <code class="varname">PTHREAD_OPTS</code> and checks for native pthreads or adds |
5200 | a dependency on <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/pth/README.html" target="_top"><code class="filename">devel/pth</code></a> as needed.</p></li> | | 5210 | a dependency on <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/pth/README.html" target="_top"><code class="filename">devel/pth</code></a> as needed.</p></li> |
5201 | <li class="listitem"><p><code class="filename">xaw.buildlink3.mk</code> uses the value of | | 5211 | <li class="listitem"><p><code class="filename">xaw.buildlink3.mk</code> uses the value of |
5202 | <code class="varname">XAW_TYPE</code> to choose a particular Athena widgets | | 5212 | <code class="varname">XAW_TYPE</code> to choose a particular Athena widgets |
5203 | library.</p></li> | | 5213 | library.</p></li> |
5204 | </ul></div> | | 5214 | </ul></div> |
5205 | <p>The comments in those <code class="filename">buildlink3.mk</code> | | 5215 | <p>The comments in those <code class="filename">buildlink3.mk</code> |
5206 | files provide a more complete | | 5216 | files provide a more complete |
5207 | description of how to use them properly.</p> | | 5217 | description of how to use them properly.</p> |
5208 | </div> | | 5218 | </div> |
5209 | <div class="sect1"> | | 5219 | <div class="sect1"> |
5210 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5220 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5211 | <a name="creating-buildlink3.mk"></a>14.2. Writing <code class="filename">buildlink3.mk</code> files</h2></div></div></div> | | 5221 | <a name="creating-buildlink3.mk"></a>14.2. Writing <code class="filename">buildlink3.mk</code> files</h2></div></div></div> |
5212 | <a name="buildlink3.mk"></a><p>A package's <code class="filename">buildlink3.mk</code> file is | | 5222 | <a name="buildlink3.mk"></a><p>A package's <code class="filename">buildlink3.mk</code> file is |
5213 | included by Makefiles to indicate the need to compile and link | | 5223 | included by Makefiles to indicate the need to compile and link |
5214 | against header files and libraries provided by the package. A | | 5224 | against header files and libraries provided by the package. A |
5215 | <code class="filename">buildlink3.mk</code> file should always provide | | 5225 | <code class="filename">buildlink3.mk</code> file should always provide |
5216 | enough information to add the correct type of dependency | | 5226 | enough information to add the correct type of dependency |
5217 | relationship and include any other | | 5227 | relationship and include any other |
5218 | <code class="filename">buildlink3.mk</code> files that it needs to find | | 5228 | <code class="filename">buildlink3.mk</code> files that it needs to find |
5219 | headers and libraries that it needs in turn.</p> | | 5229 | headers and libraries that it needs in turn.</p> |
5220 | <p>To generate an initial <code class="filename">buildlink3.mk</code> | | 5230 | <p>To generate an initial <code class="filename">buildlink3.mk</code> |
5221 | file for further editing, Rene Hexel's <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/createbuildlink/README.html" target="_top"><code class="filename">pkgtools/createbuildlink</code></a> | | 5231 | file for further editing, Rene Hexel's <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/createbuildlink/README.html" target="_top"><code class="filename">pkgtools/createbuildlink</code></a> |
5222 | package is highly recommended. For most packages, the following | | 5232 | package is highly recommended. For most packages, the following |
5223 | command will generate a good starting point for | | 5233 | command will generate a good starting point for |
5224 | <code class="filename">buildlink3.mk</code> files:</p> | | 5234 | <code class="filename">buildlink3.mk</code> files:</p> |
5225 | <pre class="screen"> | | 5235 | <pre class="screen"> |
5226 | <code class="prompt">%</code> <strong class="userinput"><code>cd pkgsrc/<em class="replaceable"><code>category</code></em>/<em class="replaceable"><code>pkgdir</code></em> | | 5236 | <code class="prompt">%</code> <strong class="userinput"><code>cd pkgsrc/<em class="replaceable"><code>category</code></em>/<em class="replaceable"><code>pkgdir</code></em> |
5227 | <code class="prompt">%</code> createbuildlink >buildlink3.mk</code></strong> | | 5237 | <code class="prompt">%</code> createbuildlink >buildlink3.mk</code></strong> |
5228 | </pre> | | 5238 | </pre> |
5229 | <div class="sect2"> | | 5239 | <div class="sect2"> |
5230 | <div class="titlepage"><div><div><h3 class="title"> | | 5240 | <div class="titlepage"><div><div><h3 class="title"> |
5231 | <a name="anatomy-of-bl3"></a>14.2.1. Anatomy of a buildlink3.mk file</h3></div></div></div> | | 5241 | <a name="anatomy-of-bl3"></a>14.2.1. Anatomy of a buildlink3.mk file</h3></div></div></div> |
5232 | <p>The following real-life example | | 5242 | <p>The following real-life example |
5233 | <code class="filename">buildlink3.mk</code> is taken | | 5243 | <code class="filename">buildlink3.mk</code> is taken |
5234 | from <code class="filename">pkgsrc/graphics/tiff</code>:</p> | | 5244 | from <code class="filename">pkgsrc/graphics/tiff</code>:</p> |
5235 | <pre class="programlisting"> | | 5245 | <pre class="programlisting"> |
5236 | # $NetBSD: buildlink3.mk,v 1.16 2009/03/20 19:24:45 joerg Exp $ | | 5246 | # $NetBSD: buildlink3.mk,v 1.16 2009/03/20 19:24:45 joerg Exp $ |
5237 | | | 5247 | |
5238 | BUILDLINK_TREE+= tiff | | 5248 | BUILDLINK_TREE+= tiff |
5239 | | | 5249 | |
5240 | .if !defined(TIFF_BUILDLINK3_MK) | | 5250 | .if !defined(TIFF_BUILDLINK3_MK) |
5241 | TIFF_BUILDLINK3_MK:= | | 5251 | TIFF_BUILDLINK3_MK:= |
5242 | | | 5252 | |
5243 | BUILDLINK_API_DEPENDS.tiff+= tiff>=3.6.1 | | 5253 | BUILDLINK_API_DEPENDS.tiff+= tiff>=3.6.1 |
5244 | BUILDLINK_ABI_DEPENDS.tiff+= tiff>=3.7.2nb1 | | 5254 | BUILDLINK_ABI_DEPENDS.tiff+= tiff>=3.7.2nb1 |
5245 | BUILDLINK_PKGSRCDIR.tiff?= ../../graphics/tiff | | 5255 | BUILDLINK_PKGSRCDIR.tiff?= ../../graphics/tiff |
5246 | | | 5256 | |
5247 | .include "../../devel/zlib/buildlink3.mk" | | 5257 | .include "../../devel/zlib/buildlink3.mk" |
5248 | .include "../../graphics/jpeg/buildlink3.mk" | | 5258 | .include "../../graphics/jpeg/buildlink3.mk" |
5249 | .endif # TIFF_BUILDLINK3_MK | | 5259 | .endif # TIFF_BUILDLINK3_MK |
5250 | | | 5260 | |
5251 | BUILDLINK_TREE+= -tiff | | 5261 | BUILDLINK_TREE+= -tiff |
5252 | </pre> | | 5262 | </pre> |
5253 | <p>The header and footer manipulate | | 5263 | <p>The header and footer manipulate |
5254 | <code class="varname">BUILDLINK_TREE</code>, which is common across all | | 5264 | <code class="varname">BUILDLINK_TREE</code>, which is common across all |
5255 | <code class="filename">buildlink3.mk</code> files and is used to track | | 5265 | <code class="filename">buildlink3.mk</code> files and is used to track |
5256 | the dependency tree.</p> | | 5266 | the dependency tree.</p> |
5257 | <p>The main section is protected from multiple inclusion | | 5267 | <p>The main section is protected from multiple inclusion |
5258 | and controls how the dependency on <em class="replaceable"><code>pkg</code></em> is | | 5268 | and controls how the dependency on <em class="replaceable"><code>pkg</code></em> is |
5259 | added. Several important variables are set in the section:</p> | | 5269 | added. Several important variables are set in the section:</p> |
5260 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 5270 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
5261 | <li class="listitem"><p><code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 5271 | <li class="listitem"><p><code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
5262 | is the actual dependency recorded in the installed | | 5272 | is the actual dependency recorded in the installed |
5263 | package; this should always be set using | | 5273 | package; this should always be set using |
5264 | <span class="command"><strong>+=</strong></span> to ensure that | | 5274 | <span class="command"><strong>+=</strong></span> to ensure that |
5265 | we're appending to any pre-existing list of values. This | | 5275 | we're appending to any pre-existing list of values. This |
5266 | variable should be set to the first version of the | | 5276 | variable should be set to the first version of the |
5267 | package that had an backwards-incompatible API change. | | 5277 | package that had an backwards-incompatible API change. |
5268 | </p></li> | | 5278 | </p></li> |
5269 | <li class="listitem"><p><code class="varname">BUILDLINK_PKGSRCDIR.<em class="replaceable"><code>pkg</code></em></code> | | 5279 | <li class="listitem"><p><code class="varname">BUILDLINK_PKGSRCDIR.<em class="replaceable"><code>pkg</code></em></code> |
5270 | is the location of the <em class="replaceable"><code>pkg</code></em> | | 5280 | is the location of the <em class="replaceable"><code>pkg</code></em> |
5271 | pkgsrc directory.</p></li> | | 5281 | pkgsrc directory.</p></li> |
5272 | <li class="listitem"><p><code class="varname">BUILDLINK_DEPMETHOD.<em class="replaceable"><code>pkg</code></em></code> | | 5282 | <li class="listitem"><p><code class="varname">BUILDLINK_DEPMETHOD.<em class="replaceable"><code>pkg</code></em></code> |
5273 | (not shown above) controls whether we use | | 5283 | (not shown above) controls whether we use |
5274 | <code class="varname">BUILD_DEPENDS</code> or | | 5284 | <code class="varname">BUILD_DEPENDS</code> or |
5275 | <code class="varname">DEPENDS</code> to add the dependency on | | 5285 | <code class="varname">DEPENDS</code> to add the dependency on |
5276 | <em class="replaceable"><code>pkg</code></em>. The build dependency is | | 5286 | <em class="replaceable"><code>pkg</code></em>. The build dependency is |
5277 | selected by setting | | 5287 | selected by setting |
5278 | <code class="varname">BUILDLINK_DEPMETHOD.<em class="replaceable"><code>pkg</code></em></code> | | 5288 | <code class="varname">BUILDLINK_DEPMETHOD.<em class="replaceable"><code>pkg</code></em></code> |
5279 | to <span class="quote">“<span class="quote">build</span>”</span>. By default, the full dependency is | | 5289 | to <span class="quote">“<span class="quote">build</span>”</span>. By default, the full dependency is |
5280 | used.</p></li> | | 5290 | used.</p></li> |
5281 | <li class="listitem"><p><code class="varname">BUILDLINK_INCDIRS.<em class="replaceable"><code>pkg</code></em></code> | | 5291 | <li class="listitem"><p><code class="varname">BUILDLINK_INCDIRS.<em class="replaceable"><code>pkg</code></em></code> |
5282 | and | | 5292 | and |
5283 | <code class="varname">BUILDLINK_LIBDIRS.<em class="replaceable"><code>pkg</code></em></code> | | 5293 | <code class="varname">BUILDLINK_LIBDIRS.<em class="replaceable"><code>pkg</code></em></code> |
5284 | (not shown above) are lists of subdirectories of | | 5294 | (not shown above) are lists of subdirectories of |
5285 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code> | | 5295 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code> |
5286 | to add to the header and library search paths. These | | 5296 | to add to the header and library search paths. These |
5287 | default to <span class="quote">“<span class="quote">include</span>”</span> and <span class="quote">“<span class="quote">lib</span>”</span> | | 5297 | default to <span class="quote">“<span class="quote">include</span>”</span> and <span class="quote">“<span class="quote">lib</span>”</span> |
5288 | respectively.</p></li> | | 5298 | respectively.</p></li> |
5289 | <li class="listitem"><p><code class="varname">BUILDLINK_CPPFLAGS.<em class="replaceable"><code>pkg</code></em></code> | | 5299 | <li class="listitem"><p><code class="varname">BUILDLINK_CPPFLAGS.<em class="replaceable"><code>pkg</code></em></code> |
5290 | (not shown above) is the list of preprocessor flags to add | | 5300 | (not shown above) is the list of preprocessor flags to add |
5291 | to <code class="varname">CPPFLAGS</code>, which are passed on to the | | 5301 | to <code class="varname">CPPFLAGS</code>, which are passed on to the |
5292 | configure and build phases. The <span class="quote">“<span class="quote">-I</span>”</span> option | | 5302 | configure and build phases. The <span class="quote">“<span class="quote">-I</span>”</span> option |
5293 | should be avoided and instead be handled using | | 5303 | should be avoided and instead be handled using |
5294 | <code class="varname">BUILDLINK_INCDIRS.<em class="replaceable"><code>pkg</code></em></code> as | | 5304 | <code class="varname">BUILDLINK_INCDIRS.<em class="replaceable"><code>pkg</code></em></code> as |
5295 | above.</p></li> | | 5305 | above.</p></li> |
5296 | </ul></div> | | 5306 | </ul></div> |
5297 | <p>The following variables are all optionally defined within | | 5307 | <p>The following variables are all optionally defined within |
5298 | this second section (protected against multiple inclusion) and | | 5308 | this second section (protected against multiple inclusion) and |
5299 | control which package files are symlinked into | | 5309 | control which package files are symlinked into |
5300 | <code class="filename">${BUILDLINK_DIR}</code> and how their names are | | 5310 | <code class="filename">${BUILDLINK_DIR}</code> and how their names are |
5301 | transformed during the symlinking:</p> | | 5311 | transformed during the symlinking:</p> |
5302 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 5312 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
5303 | <li class="listitem"><p><code class="varname">BUILDLINK_FILES.<em class="replaceable"><code>pkg</code></em></code> | | 5313 | <li class="listitem"><p><code class="varname">BUILDLINK_FILES.<em class="replaceable"><code>pkg</code></em></code> |
5304 | (not shown above) is a shell glob pattern relative to | | 5314 | (not shown above) is a shell glob pattern relative to |
5305 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code> | | 5315 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code> |
5306 | to be symlinked into | | 5316 | to be symlinked into |
5307 | <code class="filename">${BUILDLINK_DIR}</code>, | | 5317 | <code class="filename">${BUILDLINK_DIR}</code>, |
5308 | e.g. <code class="filename">include/*.h</code>.</p></li> | | 5318 | e.g. <code class="filename">include/*.h</code>.</p></li> |
5309 | <li class="listitem"><p><code class="varname">BUILDLINK_FILES_CMD.<em class="replaceable"><code>pkg</code></em></code> | | 5319 | <li class="listitem"><p><code class="varname">BUILDLINK_FILES_CMD.<em class="replaceable"><code>pkg</code></em></code> |
5310 | (not shown above) is a shell pipeline that | | 5320 | (not shown above) is a shell pipeline that |
5311 | outputs to stdout a list of files relative to | | 5321 | outputs to stdout a list of files relative to |
5312 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code>. | | 5322 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code>. |
5313 | The resulting files are to be symlinked | | 5323 | The resulting files are to be symlinked |
5314 | into <code class="filename">${BUILDLINK_DIR}</code>. By default, | | 5324 | into <code class="filename">${BUILDLINK_DIR}</code>. By default, |
5315 | this takes the <code class="filename">+CONTENTS</code> of a | | 5325 | this takes the <code class="filename">+CONTENTS</code> of a |
5316 | <em class="replaceable"><code>pkg</code></em> and filters it through | | 5326 | <em class="replaceable"><code>pkg</code></em> and filters it through |
5317 | <code class="varname">${BUILDLINK_CONTENTS_FILTER.<em class="replaceable"><code>pkg</code></em>}</code>.</p></li> | | 5327 | <code class="varname">${BUILDLINK_CONTENTS_FILTER.<em class="replaceable"><code>pkg</code></em>}</code>.</p></li> |
5318 | <li class="listitem"><p><code class="varname">BUILDLINK_CONTENTS_FILTER.<em class="replaceable"><code>pkg</code></em></code> | | 5328 | <li class="listitem"><p><code class="varname">BUILDLINK_CONTENTS_FILTER.<em class="replaceable"><code>pkg</code></em></code> |
5319 | (not shown above) is a filter command that filters | | 5329 | (not shown above) is a filter command that filters |
5320 | <code class="filename">+CONTENTS</code> input into a list of files | | 5330 | <code class="filename">+CONTENTS</code> input into a list of files |
5321 | relative to | | 5331 | relative to |
5322 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code> | | 5332 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code> |
5323 | on stdout. By default, | | 5333 | on stdout. By default for overwrite packages, |
5324 | <code class="varname">BUILDLINK_CONTENTS_FILTER.<em class="replaceable"><code>pkg</code></em></code> | | 5334 | <code class="varname">BUILDLINK_CONTENTS_FILTER.<em class="replaceable"><code>pkg</code></em></code> |
5325 | outputs the contents of the <code class="filename">include</code> | | 5335 | outputs the contents of the <code class="filename">include</code> |
5326 | and <code class="filename">lib</code> directories in the package | | 5336 | and <code class="filename">lib</code> directories in the package |
5327 | <code class="filename">+CONTENTS</code>.</p></li> | | 5337 | <code class="filename">+CONTENTS</code>, and for pkgviews packages, |
| | | 5338 | it outputs any libtool archives in |
| | | 5339 | <code class="filename">lib</code> directories.</p></li> |
5328 | <li class="listitem"><p><code class="varname">BUILDLINK_FNAME_TRANSFORM.<em class="replaceable"><code>pkg</code></em></code> | | 5340 | <li class="listitem"><p><code class="varname">BUILDLINK_FNAME_TRANSFORM.<em class="replaceable"><code>pkg</code></em></code> |
5329 | (not shown above) is a list of sed arguments used to | | 5341 | (not shown above) is a list of sed arguments used to |
5330 | transform the name of the source filename into a | | 5342 | transform the name of the source filename into a |
5331 | destination filename, e.g. <span class="command"><strong>-e | | 5343 | destination filename, e.g. <span class="command"><strong>-e |
5332 | "s|/curses.h|/ncurses.h|g"</strong></span>.</p></li> | | 5344 | "s|/curses.h|/ncurses.h|g"</strong></span>.</p></li> |
5333 | </ul></div> | | 5345 | </ul></div> |
5334 | <p>This section can additionally include any | | 5346 | <p>This section can additionally include any |
5335 | <code class="filename">buildlink3.mk</code> needed for | | 5347 | <code class="filename">buildlink3.mk</code> needed for |
5336 | <em class="replaceable"><code>pkg</code></em>'s library dependencies. | | 5348 | <em class="replaceable"><code>pkg</code></em>'s library dependencies. |
5337 | Including these <code class="filename">buildlink3.mk</code> files | | 5349 | Including these <code class="filename">buildlink3.mk</code> files |
5338 | means that the headers and libraries for these | | 5350 | means that the headers and libraries for these |
5339 | dependencies are also symlinked into | | 5351 | dependencies are also symlinked into |
5340 | <code class="filename">${BUILDLINK_DIR}</code> | | 5352 | <code class="filename">${BUILDLINK_DIR}</code> |
5341 | whenever the <em class="replaceable"><code>pkg</code></em> | | 5353 | whenever the <em class="replaceable"><code>pkg</code></em> |
5342 | <code class="filename">buildlink3.mk</code> | | 5354 | <code class="filename">buildlink3.mk</code> |
5343 | file is included. Dependencies are only added for directly | | 5355 | file is included. Dependencies are only added for directly |
5344 | include <code class="filename">buildlink3.mk</code> files.</p> | | 5356 | include <code class="filename">buildlink3.mk</code> files.</p> |
5345 | <p>When providing a <code class="filename">buildlink3.mk</code> and | | 5357 | <p>When providing a <code class="filename">buildlink3.mk</code> and |
5346 | including other <code class="filename">buildlink3.mk</code> files in it, | | 5358 | including other <code class="filename">buildlink3.mk</code> files in it, |
5347 | please only add necessary ones, i.e., those whose libraries or | | 5359 | please only add necessary ones, i.e., those whose libraries or |
5348 | header files are automatically exposed when the package is | | 5360 | header files are automatically exposed when the package is |
5349 | use.</p> | | 5361 | use.</p> |
5350 | <p>In particular, if only an executable | | 5362 | <p>In particular, if only an executable |
5351 | (<code class="filename">bin/foo</code>) is linked against a library, that | | 5363 | (<code class="filename">bin/foo</code>) is linked against a library, that |
5352 | library does not need to be propagated in the | | 5364 | library does not need to be propagated in the |
5353 | <code class="filename">buildlink3.mk</code> file.</p> | | 5365 | <code class="filename">buildlink3.mk</code> file.</p> |
5354 | <p>The following steps should help you decide if a | | 5366 | <p>The following steps should help you decide if a |
5355 | <code class="filename">buildlink3.mk</code> file needs to be included: | | 5367 | <code class="filename">buildlink3.mk</code> file needs to be included: |
5356 | </p> | | 5368 | </p> |
5357 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 5369 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
5358 | <li class="listitem"><p>Look at the installed header files: What | | 5370 | <li class="listitem"><p>Look at the installed header files: What |
5359 | headers do they include? The packages providing these files | | 5371 | headers do they include? The packages providing these files |
5360 | must be buildlinked.</p></li> | | 5372 | must be buildlinked.</p></li> |
5361 | <li class="listitem"><p>Run <code class="filename">ldd</code> on all installed | | 5373 | <li class="listitem"><p>Run <code class="filename">ldd</code> on all installed |
5362 | libraries and look against what other libraries they link. | | 5374 | libraries and look against what other libraries they link. |
5363 | Some of the packages providing these probably need to be | | 5375 | Some of the packages providing these probably need to be |
5364 | buildlinked; however, it's not automatic, since e.g. GTK on | | 5376 | buildlinked; however, it's not automatic, since e.g. GTK on |
5365 | some systems pulls in the X libraries, so they will show up in | | 5377 | some systems pulls in the X libraries, so they will show up in |
5366 | the <code class="filename">ldd</code> output, while on others (like OS | | 5378 | the <code class="filename">ldd</code> output, while on others (like OS |
5367 | X) it won't. <code class="filename">ldd</code> output can thus only be | | 5379 | X) it won't. <code class="filename">ldd</code> output can thus only be |
5368 | used as a hint.</p></li> | | 5380 | used as a hint.</p></li> |
5369 | </ul></div> | | 5381 | </ul></div> |
5370 | <p> | | 5382 | <p> |
5371 | </p> | | 5383 | </p> |
5372 | </div> | | 5384 | </div> |
5373 | <div class="sect2"> | | 5385 | <div class="sect2"> |
5374 | <div class="titlepage"><div><div><h3 class="title"> | | 5386 | <div class="titlepage"><div><div><h3 class="title"> |
5375 | <a name="updating-buildlink-depends"></a>14.2.2. Updating | | 5387 | <a name="updating-buildlink-depends"></a>14.2.2. Updating |
5376 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 5388 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
5377 | and | | 5389 | and |
5378 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 5390 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
5379 | in <code class="filename">buildlink3.mk</code> files</h3></div></div></div> | | 5391 | in <code class="filename">buildlink3.mk</code> files</h3></div></div></div> |
5380 | <p>These two variables differ in that one describes source | | 5392 | <p>These two variables differ in that one describes source |
5381 | compatibility (API) and the other binary compatibility (ABI). | | 5393 | compatibility (API) and the other binary compatibility (ABI). |
5382 | The difference is that a change in the API breaks compilation of | | 5394 | The difference is that a change in the API breaks compilation of |
5383 | programs while changes in the ABI stop compiled programs from | | 5395 | programs while changes in the ABI stop compiled programs from |
5384 | running.</p> | | 5396 | running.</p> |
5385 | <p>Changes to the | | 5397 | <p>Changes to the |
5386 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 5398 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
5387 | variable in a <code class="filename">buildlink3.mk</code> file happen | | 5399 | variable in a <code class="filename">buildlink3.mk</code> file happen |
5388 | very rarely. One possible reason is that all packages depending | | 5400 | very rarely. One possible reason is that all packages depending |
5389 | on this already need a newer version. In case it is bumped see | | 5401 | on this already need a newer version. In case it is bumped see |
5390 | the description below.</p> | | 5402 | the description below.</p> |
5391 | <p>The most common example of an ABI change is that the major | | 5403 | <p>The most common example of an ABI change is that the major |
5392 | version of a shared library is increased. In this case, | | 5404 | version of a shared library is increased. In this case, |
5393 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 5405 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
5394 | should be adjusted to require at least the new package version. | | 5406 | should be adjusted to require at least the new package version. |
5395 | Then the packages that depend on this package need their | | 5407 | Then the packages that depend on this package need their |
5396 | <code class="varname">PKGREVISION</code>s increased and, if they have | | 5408 | <code class="varname">PKGREVISION</code>s increased and, if they have |
5397 | <code class="filename">buildlink3.mk</code> files, their | | 5409 | <code class="filename">buildlink3.mk</code> files, their |
5398 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 5410 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
5399 | adjusted, too. This is needed so pkgsrc will require the correct | | 5411 | adjusted, too. This is needed so pkgsrc will require the correct |
5400 | package dependency and not settle for an older one when building | | 5412 | package dependency and not settle for an older one when building |
5401 | the source.</p> | | 5413 | the source.</p> |
5402 | <p>See <a class="xref" href="#dependencies" title="19.1.6. Handling dependencies">Section 19.1.6, “Handling dependencies”</a> for | | 5414 | <p>See <a class="xref" href="#dependencies" title="19.1.6. Handling dependencies">Section 19.1.6, “Handling dependencies”</a> for |
5403 | more information about dependencies on other packages, | | 5415 | more information about dependencies on other packages, |
5404 | including the <code class="varname">BUILDLINK_ABI_DEPENDS</code> and | | 5416 | including the <code class="varname">BUILDLINK_ABI_DEPENDS</code> and |
5405 | <code class="varname">ABI_DEPENDS</code> definitions.</p> | | 5417 | <code class="varname">ABI_DEPENDS</code> definitions.</p> |
5406 | <p>Please take careful consideration before adjusting | | 5418 | <p>Please take careful consideration before adjusting |
5407 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 5419 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
5408 | or | | 5420 | or |
5409 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 5421 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
5410 | as we don't want to cause unneeded package deletions and | | 5422 | as we don't want to cause unneeded package deletions and |
5411 | rebuilds. In many cases, new versions of packages work just | | 5423 | rebuilds. In many cases, new versions of packages work just |
5412 | fine with older dependencies.</p> | | 5424 | fine with older dependencies.</p> |
5413 | <p>Also it is not needed to set | | 5425 | <p>Also it is not needed to set |
5414 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 5426 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
5415 | when it is identical to | | 5427 | when it is identical to |
5416 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code>. </p> | | 5428 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code>. </p> |
5417 | </div> | | 5429 | </div> |
5418 | </div> | | 5430 | </div> |
5419 | <div class="sect1"> | | 5431 | <div class="sect1"> |
5420 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5432 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5421 | <a name="writing-builtin.mk"></a>14.3. Writing <code class="filename">builtin.mk</code> files</h2></div></div></div> | | 5433 | <a name="writing-builtin.mk"></a>14.3. Writing <code class="filename">builtin.mk</code> files</h2></div></div></div> |
5422 | <p>Some packages in pkgsrc install headers and libraries that | | 5434 | <p>Some packages in pkgsrc install headers and libraries that |
5423 | coincide with headers and libraries present in the base system. | | 5435 | coincide with headers and libraries present in the base system. |
5424 | Aside from a <code class="filename">buildlink3.mk</code> file, these | | 5436 | Aside from a <code class="filename">buildlink3.mk</code> file, these |
5425 | packages should also include a <code class="filename">builtin.mk</code> | | 5437 | packages should also include a <code class="filename">builtin.mk</code> |
5426 | file that includes the necessary checks to decide whether using | | 5438 | file that includes the necessary checks to decide whether using |
5427 | the built-in software or the pkgsrc software is | | 5439 | the built-in software or the pkgsrc software is |
5428 | appropriate.</p> | | 5440 | appropriate.</p> |
5429 | <p>The only requirements of a builtin.mk file for | | 5441 | <p>The only requirements of a builtin.mk file for |
5430 | <em class="replaceable"><code>pkg</code></em> are:</p> | | 5442 | <em class="replaceable"><code>pkg</code></em> are:</p> |
5431 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 5443 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
5432 | <li class="listitem"><p>It should set | | 5444 | <li class="listitem"><p>It should set |
5433 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 5445 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
5434 | to either <span class="quote">“<span class="quote">yes</span>”</span> or <span class="quote">“<span class="quote">no</span>”</span> | | 5446 | to either <span class="quote">“<span class="quote">yes</span>”</span> or <span class="quote">“<span class="quote">no</span>”</span> |
5435 | after it is included.</p></li> | | 5447 | after it is included.</p></li> |
5436 | <li class="listitem"><p>It should <span class="emphasis"><em>not</em></span> override any | | 5448 | <li class="listitem"><p>It should <span class="emphasis"><em>not</em></span> override any |
5437 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 5449 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
5438 | which is already set before the | | 5450 | which is already set before the |
5439 | <code class="filename">builtin.mk</code> file is included.</p></li> | | 5451 | <code class="filename">builtin.mk</code> file is included.</p></li> |
5440 | <li class="listitem"><p>It should be written to allow multiple inclusion. This | | 5452 | <li class="listitem"><p>It should be written to allow multiple inclusion. This |
5441 | is <span class="emphasis"><em>very</em></span> important and takes careful | | 5453 | is <span class="emphasis"><em>very</em></span> important and takes careful |
5442 | attention to <code class="filename">Makefile</code> coding.</p></li> | | 5454 | attention to <code class="filename">Makefile</code> coding.</p></li> |
5443 | </ol></div> | | 5455 | </ol></div> |
5444 | <div class="sect2"> | | 5456 | <div class="sect2"> |
5445 | <div class="titlepage"><div><div><h3 class="title"> | | 5457 | <div class="titlepage"><div><div><h3 class="title"> |
5446 | <a name="anatomy-of-builtin.mk"></a>14.3.1. Anatomy of a <code class="filename">builtin.mk</code> file</h3></div></div></div> | | 5458 | <a name="anatomy-of-builtin.mk"></a>14.3.1. Anatomy of a <code class="filename">builtin.mk</code> file</h3></div></div></div> |
5447 | <p>The following is the recommended template for builtin.mk | | 5459 | <p>The following is the recommended template for builtin.mk |
5448 | files:</p> | | 5460 | files:</p> |
5449 | <pre class="programlisting"> | | 5461 | <pre class="programlisting"> |
5450 | .if !defined(IS_BUILTIN.foo) | | 5462 | .if !defined(IS_BUILTIN.foo) |
5451 | # | | 5463 | # |
5452 | # IS_BUILTIN.foo is set to "yes" or "no" depending on whether "foo" | | 5464 | # IS_BUILTIN.foo is set to "yes" or "no" depending on whether "foo" |
5453 | # genuinely exists in the system or not. | | 5465 | # genuinely exists in the system or not. |
5454 | # | | 5466 | # |
5455 | IS_BUILTIN.foo?= no | | 5467 | IS_BUILTIN.foo?= no |
5456 | | | 5468 | |
5457 | # BUILTIN_PKG.foo should be set here if "foo" is built-in and its package | | 5469 | # BUILTIN_PKG.foo should be set here if "foo" is built-in and its package |
5458 | # version can be determined. | | 5470 | # version can be determined. |
5459 | # | | 5471 | # |
5460 | . if !empty(IS_BUILTIN.foo:M[yY][eE][sS]) | | 5472 | . if !empty(IS_BUILTIN.foo:M[yY][eE][sS]) |
5461 | BUILTIN_PKG.foo?= foo-1.0 | | 5473 | BUILTIN_PKG.foo?= foo-1.0 |
5462 | . endif | | 5474 | . endif |
5463 | .endif # IS_BUILTIN.foo | | 5475 | .endif # IS_BUILTIN.foo |
5464 | | | 5476 | |
5465 | .if !defined(USE_BUILTIN.foo) | | 5477 | .if !defined(USE_BUILTIN.foo) |
5466 | USE_BUILTIN.foo?= ${IS_BUILTIN.foo} | | 5478 | USE_BUILTIN.foo?= ${IS_BUILTIN.foo} |
5467 | . if defined(BUILTIN_PKG.foo) | | 5479 | . if defined(BUILTIN_PKG.foo) |
5468 | . for _depend_ in ${BUILDLINK_API_DEPENDS.foo} | | 5480 | . for _depend_ in ${BUILDLINK_API_DEPENDS.foo} |
5469 | . if !empty(USE_BUILTIN.foo:M[yY][eE][sS]) | | 5481 | . if !empty(USE_BUILTIN.foo:M[yY][eE][sS]) |
5470 | USE_BUILTIN.foo!= \ | | 5482 | USE_BUILTIN.foo!= \ |
5471 | ${PKG_ADMIN} pmatch '${_depend_}' ${BUILTIN_PKG.foo} \ | | 5483 | ${PKG_ADMIN} pmatch '${_depend_}' ${BUILTIN_PKG.foo} \ |
5472 | && ${ECHO} "yes" || ${ECHO} "no" | | 5484 | && ${ECHO} "yes" || ${ECHO} "no" |
5473 | . endif | | 5485 | . endif |
5474 | . endfor | | 5486 | . endfor |
5475 | . endif | | 5487 | . endif |
5476 | .endif # USE_BUILTIN.foo | | 5488 | .endif # USE_BUILTIN.foo |
5477 | | | 5489 | |
5478 | CHECK_BUILTIN.foo?= no | | 5490 | CHECK_BUILTIN.foo?= no |
5479 | .if !empty(CHECK_BUILTIN.foo:M[nN][oO]) | | 5491 | .if !empty(CHECK_BUILTIN.foo:M[nN][oO]) |
5480 | # | | 5492 | # |
5481 | # Here we place code that depends on whether USE_BUILTIN.foo is set to | | 5493 | # Here we place code that depends on whether USE_BUILTIN.foo is set to |
5482 | # "yes" or "no". | | 5494 | # "yes" or "no". |
5483 | # | | 5495 | # |
5484 | .endif # CHECK_BUILTIN.foo | | 5496 | .endif # CHECK_BUILTIN.foo |
5485 | </pre> | | 5497 | </pre> |
5486 | <p>The first section sets | | 5498 | <p>The first section sets |
5487 | <code class="varname">IS_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 5499 | <code class="varname">IS_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
5488 | depending on if <em class="replaceable"><code>pkg</code></em> really exists | | 5500 | depending on if <em class="replaceable"><code>pkg</code></em> really exists |
5489 | in the base system. This should not be a base system software | | 5501 | in the base system. This should not be a base system software |
5490 | with similar functionality to <em class="replaceable"><code>pkg</code></em>; | | 5502 | with similar functionality to <em class="replaceable"><code>pkg</code></em>; |
5491 | it should only be <span class="quote">“<span class="quote">yes</span>”</span> if the actual package is | | 5503 | it should only be <span class="quote">“<span class="quote">yes</span>”</span> if the actual package is |
5492 | included as part of the base system. This variable is only | | 5504 | included as part of the base system. This variable is only |
5493 | used internally within the <code class="filename">builtin.mk</code> | | 5505 | used internally within the <code class="filename">builtin.mk</code> |
5494 | file.</p> | | 5506 | file.</p> |
5495 | <p>The second section sets | | 5507 | <p>The second section sets |
5496 | <code class="varname">BUILTIN_PKG.<em class="replaceable"><code>pkg</code></em></code> | | 5508 | <code class="varname">BUILTIN_PKG.<em class="replaceable"><code>pkg</code></em></code> |
5497 | to the version of <em class="replaceable"><code>pkg</code></em> in the base | | 5509 | to the version of <em class="replaceable"><code>pkg</code></em> in the base |
5498 | system if it exists (if | | 5510 | system if it exists (if |
5499 | <code class="varname">IS_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 5511 | <code class="varname">IS_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
5500 | is <span class="quote">“<span class="quote">yes</span>”</span>). This variable is only used internally | | 5512 | is <span class="quote">“<span class="quote">yes</span>”</span>). This variable is only used internally |
5501 | within the <code class="filename">builtin.mk</code> file.</p> | | 5513 | within the <code class="filename">builtin.mk</code> file.</p> |
5502 | <p>The third section sets | | 5514 | <p>The third section sets |
5503 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 5515 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
5504 | and is <span class="emphasis"><em>required</em></span> in all | | 5516 | and is <span class="emphasis"><em>required</em></span> in all |
5505 | <code class="filename">builtin.mk</code> files. The code in this | | 5517 | <code class="filename">builtin.mk</code> files. The code in this |
5506 | section must make the determination whether the built-in | | 5518 | section must make the determination whether the built-in |
5507 | software is adequate to satisfy the dependencies listed in | | 5519 | software is adequate to satisfy the dependencies listed in |
5508 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code>. | | 5520 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code>. |
5509 | This is typically done by comparing | | 5521 | This is typically done by comparing |
5510 | <code class="varname">BUILTIN_PKG.<em class="replaceable"><code>pkg</code></em></code> | | 5522 | <code class="varname">BUILTIN_PKG.<em class="replaceable"><code>pkg</code></em></code> |
5511 | against each of the dependencies in | | 5523 | against each of the dependencies in |
5512 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code>. | | 5524 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code>. |
5513 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 5525 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
5514 | <span class="emphasis"><em>must</em></span> be set to the correct value by the | | 5526 | <span class="emphasis"><em>must</em></span> be set to the correct value by the |
5515 | end of the <code class="filename">builtin.mk</code> file. Note that | | 5527 | end of the <code class="filename">builtin.mk</code> file. Note that |
5516 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 5528 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
5517 | may be <span class="quote">“<span class="quote">yes</span>”</span> even if | | 5529 | may be <span class="quote">“<span class="quote">yes</span>”</span> even if |
5518 | <code class="varname">IS_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 5530 | <code class="varname">IS_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
5519 | is <span class="quote">“<span class="quote">no</span>”</span> because we may make the determination | | 5531 | is <span class="quote">“<span class="quote">no</span>”</span> because we may make the determination |
5520 | that the built-in version of the software is similar enough to | | 5532 | that the built-in version of the software is similar enough to |
5521 | be used as a replacement.</p> | | 5533 | be used as a replacement.</p> |
5522 | <p>The last section is guarded by | | 5534 | <p>The last section is guarded by |
5523 | <code class="varname">CHECK_BUILTIN.<em class="replaceable"><code>pkg</code></em></code>, | | 5535 | <code class="varname">CHECK_BUILTIN.<em class="replaceable"><code>pkg</code></em></code>, |
5524 | and includes code that uses the value of | | 5536 | and includes code that uses the value of |
5525 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 5537 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
5526 | set in the previous section. This typically includes, e.g., | | 5538 | set in the previous section. This typically includes, e.g., |
5527 | adding additional dependency restrictions and listing additional | | 5539 | adding additional dependency restrictions and listing additional |
5528 | files to symlink into <code class="filename">${BUILDLINK_DIR}</code> (via | | 5540 | files to symlink into <code class="filename">${BUILDLINK_DIR}</code> (via |
5529 | <code class="varname">BUILDLINK_FILES.<em class="replaceable"><code>pkg</code></em></code>).</p> | | 5541 | <code class="varname">BUILDLINK_FILES.<em class="replaceable"><code>pkg</code></em></code>).</p> |
5530 | </div> | | 5542 | </div> |
5531 | <div class="sect2"> | | 5543 | <div class="sect2"> |
5532 | <div class="titlepage"><div><div><h3 class="title"> | | 5544 | <div class="titlepage"><div><div><h3 class="title"> |
5533 | <a name="native-or-pkgsrc-preference"></a>14.3.2. Global preferences for native or pkgsrc software</h3></div></div></div> | | 5545 | <a name="native-or-pkgsrc-preference"></a>14.3.2. Global preferences for native or pkgsrc software</h3></div></div></div> |
5534 | <p>When building packages, it's possible to choose whether to set | | 5546 | <p>When building packages, it's possible to choose whether to set |
5535 | a global preference for using either the built-in (native) | | 5547 | a global preference for using either the built-in (native) |
5536 | version or the pkgsrc version of software to satisfy a | | 5548 | version or the pkgsrc version of software to satisfy a |
5537 | dependency. This is controlled by setting | | 5549 | dependency. This is controlled by setting |
5538 | <code class="varname">PREFER_PKGSRC</code> and | | 5550 | <code class="varname">PREFER_PKGSRC</code> and |
5539 | <code class="varname">PREFER_NATIVE</code>. These variables take values | | 5551 | <code class="varname">PREFER_NATIVE</code>. These variables take values |
5540 | of either <span class="quote">“<span class="quote">yes</span>”</span>, <span class="quote">“<span class="quote">no</span>”</span>, or a list of | | 5552 | of either <span class="quote">“<span class="quote">yes</span>”</span>, <span class="quote">“<span class="quote">no</span>”</span>, or a list of |
5541 | packages. <code class="varname">PREFER_PKGSRC</code> tells pkgsrc to | | 5553 | packages. <code class="varname">PREFER_PKGSRC</code> tells pkgsrc to |
5542 | use the pkgsrc versions of software, while | | 5554 | use the pkgsrc versions of software, while |
5543 | <code class="varname">PREFER_NATIVE</code> tells pkgsrc to use the | | 5555 | <code class="varname">PREFER_NATIVE</code> tells pkgsrc to use the |
5544 | built-in versions. Preferences are determined by the most | | 5556 | built-in versions. Preferences are determined by the most |
5545 | specific instance of the package in either | | 5557 | specific instance of the package in either |
5546 | <code class="varname">PREFER_PKGSRC</code> or | | 5558 | <code class="varname">PREFER_PKGSRC</code> or |
5547 | <code class="varname">PREFER_NATIVE</code>. If a package is specified | | 5559 | <code class="varname">PREFER_NATIVE</code>. If a package is specified |
5548 | in neither or in both variables, then | | 5560 | in neither or in both variables, then |
5549 | <code class="varname">PREFER_PKGSRC</code> has precedence over | | 5561 | <code class="varname">PREFER_PKGSRC</code> has precedence over |
5550 | <code class="varname">PREFER_NATIVE</code>. For example, to require | | 5562 | <code class="varname">PREFER_NATIVE</code>. For example, to require |
5551 | using pkgsrc versions of software for all but the most basic | | 5563 | using pkgsrc versions of software for all but the most basic |
5552 | bits on a NetBSD system, you can set:</p> | | 5564 | bits on a NetBSD system, you can set:</p> |
5553 | <pre class="programlisting"> | | 5565 | <pre class="programlisting"> |
5554 | PREFER_PKGSRC= yes | | 5566 | PREFER_PKGSRC= yes |
5555 | PREFER_NATIVE= getopt skey tcp_wrappers | | 5567 | PREFER_NATIVE= getopt skey tcp_wrappers |
5556 | </pre> | | 5568 | </pre> |
5557 | <p>A package <span class="emphasis"><em>must</em></span> have a | | 5569 | <p>A package <span class="emphasis"><em>must</em></span> have a |
5558 | <code class="filename">builtin.mk</code> | | 5570 | <code class="filename">builtin.mk</code> |
5559 | file to be listed in <code class="varname">PREFER_NATIVE</code>, | | 5571 | file to be listed in <code class="varname">PREFER_NATIVE</code>, |
5560 | otherwise it is simply ignored in that list.</p> | | 5572 | otherwise it is simply ignored in that list.</p> |
5561 | </div> | | 5573 | </div> |
5562 | </div> | | 5574 | </div> |
5563 | </div> | | 5575 | </div> |
5564 | <div class="chapter"> | | 5576 | <div class="chapter"> |
5565 | <div class="titlepage"><div><div><h2 class="title"> | | 5577 | <div class="titlepage"><div><div><h2 class="title"> |
5566 | <a name="pkginstall"></a>Chapter 15. The pkginstall framework</h2></div></div></div> | | 5578 | <a name="pkginstall"></a>Chapter 15. The pkginstall framework</h2></div></div></div> |
5567 | <div class="toc"> | | 5579 | <div class="toc"> |
5568 | <p><b>Table of Contents</b></p> | | 5580 | <p><b>Table of Contents</b></p> |
5569 | <dl> | | 5581 | <dl> |
5570 | <dt><span class="sect1"><a href="#files-and-dirs-outside-prefix">15.1. Files and directories outside the installation prefix</a></span></dt> | | 5582 | <dt><span class="sect1"><a href="#files-and-dirs-outside-prefix">15.1. Files and directories outside the installation prefix</a></span></dt> |
5571 | <dd><dl> | | 5583 | <dd><dl> |
5572 | <dt><span class="sect2"><a href="#dirs-outside-prefix">15.1.1. Directory manipulation</a></span></dt> | | 5584 | <dt><span class="sect2"><a href="#dirs-outside-prefix">15.1.1. Directory manipulation</a></span></dt> |
5573 | <dt><span class="sect2"><a href="#files-outside-prefix">15.1.2. File manipulation</a></span></dt> | | 5585 | <dt><span class="sect2"><a href="#files-outside-prefix">15.1.2. File manipulation</a></span></dt> |
5574 | </dl></dd> | | 5586 | </dl></dd> |
5575 | <dt><span class="sect1"><a href="#conf-files">15.2. Configuration files</a></span></dt> | | 5587 | <dt><span class="sect1"><a href="#conf-files">15.2. Configuration files</a></span></dt> |
5576 | <dd><dl> | | 5588 | <dd><dl> |
5577 | <dt><span class="sect2"><a href="#conf-files-sysconfdir">15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</a></span></dt> | | 5589 | <dt><span class="sect2"><a href="#conf-files-sysconfdir">15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</a></span></dt> |
5578 | <dt><span class="sect2"><a href="#conf-files-configure">15.2.2. Telling the software where configuration files are</a></span></dt> | | 5590 | <dt><span class="sect2"><a href="#conf-files-configure">15.2.2. Telling the software where configuration files are</a></span></dt> |
5579 | <dt><span class="sect2"><a href="#conf-files-patching">15.2.3. Patching installations</a></span></dt> | | 5591 | <dt><span class="sect2"><a href="#conf-files-patching">15.2.3. Patching installations</a></span></dt> |
5580 | <dt><span class="sect2"><a href="#conf-files-disable">15.2.4. Disabling handling of configuration files</a></span></dt> | | 5592 | <dt><span class="sect2"><a href="#conf-files-disable">15.2.4. Disabling handling of configuration files</a></span></dt> |
5581 | </dl></dd> | | 5593 | </dl></dd> |
5582 | <dt><span class="sect1"><a href="#rcd-scripts">15.3. System startup scripts</a></span></dt> | | 5594 | <dt><span class="sect1"><a href="#rcd-scripts">15.3. System startup scripts</a></span></dt> |
5583 | <dd><dl><dt><span class="sect2"><a href="#rcd-scripts-disable">15.3.1. Disabling handling of system startup scripts</a></span></dt></dl></dd> | | 5595 | <dd><dl><dt><span class="sect2"><a href="#rcd-scripts-disable">15.3.1. Disabling handling of system startup scripts</a></span></dt></dl></dd> |
5584 | <dt><span class="sect1"><a href="#users-and-groups">15.4. System users and groups</a></span></dt> | | 5596 | <dt><span class="sect1"><a href="#users-and-groups">15.4. System users and groups</a></span></dt> |
5585 | <dt><span class="sect1"><a href="#shells">15.5. System shells</a></span></dt> | | 5597 | <dt><span class="sect1"><a href="#shells">15.5. System shells</a></span></dt> |
5586 | <dd><dl><dt><span class="sect2"><a href="#shells-disable">15.5.1. Disabling shell registration</a></span></dt></dl></dd> | | 5598 | <dd><dl><dt><span class="sect2"><a href="#shells-disable">15.5.1. Disabling shell registration</a></span></dt></dl></dd> |
5587 | <dt><span class="sect1"><a href="#fonts">15.6. Fonts</a></span></dt> | | 5599 | <dt><span class="sect1"><a href="#fonts">15.6. Fonts</a></span></dt> |
5588 | <dd><dl><dt><span class="sect2"><a href="#fonts-disable">15.6.1. Disabling automatic update of the fonts databases</a></span></dt></dl></dd> | | 5600 | <dd><dl><dt><span class="sect2"><a href="#fonts-disable">15.6.1. Disabling automatic update of the fonts databases</a></span></dt></dl></dd> |
5589 | </dl> | | 5601 | </dl> |
5590 | </div> | | 5602 | </div> |
5591 | <p>This chapter describes the framework known as | | 5603 | <p>This chapter describes the framework known as |
5592 | <code class="literal">pkginstall</code>, whose key features are:</p> | | 5604 | <code class="literal">pkginstall</code>, whose key features are:</p> |
5593 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 5605 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
5594 | <li class="listitem"><p>Generic installation and manipulation of directories and files | | 5606 | <li class="listitem"><p>Generic installation and manipulation of directories and files |
5595 | outside the pkgsrc-handled tree, <code class="varname">LOCALBASE</code>.</p></li> | | 5607 | outside the pkgsrc-handled tree, <code class="varname">LOCALBASE</code>.</p></li> |
5596 | <li class="listitem"><p>Automatic handling of configuration files during installation, | | 5608 | <li class="listitem"><p>Automatic handling of configuration files during installation, |
5597 | provided that packages are correctly designed.</p></li> | | 5609 | provided that packages are correctly designed.</p></li> |
5598 | <li class="listitem"><p>Generation and installation of system startup scripts.</p></li> | | 5610 | <li class="listitem"><p>Generation and installation of system startup scripts.</p></li> |
5599 | <li class="listitem"><p>Registration of system users and groups.</p></li> | | 5611 | <li class="listitem"><p>Registration of system users and groups.</p></li> |
5600 | <li class="listitem"><p>Registration of system shells.</p></li> | | 5612 | <li class="listitem"><p>Registration of system shells.</p></li> |
5601 | <li class="listitem"><p>Automatic updating of fonts databases.</p></li> | | 5613 | <li class="listitem"><p>Automatic updating of fonts databases.</p></li> |
5602 | </ul></div> | | 5614 | </ul></div> |
5603 | <p>The following sections inspect each of the above points in detail.</p> | | 5615 | <p>The following sections inspect each of the above points in detail.</p> |
5604 | <p>You may be thinking that many of the things described here could be | | 5616 | <p>You may be thinking that many of the things described here could be |
5605 | easily done with simple code in the package's post-installation target | | 5617 | easily done with simple code in the package's post-installation target |
5606 | (<code class="literal">post-install</code>). <span class="emphasis"><em>This is incorrect</em></span>, | | 5618 | (<code class="literal">post-install</code>). <span class="emphasis"><em>This is incorrect</em></span>, |
5607 | as the code in them is only executed when building from source. Machines | | 5619 | as the code in them is only executed when building from source. Machines |
5608 | using binary packages could not benefit from it at all (as the code itself | | 5620 | using binary packages could not benefit from it at all (as the code itself |
5609 | could be unavailable). Therefore, the only way to achieve any of the items | | 5621 | could be unavailable). Therefore, the only way to achieve any of the items |
5610 | described above is by means of the installation scripts, which are | | 5622 | described above is by means of the installation scripts, which are |
5611 | automatically generated by pkginstall.</p> | | 5623 | automatically generated by pkginstall.</p> |
5612 | <div class="sect1"> | | 5624 | <div class="sect1"> |
5613 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5625 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5614 | <a name="files-and-dirs-outside-prefix"></a>15.1. Files and directories outside the installation prefix</h2></div></div></div> | | 5626 | <a name="files-and-dirs-outside-prefix"></a>15.1. Files and directories outside the installation prefix</h2></div></div></div> |
5615 | <p>As you already know, the <code class="filename">PLIST</code> file holds a list | | 5627 | <p>As you already know, the <code class="filename">PLIST</code> file holds a list |
5616 | of files and directories that belong to a package. The names used in it | | 5628 | of files and directories that belong to a package. The names used in it |
5617 | are relative to the installation prefix (<code class="filename">${PREFIX}</code>), | | 5629 | are relative to the installation prefix (<code class="filename">${PREFIX}</code>), |
5618 | which means that it cannot register files outside this directory (absolute | | 5630 | which means that it cannot register files outside this directory (absolute |
5619 | path names are not allowed). Despite this restriction, some packages need | | 5631 | path names are not allowed). Despite this restriction, some packages need |
5620 | to install files outside this location; e.g., under | | 5632 | to install files outside this location; e.g., under |
5621 | <code class="filename">${VARBASE}</code> or | | 5633 | <code class="filename">${VARBASE}</code> or |
5622 | <code class="filename">${PKG_SYSCONFDIR}</code>. The only way to achieve this | | 5634 | <code class="filename">${PKG_SYSCONFDIR}</code>. The only way to achieve this |
5623 | is to create such files during installation time by using | | 5635 | is to create such files during installation time by using |
5624 | installation scripts.</p> | | 5636 | installation scripts.</p> |
5625 | <p>The generic installation scripts are shell scripts that can | | 5637 | <p>The generic installation scripts are shell scripts that can |
5626 | contain arbitrary code. The list of scripts to execute is taken from | | 5638 | contain arbitrary code. The list of scripts to execute is taken from |
5627 | the <code class="varname">INSTALL_FILE</code> variable, which defaults to | | 5639 | the <code class="varname">INSTALL_FILE</code> variable, which defaults to |
5628 | <code class="filename">INSTALL</code>. A similar variable exists for package | | 5640 | <code class="filename">INSTALL</code>. A similar variable exists for package |
5629 | removal (<code class="varname">DEINSTALL_FILE</code>, whose default is | | 5641 | removal (<code class="varname">DEINSTALL_FILE</code>, whose default is |
5630 | <code class="filename">DEINSTALL</code>). These scripts can run arbitrary | | 5642 | <code class="filename">DEINSTALL</code>). These scripts can run arbitrary |
5631 | commands, so they have the potential to create and manage files | | 5643 | commands, so they have the potential to create and manage files |
5632 | anywhere in the file system.</p> | | 5644 | anywhere in the file system.</p> |
5633 | <p>Using these general installation files is not recommended, but | | 5645 | <p>Using these general installation files is not recommended, but |
5634 | may be needed in some special cases. One reason for avoiding them is | | 5646 | may be needed in some special cases. One reason for avoiding them is |
5635 | that the user has to trust the packager that there is no unwanted or | | 5647 | that the user has to trust the packager that there is no unwanted or |
5636 | simply erroneous code included in the installation script. Also, | | 5648 | simply erroneous code included in the installation script. Also, |
5637 | previously there were many similar scripts for the same functionality, | | 5649 | previously there were many similar scripts for the same functionality, |
5638 | and fixing a common error involved finding and changing all of | | 5650 | and fixing a common error involved finding and changing all of |
5639 | them.</p> | | 5651 | them.</p> |
5640 | <p>The pkginstall framework offers another, standardized way. It | | 5652 | <p>The pkginstall framework offers another, standardized way. It |
5641 | provides generic scripts to abstract the manipulation of such files | | 5653 | provides generic scripts to abstract the manipulation of such files |
5642 | and directories based on variables set in the package's | | 5654 | and directories based on variables set in the package's |
5643 | <code class="filename">Makefile</code>. The rest of this section describes | | 5655 | <code class="filename">Makefile</code>. The rest of this section describes |
5644 | these variables.</p> | | 5656 | these variables.</p> |
5645 | <div class="sect2"> | | 5657 | <div class="sect2"> |
5646 | <div class="titlepage"><div><div><h3 class="title"> | | 5658 | <div class="titlepage"><div><div><h3 class="title"> |
5647 | <a name="dirs-outside-prefix"></a>15.1.1. Directory manipulation</h3></div></div></div> | | 5659 | <a name="dirs-outside-prefix"></a>15.1.1. Directory manipulation</h3></div></div></div> |
5648 | <p>The following variables can be set to request the creation of | | 5660 | <p>The following variables can be set to request the creation of |
5649 | directories anywhere in the file system:</p> | | 5661 | directories anywhere in the file system:</p> |
5650 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 5662 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
5651 | <li class="listitem"><p><code class="varname">MAKE_DIRS</code> and <code class="varname">OWN_DIRS</code> | | 5663 | <li class="listitem"><p><code class="varname">MAKE_DIRS</code> and <code class="varname">OWN_DIRS</code> |
5652 | contain a list of directories that should be created and should attempt | | 5664 | contain a list of directories that should be created and should attempt |
5653 | to be destroyed by the installation scripts. The difference between | | 5665 | to be destroyed by the installation scripts. The difference between |
5654 | the two is that the latter prompts the administrator to remove any | | 5666 | the two is that the latter prompts the administrator to remove any |
5655 | directories that may be left after deinstallation (because they were | | 5667 | directories that may be left after deinstallation (because they were |
5656 | not empty), while the former does not.</p></li> | | 5668 | not empty), while the former does not.</p></li> |
5657 | <li class="listitem"> | | 5669 | <li class="listitem"> |
5658 | <p><code class="varname">MAKE_DIRS_PERMS</code> and | | 5670 | <p><code class="varname">MAKE_DIRS_PERMS</code> and |
5659 | <code class="varname">OWN_DIRS_PERMS</code> contain a list of tuples describing | | 5671 | <code class="varname">OWN_DIRS_PERMS</code> contain a list of tuples describing |
5660 | which directories should be created and should attempt to be destroyed | | 5672 | which directories should be created and should attempt to be destroyed |
5661 | by the installation scripts. Each tuple holds the following values, | | 5673 | by the installation scripts. Each tuple holds the following values, |
5662 | separated by spaces: the directory name, its owner, its group and its | | 5674 | separated by spaces: the directory name, its owner, its group and its |
5663 | numerical mode. For example:</p> | | 5675 | numerical mode. For example:</p> |
5664 | <pre class="programlisting"> | | 5676 | <pre class="programlisting"> |
5665 | MAKE_DIRS_PERMS+= ${VARBASE}/foo/private ${ROOT_USER} ${ROOT_GROUP} 0700 | | 5677 | MAKE_DIRS_PERMS+= ${VARBASE}/foo/private ${ROOT_USER} ${ROOT_GROUP} 0700 |
5666 | </pre> | | 5678 | </pre> |
5667 | <p>The difference between the two is exactly the same as their | | 5679 | <p>The difference between the two is exactly the same as their |
5668 | non-<code class="varname">PERMS</code> counterparts.</p> | | 5680 | non-<code class="varname">PERMS</code> counterparts.</p> |
5669 | </li> | | 5681 | </li> |
5670 | </ul></div> | | 5682 | </ul></div> |
5671 | </div> | | 5683 | </div> |
5672 | <div class="sect2"> | | 5684 | <div class="sect2"> |
5673 | <div class="titlepage"><div><div><h3 class="title"> | | 5685 | <div class="titlepage"><div><div><h3 class="title"> |
5674 | <a name="files-outside-prefix"></a>15.1.2. File manipulation</h3></div></div></div> | | 5686 | <a name="files-outside-prefix"></a>15.1.2. File manipulation</h3></div></div></div> |
5675 | <p>Creating non-empty files outside the installation prefix is tricky | | 5687 | <p>Creating non-empty files outside the installation prefix is tricky |
5676 | because the <code class="filename">PLIST</code> forces all files to be inside it. | | 5688 | because the <code class="filename">PLIST</code> forces all files to be inside it. |
5677 | To overcome this problem, the only solution is to extract the file in the | | 5689 | To overcome this problem, the only solution is to extract the file in the |
5678 | known place (i.e., inside the installation prefix) and copy it to the | | 5690 | known place (i.e., inside the installation prefix) and copy it to the |
5679 | appropriate location during installation (done by the installation scripts | | 5691 | appropriate location during installation (done by the installation scripts |
5680 | generated by pkginstall). We will call the former the <span class="emphasis"><em>master | | 5692 | generated by pkginstall). We will call the former the <span class="emphasis"><em>master |
5681 | file</em></span> in the following paragraphs, which describe the variables | | 5693 | file</em></span> in the following paragraphs, which describe the variables |
5682 | that can be used to automatically and consistently handle files outside the | | 5694 | that can be used to automatically and consistently handle files outside the |
5683 | installation prefix:</p> | | 5695 | installation prefix:</p> |
5684 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 5696 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
5685 | <li class="listitem"> | | 5697 | <li class="listitem"> |
5686 | <p><code class="varname">CONF_FILES</code> and | | 5698 | <p><code class="varname">CONF_FILES</code> and |
5687 | <code class="varname">REQD_FILES</code> are pairs of master and target files. | | 5699 | <code class="varname">REQD_FILES</code> are pairs of master and target files. |
5688 | During installation time, the master file is copied to the target one | | 5700 | During installation time, the master file is copied to the target one |
5689 | if and only if the latter does not exist. Upon deinstallation, the | | 5701 | if and only if the latter does not exist. Upon deinstallation, the |
5690 | target file is removed provided that it was not modified by the | | 5702 | target file is removed provided that it was not modified by the |
5691 | installation.</p> | | 5703 | installation.</p> |
5692 | <p>The difference between the two is that the latter prompts the | | 5704 | <p>The difference between the two is that the latter prompts the |
5693 | administrator to remove any files that may be left after | | 5705 | administrator to remove any files that may be left after |
5694 | deinstallation (because they were not empty), while the former does | | 5706 | deinstallation (because they were not empty), while the former does |
5695 | not.</p> | | 5707 | not.</p> |
5696 | </li> | | 5708 | </li> |
5697 | <li class="listitem"> | | 5709 | <li class="listitem"> |
5698 | <p><code class="varname">CONF_FILES_PERMS</code> and | | 5710 | <p><code class="varname">CONF_FILES_PERMS</code> and |
5699 | <code class="varname">REQD_FILES_PERMS</code> contain tuples describing master | | 5711 | <code class="varname">REQD_FILES_PERMS</code> contain tuples describing master |
5700 | files as well as their target locations. For each of them, it also | | 5712 | files as well as their target locations. For each of them, it also |
5701 | specifies their owner, their group and their numeric permissions, in | | 5713 | specifies their owner, their group and their numeric permissions, in |
5702 | this order. For example:</p> | | 5714 | this order. For example:</p> |
5703 | <pre class="programlisting"> | | 5715 | <pre class="programlisting"> |
5704 | REQD_FILES_PERMS+= ${PREFIX}/share/somefile ${VARBASE}/somefile ${ROOT_USER} ${ROOT_GROUP} 0700 | | 5716 | REQD_FILES_PERMS+= ${PREFIX}/share/somefile ${VARBASE}/somefile ${ROOT_USER} ${ROOT_GROUP} 0700 |
5705 | </pre> | | 5717 | </pre> |
5706 | <p>The difference between the two is exactly the same as their | | 5718 | <p>The difference between the two is exactly the same as their |
5707 | non-<code class="varname">PERMS</code> counterparts.</p> | | 5719 | non-<code class="varname">PERMS</code> counterparts.</p> |
5708 | </li> | | 5720 | </li> |
5709 | </ul></div> | | 5721 | </ul></div> |
5710 | </div> | | 5722 | </div> |
5711 | </div> | | 5723 | </div> |
5712 | <div class="sect1"> | | 5724 | <div class="sect1"> |
5713 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5725 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5714 | <a name="conf-files"></a>15.2. Configuration files</h2></div></div></div> | | 5726 | <a name="conf-files"></a>15.2. Configuration files</h2></div></div></div> |
5715 | <p>Configuration files are special in the sense that they are installed | | 5727 | <p>Configuration files are special in the sense that they are installed |
5716 | in their own specific directory, <code class="varname">PKG_SYSCONFDIR</code>, and | | 5728 | in their own specific directory, <code class="varname">PKG_SYSCONFDIR</code>, and |
5717 | need special treatment during installation (most of which is automated by | | 5729 | need special treatment during installation (most of which is automated by |
5718 | pkginstall). The main concept you must bear in mind is that files marked | | 5730 | pkginstall). The main concept you must bear in mind is that files marked |
5719 | as configuration files are automatically copied to the right place (somewhere | | 5731 | as configuration files are automatically copied to the right place (somewhere |
5720 | inside <code class="varname">PKG_SYSCONFDIR</code>) during installation <span class="emphasis"><em>if | | 5732 | inside <code class="varname">PKG_SYSCONFDIR</code>) during installation <span class="emphasis"><em>if |
5721 | and only if</em></span> they didn't exist before. Similarly, they will not | | 5733 | and only if</em></span> they didn't exist before. Similarly, they will not |
5722 | be removed if they have local modifications. This ensures that | | 5734 | be removed if they have local modifications. This ensures that |
5723 | administrators never lose any custom changes they may have made.</p> | | 5735 | administrators never lose any custom changes they may have made.</p> |
5724 | <div class="sect2"> | | 5736 | <div class="sect2"> |
5725 | <div class="titlepage"><div><div><h3 class="title"> | | 5737 | <div class="titlepage"><div><div><h3 class="title"> |
5726 | <a name="conf-files-sysconfdir"></a>15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</h3></div></div></div> | | 5738 | <a name="conf-files-sysconfdir"></a>15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</h3></div></div></div> |
5727 | <p>As said before, the <code class="varname">PKG_SYSCONFDIR</code> variable | | 5739 | <p>As said before, the <code class="varname">PKG_SYSCONFDIR</code> variable |
5728 | specifies where configuration files shall be installed. Its contents are | | 5740 | specifies where configuration files shall be installed. Its contents are |
5729 | set based upon the following variables:</p> | | 5741 | set based upon the following variables:</p> |
5730 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 5742 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
5731 | <li class="listitem"><p><code class="varname">PKG_SYSCONFBASE</code>: The configuration's root | | 5743 | <li class="listitem"><p><code class="varname">PKG_SYSCONFBASE</code>: The configuration's root |
5732 | directory. Defaults to <code class="filename">${PREFIX}/etc</code> although it may | | 5744 | directory. Defaults to <code class="filename">${PREFIX}/etc</code> although it may |
5733 | be overridden by the user to point to his preferred location (e.g., | | 5745 | be overridden by the user to point to his preferred location (e.g., |
5734 | <code class="filename">/etc</code>, <code class="filename">/etc/pkg</code>, etc.). | | 5746 | <code class="filename">/etc</code>, <code class="filename">/etc/pkg</code>, etc.). |
5735 | Packages must not use it directly.</p></li> | | 5747 | Packages must not use it directly.</p></li> |
5736 | <li class="listitem"> | | 5748 | <li class="listitem"> |
5737 | <p><code class="varname">PKG_SYSCONFSUBDIR</code>: A subdirectory of | | 5749 | <p><code class="varname">PKG_SYSCONFSUBDIR</code>: A subdirectory of |
5738 | <code class="varname">PKG_SYSCONFBASE</code> under which the configuration files | | 5750 | <code class="varname">PKG_SYSCONFBASE</code> under which the configuration files |
5739 | for the package being built shall be installed. The definition of this | | 5751 | for the package being built shall be installed. The definition of this |
5740 | variable only makes sense in the package's | | 5752 | variable only makes sense in the package's |
5741 | <code class="filename">Makefile</code> (i.e., it is not user-customizable).</p> | | 5753 | <code class="filename">Makefile</code> (i.e., it is not user-customizable).</p> |
5742 | <p>As an example, consider the Apache package, | | 5754 | <p>As an example, consider the Apache package, |
5743 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/apache24/README.html" target="_top"><code class="filename">www/apache24</code></a>, which places its | | 5755 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/apache24/README.html" target="_top"><code class="filename">www/apache24</code></a>, which places its |
5744 | configuration files under the | | 5756 | configuration files under the |
5745 | <code class="filename">httpd/</code> subdirectory of | | 5757 | <code class="filename">httpd/</code> subdirectory of |
5746 | <code class="varname">PKG_SYSCONFBASE</code>. This should be set in the package | | 5758 | <code class="varname">PKG_SYSCONFBASE</code>. This should be set in the package |
5747 | Makefile.</p> | | 5759 | Makefile.</p> |
5748 | </li> | | 5760 | </li> |
5749 | <li class="listitem"><p><code class="varname">PKG_SYSCONFVAR</code>: Specifies the name of the | | 5761 | <li class="listitem"><p><code class="varname">PKG_SYSCONFVAR</code>: Specifies the name of the |
5750 | variable that holds this package's configuration directory (if | | 5762 | variable that holds this package's configuration directory (if |
5751 | different from <code class="varname">PKG_SYSCONFBASE</code>). It defaults to | | 5763 | different from <code class="varname">PKG_SYSCONFBASE</code>). It defaults to |
5752 | <code class="varname">PKGBASE</code>'s value, and is always prefixed with | | 5764 | <code class="varname">PKGBASE</code>'s value, and is always prefixed with |
5753 | <code class="literal">PKG_SYSCONFDIR</code>.</p></li> | | 5765 | <code class="literal">PKG_SYSCONFDIR</code>.</p></li> |
5754 | <li class="listitem"><p><code class="varname">PKG_SYSCONFDIR.${PKG_SYSCONFVAR}</code>: Holds the | | 5766 | <li class="listitem"><p><code class="varname">PKG_SYSCONFDIR.${PKG_SYSCONFVAR}</code>: Holds the |
5755 | directory where the configuration files for the package identified by | | 5767 | directory where the configuration files for the package identified by |
5756 | <code class="varname">PKG_SYSCONFVAR</code>'s shall be placed.</p></li> | | 5768 | <code class="varname">PKG_SYSCONFVAR</code>'s shall be placed.</p></li> |
5757 | </ul></div> | | 5769 | </ul></div> |
5758 | <p>Based on the above variables, pkginstall determines the value of | | 5770 | <p>Based on the above variables, pkginstall determines the value of |
5759 | <code class="varname">PKG_SYSCONFDIR</code>, which is the <span class="emphasis"><em>only</em></span> | | 5771 | <code class="varname">PKG_SYSCONFDIR</code>, which is the <span class="emphasis"><em>only</em></span> |
5760 | variable that can be used within a package to refer to its configuration | | 5772 | variable that can be used within a package to refer to its configuration |
5761 | directory. The algorithm used to set its value is basically the | | 5773 | directory. The algorithm used to set its value is basically the |
5762 | following:</p> | | 5774 | following:</p> |
5763 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 5775 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
5764 | <li class="listitem"><p>If <code class="varname">PKG_SYSCONFDIR.${PKG_SYSCONFVAR}</code> is set, | | 5776 | <li class="listitem"><p>If <code class="varname">PKG_SYSCONFDIR.${PKG_SYSCONFVAR}</code> is set, |
5765 | its value is used.</p></li> | | 5777 | its value is used.</p></li> |
5766 | <li class="listitem"><p>If the previous variable is not defined but | | 5778 | <li class="listitem"><p>If the previous variable is not defined but |
5767 | <code class="varname">PKG_SYSCONFSUBDIR</code> is set in the package's | | 5779 | <code class="varname">PKG_SYSCONFSUBDIR</code> is set in the package's |
5768 | <code class="filename">Makefile</code>, the resulting value is | | 5780 | <code class="filename">Makefile</code>, the resulting value is |
5769 | <code class="filename">${PKG_SYSCONFBASE}/${PKG_SYSCONFSUBDIR}</code>.</p></li> | | 5781 | <code class="filename">${PKG_SYSCONFBASE}/${PKG_SYSCONFSUBDIR}</code>.</p></li> |
5770 | <li class="listitem"><p>Otherwise, it is set to | | 5782 | <li class="listitem"><p>Otherwise, it is set to |
5771 | <code class="filename">${PKG_SYSCONFBASE}</code>.</p></li> | | 5783 | <code class="filename">${PKG_SYSCONFBASE}</code>.</p></li> |
5772 | </ol></div> | | 5784 | </ol></div> |
5773 | <p>It is worth mentioning that <code class="filename">${PKG_SYSCONFDIR}</code> is | | 5785 | <p>It is worth mentioning that <code class="filename">${PKG_SYSCONFDIR}</code> is |
5774 | automatically added to <code class="filename">OWN_DIRS</code>. See <a class="xref" href="#dirs-outside-prefix" title="15.1.1. Directory manipulation">Section 15.1.1, “Directory manipulation”</a> what this means. This does not apply to | | 5786 | automatically added to <code class="filename">OWN_DIRS</code>. See <a class="xref" href="#dirs-outside-prefix" title="15.1.1. Directory manipulation">Section 15.1.1, “Directory manipulation”</a> what this means. This does not apply to |
5775 | subdirectories of <code class="filename">${PKG_SYSCONFDIR}</code>, they still have to | | 5787 | subdirectories of <code class="filename">${PKG_SYSCONFDIR}</code>, they still have to |
5776 | be created with OWN_DIRS or MAKE_DIRS.</p> | | 5788 | be created with OWN_DIRS or MAKE_DIRS.</p> |
5777 | </div> | | 5789 | </div> |
5778 | <div class="sect2"> | | 5790 | <div class="sect2"> |
5779 | <div class="titlepage"><div><div><h3 class="title"> | | 5791 | <div class="titlepage"><div><div><h3 class="title"> |
5780 | <a name="conf-files-configure"></a>15.2.2. Telling the software where configuration files are</h3></div></div></div> | | 5792 | <a name="conf-files-configure"></a>15.2.2. Telling the software where configuration files are</h3></div></div></div> |
5781 | <p>Given that pkgsrc (and users!) expect configuration files to be in a | | 5793 | <p>Given that pkgsrc (and users!) expect configuration files to be in a |
5782 | known place, you need to teach each package where it shall install its | | 5794 | known place, you need to teach each package where it shall install its |
5783 | files. In some cases you will have to patch the package Makefiles to | | 5795 | files. In some cases you will have to patch the package Makefiles to |
5784 | achieve it. If you are lucky, though, it may be as easy as passing an | | 5796 | achieve it. If you are lucky, though, it may be as easy as passing an |
5785 | extra flag to the configuration script; this is the case of GNU Autoconf- | | 5797 | extra flag to the configuration script; this is the case of GNU Autoconf- |
5786 | generated files:</p> | | 5798 | generated files:</p> |
5787 | <pre class="programlisting"> | | 5799 | <pre class="programlisting"> |
5788 | CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSCONFDIR} | | 5800 | CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSCONFDIR} |
5789 | </pre> | | 5801 | </pre> |
5790 | <p>Note that this specifies where the package has to <span class="emphasis"><em>look | | 5802 | <p>Note that this specifies where the package has to <span class="emphasis"><em>look |
5791 | for</em></span> its configuration files, not where they will be originally | | 5803 | for</em></span> its configuration files, not where they will be originally |
5792 | installed (although the difference is never explicit, | | 5804 | installed (although the difference is never explicit, |
5793 | unfortunately).</p> | | 5805 | unfortunately).</p> |
5794 | </div> | | 5806 | </div> |
5795 | <div class="sect2"> | | 5807 | <div class="sect2"> |
5796 | <div class="titlepage"><div><div><h3 class="title"> | | 5808 | <div class="titlepage"><div><div><h3 class="title"> |
5797 | <a name="conf-files-patching"></a>15.2.3. Patching installations</h3></div></div></div> | | 5809 | <a name="conf-files-patching"></a>15.2.3. Patching installations</h3></div></div></div> |
5798 | <p>As said before, pkginstall automatically handles configuration files. | | 5810 | <p>As said before, pkginstall automatically handles configuration files. |
5799 | This means that <span class="strong"><strong>the packages themselves must not | | 5811 | This means that <span class="strong"><strong>the packages themselves must not |
5800 | touch the contents of <code class="filename">${PKG_SYSCONFDIR}</code> | | 5812 | touch the contents of <code class="filename">${PKG_SYSCONFDIR}</code> |
5801 | directly</strong></span>. Bad news is that many software installation scripts | | 5813 | directly</strong></span>. Bad news is that many software installation scripts |
5802 | will, out of the box, mess with the contents of that directory. So what is | | 5814 | will, out of the box, mess with the contents of that directory. So what is |
5803 | the correct procedure to fix this issue?</p> | | 5815 | the correct procedure to fix this issue?</p> |
5804 | <p>You must teach the package (usually by manually patching it) to | | 5816 | <p>You must teach the package (usually by manually patching it) to |
5805 | install any configuration files under the examples hierarchy, | | 5817 | install any configuration files under the examples hierarchy, |
5806 | <code class="filename">share/examples/${PKGBASE}/</code>. This way, the | | 5818 | <code class="filename">share/examples/${PKGBASE}/</code>. This way, the |
5807 | <code class="filename">PLIST</code> registers them and the administrator always | | 5819 | <code class="filename">PLIST</code> registers them and the administrator always |
5808 | has the original copies available.</p> | | 5820 | has the original copies available.</p> |
5809 | <p>Once the required configuration files are in place (i.e., under the | | 5821 | <p>Once the required configuration files are in place (i.e., under the |
5810 | examples hierarchy), the pkginstall framework can use them as master copies | | 5822 | examples hierarchy), the pkginstall framework can use them as master copies |
5811 | during the package installation to update what is in | | 5823 | during the package installation to update what is in |
5812 | <code class="filename">${PKG_SYSCONFDIR}</code>. To achieve this, the variables | | 5824 | <code class="filename">${PKG_SYSCONFDIR}</code>. To achieve this, the variables |
5813 | <code class="varname">CONF_FILES</code> and <code class="varname">CONF_FILES_PERMS</code> are | | 5825 | <code class="varname">CONF_FILES</code> and <code class="varname">CONF_FILES_PERMS</code> are |
5814 | used. Check out <a class="xref" href="#files-outside-prefix" title="15.1.2. File manipulation">Section 15.1.2, “File manipulation”</a> for information | | 5826 | used. Check out <a class="xref" href="#files-outside-prefix" title="15.1.2. File manipulation">Section 15.1.2, “File manipulation”</a> for information |
5815 | about their syntax and their purpose. Here is an example, taken from the | | 5827 | about their syntax and their purpose. Here is an example, taken from the |
5816 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/mail/mutt/README.html" target="_top"><code class="filename">mail/mutt</code></a> package:</p> | | 5828 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/mail/mutt/README.html" target="_top"><code class="filename">mail/mutt</code></a> package:</p> |
5817 | <pre class="programlisting"> | | 5829 | <pre class="programlisting"> |
5818 | EGDIR= ${PREFIX}/share/doc/mutt/samples | | 5830 | EGDIR= ${PREFIX}/share/doc/mutt/samples |
5819 | CONF_FILES= ${EGDIR}/Muttrc ${PKG_SYSCONFDIR}/Muttrc | | 5831 | CONF_FILES= ${EGDIR}/Muttrc ${PKG_SYSCONFDIR}/Muttrc |
5820 | </pre> | | 5832 | </pre> |
5821 | <p>Note that the <code class="varname">EGDIR</code> variable is specific to that | | 5833 | <p>Note that the <code class="varname">EGDIR</code> variable is specific to that |
5822 | package and has no meaning outside it.</p> | | 5834 | package and has no meaning outside it.</p> |
5823 | </div> | | 5835 | </div> |
5824 | <div class="sect2"> | | 5836 | <div class="sect2"> |
5825 | <div class="titlepage"><div><div><h3 class="title"> | | 5837 | <div class="titlepage"><div><div><h3 class="title"> |
5826 | <a name="conf-files-disable"></a>15.2.4. Disabling handling of configuration files</h3></div></div></div> | | 5838 | <a name="conf-files-disable"></a>15.2.4. Disabling handling of configuration files</h3></div></div></div> |
5827 | <p>The automatic copying of config files can be toggled by setting the | | 5839 | <p>The automatic copying of config files can be toggled by setting the |
5828 | environment variable <code class="varname">PKG_CONFIG</code> prior to package | | 5840 | environment variable <code class="varname">PKG_CONFIG</code> prior to package |
5829 | installation.</p> | | 5841 | installation.</p> |
5830 | </div> | | 5842 | </div> |
5831 | </div> | | 5843 | </div> |
5832 | <div class="sect1"> | | 5844 | <div class="sect1"> |
5833 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5845 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5834 | <a name="rcd-scripts"></a>15.3. System startup scripts</h2></div></div></div> | | 5846 | <a name="rcd-scripts"></a>15.3. System startup scripts</h2></div></div></div> |
5835 | <p>System startup scripts are special files because they must be | | 5847 | <p>System startup scripts are special files because they must be |
5836 | installed in a place known by the underlying OS, usually outside the | | 5848 | installed in a place known by the underlying OS, usually outside the |
5837 | installation prefix. Therefore, the same rules described in <a class="xref" href="#files-and-dirs-outside-prefix" title="15.1. Files and directories outside the installation prefix">Section 15.1, “Files and directories outside the installation prefix”</a> apply, and the same solutions | | 5849 | installation prefix. Therefore, the same rules described in <a class="xref" href="#files-and-dirs-outside-prefix" title="15.1. Files and directories outside the installation prefix">Section 15.1, “Files and directories outside the installation prefix”</a> apply, and the same solutions |
5838 | can be used. However, pkginstall provides a special mechanism to handle | | 5850 | can be used. However, pkginstall provides a special mechanism to handle |
5839 | these files.</p> | | 5851 | these files.</p> |
5840 | <p>In order to provide system startup scripts, the package has | | 5852 | <p>In order to provide system startup scripts, the package has |
5841 | to:</p> | | 5853 | to:</p> |
5842 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 5854 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
5843 | <li class="listitem"><p>Store the script inside <code class="filename">${FILESDIR}</code>, with | | 5855 | <li class="listitem"><p>Store the script inside <code class="filename">${FILESDIR}</code>, with |
5844 | the <code class="literal">.sh</code> suffix appended. Considering the | | 5856 | the <code class="literal">.sh</code> suffix appended. Considering the |
5845 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/print/cups/README.html" target="_top"><code class="filename">print/cups</code></a> package as an example, it has a | | 5857 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/print/cups/README.html" target="_top"><code class="filename">print/cups</code></a> package as an example, it has a |
5846 | <code class="filename">cupsd.sh</code> in its files directory.</p></li> | | 5858 | <code class="filename">cupsd.sh</code> in its files directory.</p></li> |
5847 | <li class="listitem"> | | 5859 | <li class="listitem"> |
5848 | <p>Tell pkginstall to handle it, appending the name of the script, | | 5860 | <p>Tell pkginstall to handle it, appending the name of the script, |
5849 | without its extension, to the <code class="varname">RCD_SCRIPTS</code> variable. | | 5861 | without its extension, to the <code class="varname">RCD_SCRIPTS</code> variable. |
5850 | Continuing the previous example:</p> | | 5862 | Continuing the previous example:</p> |
5851 | <pre class="programlisting"> | | 5863 | <pre class="programlisting"> |
5852 | RCD_SCRIPTS+= cupsd | | 5864 | RCD_SCRIPTS+= cupsd |
5853 | </pre> | | 5865 | </pre> |
5854 | </li> | | 5866 | </li> |
5855 | </ol></div> | | 5867 | </ol></div> |
5856 | <p>Once this is done, pkginstall will do the following steps for each | | 5868 | <p>Once this is done, pkginstall will do the following steps for each |
5857 | script in an automated fashion:</p> | | 5869 | script in an automated fashion:</p> |
5858 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 5870 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
5859 | <li class="listitem"><p>Process the file found in the files directory applying all the | | 5871 | <li class="listitem"><p>Process the file found in the files directory applying all the |
5860 | substitutions described in the <code class="filename">FILES_SUBST</code> | | 5872 | substitutions described in the <code class="filename">FILES_SUBST</code> |
5861 | variable.</p></li> | | 5873 | variable.</p></li> |
5862 | <li class="listitem"><p>Copy the script from the files directory to the examples | | 5874 | <li class="listitem"><p>Copy the script from the files directory to the examples |
5863 | hierarchy, <code class="filename">${PREFIX}/share/examples/rc.d/</code>. Note | | 5875 | hierarchy, <code class="filename">${PREFIX}/share/examples/rc.d/</code>. Note |
5864 | that this master file must be explicitly registered in the | | 5876 | that this master file must be explicitly registered in the |
5865 | <code class="filename">PLIST</code>.</p></li> | | 5877 | <code class="filename">PLIST</code>.</p></li> |
5866 | <li class="listitem"><p>Add code to the installation scripts to copy the startup script | | 5878 | <li class="listitem"><p>Add code to the installation scripts to copy the startup script |
5867 | from the examples hierarchy into the system-wide startup scripts | | 5879 | from the examples hierarchy into the system-wide startup scripts |
5868 | directory.</p></li> | | 5880 | directory.</p></li> |
5869 | </ol></div> | | 5881 | </ol></div> |
5870 | <div class="sect2"> | | 5882 | <div class="sect2"> |
5871 | <div class="titlepage"><div><div><h3 class="title"> | | 5883 | <div class="titlepage"><div><div><h3 class="title"> |
5872 | <a name="rcd-scripts-disable"></a>15.3.1. Disabling handling of system startup scripts</h3></div></div></div> | | 5884 | <a name="rcd-scripts-disable"></a>15.3.1. Disabling handling of system startup scripts</h3></div></div></div> |
5873 | <p>The automatic copying of config files can be toggled by setting the | | 5885 | <p>The automatic copying of config files can be toggled by setting the |
5874 | environment variable <code class="varname">PKG_RCD_SCRIPTS</code> prior to package | | 5886 | environment variable <code class="varname">PKG_RCD_SCRIPTS</code> prior to package |
5875 | installation. Note that the scripts will be always copied inside the | | 5887 | installation. Note that the scripts will be always copied inside the |
5876 | examples hierarchy, <code class="filename">${PREFIX}/share/examples/rc.d/</code>, no | | 5888 | examples hierarchy, <code class="filename">${PREFIX}/share/examples/rc.d/</code>, no |
5877 | matter what the value of this variable is.</p> | | 5889 | matter what the value of this variable is.</p> |
5878 | </div> | | 5890 | </div> |
5879 | </div> | | 5891 | </div> |
5880 | <div class="sect1"> | | 5892 | <div class="sect1"> |
5881 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5893 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5882 | <a name="users-and-groups"></a>15.4. System users and groups</h2></div></div></div> | | 5894 | <a name="users-and-groups"></a>15.4. System users and groups</h2></div></div></div> |
5883 | <p>If a package needs to create special users and/or groups during | | 5895 | <p>If a package needs to create special users and/or groups during |
5884 | installation, it can do so by using the pkginstall framework.</p> | | 5896 | installation, it can do so by using the pkginstall framework.</p> |
5885 | <p>Users can be created by adding entries to the | | 5897 | <p>Users can be created by adding entries to the |
5886 | <code class="varname">PKG_USERS</code> variable. Each entry has the following | | 5898 | <code class="varname">PKG_USERS</code> variable. Each entry has the following |
5887 | syntax:</p> | | 5899 | syntax:</p> |
5888 | <pre class="programlisting"> | | 5900 | <pre class="programlisting"> |
5889 | user:group | | 5901 | user:group |
5890 | </pre> | | 5902 | </pre> |
5891 | <p>Further specification of user details may be done by setting | | 5903 | <p>Further specification of user details may be done by setting |
5892 | per-user variables. | | 5904 | per-user variables. |
5893 | <code class="varname">PKG_UID.<em class="replaceable"><code>user</code></em></code> is the | | 5905 | <code class="varname">PKG_UID.<em class="replaceable"><code>user</code></em></code> is the |
5894 | numeric UID for the user. | | 5906 | numeric UID for the user. |
5895 | <code class="varname">PKG_GECOS.<em class="replaceable"><code>user</code></em></code> is the | | 5907 | <code class="varname">PKG_GECOS.<em class="replaceable"><code>user</code></em></code> is the |
5896 | user's description or comment. | | 5908 | user's description or comment. |
5897 | <code class="varname">PKG_HOME.<em class="replaceable"><code>user</code></em></code> is the | | 5909 | <code class="varname">PKG_HOME.<em class="replaceable"><code>user</code></em></code> is the |
5898 | user's home directory, and defaults to | | 5910 | user's home directory, and defaults to |
5899 | <code class="filename">/nonexistent</code> if not specified. | | 5911 | <code class="filename">/nonexistent</code> if not specified. |
5900 | <code class="varname">PKG_SHELL.<em class="replaceable"><code>user</code></em></code> is the | | 5912 | <code class="varname">PKG_SHELL.<em class="replaceable"><code>user</code></em></code> is the |
5901 | user's shell, and defaults to <code class="filename">/sbin/nologin</code> if | | 5913 | user's shell, and defaults to <code class="filename">/sbin/nologin</code> if |
5902 | not specified.</p> | | 5914 | not specified.</p> |
5903 | <p>Similarly, groups can be created by adding entries to the | | 5915 | <p>Similarly, groups can be created by adding entries to the |
5904 | <code class="varname">PKG_GROUPS</code> variable, whose syntax is:</p> | | 5916 | <code class="varname">PKG_GROUPS</code> variable, whose syntax is:</p> |
5905 | <pre class="programlisting"> | | 5917 | <pre class="programlisting"> |
5906 | group | | 5918 | group |
5907 | </pre> | | 5919 | </pre> |
5908 | <p>The numeric GID of the group may be set by defining | | 5920 | <p>The numeric GID of the group may be set by defining |
5909 | <code class="varname">PKG_GID.<em class="replaceable"><code>group</code></em></code>.</p> | | 5921 | <code class="varname">PKG_GID.<em class="replaceable"><code>group</code></em></code>.</p> |
5910 | <p>If a package needs to create the users and groups at an earlier | | 5922 | <p>If a package needs to create the users and groups at an earlier |
5911 | stage, then it can set <code class="varname">USERGROUP_PHASE</code> to | | 5923 | stage, then it can set <code class="varname">USERGROUP_PHASE</code> to |
5912 | either <code class="literal">configure</code> or <code class="literal">build</code> to | | 5924 | either <code class="literal">configure</code> or <code class="literal">build</code> to |
5913 | indicate the phase before which the users and groups are created. In | | 5925 | indicate the phase before which the users and groups are created. In |
5914 | this case, the numeric UIDs and GIDs of the created users and groups | | 5926 | this case, the numeric UIDs and GIDs of the created users and groups |
5915 | are automatically hardcoded into the final installation scripts.</p> | | 5927 | are automatically hardcoded into the final installation scripts.</p> |
5916 | </div> | | 5928 | </div> |
5917 | <div class="sect1"> | | 5929 | <div class="sect1"> |
5918 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5930 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5919 | <a name="shells"></a>15.5. System shells</h2></div></div></div> | | 5931 | <a name="shells"></a>15.5. System shells</h2></div></div></div> |
5920 | <p>Packages that install system shells should register them in the shell | | 5932 | <p>Packages that install system shells should register them in the shell |
5921 | database, <code class="filename">/etc/shells</code>, to make things easier to the | | 5933 | database, <code class="filename">/etc/shells</code>, to make things easier to the |
5922 | administrator. This must be done from the installation scripts to keep | | 5934 | administrator. This must be done from the installation scripts to keep |
5923 | binary packages working on any system. pkginstall provides an easy way to | | 5935 | binary packages working on any system. pkginstall provides an easy way to |
5924 | accomplish this task.</p> | | 5936 | accomplish this task.</p> |
5925 | <p>When a package provides a shell interpreter, it has to set the | | 5937 | <p>When a package provides a shell interpreter, it has to set the |
5926 | <code class="varname">PKG_SHELL</code> variable to its absolute file name. This will | | 5938 | <code class="varname">PKG_SHELL</code> variable to its absolute file name. This will |
5927 | add some hooks to the installation scripts to handle it. Consider the | | 5939 | add some hooks to the installation scripts to handle it. Consider the |
5928 | following example, taken from <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/shells/zsh/README.html" target="_top"><code class="filename">shells/zsh</code></a>:</p> | | 5940 | following example, taken from <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/shells/zsh/README.html" target="_top"><code class="filename">shells/zsh</code></a>:</p> |
5929 | <pre class="programlisting"> | | 5941 | <pre class="programlisting"> |
5930 | PKG_SHELL= ${PREFIX}/bin/zsh | | 5942 | PKG_SHELL= ${PREFIX}/bin/zsh |
5931 | </pre> | | 5943 | </pre> |
5932 | <div class="sect2"> | | 5944 | <div class="sect2"> |
5933 | <div class="titlepage"><div><div><h3 class="title"> | | 5945 | <div class="titlepage"><div><div><h3 class="title"> |
5934 | <a name="shells-disable"></a>15.5.1. Disabling shell registration</h3></div></div></div> | | 5946 | <a name="shells-disable"></a>15.5.1. Disabling shell registration</h3></div></div></div> |
5935 | <p>The automatic registration of shell interpreters can be disabled by | | 5947 | <p>The automatic registration of shell interpreters can be disabled by |
5936 | the administrator by setting the <code class="filename">PKG_REGISTER_SHELLS</code> | | 5948 | the administrator by setting the <code class="filename">PKG_REGISTER_SHELLS</code> |
5937 | environment variable to <code class="literal">NO</code>.</p> | | 5949 | environment variable to <code class="literal">NO</code>.</p> |
5938 | </div> | | 5950 | </div> |
5939 | </div> | | 5951 | </div> |
5940 | <div class="sect1"> | | 5952 | <div class="sect1"> |
5941 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5953 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5942 | <a name="fonts"></a>15.6. Fonts</h2></div></div></div> | | 5954 | <a name="fonts"></a>15.6. Fonts</h2></div></div></div> |
5943 | <p>Packages that install X11 fonts should update the database files | | 5955 | <p>Packages that install X11 fonts should update the database files |
5944 | that index the fonts within each fonts directory. This can easily be | | 5956 | that index the fonts within each fonts directory. This can easily be |
5945 | accomplished within the pkginstall framework.</p> | | 5957 | accomplished within the pkginstall framework.</p> |
5946 | <p>When a package installs X11 fonts, it must list the directories in | | 5958 | <p>When a package installs X11 fonts, it must list the directories in |
5947 | which fonts are installed in the | | 5959 | which fonts are installed in the |
5948 | <code class="varname">FONTS_DIRS.<em class="replaceable"><code>type</code></em></code> variables, | | 5960 | <code class="varname">FONTS_DIRS.<em class="replaceable"><code>type</code></em></code> variables, |
5949 | where <em class="replaceable"><code>type</code></em> can be one of <span class="quote">“<span class="quote">ttf</span>”</span>, | | 5961 | where <em class="replaceable"><code>type</code></em> can be one of <span class="quote">“<span class="quote">ttf</span>”</span>, |
5950 | <span class="quote">“<span class="quote">type1</span>”</span> or <span class="quote">“<span class="quote">x11</span>”</span>. This will add hooks to the | | 5962 | <span class="quote">“<span class="quote">type1</span>”</span> or <span class="quote">“<span class="quote">x11</span>”</span>. This will add hooks to the |
5951 | installation scripts to run the appropriate commands to update the fonts | | 5963 | installation scripts to run the appropriate commands to update the fonts |
5952 | database files within each of those directories. For convenience, if the | | 5964 | database files within each of those directories. For convenience, if the |
5953 | directory path is relative, it is taken to be relative to the package's | | 5965 | directory path is relative, it is taken to be relative to the package's |
5954 | installation prefix. Consider the following example, taken from <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/fonts/dbz-ttf/README.html" target="_top"><code class="filename">fonts/dbz-ttf</code></a>:</p> | | 5966 | installation prefix. Consider the following example, taken from <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/fonts/dbz-ttf/README.html" target="_top"><code class="filename">fonts/dbz-ttf</code></a>:</p> |
5955 | <pre class="programlisting"> | | 5967 | <pre class="programlisting"> |
5956 | FONTS_DIRS.ttf= ${PREFIX}/share/fonts/X11/TTF | | 5968 | FONTS_DIRS.ttf= ${PREFIX}/share/fonts/X11/TTF |
5957 | </pre> | | 5969 | </pre> |
5958 | <div class="sect2"> | | 5970 | <div class="sect2"> |
5959 | <div class="titlepage"><div><div><h3 class="title"> | | 5971 | <div class="titlepage"><div><div><h3 class="title"> |
5960 | <a name="fonts-disable"></a>15.6.1. Disabling automatic update of the fonts databases</h3></div></div></div> | | 5972 | <a name="fonts-disable"></a>15.6.1. Disabling automatic update of the fonts databases</h3></div></div></div> |
5961 | <p>The automatic update of fonts databases can be disabled by | | 5973 | <p>The automatic update of fonts databases can be disabled by |
5962 | the administrator by setting the <code class="filename">PKG_UPDATE_FONTS_DB</code> | | 5974 | the administrator by setting the <code class="filename">PKG_UPDATE_FONTS_DB</code> |
5963 | environment variable to <code class="literal">NO</code>.</p> | | 5975 | environment variable to <code class="literal">NO</code>.</p> |
5964 | </div> | | 5976 | </div> |
5965 | </div> | | 5977 | </div> |
5966 | </div> | | 5978 | </div> |
5967 | <div class="chapter"> | | 5979 | <div class="chapter"> |
5968 | <div class="titlepage"><div><div><h2 class="title"> | | 5980 | <div class="titlepage"><div><div><h2 class="title"> |
5969 | <a name="options"></a>Chapter 16. Options handling</h2></div></div></div> | | 5981 | <a name="options"></a>Chapter 16. Options handling</h2></div></div></div> |
5970 | <div class="toc"> | | 5982 | <div class="toc"> |
5971 | <p><b>Table of Contents</b></p> | | 5983 | <p><b>Table of Contents</b></p> |
5972 | <dl> | | 5984 | <dl> |
5973 | <dt><span class="sect1"><a href="#global-default-options">16.1. Global default options</a></span></dt> | | 5985 | <dt><span class="sect1"><a href="#global-default-options">16.1. Global default options</a></span></dt> |
5974 | <dt><span class="sect1"><a href="#converting-to-options">16.2. Converting packages to use <code class="filename">bsd.options.mk</code></a></span></dt> | | 5986 | <dt><span class="sect1"><a href="#converting-to-options">16.2. Converting packages to use <code class="filename">bsd.options.mk</code></a></span></dt> |
5975 | <dt><span class="sect1"><a href="#option-names">16.3. Option Names</a></span></dt> | | 5987 | <dt><span class="sect1"><a href="#option-names">16.3. Option Names</a></span></dt> |
5976 | <dt><span class="sect1"><a href="#option-build">16.4. Determining the options of dependencies</a></span></dt> | | 5988 | <dt><span class="sect1"><a href="#option-build">16.4. Determining the options of dependencies</a></span></dt> |
5977 | </dl> | | 5989 | </dl> |
5978 | </div> | | 5990 | </div> |
5979 | <p>Many packages have the ability to be built to support different | | 5991 | <p>Many packages have the ability to be built to support different |
5980 | sets of features. <code class="filename">bsd.options.mk</code> is a framework | | 5992 | sets of features. <code class="filename">bsd.options.mk</code> is a framework |
5981 | in pkgsrc that provides generic handling of those options that | | 5993 | in pkgsrc that provides generic handling of those options that |
5982 | determine different ways in which the packages can be built. It's | | 5994 | determine different ways in which the packages can be built. It's |
5983 | possible for the user to specify exactly which sets of options will be | | 5995 | possible for the user to specify exactly which sets of options will be |
5984 | built into a package or to allow a set of global default options | | 5996 | built into a package or to allow a set of global default options |
5985 | apply.</p> | | 5997 | apply.</p> |
5986 | <p>There are two broad classes of behaviors that one might want to | | 5998 | <p>There are two broad classes of behaviors that one might want to |
5987 | control via options. One is whether some particular feature is | | 5999 | control via options. One is whether some particular feature is |
5988 | enabled in a program that will be built anyway, often by including or | | 6000 | enabled in a program that will be built anyway, often by including or |
5989 | not including a dependency on some other package. The other is | | 6001 | not including a dependency on some other package. The other is |
5990 | whether or not an additional program will be built as part of the | | 6002 | whether or not an additional program will be built as part of the |
5991 | package. Generally, it is better to make a split package for such | | 6003 | package. Generally, it is better to make a split package for such |
5992 | additional programs instead of using options, because it enables | | 6004 | additional programs instead of using options, because it enables |
5993 | binary packages to be built which can then be added separately. For | | 6005 | binary packages to be built which can then be added separately. For |
5994 | example, the foo package might have minimal dependencies (those | | 6006 | example, the foo package might have minimal dependencies (those |
5995 | packages without which foo doesn't make sense), and then the foo-gfoo | | 6007 | packages without which foo doesn't make sense), and then the foo-gfoo |
5996 | package might include the GTK frontend program gfoo. This is better | | 6008 | package might include the GTK frontend program gfoo. This is better |
5997 | than including a gtk option to foo that adds gfoo, because either that | | 6009 | than including a gtk option to foo that adds gfoo, because either that |
5998 | option is default, in which case binary users can't get foo without | | 6010 | option is default, in which case binary users can't get foo without |
5999 | gfoo, or not default, in which case they can't get gfoo. With split | | 6011 | gfoo, or not default, in which case they can't get gfoo. With split |
6000 | packages, they can install foo without having GTK, and later decide to | | 6012 | packages, they can install foo without having GTK, and later decide to |
6001 | install gfoo (pulling in GTK at that time). This is an advantage to | | 6013 | install gfoo (pulling in GTK at that time). This is an advantage to |
6002 | source users too, avoiding the need for rebuilds.</p> | | 6014 | source users too, avoiding the need for rebuilds.</p> |
6003 | <p>Plugins with widely varying dependencies should usually be split | | 6015 | <p>Plugins with widely varying dependencies should usually be split |
6004 | instead of options.</p> | | 6016 | instead of options.</p> |
6005 | <p>It is often more work to maintain split packages, especially if | | 6017 | <p>It is often more work to maintain split packages, especially if |
6006 | the upstream package does not support this. The decision of split | | 6018 | the upstream package does not support this. The decision of split |
6007 | vs. option should be made based on the likelihood that users will want | | 6019 | vs. option should be made based on the likelihood that users will want |
6008 | or object to the various pieces, the size of the dependencies that are | | 6020 | or object to the various pieces, the size of the dependencies that are |
6009 | included, and the amount of work.</p> | | 6021 | included, and the amount of work.</p> |
6010 | <p>A further consideration is licensing. Non-free parts, or parts | | 6022 | <p>A further consideration is licensing. Non-free parts, or parts |
6011 | that depend on non-free dependencies (especially plugins) should | | 6023 | that depend on non-free dependencies (especially plugins) should |
6012 | almost always be split if feasible.</p> | | 6024 | almost always be split if feasible.</p> |
6013 | <div class="sect1"> | | 6025 | <div class="sect1"> |
6014 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6026 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6015 | <a name="global-default-options"></a>16.1. Global default options</h2></div></div></div> | | 6027 | <a name="global-default-options"></a>16.1. Global default options</h2></div></div></div> |
6016 | <p>Global default options are listed in | | 6028 | <p>Global default options are listed in |
6017 | <code class="varname">PKG_DEFAULT_OPTIONS</code>, which is a list of the options | | 6029 | <code class="varname">PKG_DEFAULT_OPTIONS</code>, which is a list of the options |
6018 | that should be built into every package if that option is supported. | | 6030 | that should be built into every package if that option is supported. |
6019 | This variable should be set in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p> | | 6031 | This variable should be set in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p> |
6020 | </div> | | 6032 | </div> |
6021 | <div class="sect1"> | | 6033 | <div class="sect1"> |
6022 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6034 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6023 | <a name="converting-to-options"></a>16.2. Converting packages to use <code class="filename">bsd.options.mk</code> | | 6035 | <a name="converting-to-options"></a>16.2. Converting packages to use <code class="filename">bsd.options.mk</code> |
6024 | </h2></div></div></div> | | 6036 | </h2></div></div></div> |
6025 | <p>The following example shows how | | 6037 | <p>The following example shows how |
6026 | <code class="filename">bsd.options.mk</code> should be used | | 6038 | <code class="filename">bsd.options.mk</code> should be used |
6027 | by the hypothetical ``wibble'' package, either in the package | | 6039 | by the hypothetical ``wibble'' package, either in the package |
6028 | <code class="filename">Makefile</code>, or in a file, | | 6040 | <code class="filename">Makefile</code>, or in a file, |
6029 | e.g. <code class="filename">options.mk</code>, that is included by the | | 6041 | e.g. <code class="filename">options.mk</code>, that is included by the |
6030 | main package <code class="filename">Makefile</code>.</p> | | 6042 | main package <code class="filename">Makefile</code>.</p> |
6031 | <pre class="programlisting"> | | 6043 | <pre class="programlisting"> |
6032 | PKG_OPTIONS_VAR= PKG_OPTIONS.wibble | | 6044 | PKG_OPTIONS_VAR= PKG_OPTIONS.wibble |
6033 | PKG_SUPPORTED_OPTIONS= wibble-foo ldap | | 6045 | PKG_SUPPORTED_OPTIONS= wibble-foo ldap |
6034 | PKG_OPTIONS_OPTIONAL_GROUPS= database | | 6046 | PKG_OPTIONS_OPTIONAL_GROUPS= database |
6035 | PKG_OPTIONS_GROUP.database= mysql pgsql | | 6047 | PKG_OPTIONS_GROUP.database= mysql pgsql |
6036 | PKG_SUGGESTED_OPTIONS= wibble-foo | | 6048 | PKG_SUGGESTED_OPTIONS= wibble-foo |
6037 | PKG_OPTIONS_LEGACY_VARS+= WIBBLE_USE_OPENLDAP:ldap | | 6049 | PKG_OPTIONS_LEGACY_VARS+= WIBBLE_USE_OPENLDAP:ldap |
6038 | PKG_OPTIONS_LEGACY_OPTS+= foo:wibble-foo | | 6050 | PKG_OPTIONS_LEGACY_OPTS+= foo:wibble-foo |
6039 | | | 6051 | |
6040 | .include "../../mk/bsd.prefs.mk" | | 6052 | .include "../../mk/bsd.prefs.mk" |
6041 | | | 6053 | |
6042 | # this package was previously named wibble2 | | 6054 | # this package was previously named wibble2 |
6043 | .if defined(PKG_OPTIONS.wibble2) | | 6055 | .if defined(PKG_OPTIONS.wibble2) |
6044 | PKG_LEGACY_OPTIONS+= ${PKG_OPTIONS.wibble2} | | 6056 | PKG_LEGACY_OPTIONS+= ${PKG_OPTIONS.wibble2} |
6045 | PKG_OPTIONS_DEPRECATED_WARNINGS+= \ | | 6057 | PKG_OPTIONS_DEPRECATED_WARNINGS+= \ |
6046 | "Deprecated variable PKG_OPTIONS.wibble2 used, use ${PKG_OPTIONS_VAR} instead." | | 6058 | "Deprecated variable PKG_OPTIONS.wibble2 used, use ${PKG_OPTIONS_VAR} instead." |
6047 | .endif | | 6059 | .endif |
6048 | | | 6060 | |
6049 | .include "../../mk/bsd.options.mk" | | 6061 | .include "../../mk/bsd.options.mk" |
6050 | | | 6062 | |
6051 | # Package-specific option-handling | | 6063 | # Package-specific option-handling |
6052 | | | 6064 | |
6053 | ### | | 6065 | ### |
6054 | ### FOO support | | 6066 | ### FOO support |
6055 | ### | | 6067 | ### |
6056 | .if !empty(PKG_OPTIONS:Mwibble-foo) | | 6068 | .if !empty(PKG_OPTIONS:Mwibble-foo) |
6057 | CONFIGURE_ARGS+= --enable-foo | | 6069 | CONFIGURE_ARGS+= --enable-foo |
6058 | .endif | | 6070 | .endif |
6059 | | | 6071 | |
6060 | ### | | 6072 | ### |
6061 | ### LDAP support | | 6073 | ### LDAP support |
6062 | ### | | 6074 | ### |
6063 | .if !empty(PKG_OPTIONS:Mldap) | | 6075 | .if !empty(PKG_OPTIONS:Mldap) |
6064 | . include "../../databases/openldap-client/buildlink3.mk" | | 6076 | . include "../../databases/openldap-client/buildlink3.mk" |
6065 | CONFIGURE_ARGS+= --enable-ldap=${BUILDLINK_PREFIX.openldap-client} | | 6077 | CONFIGURE_ARGS+= --enable-ldap=${BUILDLINK_PREFIX.openldap-client} |
6066 | .endif | | 6078 | .endif |
6067 | | | 6079 | |
6068 | ### | | 6080 | ### |
6069 | ### database support | | 6081 | ### database support |
6070 | ### | | 6082 | ### |
6071 | .if !empty(PKG_OPTIONS:Mmysql) | | 6083 | .if !empty(PKG_OPTIONS:Mmysql) |
6072 | . include "../../mk/mysql.buildlink3.mk" | | 6084 | . include "../../mk/mysql.buildlink3.mk" |
6073 | .endif | | 6085 | .endif |
6074 | .if !empty(PKG_OPTIONS:Mpgsql) | | 6086 | .if !empty(PKG_OPTIONS:Mpgsql) |
6075 | . include "../../mk/pgsql.buildlink3.mk" | | 6087 | . include "../../mk/pgsql.buildlink3.mk" |
6076 | .endif | | 6088 | .endif |
6077 | </pre> | | 6089 | </pre> |
6078 | <p>The first section contains the information about which build | | 6090 | <p>The first section contains the information about which build |
6079 | options are supported by the package, and any default options settings | | 6091 | options are supported by the package, and any default options settings |
6080 | if needed.</p> | | 6092 | if needed.</p> |
6081 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 6093 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
6082 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_VAR</code> is the name of the | | 6094 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_VAR</code> is the name of the |
6083 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> variable that the user can set to override the default | | 6095 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> variable that the user can set to override the default |
6084 | options. It should be set to | | 6096 | options. It should be set to |
6085 | PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em>. Do not set it to | | 6097 | PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em>. Do not set it to |
6086 | PKG_OPTIONS.${PKGBASE}, since <code class="varname">PKGBASE</code> is not defined | | 6098 | PKG_OPTIONS.${PKGBASE}, since <code class="varname">PKGBASE</code> is not defined |
6087 | at the point where the options are processed.</p></li> | | 6099 | at the point where the options are processed.</p></li> |
6088 | <li class="listitem"><p><code class="varname">PKG_SUPPORTED_OPTIONS</code> is a list of | | 6100 | <li class="listitem"><p><code class="varname">PKG_SUPPORTED_OPTIONS</code> is a list of |
6089 | build options supported by the package.</p></li> | | 6101 | build options supported by the package.</p></li> |
6090 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_OPTIONAL_GROUPS</code> is a | | 6102 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_OPTIONAL_GROUPS</code> is a |
6091 | list of names of groups of mutually exclusive options. The options in | | 6103 | list of names of groups of mutually exclusive options. The options in |
6092 | each group are listed in | | 6104 | each group are listed in |
6093 | <code class="varname">PKG_OPTIONS_GROUP.<em class="replaceable"><code>groupname</code></em></code>. | | 6105 | <code class="varname">PKG_OPTIONS_GROUP.<em class="replaceable"><code>groupname</code></em></code>. |
6094 | The most specific setting of any option from the group takes | | 6106 | The most specific setting of any option from the group takes |
6095 | precedence over all other options in the group. Options from the | | 6107 | precedence over all other options in the group. Options from the |
6096 | groups will be automatically added to | | 6108 | groups will be automatically added to |
6097 | <code class="varname">PKG_SUPPORTED_OPTIONS</code>.</p></li> | | 6109 | <code class="varname">PKG_SUPPORTED_OPTIONS</code>.</p></li> |
6098 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_REQUIRED_GROUPS</code> is like | | 6110 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_REQUIRED_GROUPS</code> is like |
6099 | <code class="varname">PKG_OPTIONS_OPTIONAL_GROUPS</code>, but building the | | 6111 | <code class="varname">PKG_OPTIONS_OPTIONAL_GROUPS</code>, but building the |
6100 | packages will fail if no option from the group is | | 6112 | packages will fail if no option from the group is |
6101 | selected.</p></li> | | 6113 | selected.</p></li> |
6102 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_NONEMPTY_SETS</code> is a list | | 6114 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_NONEMPTY_SETS</code> is a list |
6103 | of names of sets of options. At least one option from each set must | | 6115 | of names of sets of options. At least one option from each set must |
6104 | be selected. The options in each set are listed in | | 6116 | be selected. The options in each set are listed in |
6105 | <code class="varname">PKG_OPTIONS_SET.<em class="replaceable"><code>setname</code></em></code>. | | 6117 | <code class="varname">PKG_OPTIONS_SET.<em class="replaceable"><code>setname</code></em></code>. |
6106 | Options from the sets will be automatically added to | | 6118 | Options from the sets will be automatically added to |
6107 | <code class="varname">PKG_SUPPORTED_OPTIONS</code>. Building the package will | | 6119 | <code class="varname">PKG_SUPPORTED_OPTIONS</code>. Building the package will |
6108 | fail if no option from the set is selected.</p></li> | | 6120 | fail if no option from the set is selected.</p></li> |
6109 | <li class="listitem"><p><code class="varname">PKG_SUGGESTED_OPTIONS</code> is a list of | | 6121 | <li class="listitem"><p><code class="varname">PKG_SUGGESTED_OPTIONS</code> is a list of |
6110 | build options which are enabled by default.</p></li> | | 6122 | build options which are enabled by default.</p></li> |
6111 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_LEGACY_VARS</code> is a list | | 6123 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_LEGACY_VARS</code> is a list |
6112 | of | | 6124 | of |
6113 | <span class="quote">“<span class="quote"><em class="replaceable"><code>USE_VARIABLE</code></em>:<em class="replaceable"><code>option</code></em></span>”</span> | | 6125 | <span class="quote">“<span class="quote"><em class="replaceable"><code>USE_VARIABLE</code></em>:<em class="replaceable"><code>option</code></em></span>”</span> |
6114 | pairs that map legacy <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> variables to | | 6126 | pairs that map legacy <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> variables to |
6115 | their option counterparts. Pairs should be added with | | 6127 | their option counterparts. Pairs should be added with |
6116 | <span class="quote">“<span class="quote">+=</span>”</span> to keep the listing of global legacy variables. A | | 6128 | <span class="quote">“<span class="quote">+=</span>”</span> to keep the listing of global legacy variables. A |
6117 | warning will be issued if the user uses a legacy | | 6129 | warning will be issued if the user uses a legacy |
6118 | variable.</p></li> | | 6130 | variable.</p></li> |
6119 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_LEGACY_OPTS</code> is a list | | 6131 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_LEGACY_OPTS</code> is a list |
6120 | of | | 6132 | of |
6121 | <span class="quote">“<span class="quote"><em class="replaceable"><code>old-option</code></em>:<em class="replaceable"><code>new-option</code></em></span>”</span> | | 6133 | <span class="quote">“<span class="quote"><em class="replaceable"><code>old-option</code></em>:<em class="replaceable"><code>new-option</code></em></span>”</span> |
6122 | pairs that map options that have been renamed to their new | | 6134 | pairs that map options that have been renamed to their new |
6123 | counterparts. Pairs should be added with <span class="quote">“<span class="quote">+=</span>”</span> to keep | | 6135 | counterparts. Pairs should be added with <span class="quote">“<span class="quote">+=</span>”</span> to keep |
6124 | the listing of global legacy options. A warning will be issued if | | 6136 | the listing of global legacy options. A warning will be issued if |
6125 | the user uses a legacy option.</p></li> | | 6137 | the user uses a legacy option.</p></li> |
6126 | <li class="listitem"><p><code class="varname">PKG_LEGACY_OPTIONS</code> is a list of | | 6138 | <li class="listitem"><p><code class="varname">PKG_LEGACY_OPTIONS</code> is a list of |
6127 | options implied by deprecated variables used. This can be used for | | 6139 | options implied by deprecated variables used. This can be used for |
6128 | cases that neither <code class="varname">PKG_OPTIONS_LEGACY_VARS</code> nor | | 6140 | cases that neither <code class="varname">PKG_OPTIONS_LEGACY_VARS</code> nor |
6129 | <code class="varname">PKG_OPTIONS_LEGACY_OPTS</code> can handle, e. g. when | | 6141 | <code class="varname">PKG_OPTIONS_LEGACY_OPTS</code> can handle, e. g. when |
6130 | <code class="varname">PKG_OPTIONS_VAR</code> is renamed.</p></li> | | 6142 | <code class="varname">PKG_OPTIONS_VAR</code> is renamed.</p></li> |
6131 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_DEPRECATED_WARNINGS</code> is | | 6143 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_DEPRECATED_WARNINGS</code> is |
6132 | a list of warnings about deprecated variables or options used, and | | 6144 | a list of warnings about deprecated variables or options used, and |
6133 | what to use instead.</p></li> | | 6145 | what to use instead.</p></li> |
6134 | </ol></div> | | 6146 | </ol></div> |
6135 | <p>A package should never modify | | 6147 | <p>A package should never modify |
6136 | <code class="varname">PKG_DEFAULT_OPTIONS</code> or the variable named in | | 6148 | <code class="varname">PKG_DEFAULT_OPTIONS</code> or the variable named in |
6137 | <code class="varname">PKG_OPTIONS_VAR</code>. These are strictly user-settable. | | 6149 | <code class="varname">PKG_OPTIONS_VAR</code>. These are strictly user-settable. |
6138 | To suggest a default set of options, use | | 6150 | To suggest a default set of options, use |
6139 | <code class="varname">PKG_SUGGESTED_OPTIONS</code>.</p> | | 6151 | <code class="varname">PKG_SUGGESTED_OPTIONS</code>.</p> |
6140 | <p><code class="varname">PKG_OPTIONS_VAR</code> must be defined before | | 6152 | <p><code class="varname">PKG_OPTIONS_VAR</code> must be defined before |
6141 | including <code class="filename">bsd.options.mk</code>. If none of | | 6153 | including <code class="filename">bsd.options.mk</code>. If none of |
6142 | <code class="varname">PKG_SUPPORTED_OPTIONS</code>, | | 6154 | <code class="varname">PKG_SUPPORTED_OPTIONS</code>, |
6143 | <code class="varname">PKG_OPTIONS_OPTIONAL_GROUPS</code>, and | | 6155 | <code class="varname">PKG_OPTIONS_OPTIONAL_GROUPS</code>, and |
6144 | <code class="varname">PKG_OPTIONS_REQUIRED_GROUPS</code> are defined (as can | | 6156 | <code class="varname">PKG_OPTIONS_REQUIRED_GROUPS</code> are defined (as can |
6145 | happen with platform-specific options if none of them is supported on | | 6157 | happen with platform-specific options if none of them is supported on |
6146 | the current platform), <code class="varname">PKG_OPTIONS</code> is set to the | | 6158 | the current platform), <code class="varname">PKG_OPTIONS</code> is set to the |
6147 | empty list and the package is otherwise treated as not using the | | 6159 | empty list and the package is otherwise treated as not using the |
6148 | options framework.</p> | | 6160 | options framework.</p> |
6149 | <p>After the inclusion of <code class="filename">bsd.options.mk</code>, the | | 6161 | <p>After the inclusion of <code class="filename">bsd.options.mk</code>, the |
6150 | variable <code class="varname">PKG_OPTIONS</code> contains the list of selected | | 6162 | variable <code class="varname">PKG_OPTIONS</code> contains the list of selected |
6151 | build options, properly filtered to remove unsupported and duplicate | | 6163 | build options, properly filtered to remove unsupported and duplicate |
6152 | options.</p> | | 6164 | options.</p> |
6153 | <p>The remaining sections contain the logic that is specific to | | 6165 | <p>The remaining sections contain the logic that is specific to |
6154 | each option. The correct way to check for an option is to check | | 6166 | each option. The correct way to check for an option is to check |
6155 | whether it is listed in <code class="varname">PKG_OPTIONS</code>:</p> | | 6167 | whether it is listed in <code class="varname">PKG_OPTIONS</code>:</p> |
6156 | <pre class="programlisting"> | | 6168 | <pre class="programlisting"> |
6157 | .if !empty(PKG_OPTIONS:M<em class="replaceable"><code>option</code></em>) | | 6169 | .if !empty(PKG_OPTIONS:M<em class="replaceable"><code>option</code></em>) |
6158 | </pre> | | 6170 | </pre> |
6159 | </div> | | 6171 | </div> |
6160 | <div class="sect1"> | | 6172 | <div class="sect1"> |
6161 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6173 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6162 | <a name="option-names"></a>16.3. Option Names</h2></div></div></div> | | 6174 | <a name="option-names"></a>16.3. Option Names</h2></div></div></div> |
6163 | <p>Options that enable similar features in different packages (like | | 6175 | <p>Options that enable similar features in different packages (like |
6164 | optional support for a library) should use a common name in all | | 6176 | optional support for a library) should use a common name in all |
6165 | packages that support it (like the name of the library). If another | | 6177 | packages that support it (like the name of the library). If another |
6166 | package already has an option with the same meaning, use the same | | 6178 | package already has an option with the same meaning, use the same |
6167 | name.</p> | | 6179 | name.</p> |
6168 | <p>Options that enable features specific to one package, where it's | | 6180 | <p>Options that enable features specific to one package, where it's |
6169 | unlikely that another (unrelated) package has the same (or a similar) | | 6181 | unlikely that another (unrelated) package has the same (or a similar) |
6170 | optional feature, should use a name prefixed with | | 6182 | optional feature, should use a name prefixed with |
6171 | <code class="varname"><em class="replaceable"><code>pkgname</code></em>-</code>.</p> | | 6183 | <code class="varname"><em class="replaceable"><code>pkgname</code></em>-</code>.</p> |
6172 | <p>If a group of related packages share an optional feature | | 6184 | <p>If a group of related packages share an optional feature |
6173 | specific to that group, prefix it with the name of the | | 6185 | specific to that group, prefix it with the name of the |
6174 | <span class="quote">“<span class="quote">main</span>”</span> package | | 6186 | <span class="quote">“<span class="quote">main</span>”</span> package |
6175 | (e. g. <code class="varname">djbware-errno-hack</code>).</p> | | 6187 | (e. g. <code class="varname">djbware-errno-hack</code>).</p> |
6176 | <p>For new options, add a line to | | 6188 | <p>For new options, add a line to |
6177 | <code class="filename">mk/defaults/options.description</code>. Lines have two | | 6189 | <code class="filename">mk/defaults/options.description</code>. Lines have two |
6178 | fields, separated by tab. The first field is the option name, the | | 6190 | fields, separated by tab. The first field is the option name, the |
6179 | second its description. The description should be a whole sentence | | 6191 | second its description. The description should be a whole sentence |
6180 | (starting with an uppercase letter and ending with a period) that | | 6192 | (starting with an uppercase letter and ending with a period) that |
6181 | describes what enabling the option does. E. g. <span class="quote">“<span class="quote">Enable ispell | | 6193 | describes what enabling the option does. E. g. <span class="quote">“<span class="quote">Enable ispell |
6182 | support.</span>”</span> The file is sorted by option names.</p> | | 6194 | support.</span>”</span> The file is sorted by option names.</p> |
6183 | </div> | | 6195 | </div> |
6184 | <div class="sect1"> | | 6196 | <div class="sect1"> |
6185 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6197 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6186 | <a name="option-build"></a>16.4. Determining the options of dependencies</h2></div></div></div> | | 6198 | <a name="option-build"></a>16.4. Determining the options of dependencies</h2></div></div></div> |
6187 | <p>When writing <a class="link" href="#buildlink3.mk"><code class="filename">buildlink3.mk</code></a> files, it is often necessary to list | | 6199 | <p>When writing <a class="link" href="#buildlink3.mk"><code class="filename">buildlink3.mk</code></a> files, it is often necessary to list |
6188 | different dependencies based on the options with which the package was | | 6200 | different dependencies based on the options with which the package was |
6189 | built. For querying these options, the file | | 6201 | built. For querying these options, the file |
6190 | <code class="filename">pkgsrc/mk/pkg-build-options.mk</code> should be used. A | | 6202 | <code class="filename">pkgsrc/mk/pkg-build-options.mk</code> should be used. A |
6191 | typical example looks like this:</p> | | 6203 | typical example looks like this:</p> |
6192 | <pre class="programlisting"> | | 6204 | <pre class="programlisting"> |
6193 | pkgbase := libpurple | | 6205 | pkgbase := libpurple |
6194 | .include "../../mk/pkg-build-options.mk" | | 6206 | .include "../../mk/pkg-build-options.mk" |
6195 | | | 6207 | |
6196 | .if !empty(PKG_BUILD_OPTIONS.libpurple:Mdbus) | | 6208 | .if !empty(PKG_BUILD_OPTIONS.libpurple:Mdbus) |
6197 | ... | | 6209 | ... |
6198 | .endif | | 6210 | .endif |
6199 | </pre> | | 6211 | </pre> |
6200 | <p>Including <code class="filename">pkg-build-options.mk</code> here will set | | 6212 | <p>Including <code class="filename">pkg-build-options.mk</code> here will set |
6201 | the variable <code class="varname">PKG_BUILD_OPTIONS.libpurple</code> to the build | | 6213 | the variable <code class="varname">PKG_BUILD_OPTIONS.libpurple</code> to the build |
6202 | options of the libpurple package, which can then be queried like | | 6214 | options of the libpurple package, which can then be queried like |
6203 | <code class="varname">PKG_OPTIONS</code> in the <code class="filename">options.mk</code> | | 6215 | <code class="varname">PKG_OPTIONS</code> in the <code class="filename">options.mk</code> |
6204 | file. See the file <code class="filename">pkg-build-options.mk</code> for more | | 6216 | file. See the file <code class="filename">pkg-build-options.mk</code> for more |
6205 | details.</p> | | 6217 | details.</p> |
6206 | </div> | | 6218 | </div> |
6207 | </div> | | 6219 | </div> |
6208 | <div class="chapter"> | | 6220 | <div class="chapter"> |
6209 | <div class="titlepage"><div><div><h2 class="title"> | | 6221 | <div class="titlepage"><div><div><h2 class="title"> |
6210 | <a name="build"></a>Chapter 17. The build process</h2></div></div></div> | | 6222 | <a name="build"></a>Chapter 17. The build process</h2></div></div></div> |
6211 | <div class="toc"> | | 6223 | <div class="toc"> |
6212 | <p><b>Table of Contents</b></p> | | 6224 | <p><b>Table of Contents</b></p> |
6213 | <dl> | | 6225 | <dl> |
6214 | <dt><span class="sect1"><a href="#build.intro">17.1. Introduction</a></span></dt> | | 6226 | <dt><span class="sect1"><a href="#build.intro">17.1. Introduction</a></span></dt> |
6215 | <dt><span class="sect1"><a href="#build.prefix">17.2. Program location</a></span></dt> | | 6227 | <dt><span class="sect1"><a href="#build.prefix">17.2. Program location</a></span></dt> |
6216 | <dt><span class="sect1"><a href="#build.builddirs">17.3. Directories used during the build process</a></span></dt> | | 6228 | <dt><span class="sect1"><a href="#build.builddirs">17.3. Directories used during the build process</a></span></dt> |
6217 | <dt><span class="sect1"><a href="#build.running">17.4. Running a phase</a></span></dt> | | 6229 | <dt><span class="sect1"><a href="#build.running">17.4. Running a phase</a></span></dt> |
6218 | <dt><span class="sect1"><a href="#build.fetch">17.5. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> | | 6230 | <dt><span class="sect1"><a href="#build.fetch">17.5. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> |
6219 | <dd><dl> | | 6231 | <dd><dl> |
6220 | <dt><span class="sect2"><a href="#build.fetch.what">17.5.1. What to fetch and where to get it from</a></span></dt> | | 6232 | <dt><span class="sect2"><a href="#build.fetch.what">17.5.1. What to fetch and where to get it from</a></span></dt> |
6221 | <dt><span class="sect2"><a href="#build.fetch.how">17.5.2. How are the files fetched?</a></span></dt> | | 6233 | <dt><span class="sect2"><a href="#build.fetch.how">17.5.2. How are the files fetched?</a></span></dt> |
6222 | </dl></dd> | | 6234 | </dl></dd> |
6223 | <dt><span class="sect1"><a href="#build.checksum">17.6. The <span class="emphasis"><em>checksum</em></span> phase</a></span></dt> | | 6235 | <dt><span class="sect1"><a href="#build.checksum">17.6. The <span class="emphasis"><em>checksum</em></span> phase</a></span></dt> |
6224 | <dt><span class="sect1"><a href="#build.extract">17.7. The <span class="emphasis"><em>extract</em></span> phase</a></span></dt> | | 6236 | <dt><span class="sect1"><a href="#build.extract">17.7. The <span class="emphasis"><em>extract</em></span> phase</a></span></dt> |
6225 | <dt><span class="sect1"><a href="#build.patch">17.8. The <span class="emphasis"><em>patch</em></span> phase</a></span></dt> | | 6237 | <dt><span class="sect1"><a href="#build.patch">17.8. The <span class="emphasis"><em>patch</em></span> phase</a></span></dt> |
6226 | <dt><span class="sect1"><a href="#build.tools">17.9. The <span class="emphasis"><em>tools</em></span> phase</a></span></dt> | | 6238 | <dt><span class="sect1"><a href="#build.tools">17.9. The <span class="emphasis"><em>tools</em></span> phase</a></span></dt> |
6227 | <dt><span class="sect1"><a href="#build.wrapper">17.10. The <span class="emphasis"><em>wrapper</em></span> phase</a></span></dt> | | 6239 | <dt><span class="sect1"><a href="#build.wrapper">17.10. The <span class="emphasis"><em>wrapper</em></span> phase</a></span></dt> |
6228 | <dt><span class="sect1"><a href="#build.configure">17.11. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> | | 6240 | <dt><span class="sect1"><a href="#build.configure">17.11. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> |
6229 | <dt><span class="sect1"><a href="#build.build">17.12. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> | | 6241 | <dt><span class="sect1"><a href="#build.build">17.12. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> |
6230 | <dt><span class="sect1"><a href="#build.test">17.13. The <span class="emphasis"><em>test</em></span> phase</a></span></dt> | | 6242 | <dt><span class="sect1"><a href="#build.test">17.13. The <span class="emphasis"><em>test</em></span> phase</a></span></dt> |
6231 | <dt><span class="sect1"><a href="#build.install">17.14. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> | | 6243 | <dt><span class="sect1"><a href="#build.install">17.14. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> |
6232 | <dt><span class="sect1"><a href="#build.package">17.15. The <span class="emphasis"><em>package</em></span> phase</a></span></dt> | | 6244 | <dt><span class="sect1"><a href="#build.package">17.15. The <span class="emphasis"><em>package</em></span> phase</a></span></dt> |
6233 | <dt><span class="sect1"><a href="#build.clean">17.16. Cleaning up</a></span></dt> | | 6245 | <dt><span class="sect1"><a href="#build.clean">17.16. Cleaning up</a></span></dt> |
6234 | <dt><span class="sect1"><a href="#build.helpful-targets">17.17. Other helpful targets</a></span></dt> | | 6246 | <dt><span class="sect1"><a href="#build.helpful-targets">17.17. Other helpful targets</a></span></dt> |
6235 | </dl> | | 6247 | </dl> |
6236 | </div> | | 6248 | </div> |
6237 | <div class="sect1"> | | 6249 | <div class="sect1"> |
6238 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6250 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6239 | <a name="build.intro"></a>17.1. Introduction</h2></div></div></div> | | 6251 | <a name="build.intro"></a>17.1. Introduction</h2></div></div></div> |
6240 | <p>This chapter gives a detailed description on how a package is | | 6252 | <p>This chapter gives a detailed description on how a package is |
6241 | built. Building a package is separated into different | | 6253 | built. Building a package is separated into different |
6242 | <span class="emphasis"><em>phases</em></span> (for example <code class="varname">fetch</code>, | | 6254 | <span class="emphasis"><em>phases</em></span> (for example <code class="varname">fetch</code>, |
6243 | <code class="varname">build</code>, <code class="varname">install</code>), all of which are | | 6255 | <code class="varname">build</code>, <code class="varname">install</code>), all of which are |
6244 | described in the following sections. Each phase is split into | | 6256 | described in the following sections. Each phase is split into |
6245 | so-called <span class="emphasis"><em>stages</em></span>, which take the name of the | | 6257 | so-called <span class="emphasis"><em>stages</em></span>, which take the name of the |
6246 | containing phase, prefixed by one of <code class="varname">pre-</code>, | | 6258 | containing phase, prefixed by one of <code class="varname">pre-</code>, |
6247 | <code class="varname">do-</code> or <code class="varname">post-</code>. (Examples are | | 6259 | <code class="varname">do-</code> or <code class="varname">post-</code>. (Examples are |
6248 | <code class="varname">pre-configure</code>, <code class="varname">post-build</code>.) Most | | 6260 | <code class="varname">pre-configure</code>, <code class="varname">post-build</code>.) Most |
6249 | of the actual work is done in the <code class="varname">do-*</code> stages.</p> | | 6261 | of the actual work is done in the <code class="varname">do-*</code> stages.</p> |
6250 | <p>Never override the regular targets (like | | 6262 | <p>Never override the regular targets (like |
6251 | <code class="varname">fetch</code>), if you have to, override the | | 6263 | <code class="varname">fetch</code>), if you have to, override the |
6252 | <code class="varname">do-*</code> ones instead.</p> | | 6264 | <code class="varname">do-*</code> ones instead.</p> |
6253 | <p>The basic steps for building a program are always the same. First | | 6265 | <p>The basic steps for building a program are always the same. First |
6254 | the program's source (<span class="emphasis"><em>distfile</em></span>) must be brought to | | 6266 | the program's source (<span class="emphasis"><em>distfile</em></span>) must be brought to |
6255 | the local system and then extracted. After any pkgsrc-specific patches | | 6267 | the local system and then extracted. After any pkgsrc-specific patches |
6256 | to compile properly are applied, the software can be configured, then | | 6268 | to compile properly are applied, the software can be configured, then |
6257 | built (usually by compiling), and finally the generated binaries, etc. | | 6269 | built (usually by compiling), and finally the generated binaries, etc. |
6258 | can be put into place on the system.</p> | | 6270 | can be put into place on the system.</p> |
6259 | <p>To get more details about what is happening at each step, | | 6271 | <p>To get more details about what is happening at each step, |
6260 | you can set the <code class="varname">PKG_VERBOSE</code> variable, or the | | 6272 | you can set the <code class="varname">PKG_VERBOSE</code> variable, or the |
6261 | <code class="varname">PATCH_DEBUG</code> variable if you are just interested | | 6273 | <code class="varname">PATCH_DEBUG</code> variable if you are just interested |
6262 | in more details about the <span class="emphasis"><em>patch</em></span> step.</p> | | 6274 | in more details about the <span class="emphasis"><em>patch</em></span> step.</p> |
6263 | </div> | | 6275 | </div> |
6264 | <div class="sect1"> | | 6276 | <div class="sect1"> |
6265 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6277 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6266 | <a name="build.prefix"></a>17.2. Program location</h2></div></div></div> | | 6278 | <a name="build.prefix"></a>17.2. Program location</h2></div></div></div> |
6267 | <p>Before outlining the process performed by the NetBSD package system in | | 6279 | <p>Before outlining the process performed by the NetBSD package system in |
6268 | the next section, here's a brief discussion on where programs are | | 6280 | the next section, here's a brief discussion on where programs are |
6269 | installed, and which variables influence this.</p> | | 6281 | installed, and which variables influence this.</p> |
6270 | <p>The automatic variable <code class="varname">PREFIX</code> indicates | | 6282 | <p>The automatic variable <code class="varname">PREFIX</code> indicates |
6271 | where all files of the final program shall be installed. It is | | 6283 | where all files of the final program shall be installed. It is |
6272 | usually set to <code class="varname">LOCALBASE</code> | | 6284 | usually set to <code class="varname">LOCALBASE</code> |
6273 | (<code class="filename">/usr/pkg</code>), or <code class="varname">CROSSBASE</code> | | 6285 | (<code class="filename">/usr/pkg</code>), or <code class="varname">CROSSBASE</code> |
6274 | for pkgs in the <code class="filename">cross</code> category. The value of | | 6286 | for pkgs in the <code class="filename">cross</code> category. The value of |
6275 | <code class="varname">PREFIX</code> needs to be put | | 6287 | <code class="varname">PREFIX</code> needs to be put |
6276 | into the various places in the program's source where paths to | | 6288 | into the various places in the program's source where paths to |
6277 | these files are encoded. See <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “patches/*”</a> and <a class="xref" href="#fixes.libtool" title="19.3.1. Shared libraries - libtool">Section 19.3.1, “Shared libraries - libtool”</a> for more details.</p> | | 6289 | these files are encoded. See <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “patches/*”</a> and <a class="xref" href="#fixes.libtool" title="19.3.1. Shared libraries - libtool">Section 19.3.1, “Shared libraries - libtool”</a> for more details.</p> |
6278 | <p>When choosing which of these variables to use, | | 6290 | <p>When choosing which of these variables to use, |
6279 | follow the following rules:</p> | | 6291 | follow the following rules:</p> |
6280 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 6292 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
6281 | <li class="listitem"><p><code class="varname">PREFIX</code> always points to the location | | 6293 | <li class="listitem"><p><code class="varname">PREFIX</code> always points to the location |
6282 | where the current pkg will be installed. When referring to a | | 6294 | where the current pkg will be installed. When referring to a |
6283 | pkg's own installation path, use | | 6295 | pkg's own installation path, use |
6284 | <span class="quote">“<span class="quote">${PREFIX}</span>”</span>.</p></li> | | 6296 | <span class="quote">“<span class="quote">${PREFIX}</span>”</span>.</p></li> |
6285 | <li class="listitem"><p><code class="varname">LOCALBASE</code> is where all non-X11 pkgs | | 6297 | <li class="listitem"><p><code class="varname">LOCALBASE</code> is where all non-X11 pkgs |
6286 | are installed. If you need to construct a -I or -L argument | | 6298 | are installed. If you need to construct a -I or -L argument |
6287 | to the compiler to find includes and libraries installed by | | 6299 | to the compiler to find includes and libraries installed by |
6288 | another non-X11 pkg, use <span class="quote">“<span class="quote">${LOCALBASE}</span>”</span>. The name | | 6300 | another non-X11 pkg, use <span class="quote">“<span class="quote">${LOCALBASE}</span>”</span>. The name |
6289 | <code class="varname">LOCALBASE</code> stems from FreeBSD, which | | 6301 | <code class="varname">LOCALBASE</code> stems from FreeBSD, which |
6290 | installed all packages in <code class="filename">/usr/local</code>. As | | 6302 | installed all packages in <code class="filename">/usr/local</code>. As |
6291 | pkgsrc leaves <code class="filename">/usr/local</code> for the system | | 6303 | pkgsrc leaves <code class="filename">/usr/local</code> for the system |
6292 | administrator, this variable is a misnomer.</p></li> | | 6304 | administrator, this variable is a misnomer.</p></li> |
6293 | <li class="listitem"><p><code class="varname">X11BASE</code> is where the actual X11 | | 6305 | <li class="listitem"><p><code class="varname">X11BASE</code> is where the actual X11 |
6294 | distribution (from xsrc, etc.) is installed. When looking for | | 6306 | distribution (from xsrc, etc.) is installed. When looking for |
6295 | <span class="emphasis"><em>standard</em></span> X11 includes (not those | | 6307 | <span class="emphasis"><em>standard</em></span> X11 includes (not those |
6296 | installed by a package), use <span class="quote">“<span class="quote">${X11BASE}</span>”</span>.</p></li> | | 6308 | installed by a package), use <span class="quote">“<span class="quote">${X11BASE}</span>”</span>.</p></li> |
6297 | <li class="listitem"> | | 6309 | <li class="listitem"> |
6298 | <p>X11-based packages are special in that they may be | | 6310 | <p>X11-based packages are special in that they may be |
6299 | installed in either <code class="varname">X11BASE</code> or | | 6311 | installed in either <code class="varname">X11BASE</code> or |
6300 | <code class="varname">LOCALBASE</code>.</p> | | 6312 | <code class="varname">LOCALBASE</code>.</p> |
6301 | <p>Usually, X11 packages should be installed under | | 6313 | <p>Usually, X11 packages should be installed under |
6302 | <code class="varname">LOCALBASE</code> whenever possible. Note that you | | 6314 | <code class="varname">LOCALBASE</code> whenever possible. Note that you |
6303 | will need to include | | 6315 | will need to include |
6304 | <code class="filename">../../mk/x11.buildlink3.mk</code> in them to | | 6316 | <code class="filename">../../mk/x11.buildlink3.mk</code> in them to |
6305 | request the presence of X11 and to get the right compilation | | 6317 | request the presence of X11 and to get the right compilation |
6306 | flags.</p> | | 6318 | flags.</p> |
6307 | <p>Even though, there are some packages that cannot be installed | | 6319 | <p>Even though, there are some packages that cannot be installed |
6308 | under <code class="varname">LOCALBASE</code>: those that come with app-defaults | | 6320 | under <code class="varname">LOCALBASE</code>: those that come with app-defaults |
6309 | files. These packages are special and they must be placed under | | 6321 | files. These packages are special and they must be placed under |
6310 | <code class="varname">X11BASE</code>. To accomplish this, set either | | 6322 | <code class="varname">X11BASE</code>. To accomplish this, set either |
6311 | <code class="varname">USE_X11BASE</code> or <code class="varname">USE_IMAKE</code> in | | 6323 | <code class="varname">USE_X11BASE</code> or <code class="varname">USE_IMAKE</code> in |
6312 | your package.</p> | | 6324 | your package.</p> |
6313 | <p>Some notes: If you need | | 6325 | <p>Some notes: If you need |
6314 | to find includes or libraries installed by a pkg that has | | 6326 | to find includes or libraries installed by a pkg that has |
6315 | <code class="varname">USE_IMAKE</code> or <code class="varname">USE_X11BASE</code> in | | 6327 | <code class="varname">USE_IMAKE</code> or <code class="varname">USE_X11BASE</code> in |
6316 | its pkg <code class="filename">Makefile</code>, you need to look in | | 6328 | its pkg <code class="filename">Makefile</code>, you need to look in |
6317 | <span class="emphasis"><em>both</em></span> <code class="filename">${X11BASE}</code> and | | 6329 | <span class="emphasis"><em>both</em></span> <code class="filename">${X11BASE}</code> and |
6318 | <code class="filename">${LOCALBASE}</code>. To force installation of | | 6330 | <code class="filename">${LOCALBASE}</code>. To force installation of |
6319 | all X11 packages in <code class="varname">LOCALBASE</code>, the | | 6331 | all X11 packages in <code class="varname">LOCALBASE</code>, the |
6320 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/xpkgwedge/README.html" target="_top"><code class="filename">pkgtools/xpkgwedge</code></a> package | | 6332 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/xpkgwedge/README.html" target="_top"><code class="filename">pkgtools/xpkgwedge</code></a> package |
6321 | is enabled by default.</p> | | 6333 | is enabled by default.</p> |
6322 | </li> | | 6334 | </li> |
6323 | <li class="listitem"><p><code class="varname">X11PREFIX</code> should be used to refer to | | 6335 | <li class="listitem"><p><code class="varname">X11PREFIX</code> should be used to refer to |
6324 | the installed location of an X11 | | 6336 | the installed location of an X11 |
6325 | package. <code class="varname">X11PREFIX</code> will be set to | | 6337 | package. <code class="varname">X11PREFIX</code> will be set to |
6326 | <code class="varname">X11BASE</code> if xpkgwedge is not installed, and | | 6338 | <code class="varname">X11BASE</code> if xpkgwedge is not installed, and |
| @@ -6340,4345 +6352,4357 @@ details. | | | @@ -6340,4345 +6352,4357 @@ details. |
6340 | <p>This is best illustrated by example.</p> | | 6352 | <p>This is best illustrated by example.</p> |
6341 | <p>The following lines are taken from | | 6353 | <p>The following lines are taken from |
6342 | <code class="filename">pkgsrc/wm/scwm/Makefile</code>:</p> | | 6354 | <code class="filename">pkgsrc/wm/scwm/Makefile</code>:</p> |
6343 | <pre class="programlisting"> | | 6355 | <pre class="programlisting"> |
6344 | EVAL_PREFIX+= GTKDIR=gtk+ | | 6356 | EVAL_PREFIX+= GTKDIR=gtk+ |
6345 | CONFIGURE_ARGS+= --with-guile-prefix=${LOCALBASE:Q} | | 6357 | CONFIGURE_ARGS+= --with-guile-prefix=${LOCALBASE:Q} |
6346 | CONFIGURE_ARGS+= --with-gtk-prefix=${GTKDIR:Q} | | 6358 | CONFIGURE_ARGS+= --with-gtk-prefix=${GTKDIR:Q} |
6347 | CONFIGURE_ARGS+= --enable-multibyte | | 6359 | CONFIGURE_ARGS+= --enable-multibyte |
6348 | </pre> | | 6360 | </pre> |
6349 | <p>Specific defaults can be defined for the packages | | 6361 | <p>Specific defaults can be defined for the packages |
6350 | evaluated using <code class="varname">EVAL_PREFIX</code>, by using a | | 6362 | evaluated using <code class="varname">EVAL_PREFIX</code>, by using a |
6351 | definition of the form:</p> | | 6363 | definition of the form:</p> |
6352 | <pre class="programlisting"> | | 6364 | <pre class="programlisting"> |
6353 | GTKDIR_DEFAULT= ${LOCALBASE} | | 6365 | GTKDIR_DEFAULT= ${LOCALBASE} |
6354 | </pre> | | 6366 | </pre> |
6355 | <p>where <code class="varname">GTKDIR</code> corresponds | | 6367 | <p>where <code class="varname">GTKDIR</code> corresponds |
6356 | to the first definition in | | 6368 | to the first definition in |
6357 | the <code class="varname">EVAL_PREFIX</code> pair.</p> | | 6369 | the <code class="varname">EVAL_PREFIX</code> pair.</p> |
6358 | </li> | | 6370 | </li> |
6359 | <li class="listitem"><p>Within <code class="filename">${PREFIX}</code>, packages should | | 6371 | <li class="listitem"><p>Within <code class="filename">${PREFIX}</code>, packages should |
6360 | install files according to <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?hier+7+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">hier</span>(7)</span></a>, with the exception that | | 6372 | install files according to <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?hier+7+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">hier</span>(7)</span></a>, with the exception that |
6361 | manual pages go into <code class="filename">${PREFIX}/man</code>, not | | 6373 | manual pages go into <code class="filename">${PREFIX}/man</code>, not |
6362 | <code class="filename">${PREFIX}/share/man</code>.</p></li> | | 6374 | <code class="filename">${PREFIX}/share/man</code>.</p></li> |
6363 | </ul></div> | | 6375 | </ul></div> |
6364 | </div> | | 6376 | </div> |
6365 | <div class="sect1"> | | 6377 | <div class="sect1"> |
6366 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6378 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6367 | <a name="build.builddirs"></a>17.3. Directories used during the build process</h2></div></div></div> | | 6379 | <a name="build.builddirs"></a>17.3. Directories used during the build process</h2></div></div></div> |
6368 | <p>When building a package, various directories are used to store | | 6380 | <p>When building a package, various directories are used to store |
6369 | source files, temporary files, pkgsrc-internal files, and so on. These | | 6381 | source files, temporary files, pkgsrc-internal files, and so on. These |
6370 | directories are explained here.</p> | | 6382 | directories are explained here.</p> |
6371 | <p>Some of the directory variables contain relative pathnames. There | | 6383 | <p>Some of the directory variables contain relative pathnames. There |
6372 | are two common base directories for these relative directories: | | 6384 | are two common base directories for these relative directories: |
6373 | <code class="varname">PKGSRCDIR/PKGPATH</code> is used for directories that are | | 6385 | <code class="varname">PKGSRCDIR/PKGPATH</code> is used for directories that are |
6374 | pkgsrc-specific. <code class="varname">WRKSRC</code> is used for directories | | 6386 | pkgsrc-specific. <code class="varname">WRKSRC</code> is used for directories |
6375 | inside the package itself.</p> | | 6387 | inside the package itself.</p> |
6376 | <div class="variablelist"><dl class="variablelist"> | | 6388 | <div class="variablelist"><dl class="variablelist"> |
6377 | <dt><span class="term"><code class="varname">PKGSRCDIR</code></span></dt> | | 6389 | <dt><span class="term"><code class="varname">PKGSRCDIR</code></span></dt> |
6378 | <dd><p>This is an absolute pathname that points to the pkgsrc | | 6390 | <dd><p>This is an absolute pathname that points to the pkgsrc |
6379 | root directory. Generally, you don't need | | 6391 | root directory. Generally, you don't need |
6380 | it.</p></dd> | | 6392 | it.</p></dd> |
6381 | <dt><span class="term"><code class="varname">PKGDIR</code></span></dt> | | 6393 | <dt><span class="term"><code class="varname">PKGDIR</code></span></dt> |
6382 | <dd><p>This is an absolute pathname that points to the | | 6394 | <dd><p>This is an absolute pathname that points to the |
6383 | current package.</p></dd> | | 6395 | current package.</p></dd> |
6384 | <dt><span class="term"><code class="varname">PKGPATH</code></span></dt> | | 6396 | <dt><span class="term"><code class="varname">PKGPATH</code></span></dt> |
6385 | <dd><p>This is a pathname relative to | | 6397 | <dd><p>This is a pathname relative to |
6386 | <code class="varname">PKGSRCDIR</code> that points to the current | | 6398 | <code class="varname">PKGSRCDIR</code> that points to the current |
6387 | package.</p></dd> | | 6399 | package.</p></dd> |
6388 | <dt><span class="term"><code class="varname">WRKDIR</code></span></dt> | | 6400 | <dt><span class="term"><code class="varname">WRKDIR</code></span></dt> |
6389 | <dd><p>This is an absolute pathname pointing to the directory | | 6401 | <dd><p>This is an absolute pathname pointing to the directory |
6390 | where all work takes place. The distfiles are extracted to this | | 6402 | where all work takes place. The distfiles are extracted to this |
6391 | directory. It also contains temporary directories and log files used by | | 6403 | directory. It also contains temporary directories and log files used by |
6392 | the various pkgsrc frameworks, like <span class="emphasis"><em>buildlink</em></span> or | | 6404 | the various pkgsrc frameworks, like <span class="emphasis"><em>buildlink</em></span> or |
6393 | the <span class="emphasis"><em>wrappers</em></span>.</p></dd> | | 6405 | the <span class="emphasis"><em>wrappers</em></span>.</p></dd> |
6394 | <dt><span class="term"><code class="varname">WRKSRC</code></span></dt> | | 6406 | <dt><span class="term"><code class="varname">WRKSRC</code></span></dt> |
6395 | <dd><p>This is an absolute pathname pointing to the directory | | 6407 | <dd><p>This is an absolute pathname pointing to the directory |
6396 | where the distfiles are extracted. It is usually a direct subdirectory | | 6408 | where the distfiles are extracted. It is usually a direct subdirectory |
6397 | of <code class="varname">WRKDIR</code>, and often it's the only directory entry | | 6409 | of <code class="varname">WRKDIR</code>, and often it's the only directory entry |
6398 | that isn't hidden. This variable may be changed by a package | | 6410 | that isn't hidden. This variable may be changed by a package |
6399 | <code class="filename">Makefile</code>.</p></dd> | | 6411 | <code class="filename">Makefile</code>.</p></dd> |
6400 | </dl></div> | | 6412 | </dl></div> |
6401 | <p>The <code class="varname">CREATE_WRKDIR_SYMLINK</code> definition takes either | | 6413 | <p>The <code class="varname">CREATE_WRKDIR_SYMLINK</code> definition takes either |
6402 | the value <span class="emphasis"><em>yes</em></span> or <span class="emphasis"><em>no</em></span> and defaults | | 6414 | the value <span class="emphasis"><em>yes</em></span> or <span class="emphasis"><em>no</em></span> and defaults |
6403 | to <span class="emphasis"><em>no</em></span>. It indicates whether a symbolic link to the | | 6415 | to <span class="emphasis"><em>no</em></span>. It indicates whether a symbolic link to the |
6404 | <code class="varname">WRKDIR</code> is to be created in the pkgsrc entry's directory. | | 6416 | <code class="varname">WRKDIR</code> is to be created in the pkgsrc entry's directory. |
6405 | If users would like to have their pkgsrc trees behave in a | | 6417 | If users would like to have their pkgsrc trees behave in a |
6406 | read-only manner, then the value of | | 6418 | read-only manner, then the value of |
6407 | <code class="varname">CREATE_WRKDIR_SYMLINK</code> should be set to | | 6419 | <code class="varname">CREATE_WRKDIR_SYMLINK</code> should be set to |
6408 | <span class="emphasis"><em>no</em></span>.</p> | | 6420 | <span class="emphasis"><em>no</em></span>.</p> |
6409 | </div> | | 6421 | </div> |
6410 | <div class="sect1"> | | 6422 | <div class="sect1"> |
6411 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6423 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6412 | <a name="build.running"></a>17.4. Running a phase</h2></div></div></div> | | 6424 | <a name="build.running"></a>17.4. Running a phase</h2></div></div></div> |
6413 | <p>You can run a particular phase by typing <span class="command"><strong>make | | 6425 | <p>You can run a particular phase by typing <span class="command"><strong>make |
6414 | phase</strong></span>, where <span class="emphasis"><em>phase</em></span> is the name of the | | 6426 | phase</strong></span>, where <span class="emphasis"><em>phase</em></span> is the name of the |
6415 | phase. This will automatically run all phases that are required for this | | 6427 | phase. This will automatically run all phases that are required for this |
6416 | phase. The default phase is <code class="varname">build</code>, that is, when you | | 6428 | phase. The default phase is <code class="varname">build</code>, that is, when you |
6417 | run <span class="command"><strong>make</strong></span> without parameters in a package directory, | | 6429 | run <span class="command"><strong>make</strong></span> without parameters in a package directory, |
6418 | the package will be built, but not installed.</p> | | 6430 | the package will be built, but not installed.</p> |
6419 | </div> | | 6431 | </div> |
6420 | <div class="sect1"> | | 6432 | <div class="sect1"> |
6421 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6433 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6422 | <a name="build.fetch"></a>17.5. The <span class="emphasis"><em>fetch</em></span> phase</h2></div></div></div> | | 6434 | <a name="build.fetch"></a>17.5. The <span class="emphasis"><em>fetch</em></span> phase</h2></div></div></div> |
6423 | <p>The first step in building a package is to fetch the | | 6435 | <p>The first step in building a package is to fetch the |
6424 | distribution files (distfiles) from the sites that are providing | | 6436 | distribution files (distfiles) from the sites that are providing |
6425 | them. This is the task of the <span class="emphasis"><em>fetch</em></span> | | 6437 | them. This is the task of the <span class="emphasis"><em>fetch</em></span> |
6426 | phase.</p> | | 6438 | phase.</p> |
6427 | <div class="sect2"> | | 6439 | <div class="sect2"> |
6428 | <div class="titlepage"><div><div><h3 class="title"> | | 6440 | <div class="titlepage"><div><div><h3 class="title"> |
6429 | <a name="build.fetch.what"></a>17.5.1. What to fetch and where to get it from</h3></div></div></div> | | 6441 | <a name="build.fetch.what"></a>17.5.1. What to fetch and where to get it from</h3></div></div></div> |
6430 | <p>In simple cases, <code class="varname">MASTER_SITES</code> | | 6442 | <p>In simple cases, <code class="varname">MASTER_SITES</code> |
6431 | defines all URLs from where the distfile, whose name is | | 6443 | defines all URLs from where the distfile, whose name is |
6432 | derived from the <code class="varname">DISTNAME</code> variable, is | | 6444 | derived from the <code class="varname">DISTNAME</code> variable, is |
6433 | fetched. The more complicated cases are described | | 6445 | fetched. The more complicated cases are described |
6434 | below.</p> | | 6446 | below.</p> |
6435 | <p>The variable <code class="varname">DISTFILES</code> specifies | | 6447 | <p>The variable <code class="varname">DISTFILES</code> specifies |
6436 | the list of distfiles that have to be fetched. Its value | | 6448 | the list of distfiles that have to be fetched. Its value |
6437 | defaults to <code class="literal">${DEFAULT_DISTFILES}</code> and | | 6449 | defaults to <code class="literal">${DEFAULT_DISTFILES}</code> and |
6438 | its value is <code class="literal">${DISTNAME}${EXTRACT_SUFX}</code>, | | 6450 | its value is <code class="literal">${DISTNAME}${EXTRACT_SUFX}</code>, |
6439 | so that most packages don't need to define it at all. | | 6451 | so that most packages don't need to define it at all. |
6440 | <code class="varname">EXTRACT_SUFX</code> is | | 6452 | <code class="varname">EXTRACT_SUFX</code> is |
6441 | <code class="literal">.tar.gz</code> by default, but can be changed | | 6453 | <code class="literal">.tar.gz</code> by default, but can be changed |
6442 | freely. Note that if your package requires additional | | 6454 | freely. Note that if your package requires additional |
6443 | distfiles to the default one, you cannot just append the | | 6455 | distfiles to the default one, you cannot just append the |
6444 | additional filenames using the <code class="literal">+=</code> | | 6456 | additional filenames using the <code class="literal">+=</code> |
6445 | operator, but you have write for example:</p> | | 6457 | operator, but you have write for example:</p> |
6446 | <pre class="programlisting"> | | 6458 | <pre class="programlisting"> |
6447 | DISTFILES= ${DEFAULT_DISTFILES} additional-files.tar.gz | | 6459 | DISTFILES= ${DEFAULT_DISTFILES} additional-files.tar.gz |
6448 | </pre> | | 6460 | </pre> |
6449 | <p>Each distfile is fetched from a list of sites, usually | | 6461 | <p>Each distfile is fetched from a list of sites, usually |
6450 | <code class="varname">MASTER_SITES</code>. If the package has multiple | | 6462 | <code class="varname">MASTER_SITES</code>. If the package has multiple |
6451 | <code class="varname">DISTFILES</code> or multiple | | 6463 | <code class="varname">DISTFILES</code> or multiple |
6452 | <code class="varname">PATCHFILES</code> from different sites, you can | | 6464 | <code class="varname">PATCHFILES</code> from different sites, you can |
6453 | set | | 6465 | set |
6454 | <code class="varname">SITES.<em class="replaceable"><code>distfile</code></em></code> | | 6466 | <code class="varname">SITES.<em class="replaceable"><code>distfile</code></em></code> |
6455 | to the list of URLs where the file | | 6467 | to the list of URLs where the file |
6456 | <code class="filename"><em class="replaceable"><code>distfile</code></em></code> | | 6468 | <code class="filename"><em class="replaceable"><code>distfile</code></em></code> |
6457 | (including the suffix) can be found.</p> | | 6469 | (including the suffix) can be found.</p> |
6458 | <pre class="programlisting"> | | 6470 | <pre class="programlisting"> |
6459 | DISTFILES= ${DISTNAME}${EXTRACT_SUFX} | | 6471 | DISTFILES= ${DISTNAME}${EXTRACT_SUFX} |
6460 | DISTFILES+= foo-file.tar.gz | | 6472 | DISTFILES+= foo-file.tar.gz |
6461 | SITES.foo-file.tar.gz= \ | | 6473 | SITES.foo-file.tar.gz= \ |
6462 | http://www.somewhere.com/somehow/ \ | | 6474 | http://www.somewhere.com/somehow/ \ |
6463 | http://www.somewhereelse.com/mirror/somehow/ | | 6475 | http://www.somewhereelse.com/mirror/somehow/ |
6464 | </pre> | | 6476 | </pre> |
6465 | <p>When actually fetching the distfiles, each item from | | 6477 | <p>When actually fetching the distfiles, each item from |
6466 | <code class="varname">MASTER_SITES</code> or | | 6478 | <code class="varname">MASTER_SITES</code> or |
6467 | <code class="varname">SITES.*</code> gets the name of each distfile | | 6479 | <code class="varname">SITES.*</code> gets the name of each distfile |
6468 | appended to it, without an intermediate slash. Therefore, | | 6480 | appended to it, without an intermediate slash. Therefore, |
6469 | all site values have to end with a slash or other separator | | 6481 | all site values have to end with a slash or other separator |
6470 | character. This allows for example to set | | 6482 | character. This allows for example to set |
6471 | <code class="varname">MASTER_SITES</code> to a URL of a CGI script | | 6483 | <code class="varname">MASTER_SITES</code> to a URL of a CGI script |
6472 | that gets the name of the distfile as a parameter. In this | | 6484 | that gets the name of the distfile as a parameter. In this |
6473 | case, the definition would look like:</p> | | 6485 | case, the definition would look like:</p> |
6474 | <pre class="programlisting"> | | 6486 | <pre class="programlisting"> |
6475 | MASTER_SITES= http://www.example.com/download.cgi?file= | | 6487 | MASTER_SITES= http://www.example.com/download.cgi?file= |
6476 | </pre> | | 6488 | </pre> |
6477 | <p> The exception to this rule are URLs starting with a dash. | | 6489 | <p> The exception to this rule are URLs starting with a dash. |
6478 | In that case the URL is taken as is, fetched and the result | | 6490 | In that case the URL is taken as is, fetched and the result |
6479 | stored under the name of the distfile. You can use this style | | 6491 | stored under the name of the distfile. You can use this style |
6480 | for the case when the download URL style does not match the | | 6492 | for the case when the download URL style does not match the |
6481 | above common case. For example, if permanent download URL is a | | 6493 | above common case. For example, if permanent download URL is a |
6482 | redirector to the real download URL, or the download file name | | 6494 | redirector to the real download URL, or the download file name |
6483 | is offered by an HTTP Content-Disposition header. In the | | 6495 | is offered by an HTTP Content-Disposition header. In the |
6484 | following example, <code class="filename">foo-1.0.0.tar.gz</code> will be | | 6496 | following example, <code class="filename">foo-1.0.0.tar.gz</code> will be |
6485 | created instead of the default | | 6497 | created instead of the default |
6486 | <code class="filename">v1.0.0.tar.gz</code>.</p> | | 6498 | <code class="filename">v1.0.0.tar.gz</code>.</p> |
6487 | <pre class="programlisting"> | | 6499 | <pre class="programlisting"> |
6488 | DISTNAME= foo-1.0.0 | | 6500 | DISTNAME= foo-1.0.0 |
6489 | MASTER_SITES= -http://www.example.com/archive/v1.0.0.tar.gz | | 6501 | MASTER_SITES= -http://www.example.com/archive/v1.0.0.tar.gz |
6490 | </pre> | | 6502 | </pre> |
6491 | <p>There are some predefined values for | | 6503 | <p>There are some predefined values for |
6492 | <code class="varname">MASTER_SITES</code>, which can be used in | | 6504 | <code class="varname">MASTER_SITES</code>, which can be used in |
6493 | packages. The names of the variables should speak for | | 6505 | packages. The names of the variables should speak for |
6494 | themselves.</p> | | 6506 | themselves.</p> |
6495 | <pre class="programlisting"> | | 6507 | <pre class="programlisting"> |
6496 | ${MASTER_SITE_APACHE} | | 6508 | ${MASTER_SITE_APACHE} |
6497 | ${MASTER_SITE_BACKUP} | | 6509 | ${MASTER_SITE_BACKUP} |
6498 | ${MASTER_SITE_CYGWIN} | | 6510 | ${MASTER_SITE_CYGWIN} |
6499 | ${MASTER_SITE_DEBIAN} | | 6511 | ${MASTER_SITE_DEBIAN} |
6500 | ${MASTER_SITE_FREEBSD} | | 6512 | ${MASTER_SITE_FREEBSD} |
6501 | ${MASTER_SITE_FREEBSD_LOCAL} | | 6513 | ${MASTER_SITE_FREEBSD_LOCAL} |
6502 | ${MASTER_SITE_GENTOO} | | 6514 | ${MASTER_SITE_GENTOO} |
6503 | ${MASTER_SITE_GNOME} | | 6515 | ${MASTER_SITE_GNOME} |
6504 | ${MASTER_SITE_GNU} | | 6516 | ${MASTER_SITE_GNU} |
6505 | ${MASTER_SITE_GNUSTEP} | | 6517 | ${MASTER_SITE_GNUSTEP} |
6506 | ${MASTER_SITE_HASKELL_HACKAGE} | | 6518 | ${MASTER_SITE_HASKELL_HACKAGE} |
6507 | ${MASTER_SITE_IFARCHIVE} | | 6519 | ${MASTER_SITE_IFARCHIVE} |
6508 | ${MASTER_SITE_KDE} | | 6520 | ${MASTER_SITE_KDE} |
6509 | ${MASTER_SITE_MOZILLA} | | 6521 | ${MASTER_SITE_MOZILLA} |
6510 | ${MASTER_SITE_MOZILLA_ALL} | | 6522 | ${MASTER_SITE_MOZILLA_ALL} |
6511 | ${MASTER_SITE_MOZILLA_ESR} | | 6523 | ${MASTER_SITE_MOZILLA_ESR} |
6512 | ${MASTER_SITE_MYSQL} | | 6524 | ${MASTER_SITE_MYSQL} |
6513 | ${MASTER_SITE_NETLIB} | | 6525 | ${MASTER_SITE_NETLIB} |
6514 | ${MASTER_SITE_OPENOFFICE} | | 6526 | ${MASTER_SITE_OPENOFFICE} |
6515 | ${MASTER_SITE_PERL_CPAN} | | 6527 | ${MASTER_SITE_PERL_CPAN} |
6516 | ${MASTER_SITE_PGSQL} | | 6528 | ${MASTER_SITE_PGSQL} |
6517 | ${MASTER_SITE_RUBYGEMS} | | 6529 | ${MASTER_SITE_RUBYGEMS} |
6518 | ${MASTER_SITE_R_CRAN} | | 6530 | ${MASTER_SITE_R_CRAN} |
6519 | ${MASTER_SITE_SOURCEFORGE} | | 6531 | ${MASTER_SITE_SOURCEFORGE} |
6520 | ${MASTER_SITE_SOURCEFORGE_JP} | | 6532 | ${MASTER_SITE_SOURCEFORGE_JP} |
6521 | ${MASTER_SITE_SUNSITE} | | 6533 | ${MASTER_SITE_SUNSITE} |
6522 | ${MASTER_SITE_SUSE} | | 6534 | ${MASTER_SITE_SUSE} |
6523 | ${MASTER_SITE_TEX_CTAN} | | 6535 | ${MASTER_SITE_TEX_CTAN} |
6524 | ${MASTER_SITE_XCONTRIB} | | 6536 | ${MASTER_SITE_XCONTRIB} |
6525 | ${MASTER_SITE_XEMACS} | | 6537 | ${MASTER_SITE_XEMACS} |
6526 | ${MASTER_SITE_XORG} | | 6538 | ${MASTER_SITE_XORG} |
6527 | </pre> | | 6539 | </pre> |
6528 | <p>Some explanations for the less self-explaining ones: | | 6540 | <p>Some explanations for the less self-explaining ones: |
6529 | <code class="varname">MASTER_SITE_BACKUP</code> contains backup sites | | 6541 | <code class="varname">MASTER_SITE_BACKUP</code> contains backup sites |
6530 | for packages that are maintained in <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/%24%7BDIST_SUBDIR%7D" target="_top">ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/${DIST_SUBDIR}</a>. <code class="varname">MASTER_SITE_LOCAL</code> contains local | | 6542 | for packages that are maintained in <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/%24%7BDIST_SUBDIR%7D" target="_top">ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/${DIST_SUBDIR}</a>. <code class="varname">MASTER_SITE_LOCAL</code> contains local |
6531 | package source distributions that are maintained in <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/LOCAL_PORTS/" target="_top">ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/LOCAL_PORTS/</a>.</p> | | 6543 | package source distributions that are maintained in <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/LOCAL_PORTS/" target="_top">ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/LOCAL_PORTS/</a>.</p> |
6532 | <p>If you choose one of these predefined sites, you may | | 6544 | <p>If you choose one of these predefined sites, you may |
6533 | want to specify a subdirectory of that site. Since these | | 6545 | want to specify a subdirectory of that site. Since these |
6534 | macros may expand to more than one actual site, you | | 6546 | macros may expand to more than one actual site, you |
6535 | <span class="emphasis"><em>must</em></span> use the following construct to | | 6547 | <span class="emphasis"><em>must</em></span> use the following construct to |
6536 | specify a subdirectory:</p> | | 6548 | specify a subdirectory:</p> |
6537 | <pre class="programlisting"> | | 6549 | <pre class="programlisting"> |
6538 | MASTER_SITES= ${MASTER_SITE_GNU:=subdirectory/name/} | | 6550 | MASTER_SITES= ${MASTER_SITE_GNU:=subdirectory/name/} |
6539 | MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=project_name/} | | 6551 | MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=project_name/} |
6540 | </pre> | | 6552 | </pre> |
6541 | <p>Note the trailing slash after the subdirectory | | 6553 | <p>Note the trailing slash after the subdirectory |
6542 | name.</p> | | 6554 | name.</p> |
6543 | </div> | | 6555 | </div> |
6544 | <div class="sect2"> | | 6556 | <div class="sect2"> |
6545 | <div class="titlepage"><div><div><h3 class="title"> | | 6557 | <div class="titlepage"><div><div><h3 class="title"> |
6546 | <a name="build.fetch.how"></a>17.5.2. How are the files fetched?</h3></div></div></div> | | 6558 | <a name="build.fetch.how"></a>17.5.2. How are the files fetched?</h3></div></div></div> |
6547 | <p>The <span class="emphasis"><em>fetch</em></span> phase makes sure that | | 6559 | <p>The <span class="emphasis"><em>fetch</em></span> phase makes sure that |
6548 | all the distfiles exist in a local directory | | 6560 | all the distfiles exist in a local directory |
6549 | (<code class="varname">DISTDIR</code>, which can be set by the pkgsrc | | 6561 | (<code class="varname">DISTDIR</code>, which can be set by the pkgsrc |
6550 | user). If the files do not exist, they are fetched using | | 6562 | user). If the files do not exist, they are fetched using |
6551 | commands of the form</p> | | 6563 | commands of the form</p> |
6552 | <pre class="programlisting"> | | 6564 | <pre class="programlisting"> |
6553 | ${FETCH_CMD} ${FETCH_BEFORE_ARGS} ${site}${file} ${FETCH_AFTER_ARGS} | | 6565 | ${FETCH_CMD} ${FETCH_BEFORE_ARGS} ${site}${file} ${FETCH_AFTER_ARGS} |
6554 | </pre> | | 6566 | </pre> |
6555 | <p>where <code class="literal">${site}</code> varies through | | 6567 | <p>where <code class="literal">${site}</code> varies through |
6556 | several possibilities in turn: first, | | 6568 | several possibilities in turn: first, |
6557 | <code class="varname">MASTER_SITE_OVERRIDE</code> is tried, then the | | 6569 | <code class="varname">MASTER_SITE_OVERRIDE</code> is tried, then the |
6558 | sites specified in either <code class="varname">SITES.file</code> if | | 6570 | sites specified in either <code class="varname">SITES.file</code> if |
6559 | defined, else <code class="varname">MASTER_SITES</code> or | | 6571 | defined, else <code class="varname">MASTER_SITES</code> or |
6560 | <code class="varname">PATCH_SITES</code>, as applies, then finally the | | 6572 | <code class="varname">PATCH_SITES</code>, as applies, then finally the |
6561 | value of <code class="varname">MASTER_SITE_BACKUP</code>. The order of | | 6573 | value of <code class="varname">MASTER_SITE_BACKUP</code>. The order of |
6562 | all except the first and the last can be optionally sorted | | 6574 | all except the first and the last can be optionally sorted |
6563 | by the user, via setting either | | 6575 | by the user, via setting either |
6564 | <code class="varname">MASTER_SORT_RANDOM</code>, and | | 6576 | <code class="varname">MASTER_SORT_RANDOM</code>, and |
6565 | <code class="varname">MASTER_SORT_AWK</code> or | | 6577 | <code class="varname">MASTER_SORT_AWK</code> or |
6566 | <code class="varname">MASTER_SORT_REGEX</code>.</p> | | 6578 | <code class="varname">MASTER_SORT_REGEX</code>.</p> |
6567 | <p> The specific command and arguments used depend on the | | 6579 | <p> The specific command and arguments used depend on the |
6568 | <code class="varname">FETCH_USING</code> parameter. The example above is | | 6580 | <code class="varname">FETCH_USING</code> parameter. The example above is |
6569 | for <code class="literal">FETCH_USING=custom</code>.</p> | | 6581 | for <code class="literal">FETCH_USING=custom</code>.</p> |
6570 | <p>The distfiles mirror run by the NetBSD Foundation uses the | | 6582 | <p>The distfiles mirror run by the NetBSD Foundation uses the |
6571 | <span class="emphasis"><em>mirror-distfiles</em></span> target to mirror the | | 6583 | <span class="emphasis"><em>mirror-distfiles</em></span> target to mirror the |
6572 | distfiles, if they are freely distributable. Packages setting | | 6584 | distfiles, if they are freely distributable. Packages setting |
6573 | <code class="varname">NO_SRC_ON_FTP</code> (usually to | | 6585 | <code class="varname">NO_SRC_ON_FTP</code> (usually to |
6574 | <span class="quote">“<span class="quote">${RESTRICTED}</span>”</span>) will not have their distfiles | | 6586 | <span class="quote">“<span class="quote">${RESTRICTED}</span>”</span>) will not have their distfiles |
6575 | mirrored.</p> | | 6587 | mirrored.</p> |
6576 | </div> | | 6588 | </div> |
6577 | </div> | | 6589 | </div> |
6578 | <div class="sect1"> | | 6590 | <div class="sect1"> |
6579 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6591 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6580 | <a name="build.checksum"></a>17.6. The <span class="emphasis"><em>checksum</em></span> phase</h2></div></div></div> | | 6592 | <a name="build.checksum"></a>17.6. The <span class="emphasis"><em>checksum</em></span> phase</h2></div></div></div> |
6581 | <p>After the distfile(s) are fetched, their checksum is | | 6593 | <p>After the distfile(s) are fetched, their checksum is |
6582 | generated and compared with the checksums stored in the | | 6594 | generated and compared with the checksums stored in the |
6583 | distinfo file. If the checksums don't match, the build is | | 6595 | distinfo file. If the checksums don't match, the build is |
6584 | aborted. This is to ensure the same distfile is used for | | 6596 | aborted. This is to ensure the same distfile is used for |
6585 | building, and that the distfile wasn't changed, e.g. by some | | 6597 | building, and that the distfile wasn't changed, e.g. by some |
6586 | malign force, deliberately changed distfiles on the master | | 6598 | malign force, deliberately changed distfiles on the master |
6587 | distribution site or network lossage.</p> | | 6599 | distribution site or network lossage.</p> |
6588 | </div> | | 6600 | </div> |
6589 | <div class="sect1"> | | 6601 | <div class="sect1"> |
6590 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6602 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6591 | <a name="build.extract"></a>17.7. The <span class="emphasis"><em>extract</em></span> phase</h2></div></div></div> | | 6603 | <a name="build.extract"></a>17.7. The <span class="emphasis"><em>extract</em></span> phase</h2></div></div></div> |
6592 | <p>When the distfiles are present on the local system, they | | 6604 | <p>When the distfiles are present on the local system, they |
6593 | need to be extracted, as they usually come in the form of some | | 6605 | need to be extracted, as they usually come in the form of some |
6594 | compressed archive format.</p> | | 6606 | compressed archive format.</p> |
6595 | <p>By default, all <code class="varname">DISTFILES</code> are | | 6607 | <p>By default, all <code class="varname">DISTFILES</code> are |
6596 | extracted. If you only need some of them, you can set the | | 6608 | extracted. If you only need some of them, you can set the |
6597 | <code class="varname">EXTRACT_ONLY</code> variable to the list of those | | 6609 | <code class="varname">EXTRACT_ONLY</code> variable to the list of those |
6598 | files.</p> | | 6610 | files.</p> |
6599 | <p>Extracting the files is usually done by a little | | 6611 | <p>Extracting the files is usually done by a little |
6600 | program, <code class="filename">mk/extract/extract</code>, which | | 6612 | program, <code class="filename">mk/extract/extract</code>, which |
6601 | already knows how to extract various archive formats, so most | | 6613 | already knows how to extract various archive formats, so most |
6602 | likely you will not need to change anything here. But if you | | 6614 | likely you will not need to change anything here. But if you |
6603 | need, the following variables may help you:</p> | | 6615 | need, the following variables may help you:</p> |
6604 | <div class="variablelist"><dl class="variablelist"> | | 6616 | <div class="variablelist"><dl class="variablelist"> |
6605 | <dt><span class="term"><code class="varname">EXTRACT_OPTS_{BIN,LHA,PAX,RAR,TAR,ZIP,ZOO}</code></span></dt> | | 6617 | <dt><span class="term"><code class="varname">EXTRACT_OPTS_{BIN,LHA,PAX,RAR,TAR,ZIP,ZOO}</code></span></dt> |
6606 | <dd><p>Use these variables to override the default | | 6618 | <dd><p>Use these variables to override the default |
6607 | options for an extract command, which are defined in | | 6619 | options for an extract command, which are defined in |
6608 | <code class="filename">mk/extract/extract</code>.</p></dd> | | 6620 | <code class="filename">mk/extract/extract</code>.</p></dd> |
6609 | <dt><span class="term"><code class="varname">EXTRACT_USING</code></span></dt> | | 6621 | <dt><span class="term"><code class="varname">EXTRACT_USING</code></span></dt> |
6610 | <dd><p>This variable can be set to | | 6622 | <dd><p>This variable can be set to |
6611 | <code class="literal">bsdtar</code>, <code class="literal">gtar</code>, <code class="literal">nbtar</code> | | 6623 | <code class="literal">bsdtar</code>, <code class="literal">gtar</code>, <code class="literal">nbtar</code> |
6612 | (which is the default value), <code class="literal">pax</code>, or an | | 6624 | (which is the default value), <code class="literal">pax</code>, or an |
6613 | absolute pathname pointing to the command with which tar | | 6625 | absolute pathname pointing to the command with which tar |
6614 | archives should be extracted. It is preferred to choose bsdtar over gtar | | 6626 | archives should be extracted. It is preferred to choose bsdtar over gtar |
6615 | if NetBSD's pax-as-tar is not good enough.</p></dd> | | 6627 | if NetBSD's pax-as-tar is not good enough.</p></dd> |
6616 | </dl></div> | | 6628 | </dl></div> |
6617 | <p>If the <code class="filename">extract</code> program doesn't | | 6629 | <p>If the <code class="filename">extract</code> program doesn't |
6618 | serve your needs, you can also override the | | 6630 | serve your needs, you can also override the |
6619 | <code class="varname">EXTRACT_CMD</code> variable, which holds the | | 6631 | <code class="varname">EXTRACT_CMD</code> variable, which holds the |
6620 | command used for extracting the files. This command is | | 6632 | command used for extracting the files. This command is |
6621 | executed in the <code class="filename">${WRKSRC}</code> | | 6633 | executed in the <code class="filename">${WRKSRC}</code> |
6622 | directory. During execution of this command, the shell | | 6634 | directory. During execution of this command, the shell |
6623 | variable <code class="varname">extract_file</code> holds the absolute | | 6635 | variable <code class="varname">extract_file</code> holds the absolute |
6624 | pathname of the file that is going to be extracted.</p> | | 6636 | pathname of the file that is going to be extracted.</p> |
6625 | <p>And if that still does not suffice, you can override the | | 6637 | <p>And if that still does not suffice, you can override the |
6626 | <code class="varname">do-extract</code> target in the package | | 6638 | <code class="varname">do-extract</code> target in the package |
6627 | Makefile.</p> | | 6639 | Makefile.</p> |
6628 | </div> | | 6640 | </div> |
6629 | <div class="sect1"> | | 6641 | <div class="sect1"> |
6630 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6642 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6631 | <a name="build.patch"></a>17.8. The <span class="emphasis"><em>patch</em></span> phase</h2></div></div></div> | | 6643 | <a name="build.patch"></a>17.8. The <span class="emphasis"><em>patch</em></span> phase</h2></div></div></div> |
6632 | <p>After extraction, all the patches named by the | | 6644 | <p>After extraction, all the patches named by the |
6633 | <code class="varname">PATCHFILES</code>, those present in the patches | | 6645 | <code class="varname">PATCHFILES</code>, those present in the patches |
6634 | subdirectory of the package as well as in | | 6646 | subdirectory of the package as well as in |
6635 | $LOCALPATCHES/$PKGPATH (e.g. | | 6647 | $LOCALPATCHES/$PKGPATH (e.g. |
6636 | <code class="filename">/usr/local/patches/graphics/png</code>) are | | 6648 | <code class="filename">/usr/local/patches/graphics/png</code>) are |
6637 | applied. Patchfiles ending in <code class="filename">.Z</code> or | | 6649 | applied. Patchfiles ending in <code class="filename">.Z</code> or |
6638 | <code class="filename">.gz</code> are uncompressed before they are | | 6650 | <code class="filename">.gz</code> are uncompressed before they are |
6639 | applied, files ending in <code class="filename">.orig</code> or | | 6651 | applied, files ending in <code class="filename">.orig</code> or |
6640 | <code class="filename">.rej</code> are ignored. Any special options to | | 6652 | <code class="filename">.rej</code> are ignored. Any special options to |
6641 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?patch+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">patch</span>(1)</span></a> can be handed in | | 6653 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?patch+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">patch</span>(1)</span></a> can be handed in |
6642 | <code class="varname">PATCH_DIST_ARGS</code>. See <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “patches/*”</a> for more details.</p> | | 6654 | <code class="varname">PATCH_DIST_ARGS</code>. See <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “patches/*”</a> for more details.</p> |
6643 | <p>By default <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?patch+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">patch</span>(1)</span></a> is given special args to make | | 6655 | <p>By default <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?patch+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">patch</span>(1)</span></a> is given special args to make |
6644 | it fail if the patches apply with some lines of fuzz. Please | | 6656 | it fail if the patches apply with some lines of fuzz. Please |
6645 | fix (regen) the patches so that they apply cleanly. The | | 6657 | fix (regen) the patches so that they apply cleanly. The |
6646 | rationale behind this is that patches that don't apply cleanly | | 6658 | rationale behind this is that patches that don't apply cleanly |
6647 | may end up being applied in the wrong place, and cause severe | | 6659 | may end up being applied in the wrong place, and cause severe |
6648 | harm there.</p> | | 6660 | harm there.</p> |
6649 | </div> | | 6661 | </div> |
6650 | <div class="sect1"> | | 6662 | <div class="sect1"> |
6651 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6663 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6652 | <a name="build.tools"></a>17.9. The <span class="emphasis"><em>tools</em></span> phase</h2></div></div></div> | | 6664 | <a name="build.tools"></a>17.9. The <span class="emphasis"><em>tools</em></span> phase</h2></div></div></div> |
6653 | <p>This is covered in <a class="xref" href="#tools" title="Chapter 18. Tools needed for building or running">Chapter 18, <i>Tools needed for building or running</i></a>. | | 6665 | <p>This is covered in <a class="xref" href="#tools" title="Chapter 18. Tools needed for building or running">Chapter 18, <i>Tools needed for building or running</i></a>. |
6654 | </p> | | 6666 | </p> |
6655 | </div> | | 6667 | </div> |
6656 | <div class="sect1"> | | 6668 | <div class="sect1"> |
6657 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6669 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6658 | <a name="build.wrapper"></a>17.10. The <span class="emphasis"><em>wrapper</em></span> phase</h2></div></div></div> | | 6670 | <a name="build.wrapper"></a>17.10. The <span class="emphasis"><em>wrapper</em></span> phase</h2></div></div></div> |
6659 | <p>This phase creates wrapper programs for the compilers and | | 6671 | <p>This phase creates wrapper programs for the compilers and |
6660 | linkers. The following variables can be used to tweak the | | 6672 | linkers. The following variables can be used to tweak the |
6661 | wrappers.</p> | | 6673 | wrappers.</p> |
6662 | <div class="variablelist"><dl class="variablelist"> | | 6674 | <div class="variablelist"><dl class="variablelist"> |
6663 | <dt><span class="term"><code class="varname">ECHO_WRAPPER_MSG</code></span></dt> | | 6675 | <dt><span class="term"><code class="varname">ECHO_WRAPPER_MSG</code></span></dt> |
6664 | <dd><p>The command used to print progress | | 6676 | <dd><p>The command used to print progress |
6665 | messages. Does nothing by default. Set to | | 6677 | messages. Does nothing by default. Set to |
6666 | <code class="literal">${ECHO}</code> to see the progress | | 6678 | <code class="literal">${ECHO}</code> to see the progress |
6667 | messages.</p></dd> | | 6679 | messages.</p></dd> |
6668 | <dt><span class="term"><code class="varname">WRAPPER_DEBUG</code></span></dt> | | 6680 | <dt><span class="term"><code class="varname">WRAPPER_DEBUG</code></span></dt> |
6669 | <dd><p>This variable can be set to | | 6681 | <dd><p>This variable can be set to |
6670 | <code class="literal">yes</code> (default) or <code class="literal">no</code>, | | 6682 | <code class="literal">yes</code> (default) or <code class="literal">no</code>, |
6671 | depending on whether you want additional information in the | | 6683 | depending on whether you want additional information in the |
6672 | wrapper log file.</p></dd> | | 6684 | wrapper log file.</p></dd> |
6673 | <dt><span class="term"><code class="varname">WRAPPER_UPDATE_CACHE</code></span></dt> | | 6685 | <dt><span class="term"><code class="varname">WRAPPER_UPDATE_CACHE</code></span></dt> |
6674 | <dd><p>This variable can be set to | | 6686 | <dd><p>This variable can be set to |
6675 | <code class="literal">yes</code> or <code class="literal">no</code>, depending | | 6687 | <code class="literal">yes</code> or <code class="literal">no</code>, depending |
6676 | on whether the wrapper should use its cache, which will | | 6688 | on whether the wrapper should use its cache, which will |
6677 | improve the speed. The default value is | | 6689 | improve the speed. The default value is |
6678 | <code class="literal">yes</code>, but is forced to | | 6690 | <code class="literal">yes</code>, but is forced to |
6679 | <code class="literal">no</code> if the platform does not support | | 6691 | <code class="literal">no</code> if the platform does not support |
6680 | it.</p></dd> | | 6692 | it.</p></dd> |
6681 | <dt><span class="term"><code class="varname">WRAPPER_REORDER_CMDS</code></span></dt> | | 6693 | <dt><span class="term"><code class="varname">WRAPPER_REORDER_CMDS</code></span></dt> |
6682 | <dd><p>A list of reordering commands. A reordering | | 6694 | <dd><p>A list of reordering commands. A reordering |
6683 | command has the form | | 6695 | command has the form |
6684 | <code class="literal">reorder:l:<em class="replaceable"><code>lib1</code></em>:<em class="replaceable"><code>lib2</code></em></code>. | | 6696 | <code class="literal">reorder:l:<em class="replaceable"><code>lib1</code></em>:<em class="replaceable"><code>lib2</code></em></code>. |
6685 | It ensures that that | | 6697 | It ensures that that |
6686 | <code class="literal">-l<em class="replaceable"><code>lib1</code></em></code> occurs | | 6698 | <code class="literal">-l<em class="replaceable"><code>lib1</code></em></code> occurs |
6687 | before <code class="literal">-l<em class="replaceable"><code>lib2</code></em></code>. | | 6699 | before <code class="literal">-l<em class="replaceable"><code>lib2</code></em></code>. |
6688 | </p></dd> | | 6700 | </p></dd> |
6689 | <dt><span class="term"><code class="varname">WRAPPER_TRANSFORM_CMDS</code></span></dt> | | 6701 | <dt><span class="term"><code class="varname">WRAPPER_TRANSFORM_CMDS</code></span></dt> |
6690 | <dd><p>A list of transformation commands. [TODO: | | 6702 | <dd><p>A list of transformation commands. [TODO: |
6691 | investigate further]</p></dd> | | 6703 | investigate further]</p></dd> |
6692 | </dl></div> | | 6704 | </dl></div> |
6693 | </div> | | 6705 | </div> |
6694 | <div class="sect1"> | | 6706 | <div class="sect1"> |
6695 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6707 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6696 | <a name="build.configure"></a>17.11. The <span class="emphasis"><em>configure</em></span> phase</h2></div></div></div> | | 6708 | <a name="build.configure"></a>17.11. The <span class="emphasis"><em>configure</em></span> phase</h2></div></div></div> |
6697 | <p>Most pieces of software need information on the header | | 6709 | <p>Most pieces of software need information on the header |
6698 | files, system calls, and library routines which are available | | 6710 | files, system calls, and library routines which are available |
6699 | on the platform they run on. The process of determining this | | 6711 | on the platform they run on. The process of determining this |
6700 | information is known as configuration, and is usually | | 6712 | information is known as configuration, and is usually |
6701 | automated. In most cases, a script is supplied with the | | 6713 | automated. In most cases, a script is supplied with the |
6702 | distfiles, and its invocation results in generation of header | | 6714 | distfiles, and its invocation results in generation of header |
6703 | files, Makefiles, etc.</p> | | 6715 | files, Makefiles, etc.</p> |
6704 | <p>If the package contains a configure script, this can be | | 6716 | <p>If the package contains a configure script, this can be |
6705 | invoked by setting <code class="varname">HAS_CONFIGURE</code> to | | 6717 | invoked by setting <code class="varname">HAS_CONFIGURE</code> to |
6706 | <span class="quote">“<span class="quote">yes</span>”</span>. If the configure script is a GNU autoconf | | 6718 | <span class="quote">“<span class="quote">yes</span>”</span>. If the configure script is a GNU autoconf |
6707 | script, you should set <code class="varname">GNU_CONFIGURE</code> to | | 6719 | script, you should set <code class="varname">GNU_CONFIGURE</code> to |
6708 | <span class="quote">“<span class="quote">yes</span>”</span> instead. What happens in the | | 6720 | <span class="quote">“<span class="quote">yes</span>”</span> instead. What happens in the |
6709 | <span class="emphasis"><em>configure</em></span> phase is roughly:</p> | | 6721 | <span class="emphasis"><em>configure</em></span> phase is roughly:</p> |
6710 | <pre class="programlisting"> | | 6722 | <pre class="programlisting"> |
6711 | .for d in ${CONFIGURE_DIRS} | | 6723 | .for d in ${CONFIGURE_DIRS} |
6712 | cd ${WRKSRC} \ | | 6724 | cd ${WRKSRC} \ |
6713 | && cd ${d} \ | | 6725 | && cd ${d} \ |
6714 | && env ${CONFIGURE_ENV} ${CONFIGURE_SCRIPT} ${CONFIGURE_ARGS} | | 6726 | && env ${CONFIGURE_ENV} ${CONFIGURE_SCRIPT} ${CONFIGURE_ARGS} |
6715 | .endfor | | 6727 | .endfor |
6716 | </pre> | | 6728 | </pre> |
6717 | <p><code class="varname">CONFIGURE_DIRS</code> (default: | | 6729 | <p><code class="varname">CONFIGURE_DIRS</code> (default: |
6718 | <span class="quote">“<span class="quote">.</span>”</span>) is a list of pathnames relative to | | 6730 | <span class="quote">“<span class="quote">.</span>”</span>) is a list of pathnames relative to |
6719 | <code class="varname">WRKSRC</code>. In each of these directories, the | | 6731 | <code class="varname">WRKSRC</code>. In each of these directories, the |
6720 | configure script is run with the environment | | 6732 | configure script is run with the environment |
6721 | <code class="varname">CONFIGURE_ENV</code> and arguments | | 6733 | <code class="varname">CONFIGURE_ENV</code> and arguments |
6722 | <code class="varname">CONFIGURE_ARGS</code>. The variables | | 6734 | <code class="varname">CONFIGURE_ARGS</code>. The variables |
6723 | <code class="varname">CONFIGURE_ENV</code>, | | 6735 | <code class="varname">CONFIGURE_ENV</code>, |
6724 | <code class="varname">CONFIGURE_SCRIPT</code> (default: | | 6736 | <code class="varname">CONFIGURE_SCRIPT</code> (default: |
6725 | <span class="quote">“<span class="quote">./configure</span>”</span>) and | | 6737 | <span class="quote">“<span class="quote">./configure</span>”</span>) and |
6726 | <code class="varname">CONFIGURE_ARGS</code> may all be changed by the | | 6738 | <code class="varname">CONFIGURE_ARGS</code> may all be changed by the |
6727 | package.</p> | | 6739 | package.</p> |
6728 | <p>If the program uses the Perl way of configuration (mainly Perl | | 6740 | <p>If the program uses the Perl way of configuration (mainly Perl |
6729 | modules, but not only), i.e. a file called | | 6741 | modules, but not only), i.e. a file called |
6730 | <code class="filename">Makefile.PL</code>, it should include | | 6742 | <code class="filename">Makefile.PL</code>, it should include |
6731 | <code class="filename">../../lang/perl5/module.mk</code>. To set any parameter for | | 6743 | <code class="filename">../../lang/perl5/module.mk</code>. To set any parameter for |
6732 | <code class="filename">Makefile.PL</code> use the <code class="varname">MAKE_PARAMS</code> | | 6744 | <code class="filename">Makefile.PL</code> use the <code class="varname">MAKE_PARAMS</code> |
6733 | variable (e.g., <code class="literal">MAKE_PARAMS+=foo=bar</code></p> | | 6745 | variable (e.g., <code class="literal">MAKE_PARAMS+=foo=bar</code></p> |
6734 | <p>If the program uses an <code class="filename">Imakefile</code> | | 6746 | <p>If the program uses an <code class="filename">Imakefile</code> |
6735 | for configuration, the appropriate steps can be invoked by | | 6747 | for configuration, the appropriate steps can be invoked by |
6736 | setting <code class="varname">USE_IMAKE</code> to | | 6748 | setting <code class="varname">USE_IMAKE</code> to |
6737 | <span class="quote">“<span class="quote">yes</span>”</span>. (If you only want the package installed in | | 6749 | <span class="quote">“<span class="quote">yes</span>”</span>. (If you only want the package installed in |
6738 | <code class="varname">${X11PREFIX}</code> but xmkmf not being run, set | | 6750 | <code class="varname">${X11PREFIX}</code> but xmkmf not being run, set |
6739 | <code class="varname">USE_X11BASE</code> instead.) You can add variables to | | 6751 | <code class="varname">USE_X11BASE</code> instead.) You can add variables to |
6740 | xmkmf's environment by adding them to the | | 6752 | xmkmf's environment by adding them to the |
6741 | <code class="varname">SCRIPTS_ENV</code> variable.</p> | | 6753 | <code class="varname">SCRIPTS_ENV</code> variable.</p> |
6742 | <p>If the program uses <code class="filename">cmake</code> | | 6754 | <p>If the program uses <code class="filename">cmake</code> |
6743 | for configuration, the appropriate steps can be invoked by | | 6755 | for configuration, the appropriate steps can be invoked by |
6744 | setting <code class="varname">USE_CMAKE</code> to <span class="quote">“<span class="quote">yes</span>”</span>. | | 6756 | setting <code class="varname">USE_CMAKE</code> to <span class="quote">“<span class="quote">yes</span>”</span>. |
6745 | You can add variables to cmake's environment by adding them to the | | 6757 | You can add variables to cmake's environment by adding them to the |
6746 | <code class="varname">CONFIGURE_ENV</code> variable and arguments to cmake | | 6758 | <code class="varname">CONFIGURE_ENV</code> variable and arguments to cmake |
6747 | by adding them to the <code class="varname">CMAKE_ARGS</code> variable. | | 6759 | by adding them to the <code class="varname">CMAKE_ARGS</code> variable. |
6748 | The top directory argument is given by the | | 6760 | The top directory argument is given by the |
6749 | <code class="varname">CMAKE_ARG_PATH</code> variable, that defaults to | | 6761 | <code class="varname">CMAKE_ARG_PATH</code> variable, that defaults to |
6750 | <span class="quote">“<span class="quote">.</span>”</span> (relative to <code class="varname">CONFIGURE_DIRS</code>)</p> | | 6762 | <span class="quote">“<span class="quote">.</span>”</span> (relative to <code class="varname">CONFIGURE_DIRS</code>)</p> |
6751 | <p>If there is no configure step at all, set | | 6763 | <p>If there is no configure step at all, set |
6752 | <code class="varname">NO_CONFIGURE</code> to <span class="quote">“<span class="quote">yes</span>”</span>.</p> | | 6764 | <code class="varname">NO_CONFIGURE</code> to <span class="quote">“<span class="quote">yes</span>”</span>.</p> |
6753 | </div> | | 6765 | </div> |
6754 | <div class="sect1"> | | 6766 | <div class="sect1"> |
6755 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6767 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6756 | <a name="build.build"></a>17.12. The <span class="emphasis"><em>build</em></span> phase</h2></div></div></div> | | 6768 | <a name="build.build"></a>17.12. The <span class="emphasis"><em>build</em></span> phase</h2></div></div></div> |
6757 | <p>For building a package, a rough equivalent of the | | 6769 | <p>For building a package, a rough equivalent of the |
6758 | following code is executed.</p> | | 6770 | following code is executed.</p> |
6759 | <pre class="programlisting"> | | 6771 | <pre class="programlisting"> |
6760 | .for d in ${BUILD_DIRS} | | 6772 | .for d in ${BUILD_DIRS} |
6761 | cd ${WRKSRC} \ | | 6773 | cd ${WRKSRC} \ |
6762 | && cd ${d} \ | | 6774 | && cd ${d} \ |
6763 | && env ${MAKE_ENV} \ | | 6775 | && env ${MAKE_ENV} \ |
6764 | ${MAKE_PROGRAM} ${BUILD_MAKE_FLAGS} \ | | 6776 | ${MAKE_PROGRAM} ${BUILD_MAKE_FLAGS} \ |
6765 | -f ${MAKE_FILE} \ | | 6777 | -f ${MAKE_FILE} \ |
6766 | ${BUILD_TARGET} | | 6778 | ${BUILD_TARGET} |
6767 | .endfor | | 6779 | .endfor |
6768 | </pre> | | 6780 | </pre> |
6769 | <p><code class="varname">BUILD_DIRS</code> (default: | | 6781 | <p><code class="varname">BUILD_DIRS</code> (default: |
6770 | <span class="quote">“<span class="quote">.</span>”</span>) is a list of pathnames relative to | | 6782 | <span class="quote">“<span class="quote">.</span>”</span>) is a list of pathnames relative to |
6771 | <code class="varname">WRKSRC</code>. In each of these directories, | | 6783 | <code class="varname">WRKSRC</code>. In each of these directories, |
6772 | <code class="varname">MAKE_PROGRAM</code> is run with the environment | | 6784 | <code class="varname">MAKE_PROGRAM</code> is run with the environment |
6773 | <code class="varname">MAKE_ENV</code> and arguments | | 6785 | <code class="varname">MAKE_ENV</code> and arguments |
6774 | <code class="varname">BUILD_MAKE_FLAGS</code>. The variables | | 6786 | <code class="varname">BUILD_MAKE_FLAGS</code>. The variables |
6775 | <code class="varname">MAKE_ENV</code>, | | 6787 | <code class="varname">MAKE_ENV</code>, |
6776 | <code class="varname">BUILD_MAKE_FLAGS</code>, | | 6788 | <code class="varname">BUILD_MAKE_FLAGS</code>, |
6777 | <code class="varname">MAKE_FILE</code> and | | 6789 | <code class="varname">MAKE_FILE</code> and |
6778 | <code class="varname">BUILD_TARGET</code> may all be changed by the | | 6790 | <code class="varname">BUILD_TARGET</code> may all be changed by the |
6779 | package.</p> | | 6791 | package.</p> |
6780 | <p>The default value of <code class="varname">MAKE_PROGRAM</code> is | | 6792 | <p>The default value of <code class="varname">MAKE_PROGRAM</code> is |
6781 | <span class="quote">“<span class="quote">gmake</span>”</span> if <code class="varname">USE_TOOLS</code> contains | | 6793 | <span class="quote">“<span class="quote">gmake</span>”</span> if <code class="varname">USE_TOOLS</code> contains |
6782 | <span class="quote">“<span class="quote">gmake</span>”</span>, <span class="quote">“<span class="quote">make</span>”</span> otherwise. The | | 6794 | <span class="quote">“<span class="quote">gmake</span>”</span>, <span class="quote">“<span class="quote">make</span>”</span> otherwise. The |
6783 | default value of <code class="varname">MAKE_FILE</code> is | | 6795 | default value of <code class="varname">MAKE_FILE</code> is |
6784 | <span class="quote">“<span class="quote">Makefile</span>”</span>, and <code class="varname">BUILD_TARGET</code> | | 6796 | <span class="quote">“<span class="quote">Makefile</span>”</span>, and <code class="varname">BUILD_TARGET</code> |
6785 | defaults to <span class="quote">“<span class="quote">all</span>”</span>.</p> | | 6797 | defaults to <span class="quote">“<span class="quote">all</span>”</span>.</p> |
6786 | <p>If there is no build step at all, set | | 6798 | <p>If there is no build step at all, set |
6787 | <code class="varname">NO_BUILD</code> to <span class="quote">“<span class="quote">yes</span>”</span>.</p> | | 6799 | <code class="varname">NO_BUILD</code> to <span class="quote">“<span class="quote">yes</span>”</span>.</p> |
6788 | </div> | | 6800 | </div> |
6789 | <div class="sect1"> | | 6801 | <div class="sect1"> |
6790 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6802 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6791 | <a name="build.test"></a>17.13. The <span class="emphasis"><em>test</em></span> phase</h2></div></div></div> | | 6803 | <a name="build.test"></a>17.13. The <span class="emphasis"><em>test</em></span> phase</h2></div></div></div> |
6792 | <p>[TODO]</p> | | 6804 | <p>[TODO]</p> |
6793 | </div> | | 6805 | </div> |
6794 | <div class="sect1"> | | 6806 | <div class="sect1"> |
6795 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6807 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6796 | <a name="build.install"></a>17.14. The <span class="emphasis"><em>install</em></span> phase</h2></div></div></div> | | 6808 | <a name="build.install"></a>17.14. The <span class="emphasis"><em>install</em></span> phase</h2></div></div></div> |
6797 | <p>Once the build stage has completed, the final step is to | | 6809 | <p>Once the build stage has completed, the final step is to |
6798 | install the software in public directories, so users can | | 6810 | install the software in public directories, so users can |
6799 | access the programs and files.</p> | | 6811 | access the programs and files.</p> |
6800 | <p>In the <span class="emphasis"><em>install</em></span> phase, a rough | | 6812 | <p>In the <span class="emphasis"><em>install</em></span> phase, a rough |
6801 | equivalent of the following code is executed. Additionally, | | 6813 | equivalent of the following code is executed. Additionally, |
6802 | before and after this code, much magic is performed to do | | 6814 | before and after this code, much magic is performed to do |
6803 | consistency checks, registering the package, and so on.</p> | | 6815 | consistency checks, registering the package, and so on.</p> |
6804 | <pre class="programlisting"> | | 6816 | <pre class="programlisting"> |
6805 | .for d in ${INSTALL_DIRS} | | 6817 | .for d in ${INSTALL_DIRS} |
6806 | cd ${WRKSRC} \ | | 6818 | cd ${WRKSRC} \ |
6807 | && cd ${d} \ | | 6819 | && cd ${d} \ |
6808 | && env ${MAKE_ENV} \ | | 6820 | && env ${MAKE_ENV} \ |
6809 | ${MAKE_PROGRAM} ${INSTALL_MAKE_FLAGS} \ | | 6821 | ${MAKE_PROGRAM} ${INSTALL_MAKE_FLAGS} \ |
6810 | -f ${MAKE_FILE} \ | | 6822 | -f ${MAKE_FILE} \ |
6811 | ${INSTALL_TARGET} | | 6823 | ${INSTALL_TARGET} |
6812 | .endfor | | 6824 | .endfor |
6813 | </pre> | | 6825 | </pre> |
6814 | <p>The variable's meanings are analogous to the ones in the | | 6826 | <p>The variable's meanings are analogous to the ones in the |
6815 | <span class="emphasis"><em>build</em></span> phase. | | 6827 | <span class="emphasis"><em>build</em></span> phase. |
6816 | <code class="varname">INSTALL_DIRS</code> defaults to | | 6828 | <code class="varname">INSTALL_DIRS</code> defaults to |
6817 | <code class="varname">BUILD_DIRS</code>. <code class="varname">INSTALL_TARGET</code> | | 6829 | <code class="varname">BUILD_DIRS</code>. <code class="varname">INSTALL_TARGET</code> |
6818 | is <span class="quote">“<span class="quote">install</span>”</span> by default, plus | | 6830 | is <span class="quote">“<span class="quote">install</span>”</span> by default, plus |
6819 | <span class="quote">“<span class="quote">install.man</span>”</span> if <code class="varname">USE_IMAKE</code> is | | 6831 | <span class="quote">“<span class="quote">install.man</span>”</span> if <code class="varname">USE_IMAKE</code> is |
6820 | defined and <code class="varname">NO_INSTALL_MANPAGES</code> is not | | 6832 | defined and <code class="varname">NO_INSTALL_MANPAGES</code> is not |
6821 | defined.</p> | | 6833 | defined.</p> |
6822 | <p>In the <span class="emphasis"><em>install</em></span> phase, the following | | 6834 | <p>In the <span class="emphasis"><em>install</em></span> phase, the following |
6823 | variables are useful. They are all variations of the | | 6835 | variables are useful. They are all variations of the |
6824 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?install+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">install</span>(1)</span></a> command that have the owner, group and | | 6836 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?install+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">install</span>(1)</span></a> command that have the owner, group and |
6825 | permissions preset. <code class="varname">INSTALL</code> is the plain | | 6837 | permissions preset. <code class="varname">INSTALL</code> is the plain |
6826 | install command. The specialized variants, together with their | | 6838 | install command. The specialized variants, together with their |
6827 | intended use, are:</p> | | 6839 | intended use, are:</p> |
6828 | <div class="variablelist"><dl class="variablelist"> | | 6840 | <div class="variablelist"><dl class="variablelist"> |
6829 | <dt><span class="term"><code class="varname">INSTALL_PROGRAM_DIR</code></span></dt> | | 6841 | <dt><span class="term"><code class="varname">INSTALL_PROGRAM_DIR</code></span></dt> |
6830 | <dd><p>directories that contain | | 6842 | <dd><p>directories that contain |
6831 | binaries</p></dd> | | 6843 | binaries</p></dd> |
6832 | <dt><span class="term"><code class="varname">INSTALL_SCRIPT_DIR</code></span></dt> | | 6844 | <dt><span class="term"><code class="varname">INSTALL_SCRIPT_DIR</code></span></dt> |
6833 | <dd><p>directories that contain | | 6845 | <dd><p>directories that contain |
6834 | scripts</p></dd> | | 6846 | scripts</p></dd> |
6835 | <dt><span class="term"><code class="varname">INSTALL_LIB_DIR</code></span></dt> | | 6847 | <dt><span class="term"><code class="varname">INSTALL_LIB_DIR</code></span></dt> |
6836 | <dd><p>directories that contain shared and static | | 6848 | <dd><p>directories that contain shared and static |
6837 | libraries</p></dd> | | 6849 | libraries</p></dd> |
6838 | <dt><span class="term"><code class="varname">INSTALL_DATA_DIR</code></span></dt> | | 6850 | <dt><span class="term"><code class="varname">INSTALL_DATA_DIR</code></span></dt> |
6839 | <dd><p>directories that contain data | | 6851 | <dd><p>directories that contain data |
6840 | files</p></dd> | | 6852 | files</p></dd> |
6841 | <dt><span class="term"><code class="varname">INSTALL_MAN_DIR</code></span></dt> | | 6853 | <dt><span class="term"><code class="varname">INSTALL_MAN_DIR</code></span></dt> |
6842 | <dd><p>directories that contain man | | 6854 | <dd><p>directories that contain man |
6843 | pages</p></dd> | | 6855 | pages</p></dd> |
6844 | <dt><span class="term"><code class="varname">INSTALL_PROGRAM</code></span></dt> | | 6856 | <dt><span class="term"><code class="varname">INSTALL_PROGRAM</code></span></dt> |
6845 | <dd><p>binaries that can be stripped from debugging | | 6857 | <dd><p>binaries that can be stripped from debugging |
6846 | symbols</p></dd> | | 6858 | symbols</p></dd> |
6847 | <dt><span class="term"><code class="varname">INSTALL_SCRIPT</code></span></dt> | | 6859 | <dt><span class="term"><code class="varname">INSTALL_SCRIPT</code></span></dt> |
6848 | <dd><p>binaries that cannot be | | 6860 | <dd><p>binaries that cannot be |
6849 | stripped</p></dd> | | 6861 | stripped</p></dd> |
6850 | <dt><span class="term"><code class="varname">INSTALL_GAME</code></span></dt> | | 6862 | <dt><span class="term"><code class="varname">INSTALL_GAME</code></span></dt> |
6851 | <dd><p>game | | 6863 | <dd><p>game |
6852 | binaries</p></dd> | | 6864 | binaries</p></dd> |
6853 | <dt><span class="term"><code class="varname">INSTALL_LIB</code></span></dt> | | 6865 | <dt><span class="term"><code class="varname">INSTALL_LIB</code></span></dt> |
6854 | <dd><p>shared and static | | 6866 | <dd><p>shared and static |
6855 | libraries</p></dd> | | 6867 | libraries</p></dd> |
6856 | <dt><span class="term"><code class="varname">INSTALL_DATA</code></span></dt> | | 6868 | <dt><span class="term"><code class="varname">INSTALL_DATA</code></span></dt> |
6857 | <dd><p>data files</p></dd> | | 6869 | <dd><p>data files</p></dd> |
6858 | <dt><span class="term"><code class="varname">INSTALL_GAME_DATA</code></span></dt> | | 6870 | <dt><span class="term"><code class="varname">INSTALL_GAME_DATA</code></span></dt> |
6859 | <dd><p>data files for | | 6871 | <dd><p>data files for |
6860 | games</p></dd> | | 6872 | games</p></dd> |
6861 | <dt><span class="term"><code class="varname">INSTALL_MAN</code></span></dt> | | 6873 | <dt><span class="term"><code class="varname">INSTALL_MAN</code></span></dt> |
6862 | <dd><p>man pages</p></dd> | | 6874 | <dd><p>man pages</p></dd> |
6863 | </dl></div> | | 6875 | </dl></div> |
6864 | <p>Some other variables are:</p> | | 6876 | <p>Some other variables are:</p> |
6865 | <div class="variablelist"><dl class="variablelist"> | | 6877 | <div class="variablelist"><dl class="variablelist"> |
6866 | <dt><span class="term"><code class="varname">INSTALLATION_DIRS</code></span></dt> | | 6878 | <dt><span class="term"><code class="varname">INSTALLATION_DIRS</code></span></dt> |
6867 | <dd><p>A list of directories relative to | | 6879 | <dd><p>A list of directories relative to |
6868 | <code class="varname">PREFIX</code> that are created by pkgsrc at the | | 6880 | <code class="varname">PREFIX</code> that are created by pkgsrc at the |
6869 | beginning of the <span class="emphasis"><em>install</em></span> phase. | | 6881 | beginning of the <span class="emphasis"><em>install</em></span> phase. |
6870 | The package is supposed to create all needed directories itself | | 6882 | The package is supposed to create all needed directories itself |
6871 | before installing files to it and list all other directories here. | | 6883 | before installing files to it and list all other directories here. |
6872 | </p></dd> | | 6884 | </p></dd> |
6873 | </dl></div> | | 6885 | </dl></div> |
6874 | <p>In the rare cases that a package shouldn't install anything, | | 6886 | <p>In the rare cases that a package shouldn't install anything, |
6875 | set <code class="varname">NO_INSTALL</code> to <span class="quote">“<span class="quote">yes</span>”</span>. This is | | 6887 | set <code class="varname">NO_INSTALL</code> to <span class="quote">“<span class="quote">yes</span>”</span>. This is |
6876 | mostly relevant for packages in the <code class="filename">regress</code> | | 6888 | mostly relevant for packages in the <code class="filename">regress</code> |
6877 | category.</p> | | 6889 | category.</p> |
6878 | </div> | | 6890 | </div> |
6879 | <div class="sect1"> | | 6891 | <div class="sect1"> |
6880 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6892 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6881 | <a name="build.package"></a>17.15. The <span class="emphasis"><em>package</em></span> phase</h2></div></div></div> | | 6893 | <a name="build.package"></a>17.15. The <span class="emphasis"><em>package</em></span> phase</h2></div></div></div> |
6882 | <p>Once the install stage has completed, a binary package of | | 6894 | <p>Once the install stage has completed, a binary package of |
6883 | the installed files can be built. These binary packages can be | | 6895 | the installed files can be built. These binary packages can be |
6884 | used for quick installation without previous compilation, e.g. by | | 6896 | used for quick installation without previous compilation, e.g. by |
6885 | the <span class="command"><strong>make bin-install</strong></span> or by using | | 6897 | the <span class="command"><strong>make bin-install</strong></span> or by using |
6886 | <span class="command"><strong>pkg_add</strong></span>.</p> | | 6898 | <span class="command"><strong>pkg_add</strong></span>.</p> |
6887 | <p>By default, the binary packages are created in | | 6899 | <p>By default, the binary packages are created in |
6888 | <code class="filename">${PACKAGES}/All</code> and symlinks are created in | | 6900 | <code class="filename">${PACKAGES}/All</code> and symlinks are created in |
6889 | <code class="filename">${PACKAGES}/<em class="replaceable"><code>category</code></em></code>, | | 6901 | <code class="filename">${PACKAGES}/<em class="replaceable"><code>category</code></em></code>, |
6890 | one for each category in the <code class="varname">CATEGORIES</code> | | 6902 | one for each category in the <code class="varname">CATEGORIES</code> |
6891 | variable. <code class="varname">PACKAGES</code> defaults to | | 6903 | variable. <code class="varname">PACKAGES</code> defaults to |
6892 | <code class="filename">pkgsrc/packages</code>.</p> | | 6904 | <code class="filename">pkgsrc/packages</code>.</p> |
6893 | </div> | | 6905 | </div> |
6894 | <div class="sect1"> | | 6906 | <div class="sect1"> |
6895 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6907 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6896 | <a name="build.clean"></a>17.16. Cleaning up</h2></div></div></div> | | 6908 | <a name="build.clean"></a>17.16. Cleaning up</h2></div></div></div> |
6897 | <p>Once you're finished with a package, you can clean the work | | 6909 | <p>Once you're finished with a package, you can clean the work |
6898 | directory by running <span class="command"><strong>make clean</strong></span>. If you want | | 6910 | directory by running <span class="command"><strong>make clean</strong></span>. If you want |
6899 | to clean the work directories of all dependencies too, use | | 6911 | to clean the work directories of all dependencies too, use |
6900 | <span class="command"><strong>make clean-depends</strong></span>.</p> | | 6912 | <span class="command"><strong>make clean-depends</strong></span>.</p> |
6901 | </div> | | 6913 | </div> |
6902 | <div class="sect1"> | | 6914 | <div class="sect1"> |
6903 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6915 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6904 | <a name="build.helpful-targets"></a>17.17. Other helpful targets</h2></div></div></div> | | 6916 | <a name="build.helpful-targets"></a>17.17. Other helpful targets</h2></div></div></div> |
6905 | <div class="variablelist"><dl class="variablelist"> | | 6917 | <div class="variablelist"><dl class="variablelist"> |
6906 | <dt><span class="term">pre/post-*</span></dt> | | 6918 | <dt><span class="term">pre/post-*</span></dt> |
6907 | <dd><p>For any of the main targets described in the | | 6919 | <dd><p>For any of the main targets described in the |
6908 | previous section, two auxiliary targets exist with | | 6920 | previous section, two auxiliary targets exist with |
6909 | <span class="quote">“<span class="quote">pre-</span>”</span> and <span class="quote">“<span class="quote">post-</span>”</span> used as a | | 6921 | <span class="quote">“<span class="quote">pre-</span>”</span> and <span class="quote">“<span class="quote">post-</span>”</span> used as a |
6910 | prefix for the main target's name. These targets are | | 6922 | prefix for the main target's name. These targets are |
6911 | invoked before and after the main target is called, | | 6923 | invoked before and after the main target is called, |
6912 | allowing extra configuration or installation steps be | | 6924 | allowing extra configuration or installation steps be |
6913 | performed from a package's Makefile, for example, which | | 6925 | performed from a package's Makefile, for example, which |
6914 | a program's configure script or install target | | 6926 | a program's configure script or install target |
6915 | omitted.</p></dd> | | 6927 | omitted.</p></dd> |
6916 | <dt><span class="term">do-*</span></dt> | | 6928 | <dt><span class="term">do-*</span></dt> |
6917 | <dd><p>Should one of the main targets do the wrong thing, | | 6929 | <dd><p>Should one of the main targets do the wrong thing, |
6918 | and should there be no variable to fix this, you can | | 6930 | and should there be no variable to fix this, you can |
6919 | redefine it with the do-* target. (Note that redefining | | 6931 | redefine it with the do-* target. (Note that redefining |
6920 | the target itself instead of the do-* target is a bad | | 6932 | the target itself instead of the do-* target is a bad |
6921 | idea, as the pre-* and post-* targets won't be called | | 6933 | idea, as the pre-* and post-* targets won't be called |
6922 | anymore, etc.) You will not usually need to do | | 6934 | anymore, etc.) You will not usually need to do |
6923 | this.</p></dd> | | 6935 | this.</p></dd> |
6924 | <dt><span class="term">reinstall</span></dt> | | 6936 | <dt><span class="term">reinstall</span></dt> |
6925 | <dd> | | 6937 | <dd> |
6926 | <p>If you did a <span class="command"><strong>make install</strong></span> and | | 6938 | <p>If you did a <span class="command"><strong>make install</strong></span> and |
6927 | you noticed some file was not installed properly, you | | 6939 | you noticed some file was not installed properly, you |
6928 | can repeat the installation with this target, which will | | 6940 | can repeat the installation with this target, which will |
6929 | ignore the <span class="quote">“<span class="quote">already installed</span>”</span> flag.</p> | | 6941 | ignore the <span class="quote">“<span class="quote">already installed</span>”</span> flag.</p> |
6930 | <p>This is the default value of | | 6942 | <p>This is the default value of |
6931 | <code class="varname">DEPENDS_TARGET</code> except in the case of | | 6943 | <code class="varname">DEPENDS_TARGET</code> except in the case of |
6932 | <span class="command"><strong>make update</strong></span> and <span class="command"><strong>make | | 6944 | <span class="command"><strong>make update</strong></span> and <span class="command"><strong>make |
6933 | package</strong></span>, where the defaults are | | 6945 | package</strong></span>, where the defaults are |
6934 | <span class="quote">“<span class="quote">package</span>”</span> and <span class="quote">“<span class="quote">update</span>”</span>, | | 6946 | <span class="quote">“<span class="quote">package</span>”</span> and <span class="quote">“<span class="quote">update</span>”</span>, |
6935 | respectively.</p> | | 6947 | respectively.</p> |
6936 | </dd> | | 6948 | </dd> |
6937 | <dt><span class="term">deinstall</span></dt> | | 6949 | <dt><span class="term">deinstall</span></dt> |
6938 | <dd> | | 6950 | <dd> |
6939 | <p>This target does a <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> in the | | 6951 | <p>This target does a <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> in the |
6940 | current directory, effectively de-installing the | | 6952 | current directory, effectively de-installing the |
6941 | package. The following variables can be used to tune the | | 6953 | package. The following variables can be used to tune the |
6942 | behaviour:</p> | | 6954 | behaviour:</p> |
6943 | <div class="variablelist"><dl class="variablelist"> | | 6955 | <div class="variablelist"><dl class="variablelist"> |
6944 | <dt><span class="term"><code class="varname">PKG_VERBOSE</code></span></dt> | | 6956 | <dt><span class="term"><code class="varname">PKG_VERBOSE</code></span></dt> |
6945 | <dd><p>Add a "-v" to the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> command.</p></dd> | | 6957 | <dd><p>Add a "-v" to the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> command.</p></dd> |
6946 | <dt><span class="term"><code class="varname">DEINSTALLDEPENDS</code></span></dt> | | 6958 | <dt><span class="term"><code class="varname">DEINSTALLDEPENDS</code></span></dt> |
6947 | <dd><p>Remove all packages that require (depend on) | | 6959 | <dd><p>Remove all packages that require (depend on) |
6948 | the given package. This can be used to remove any | | 6960 | the given package. This can be used to remove any |
6949 | packages that may have been pulled in by a given | | 6961 | packages that may have been pulled in by a given |
6950 | package, e.g. if <span class="command"><strong>make deinstall | | 6962 | package, e.g. if <span class="command"><strong>make deinstall |
6951 | DEINSTALLDEPENDS=1</strong></span> is done in | | 6963 | DEINSTALLDEPENDS=1</strong></span> is done in |
6952 | <code class="filename">pkgsrc/x11/kde</code>, this is | | 6964 | <code class="filename">pkgsrc/x11/kde</code>, this is |
6953 | likely to remove whole KDE. Works by adding | | 6965 | likely to remove whole KDE. Works by adding |
6954 | <span class="quote">“<span class="quote">-R</span>”</span> to the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> | | 6966 | <span class="quote">“<span class="quote">-R</span>”</span> to the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> |
6955 | command line.</p></dd> | | 6967 | command line.</p></dd> |
6956 | </dl></div> | | 6968 | </dl></div> |
6957 | </dd> | | 6969 | </dd> |
6958 | <dt><span class="term">bin-install</span></dt> | | 6970 | <dt><span class="term">bin-install</span></dt> |
6959 | <dd><p>Install a binary package from local disk and via FTP | | 6971 | <dd><p>Install a binary package from local disk and via FTP |
6960 | from a list of sites (see the | | 6972 | from a list of sites (see the |
6961 | <code class="varname">BINPKG_SITES</code> variable), and do a | | 6973 | <code class="varname">BINPKG_SITES</code> variable), and do a |
6962 | <span class="command"><strong>make package</strong></span> if no binary package is | | 6974 | <span class="command"><strong>make package</strong></span> if no binary package is |
6963 | available anywhere. The arguments given to | | 6975 | available anywhere. The arguments given to |
6964 | <span class="command"><strong>pkg_add</strong></span> can be set via | | 6976 | <span class="command"><strong>pkg_add</strong></span> can be set via |
6965 | <code class="varname">BIN_INSTALL_FLAGS</code> e.g., to do verbose | | 6977 | <code class="varname">BIN_INSTALL_FLAGS</code> e.g., to do verbose |
6966 | operation, etc.</p></dd> | | 6978 | operation, etc.</p></dd> |
6967 | <dt><span class="term">update</span></dt> | | 6979 | <dt><span class="term">update</span></dt> |
6968 | <dd> | | 6980 | <dd> |
6969 | <p>This target causes the current package to be | | 6981 | <p>This target causes the current package to be |
6970 | updated to the latest version. The package and all | | 6982 | updated to the latest version. The package and all |
6971 | depending packages first get de-installed, then current | | 6983 | depending packages first get de-installed, then current |
6972 | versions of the corresponding packages get compiled and | | 6984 | versions of the corresponding packages get compiled and |
6973 | installed. This is similar to manually noting which | | 6985 | installed. This is similar to manually noting which |
6974 | packages are currently installed, then performing a | | 6986 | packages are currently installed, then performing a |
6975 | series of <span class="command"><strong>make deinstall</strong></span> and | | 6987 | series of <span class="command"><strong>make deinstall</strong></span> and |
6976 | <span class="command"><strong>make install</strong></span> (or whatever | | 6988 | <span class="command"><strong>make install</strong></span> (or whatever |
6977 | <code class="varname">UPDATE_TARGET</code> is set to) for these | | 6989 | <code class="varname">UPDATE_TARGET</code> is set to) for these |
6978 | packages.</p> | | 6990 | packages.</p> |
6979 | <p>You can use the <span class="quote">“<span class="quote">update</span>”</span> target to | | 6991 | <p>You can use the <span class="quote">“<span class="quote">update</span>”</span> target to |
6980 | resume package updating in case a previous <span class="command"><strong>make | | 6992 | resume package updating in case a previous <span class="command"><strong>make |
6981 | update</strong></span> was interrupted for some reason. | | 6993 | update</strong></span> was interrupted for some reason. |
6982 | However, in this case, make sure you don't call | | 6994 | However, in this case, make sure you don't call |
6983 | <span class="command"><strong>make clean</strong></span> or otherwise remove the | | 6995 | <span class="command"><strong>make clean</strong></span> or otherwise remove the |
6984 | list of dependent packages in <code class="varname">WRKDIR</code>. | | 6996 | list of dependent packages in <code class="varname">WRKDIR</code>. |
6985 | Otherwise, you lose the ability to automatically update | | 6997 | Otherwise, you lose the ability to automatically update |
6986 | the current package along with the dependent packages | | 6998 | the current package along with the dependent packages |
6987 | you have installed.</p> | | 6999 | you have installed.</p> |
6988 | <p>Resuming an interrupted <span class="command"><strong>make | | 7000 | <p>Resuming an interrupted <span class="command"><strong>make |
6989 | update</strong></span> will only work as long as the package | | 7001 | update</strong></span> will only work as long as the package |
6990 | tree remains unchanged. If the source code for one of | | 7002 | tree remains unchanged. If the source code for one of |
6991 | the packages to be updated has been changed, resuming | | 7003 | the packages to be updated has been changed, resuming |
6992 | <span class="command"><strong>make update</strong></span> will most certainly | | 7004 | <span class="command"><strong>make update</strong></span> will most certainly |
6993 | fail!</p> | | 7005 | fail!</p> |
6994 | <p>The following variables can be used either on the | | 7006 | <p>The following variables can be used either on the |
6995 | command line or in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to | | 7007 | command line or in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to |
6996 | alter the behaviour of <span class="command"><strong>make | | 7008 | alter the behaviour of <span class="command"><strong>make |
6997 | update</strong></span>:</p> | | 7009 | update</strong></span>:</p> |
6998 | <div class="variablelist"><dl class="variablelist"> | | 7010 | <div class="variablelist"><dl class="variablelist"> |
6999 | <dt><span class="term"><code class="varname">UPDATE_TARGET</code></span></dt> | | 7011 | <dt><span class="term"><code class="varname">UPDATE_TARGET</code></span></dt> |
7000 | <dd><p>Install target to recursively use for the | | 7012 | <dd><p>Install target to recursively use for the |
7001 | updated package and the dependent packages. | | 7013 | updated package and the dependent packages. |
7002 | Defaults to <code class="varname">DEPENDS_TARGET</code> if | | 7014 | Defaults to <code class="varname">DEPENDS_TARGET</code> if |
7003 | set, <span class="quote">“<span class="quote">install</span>”</span> otherwise for | | 7015 | set, <span class="quote">“<span class="quote">install</span>”</span> otherwise for |
7004 | <span class="command"><strong>make update</strong></span>. Other good | | 7016 | <span class="command"><strong>make update</strong></span>. Other good |
7005 | targets are <span class="quote">“<span class="quote">package</span>”</span> or | | 7017 | targets are <span class="quote">“<span class="quote">package</span>”</span> or |
7006 | <span class="quote">“<span class="quote">bin-install</span>”</span>. Do not set this to | | 7018 | <span class="quote">“<span class="quote">bin-install</span>”</span>. Do not set this to |
7007 | <span class="quote">“<span class="quote">update</span>”</span> or you will get stuck in an | | 7019 | <span class="quote">“<span class="quote">update</span>”</span> or you will get stuck in an |
7008 | endless loop!</p></dd> | | 7020 | endless loop!</p></dd> |
7009 | <dt><span class="term"><code class="varname">NOCLEAN</code></span></dt> | | 7021 | <dt><span class="term"><code class="varname">NOCLEAN</code></span></dt> |
7010 | <dd><p>Don't clean up after updating. Useful if | | 7022 | <dd><p>Don't clean up after updating. Useful if |
7011 | you want to leave the work sources of the updated | | 7023 | you want to leave the work sources of the updated |
7012 | packages around for inspection or other purposes. | | 7024 | packages around for inspection or other purposes. |
7013 | Be sure you eventually clean up the source tree | | 7025 | Be sure you eventually clean up the source tree |
7014 | (see the <span class="quote">“<span class="quote">clean-update</span>”</span> target below) | | 7026 | (see the <span class="quote">“<span class="quote">clean-update</span>”</span> target below) |
7015 | or you may run into troubles with old source code | | 7027 | or you may run into troubles with old source code |
7016 | still lying around on your next | | 7028 | still lying around on your next |
7017 | <span class="command"><strong>make</strong></span> or <span class="command"><strong>make | | 7029 | <span class="command"><strong>make</strong></span> or <span class="command"><strong>make |
7018 | update</strong></span>.</p></dd> | | 7030 | update</strong></span>.</p></dd> |
7019 | <dt><span class="term"><code class="varname">REINSTALL</code></span></dt> | | 7031 | <dt><span class="term"><code class="varname">REINSTALL</code></span></dt> |
7020 | <dd><p>Deinstall each package before installing | | 7032 | <dd><p>Deinstall each package before installing |
7021 | (making <code class="varname">DEPENDS_TARGET</code>). This | | 7033 | (making <code class="varname">DEPENDS_TARGET</code>). This |
7022 | may be necessary if the | | 7034 | may be necessary if the |
7023 | <span class="quote">“<span class="quote">clean-update</span>”</span> target (see below) was | | 7035 | <span class="quote">“<span class="quote">clean-update</span>”</span> target (see below) was |
7024 | called after interrupting a running <span class="command"><strong>make | | 7036 | called after interrupting a running <span class="command"><strong>make |
7025 | update</strong></span>.</p></dd> | | 7037 | update</strong></span>.</p></dd> |
7026 | <dt><span class="term"><code class="varname">DEPENDS_TARGET</code></span></dt> | | 7038 | <dt><span class="term"><code class="varname">DEPENDS_TARGET</code></span></dt> |
7027 | <dd><p>Allows you to disable recursion and hardcode | | 7039 | <dd><p>Allows you to disable recursion and hardcode |
7028 | the target for packages. The default is | | 7040 | the target for packages. The default is |
7029 | <span class="quote">“<span class="quote">update</span>”</span> for the update target, | | 7041 | <span class="quote">“<span class="quote">update</span>”</span> for the update target, |
7030 | facilitating a recursive update of prerequisite | | 7042 | facilitating a recursive update of prerequisite |
7031 | packages. Only set | | 7043 | packages. Only set |
7032 | <code class="varname">DEPENDS_TARGET</code> if you want to | | 7044 | <code class="varname">DEPENDS_TARGET</code> if you want to |
7033 | disable recursive updates. Use | | 7045 | disable recursive updates. Use |
7034 | <code class="varname">UPDATE_TARGET</code> instead to just | | 7046 | <code class="varname">UPDATE_TARGET</code> instead to just |
7035 | set a specific target for each package to be | | 7047 | set a specific target for each package to be |
7036 | installed during <span class="command"><strong>make update</strong></span> | | 7048 | installed during <span class="command"><strong>make update</strong></span> |
7037 | (see above).</p></dd> | | 7049 | (see above).</p></dd> |
7038 | </dl></div> | | 7050 | </dl></div> |
7039 | </dd> | | 7051 | </dd> |
7040 | <dt><span class="term">clean-update</span></dt> | | 7052 | <dt><span class="term">clean-update</span></dt> |
7041 | <dd> | | 7053 | <dd> |
7042 | <p>Clean the source tree for all packages that would | | 7054 | <p>Clean the source tree for all packages that would |
7043 | get updated if <span class="command"><strong>make update</strong></span> was called | | 7055 | get updated if <span class="command"><strong>make update</strong></span> was called |
7044 | from the current directory. This target should not be | | 7056 | from the current directory. This target should not be |
7045 | used if the current package (or any of its depending | | 7057 | used if the current package (or any of its depending |
7046 | packages) have already been de-installed (e.g., after | | 7058 | packages) have already been de-installed (e.g., after |
7047 | calling <span class="command"><strong>make update</strong></span>) or you may lose | | 7059 | calling <span class="command"><strong>make update</strong></span>) or you may lose |
7048 | some packages you intended to update. As a rule of | | 7060 | some packages you intended to update. As a rule of |
7049 | thumb: only use this target <span class="emphasis"><em>before</em></span> | | 7061 | thumb: only use this target <span class="emphasis"><em>before</em></span> |
7050 | the first time you run <span class="command"><strong>make update</strong></span> | | 7062 | the first time you run <span class="command"><strong>make update</strong></span> |
7051 | and only if you have a dirty package tree (e.g., if you | | 7063 | and only if you have a dirty package tree (e.g., if you |
7052 | used <code class="varname">NOCLEAN</code>).</p> | | 7064 | used <code class="varname">NOCLEAN</code>).</p> |
7053 | <p>If you are unsure about whether your tree is | | 7065 | <p>If you are unsure about whether your tree is |
7054 | clean, you can either perform a <span class="command"><strong>make | | 7066 | clean, you can either perform a <span class="command"><strong>make |
7055 | clean</strong></span> at the top of the tree, or use the | | 7067 | clean</strong></span> at the top of the tree, or use the |
7056 | following sequence of commands from the directory of the | | 7068 | following sequence of commands from the directory of the |
7057 | package you want to update (<span class="emphasis"><em>before</em></span> | | 7069 | package you want to update (<span class="emphasis"><em>before</em></span> |
7058 | running <span class="command"><strong>make update</strong></span> for the first | | 7070 | running <span class="command"><strong>make update</strong></span> for the first |
7059 | time, otherwise you lose all the packages you wanted to | | 7071 | time, otherwise you lose all the packages you wanted to |
7060 | update!):</p> | | 7072 | update!):</p> |
7061 | <pre class="screen"> | | 7073 | <pre class="screen"> |
7062 | <code class="prompt">#</code> <strong class="userinput"><code>make clean-update</code></strong> | | 7074 | <code class="prompt">#</code> <strong class="userinput"><code>make clean-update</code></strong> |
7063 | <code class="prompt">#</code> <strong class="userinput"><code>make clean CLEANDEPENDS=YES</code></strong> | | 7075 | <code class="prompt">#</code> <strong class="userinput"><code>make clean CLEANDEPENDS=YES</code></strong> |
7064 | <code class="prompt">#</code> <strong class="userinput"><code>make update</code></strong> | | 7076 | <code class="prompt">#</code> <strong class="userinput"><code>make update</code></strong> |
7065 | </pre> | | 7077 | </pre> |
7066 | <p>The following variables can be used either on the | | 7078 | <p>The following variables can be used either on the |
7067 | command line or in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to alter the behaviour of | | 7079 | command line or in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to alter the behaviour of |
7068 | <span class="command"><strong>make clean-update</strong></span>:</p> | | 7080 | <span class="command"><strong>make clean-update</strong></span>:</p> |
7069 | <div class="variablelist"><dl class="variablelist"> | | 7081 | <div class="variablelist"><dl class="variablelist"> |
7070 | <dt><span class="term"><code class="varname">CLEAR_DIRLIST</code></span></dt> | | 7082 | <dt><span class="term"><code class="varname">CLEAR_DIRLIST</code></span></dt> |
7071 | <dd><p>After <span class="command"><strong>make clean</strong></span>, do not | | 7083 | <dd><p>After <span class="command"><strong>make clean</strong></span>, do not |
7072 | reconstruct the list of directories to update for | | 7084 | reconstruct the list of directories to update for |
7073 | this package. Only use this if <span class="command"><strong>make | | 7085 | this package. Only use this if <span class="command"><strong>make |
7074 | update</strong></span> successfully installed all | | 7086 | update</strong></span> successfully installed all |
7075 | packages you wanted to update. Normally, this is | | 7087 | packages you wanted to update. Normally, this is |
7076 | done automatically on <span class="command"><strong>make | | 7088 | done automatically on <span class="command"><strong>make |
7077 | update</strong></span>, but may have been suppressed by | | 7089 | update</strong></span>, but may have been suppressed by |
7078 | the <code class="varname">NOCLEAN</code> variable (see | | 7090 | the <code class="varname">NOCLEAN</code> variable (see |
7079 | above).</p></dd> | | 7091 | above).</p></dd> |
7080 | </dl></div> | | 7092 | </dl></div> |
7081 | </dd> | | 7093 | </dd> |
7082 | <dt><span class="term">replace</span></dt> | | 7094 | <dt><span class="term">replace</span></dt> |
7083 | <dd> | | 7095 | <dd> |
7084 | <p>Update the installation of the current package. This | | 7096 | <p>Update the installation of the current package. This |
7085 | differs from update in that it does not replace dependent | | 7097 | differs from update in that it does not replace dependent |
7086 | packages. You will need to install <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_tarup/README.html" target="_top"><code class="filename">pkgtools/pkg_tarup</code></a> for this | | 7098 | packages. You will need to install <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_tarup/README.html" target="_top"><code class="filename">pkgtools/pkg_tarup</code></a> for this |
7087 | target to work.</p> | | 7099 | target to work.</p> |
7088 | <p><span class="emphasis"><em>Be careful when using this | | 7100 | <p><span class="emphasis"><em>Be careful when using this |
7089 | target!</em></span> There are no guarantees that dependent | | 7101 | target!</em></span> There are no guarantees that dependent |
7090 | packages will still work, in particular they will most | | 7102 | packages will still work, in particular they will most |
7091 | certainly break if you <span class="command"><strong>make replace</strong></span> a | | 7103 | certainly break if you <span class="command"><strong>make replace</strong></span> a |
7092 | library package whose shared library major version changed | | 7104 | library package whose shared library major version changed |
7093 | between your installed version and the new one. For this | | 7105 | between your installed version and the new one. For this |
7094 | reason, this target is not officially supported and only | | 7106 | reason, this target is not officially supported and only |
7095 | recommended for advanced users.</p> | | 7107 | recommended for advanced users.</p> |
7096 | </dd> | | 7108 | </dd> |
7097 | <dt><span class="term">info</span></dt> | | 7109 | <dt><span class="term">info</span></dt> |
7098 | <dd><p>This target invokes <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_info+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_info</span>(1)</span></a> for the current | | 7110 | <dd><p>This target invokes <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_info+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_info</span>(1)</span></a> for the current |
7099 | package. You can use this to check which version of a | | 7111 | package. You can use this to check which version of a |
7100 | package is installed.</p></dd> | | 7112 | package is installed.</p></dd> |
7101 | <dt><span class="term">index</span></dt> | | 7113 | <dt><span class="term">index</span></dt> |
7102 | <dd> | | 7114 | <dd> |
7103 | <p>This is a top-level command, i.e. it should be used in | | 7115 | <p>This is a top-level command, i.e. it should be used in |
7104 | the <code class="filename">pkgsrc</code> directory. It creates a | | 7116 | the <code class="filename">pkgsrc</code> directory. It creates a |
7105 | database of all packages in the local pkgsrc tree, including | | 7117 | database of all packages in the local pkgsrc tree, including |
7106 | dependencies, comment, maintainer, and some other useful | | 7118 | dependencies, comment, maintainer, and some other useful |
7107 | information. Individual entries are created by running | | 7119 | information. Individual entries are created by running |
7108 | <span class="command"><strong>make describe</strong></span> in the packages' | | 7120 | <span class="command"><strong>make describe</strong></span> in the packages' |
7109 | directories. This index file is saved as | | 7121 | directories. This index file is saved as |
7110 | <code class="filename">pkgsrc/INDEX</code>. It can be displayed in | | 7122 | <code class="filename">pkgsrc/INDEX</code>. It can be displayed in |
7111 | verbose format by running <span class="command"><strong>make | | 7123 | verbose format by running <span class="command"><strong>make |
7112 | print-index</strong></span>. You can search in it with | | 7124 | print-index</strong></span>. You can search in it with |
7113 | <span class="command"><strong>make search | | 7125 | <span class="command"><strong>make search |
7114 | key=<em class="replaceable"><code>something</code></em></strong></span>. You can | | 7126 | key=<em class="replaceable"><code>something</code></em></strong></span>. You can |
7115 | extract a list of all packages that depend on a particular | | 7127 | extract a list of all packages that depend on a particular |
7116 | one by running <span class="command"><strong>make show-deps | | 7128 | one by running <span class="command"><strong>make show-deps |
7117 | PKG=<em class="replaceable"><code>somepackage</code></em></strong></span>.</p> | | 7129 | PKG=<em class="replaceable"><code>somepackage</code></em></strong></span>.</p> |
7118 | <p>Running this command takes a very long time, some | | 7130 | <p>Running this command takes a very long time, some |
7119 | hours even on fast machines!</p> | | 7131 | hours even on fast machines!</p> |
7120 | </dd> | | 7132 | </dd> |
7121 | <dt><span class="term">readme</span></dt> | | 7133 | <dt><span class="term">readme</span></dt> |
7122 | <dd> | | 7134 | <dd> |
7123 | <p>This target generates a | | 7135 | <p>This target generates a |
7124 | <code class="filename">README.html</code> file, which can be | | 7136 | <code class="filename">README.html</code> file, which can be |
7125 | viewed using a browser such as <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/firefox/README.html" target="_top"><code class="filename">www/firefox</code></a> or <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/links/README.html" target="_top"><code class="filename">www/links</code></a>. The generated files | | 7137 | viewed using a browser such as <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/firefox/README.html" target="_top"><code class="filename">www/firefox</code></a> or <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/links/README.html" target="_top"><code class="filename">www/links</code></a>. The generated files |
7126 | contain references to any packages which are in the | | 7138 | contain references to any packages which are in the |
7127 | <code class="varname">PACKAGES</code> directory on the local | | 7139 | <code class="varname">PACKAGES</code> directory on the local |
7128 | host. The generated files can be made to refer to URLs | | 7140 | host. The generated files can be made to refer to URLs |
7129 | based on <code class="varname">FTP_PKG_URL_HOST</code> and | | 7141 | based on <code class="varname">FTP_PKG_URL_HOST</code> and |
7130 | <code class="varname">FTP_PKG_URL_DIR</code>. For example, if I | | 7142 | <code class="varname">FTP_PKG_URL_DIR</code>. For example, if I |
7131 | wanted to generate <code class="filename">README.html</code> | | 7143 | wanted to generate <code class="filename">README.html</code> |
7132 | files which pointed to binary packages on the local | | 7144 | files which pointed to binary packages on the local |
7133 | machine, in the directory | | 7145 | machine, in the directory |
7134 | <code class="filename">/usr/packages</code>, set | | 7146 | <code class="filename">/usr/packages</code>, set |
7135 | <code class="varname">FTP_PKG_URL_HOST=file://localhost</code> and | | 7147 | <code class="varname">FTP_PKG_URL_HOST=file://localhost</code> and |
7136 | <code class="varname">FTP_PKG_URL_DIR=/usr/packages</code>. The | | 7148 | <code class="varname">FTP_PKG_URL_DIR=/usr/packages</code>. The |
7137 | <code class="varname">${PACKAGES}</code> directory and its | | 7149 | <code class="varname">${PACKAGES}</code> directory and its |
7138 | subdirectories will be searched for all the binary | | 7150 | subdirectories will be searched for all the binary |
7139 | packages.</p> | | 7151 | packages.</p> |
7140 | <p>The target can be run at the toplevel or in category | | 7152 | <p>The target can be run at the toplevel or in category |
7141 | directories, in which case it descends recursively.</p> | | 7153 | directories, in which case it descends recursively.</p> |
7142 | </dd> | | 7154 | </dd> |
7143 | <dt><span class="term">readme-all</span></dt> | | 7155 | <dt><span class="term">readme-all</span></dt> |
7144 | <dd><p>This is a top-level command, run it in | | 7156 | <dd><p>This is a top-level command, run it in |
7145 | <code class="filename">pkgsrc</code>. Use this target to create a | | 7157 | <code class="filename">pkgsrc</code>. Use this target to create a |
7146 | file <code class="filename">README-all.html</code> which contains a | | 7158 | file <code class="filename">README-all.html</code> which contains a |
7147 | list of all packages currently available in the NetBSD | | 7159 | list of all packages currently available in the NetBSD |
7148 | Packages Collection, together with the category they belong | | 7160 | Packages Collection, together with the category they belong |
7149 | to and a short description. This file is compiled from the | | 7161 | to and a short description. This file is compiled from the |
7150 | <code class="filename">pkgsrc/*/README.html</code> files, so be sure | | 7162 | <code class="filename">pkgsrc/*/README.html</code> files, so be sure |
7151 | to run this <span class="emphasis"><em>after</em></span> a <span class="command"><strong>make | | 7163 | to run this <span class="emphasis"><em>after</em></span> a <span class="command"><strong>make |
7152 | readme</strong></span>.</p></dd> | | 7164 | readme</strong></span>.</p></dd> |
7153 | <dt><span class="term">cdrom-readme</span></dt> | | 7165 | <dt><span class="term">cdrom-readme</span></dt> |
7154 | <dd><p>This is very much the same as the | | 7166 | <dd><p>This is very much the same as the |
7155 | <span class="quote">“<span class="quote">readme</span>”</span> target (see above), but is to be | | 7167 | <span class="quote">“<span class="quote">readme</span>”</span> target (see above), but is to be |
7156 | used when generating a pkgsrc tree to be written to a | | 7168 | used when generating a pkgsrc tree to be written to a |
7157 | CD-ROM. This target also produces | | 7169 | CD-ROM. This target also produces |
7158 | <code class="filename">README.html</code> files, and can be made | | 7170 | <code class="filename">README.html</code> files, and can be made |
7159 | to refer to URLs based on | | 7171 | to refer to URLs based on |
7160 | <code class="varname">CDROM_PKG_URL_HOST</code> and | | 7172 | <code class="varname">CDROM_PKG_URL_HOST</code> and |
7161 | <code class="varname">CDROM_PKG_URL_DIR</code>.</p></dd> | | 7173 | <code class="varname">CDROM_PKG_URL_DIR</code>.</p></dd> |
7162 | <dt><span class="term">show-distfiles</span></dt> | | 7174 | <dt><span class="term">show-distfiles</span></dt> |
7163 | <dd><p>This target shows which distfiles and patchfiles | | 7175 | <dd><p>This target shows which distfiles and patchfiles |
7164 | are needed to build the package | | 7176 | are needed to build the package |
7165 | (<code class="varname">ALLFILES</code>, which contains all | | 7177 | (<code class="varname">ALLFILES</code>, which contains all |
7166 | <code class="varname">DISTFILES</code> and | | 7178 | <code class="varname">DISTFILES</code> and |
7167 | <code class="varname">PATCHFILES</code>, but not | | 7179 | <code class="varname">PATCHFILES</code>, but not |
7168 | <code class="filename">patches/*</code>).</p></dd> | | 7180 | <code class="filename">patches/*</code>).</p></dd> |
7169 | <dt><span class="term">show-downlevel</span></dt> | | 7181 | <dt><span class="term">show-downlevel</span></dt> |
7170 | <dd><p>This target shows nothing if the package is not | | 7182 | <dd><p>This target shows nothing if the package is not |
7171 | installed. If a version of this package is installed, | | 7183 | installed. If a version of this package is installed, |
7172 | but is not the version provided in this version of | | 7184 | but is not the version provided in this version of |
7173 | pkgsrc, then a warning message is displayed. This target | | 7185 | pkgsrc, then a warning message is displayed. This target |
7174 | can be used to show which of your installed packages are | | 7186 | can be used to show which of your installed packages are |
7175 | downlevel, and so the old versions can be deleted, and | | 7187 | downlevel, and so the old versions can be deleted, and |
7176 | the current ones added.</p></dd> | | 7188 | the current ones added.</p></dd> |
7177 | <dt><span class="term">show-pkgsrc-dir</span></dt> | | 7189 | <dt><span class="term">show-pkgsrc-dir</span></dt> |
7178 | <dd><p>This target shows the directory in the pkgsrc | | 7190 | <dd><p>This target shows the directory in the pkgsrc |
7179 | hierarchy from which the package can be built and | | 7191 | hierarchy from which the package can be built and |
7180 | installed. This may not be the same directory as the one | | 7192 | installed. This may not be the same directory as the one |
7181 | from which the package was installed. This target is | | 7193 | from which the package was installed. This target is |
7182 | intended to be used by people who may wish to upgrade | | 7194 | intended to be used by people who may wish to upgrade |
7183 | many packages on a single host, and can be invoked from | | 7195 | many packages on a single host, and can be invoked from |
7184 | the top-level pkgsrc Makefile by using the | | 7196 | the top-level pkgsrc Makefile by using the |
7185 | <span class="quote">“<span class="quote">show-host-specific-pkgs</span>”</span> target.</p></dd> | | 7197 | <span class="quote">“<span class="quote">show-host-specific-pkgs</span>”</span> target.</p></dd> |
7186 | <dt><span class="term">show-installed-depends</span></dt> | | 7198 | <dt><span class="term">show-installed-depends</span></dt> |
7187 | <dd><p>This target shows which installed packages match | | 7199 | <dd><p>This target shows which installed packages match |
7188 | the current package's <code class="varname">DEPENDS</code>. Useful | | 7200 | the current package's <code class="varname">DEPENDS</code>. Useful |
7189 | if out of date dependencies are causing build | | 7201 | if out of date dependencies are causing build |
7190 | problems.</p></dd> | | 7202 | problems.</p></dd> |
7191 | <dt><span class="term">check-shlibs</span></dt> | | 7203 | <dt><span class="term">check-shlibs</span></dt> |
7192 | <dd><p>After a package is installed, check all its | | 7204 | <dd><p>After a package is installed, check all its |
7193 | binaries and (on ELF platforms) shared libraries to see | | 7205 | binaries and (on ELF platforms) shared libraries to see |
7194 | if they find the shared libs they need. Run by default | | 7206 | if they find the shared libs they need. Run by default |
7195 | if <code class="varname">PKG_DEVELOPER</code> is set in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p></dd> | | 7207 | if <code class="varname">PKG_DEVELOPER</code> is set in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p></dd> |
7196 | <dt><span class="term">print-PLIST</span></dt> | | 7208 | <dt><span class="term">print-PLIST</span></dt> |
7197 | <dd> | | 7209 | <dd> |
7198 | <p>After a <span class="quote">“<span class="quote">make install</span>”</span> from a new or | | 7210 | <p>After a <span class="quote">“<span class="quote">make install</span>”</span> from a new or |
7199 | upgraded pkg, this prints out an attempt to generate a | | 7211 | upgraded pkg, this prints out an attempt to generate a |
7200 | new <code class="filename">PLIST</code> from a <span class="command"><strong>find | | 7212 | new <code class="filename">PLIST</code> from a <span class="command"><strong>find |
7201 | -newer work/.extract_done</strong></span>. An attempt is made | | 7213 | -newer work/.extract_done</strong></span>. An attempt is made |
7202 | to care for shared libs etc., but it is | | 7214 | to care for shared libs etc., but it is |
7203 | <span class="emphasis"><em>strongly</em></span> recommended to review the | | 7215 | <span class="emphasis"><em>strongly</em></span> recommended to review the |
7204 | result before putting it into | | 7216 | result before putting it into |
7205 | <code class="filename">PLIST</code>. On upgrades, it's useful to | | 7217 | <code class="filename">PLIST</code>. On upgrades, it's useful to |
7206 | diff the output of this command against an already | | 7218 | diff the output of this command against an already |
7207 | existing <code class="filename">PLIST</code> file.</p> | | 7219 | existing <code class="filename">PLIST</code> file.</p> |
7208 | <p>If the package installs files via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?tar+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">tar</span>(1)</span></a> or | | 7220 | <p>If the package installs files via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?tar+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">tar</span>(1)</span></a> or |
7209 | other methods that don't update file access times, be | | 7221 | other methods that don't update file access times, be |
7210 | sure to add these files manually to your | | 7222 | sure to add these files manually to your |
7211 | <code class="filename">PLIST</code>, as the <span class="quote">“<span class="quote">find | | 7223 | <code class="filename">PLIST</code>, as the <span class="quote">“<span class="quote">find |
7212 | -newer</span>”</span> command used by this target won't catch | | 7224 | -newer</span>”</span> command used by this target won't catch |
7213 | them!</p> | | 7225 | them!</p> |
7214 | <p>See <a class="xref" href="#print-PLIST" title="13.3. Tweaking output of make print-PLIST">Section 13.3, “Tweaking output of <span class="command"><strong>make print-PLIST</strong></span>”</a> for more | | 7226 | <p>See <a class="xref" href="#print-PLIST" title="13.3. Tweaking output of make print-PLIST">Section 13.3, “Tweaking output of <span class="command"><strong>make print-PLIST</strong></span>”</a> for more |
7215 | information on this target.</p> | | 7227 | information on this target.</p> |
7216 | </dd> | | 7228 | </dd> |
7217 | <dt><span class="term">bulk-package</span></dt> | | 7229 | <dt><span class="term">bulk-package</span></dt> |
7218 | <dd> | | 7230 | <dd> |
7219 | <p>Used to do bulk builds. If an appropriate binary | | 7231 | <p>Used to do bulk builds. If an appropriate binary |
7220 | package already exists, no action is taken. If not, this | | 7232 | package already exists, no action is taken. If not, this |
7221 | target will compile, install and package it (and its | | 7233 | target will compile, install and package it (and its |
7222 | depends, if <code class="varname">PKG_DEPENDS</code> is set | | 7234 | depends, if <code class="varname">PKG_DEPENDS</code> is set |
7223 | properly. See <a class="xref" href="#bulk" title="Chapter 7. Creating binary packages for everything in pkgsrc (bulk builds)">Chapter 7, <i>Creating binary packages for everything in pkgsrc (bulk | | 7235 | properly. See <a class="xref" href="#bulk" title="Chapter 7. Creating binary packages for everything in pkgsrc (bulk builds)">Chapter 7, <i>Creating binary packages for everything in pkgsrc (bulk |
7224 | builds)</i></a>). | | 7236 | builds)</i></a>). |
7225 | After creating the binary package, the sources, the | | 7237 | After creating the binary package, the sources, the |
7226 | just-installed package and its required packages are | | 7238 | just-installed package and its required packages are |
7227 | removed, preserving free disk space.</p> | | 7239 | removed, preserving free disk space.</p> |
7228 | <p><span class="emphasis"><em>Beware that this target may deinstall | | 7240 | <p><span class="emphasis"><em>Beware that this target may deinstall |
7229 | all packages installed on a system!</em></span></p> | | 7241 | all packages installed on a system!</em></span></p> |
7230 | </dd> | | 7242 | </dd> |
7231 | <dt><span class="term">bulk-install</span></dt> | | 7243 | <dt><span class="term">bulk-install</span></dt> |
7232 | <dd> | | 7244 | <dd> |
7233 | <p>Used during bulk-installs to install required | | 7245 | <p>Used during bulk-installs to install required |
7234 | packages. If an up-to-date binary package is available, | | 7246 | packages. If an up-to-date binary package is available, |
7235 | it will be installed via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>. If not, | | 7247 | it will be installed via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>. If not, |
7236 | <span class="command"><strong>make bulk-package</strong></span> will be executed, | | 7248 | <span class="command"><strong>make bulk-package</strong></span> will be executed, |
7237 | but the installed binary won't be removed.</p> | | 7249 | but the installed binary won't be removed.</p> |
7238 | <p>A binary package is considered | | 7250 | <p>A binary package is considered |
7239 | <span class="quote">“<span class="quote">up-to-date</span>”</span> to be installed via | | 7251 | <span class="quote">“<span class="quote">up-to-date</span>”</span> to be installed via |
7240 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a> if:</p> | | 7252 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a> if:</p> |
7241 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 7253 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
7242 | <li class="listitem"><p>None of the package's files | | 7254 | <li class="listitem"><p>None of the package's files |
7243 | (<code class="filename">Makefile</code>, ...) were modified | | 7255 | (<code class="filename">Makefile</code>, ...) were modified |
7244 | since it was built.</p></li> | | 7256 | since it was built.</p></li> |
7245 | <li class="listitem"><p>None of the package's required (binary) | | 7257 | <li class="listitem"><p>None of the package's required (binary) |
7246 | packages were modified since it was built.</p></li> | | 7258 | packages were modified since it was built.</p></li> |
7247 | </ul></div> | | 7259 | </ul></div> |
7248 | <p><span class="emphasis"><em>Beware that this target may deinstall | | 7260 | <p><span class="emphasis"><em>Beware that this target may deinstall |
7249 | all packages installed on a system!</em></span></p> | | 7261 | all packages installed on a system!</em></span></p> |
7250 | </dd> | | 7262 | </dd> |
7251 | </dl></div> | | 7263 | </dl></div> |
7252 | </div> | | 7264 | </div> |
7253 | </div> | | 7265 | </div> |
7254 | <div class="chapter"> | | 7266 | <div class="chapter"> |
7255 | <div class="titlepage"><div><div><h2 class="title"> | | 7267 | <div class="titlepage"><div><div><h2 class="title"> |
7256 | <a name="tools"></a>Chapter 18. Tools needed for building or running</h2></div></div></div> | | 7268 | <a name="tools"></a>Chapter 18. Tools needed for building or running</h2></div></div></div> |
7257 | <div class="toc"> | | 7269 | <div class="toc"> |
7258 | <p><b>Table of Contents</b></p> | | 7270 | <p><b>Table of Contents</b></p> |
7259 | <dl> | | 7271 | <dl> |
7260 | <dt><span class="sect1"><a href="#pkgsrc-tools">18.1. Tools for pkgsrc builds</a></span></dt> | | 7272 | <dt><span class="sect1"><a href="#pkgsrc-tools">18.1. Tools for pkgsrc builds</a></span></dt> |
7261 | <dt><span class="sect1"><a href="#package-tools">18.2. Tools needed by packages</a></span></dt> | | 7273 | <dt><span class="sect1"><a href="#package-tools">18.2. Tools needed by packages</a></span></dt> |
7262 | <dt><span class="sect1"><a href="#platform-tools">18.3. Tools provided by platforms</a></span></dt> | | 7274 | <dt><span class="sect1"><a href="#platform-tools">18.3. Tools provided by platforms</a></span></dt> |
7263 | <dt><span class="sect1"><a href="#tools.questions">18.4. Questions regarding the tools</a></span></dt> | | 7275 | <dt><span class="sect1"><a href="#tools.questions">18.4. Questions regarding the tools</a></span></dt> |
7264 | </dl> | | 7276 | </dl> |
7265 | </div> | | 7277 | </div> |
7266 | <p>The <code class="varname">USE_TOOLS</code> definition is used both internally | | 7278 | <p>The <code class="varname">USE_TOOLS</code> definition is used both internally |
7267 | by pkgsrc and also for individual packages to define what commands | | 7279 | by pkgsrc and also for individual packages to define what commands |
7268 | are needed for building a package (like <code class="varname">BUILD_DEPENDS</code>) | | 7280 | are needed for building a package (like <code class="varname">BUILD_DEPENDS</code>) |
7269 | or for later run-time of an installed packaged (such as | | 7281 | or for later run-time of an installed packaged (such as |
7270 | <code class="varname">DEPENDS</code>). | | 7282 | <code class="varname">DEPENDS</code>). |
7271 | If the native system provides an adequate tool, then in many cases, a pkgsrc | | 7283 | If the native system provides an adequate tool, then in many cases, a pkgsrc |
7272 | package will not be used.</p> | | 7284 | package will not be used.</p> |
7273 | <p>When building a package, the replacement tools are | | 7285 | <p>When building a package, the replacement tools are |
7274 | made available in a directory (as symlinks or wrapper scripts) | | 7286 | made available in a directory (as symlinks or wrapper scripts) |
7275 | that is early in the executable search path. Just like the buildlink | | 7287 | that is early in the executable search path. Just like the buildlink |
7276 | system, this helps with consistent builds.</p> | | 7288 | system, this helps with consistent builds.</p> |
7277 | <p>A tool may be needed to help build a specific package. For example, | | 7289 | <p>A tool may be needed to help build a specific package. For example, |
7278 | perl, GNU make (gmake) or yacc may be needed.</p> | | 7290 | perl, GNU make (gmake) or yacc may be needed.</p> |
7279 | <p>Also a tool may be needed, for example, because the native system's supplied | | 7291 | <p>Also a tool may be needed, for example, because the native system's supplied |
7280 | tool may be inefficient for building a package with pkgsrc. | | 7292 | tool may be inefficient for building a package with pkgsrc. |
7281 | For example, a package may need GNU awk, bison (instead of | | 7293 | For example, a package may need GNU awk, bison (instead of |
7282 | yacc) or a better sed.</p> | | 7294 | yacc) or a better sed.</p> |
7283 | <p>The tools used by a package can be listed by running | | 7295 | <p>The tools used by a package can be listed by running |
7284 | <span class="command"><strong>make show-tools</strong></span>.</p> | | 7296 | <span class="command"><strong>make show-tools</strong></span>.</p> |
7285 | <div class="sect1"> | | 7297 | <div class="sect1"> |
7286 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 7298 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
7287 | <a name="pkgsrc-tools"></a>18.1. Tools for pkgsrc builds</h2></div></div></div> | | 7299 | <a name="pkgsrc-tools"></a>18.1. Tools for pkgsrc builds</h2></div></div></div> |
7288 | <p>The default set of tools used by pkgsrc is defined in | | 7300 | <p>The default set of tools used by pkgsrc is defined in |
7289 | <code class="filename">bsd.pkg.mk</code>. This includes standard Unix tools, | | 7301 | <code class="filename">bsd.pkg.mk</code>. This includes standard Unix tools, |
7290 | such as: <span class="command"><strong>cat</strong></span>, <span class="command"><strong>awk</strong></span>, | | 7302 | such as: <span class="command"><strong>cat</strong></span>, <span class="command"><strong>awk</strong></span>, |
7291 | <span class="command"><strong>chmod</strong></span>, <span class="command"><strong>test</strong></span>, and so on. | | 7303 | <span class="command"><strong>chmod</strong></span>, <span class="command"><strong>test</strong></span>, and so on. |
7292 | These can be seen by running: | | 7304 | These can be seen by running: |
7293 | <span class="command"><strong>make show-var VARNAME=USE_TOOLS</strong></span>.</p> | | 7305 | <span class="command"><strong>make show-var VARNAME=USE_TOOLS</strong></span>.</p> |
7294 | <p>If a package needs a specific program to build | | 7306 | <p>If a package needs a specific program to build |
7295 | then the <code class="varname">USE_TOOLS</code> variable can be used | | 7307 | then the <code class="varname">USE_TOOLS</code> variable can be used |
7296 | to define the tools needed.</p> | | 7308 | to define the tools needed.</p> |
7297 | </div> | | 7309 | </div> |
7298 | <div class="sect1"> | | 7310 | <div class="sect1"> |
7299 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 7311 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
7300 | <a name="package-tools"></a>18.2. Tools needed by packages</h2></div></div></div> | | 7312 | <a name="package-tools"></a>18.2. Tools needed by packages</h2></div></div></div> |
7301 | <p>In the following examples, the :run means that it is needed at | | 7313 | <p>In the following examples, the :run means that it is needed at |
7302 | run-time (and becomes a DEPENDS). | | 7314 | run-time (and becomes a DEPENDS). |
7303 | The default is a build dependency which can be set with | | 7315 | The default is a build dependency which can be set with |
7304 | :build. (So in this example, it is the same as gmake:build | | 7316 | :build. (So in this example, it is the same as gmake:build |
7305 | and pkg-config:build.)</p> | | 7317 | and pkg-config:build.)</p> |
7306 | <pre class="programlisting"> | | 7318 | <pre class="programlisting"> |
7307 | USE_TOOLS+= gmake perl:run pkg-config | | 7319 | USE_TOOLS+= gmake perl:run pkg-config |
7308 | </pre> | | 7320 | </pre> |
7309 | <p>When using the tools framework, a | | 7321 | <p>When using the tools framework, a |
7310 | <code class="varname">TOOLS_PATH.foo</code> variable is defined | | 7322 | <code class="varname">TOOLS_PATH.foo</code> variable is defined |
7311 | which contains the full path to the appropriate tool. For example, | | 7323 | which contains the full path to the appropriate tool. For example, |
7312 | <code class="varname">TOOLS_PATH.bash</code> could be <span class="quote">“<span class="quote">/bin/bash</span>”</span> | | 7324 | <code class="varname">TOOLS_PATH.bash</code> could be <span class="quote">“<span class="quote">/bin/bash</span>”</span> |
7313 | on Linux systems.</p> | | 7325 | on Linux systems.</p> |
7314 | <p>If you always need a pkgsrc version of the | | 7326 | <p>If you always need a pkgsrc version of the |
7315 | tool at run-time, then just use <code class="varname">DEPENDS</code> instead. | | 7327 | tool at run-time, then just use <code class="varname">DEPENDS</code> instead. |
7316 | </p> | | 7328 | </p> |
7317 | </div> | | 7329 | </div> |
7318 | <div class="sect1"> | | 7330 | <div class="sect1"> |
7319 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 7331 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
7320 | <a name="platform-tools"></a>18.3. Tools provided by platforms</h2></div></div></div> | | 7332 | <a name="platform-tools"></a>18.3. Tools provided by platforms</h2></div></div></div> |
7321 | <p>When improving or porting pkgsrc to a new platform, have a look | | 7333 | <p>When improving or porting pkgsrc to a new platform, have a look |
7322 | at (or create) the corresponding platform specific make file fragment under | | 7334 | at (or create) the corresponding platform specific make file fragment under |
7323 | <code class="filename">pkgsrc/mk/tools/tools.${OPSYS}.mk</code> which defines | | 7335 | <code class="filename">pkgsrc/mk/tools/tools.${OPSYS}.mk</code> which defines |
7324 | the name of the common tools. For example:</p> | | 7336 | the name of the common tools. For example:</p> |
7325 | <pre class="programlisting"> | | 7337 | <pre class="programlisting"> |
7326 | .if exists(/usr/bin/bzcat) | | 7338 | .if exists(/usr/bin/bzcat) |
7327 | TOOLS_PLATFORM.bzcat?= /usr/bin/bzcat | | 7339 | TOOLS_PLATFORM.bzcat?= /usr/bin/bzcat |
7328 | .elif exists(/usr/bin/bzip2) | | 7340 | .elif exists(/usr/bin/bzip2) |
7329 | TOOLS_PLATFORM.bzcat?= /usr/bin/bzip2 -cd | | 7341 | TOOLS_PLATFORM.bzcat?= /usr/bin/bzip2 -cd |
7330 | .endif | | 7342 | .endif |
7331 | | | 7343 | |
7332 | TOOLS_PLATFORM.true?= true # shell builtin | | 7344 | TOOLS_PLATFORM.true?= true # shell builtin |
7333 | </pre> | | 7345 | </pre> |
7334 | </div> | | 7346 | </div> |
7335 | <div class="sect1"> | | 7347 | <div class="sect1"> |
7336 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 7348 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
7337 | <a name="tools.questions"></a>18.4. Questions regarding the tools</h2></div></div></div> | | 7349 | <a name="tools.questions"></a>18.4. Questions regarding the tools</h2></div></div></div> |
7338 | <div class="qandaset"> | | 7350 | <div class="qandaset"> |
7339 | <a name="idm77719184"></a><dl> | | 7351 | <a name="idm77799312"></a><dl> |
7340 | <dt>18.4.1. <a href="#tools.new">How do I add a new tool?</a> | | 7352 | <dt>18.4.1. <a href="#tools.new">How do I add a new tool?</a> |
7341 | </dt> | | 7353 | </dt> |
7342 | <dt>18.4.2. <a href="#tools.listall">How do I get a list of all available | | 7354 | <dt>18.4.2. <a href="#tools.listall">How do I get a list of all available |
7343 | tools?</a> | | 7355 | tools?</a> |
7344 | </dt> | | 7356 | </dt> |
7345 | <dt>18.4.3. <a href="#tools.used">How can I get a list of all the tools that a | | 7357 | <dt>18.4.3. <a href="#tools.used">How can I get a list of all the tools that a |
7346 | package is using while being built? I want to know whether it | | 7358 | package is using while being built? I want to know whether it |
7347 | uses sed or not.</a> | | 7359 | uses sed or not.</a> |
7348 | </dt> | | 7360 | </dt> |
7349 | </dl> | | 7361 | </dl> |
7350 | <table border="0" style="width: 100%;"> | | 7362 | <table border="0" style="width: 100%;"> |
7351 | <colgroup> | | 7363 | <colgroup> |
7352 | <col align="left" width="1%"> | | 7364 | <col align="left" width="1%"> |
7353 | <col> | | 7365 | <col> |
7354 | </colgroup> | | 7366 | </colgroup> |
7355 | <tbody> | | 7367 | <tbody> |
7356 | <tr class="question"> | | 7368 | <tr class="question"> |
7357 | <td align="left" valign="top"> | | 7369 | <td align="left" valign="top"> |
7358 | <a name="tools.new"></a><a name="idm77718800"></a><p><b>18.4.1.</b></p> | | 7370 | <a name="tools.new"></a><a name="idm77798928"></a><p><b>18.4.1.</b></p> |
7359 | </td> | | 7371 | </td> |
7360 | <td align="left" valign="top"><p>How do I add a new tool?</p></td> | | 7372 | <td align="left" valign="top"><p>How do I add a new tool?</p></td> |
7361 | </tr> | | 7373 | </tr> |
7362 | <tr class="answer"> | | 7374 | <tr class="answer"> |
7363 | <td align="left" valign="top"></td> | | 7375 | <td align="left" valign="top"></td> |
7364 | <td align="left" valign="top"><p>TODO</p></td> | | 7376 | <td align="left" valign="top"><p>TODO</p></td> |
7365 | </tr> | | 7377 | </tr> |
7366 | <tr class="question"> | | 7378 | <tr class="question"> |
7367 | <td align="left" valign="top"> | | 7379 | <td align="left" valign="top"> |
7368 | <a name="tools.listall"></a><a name="idm77717776"></a><p><b>18.4.2.</b></p> | | 7380 | <a name="tools.listall"></a><a name="idm77797904"></a><p><b>18.4.2.</b></p> |
7369 | </td> | | 7381 | </td> |
7370 | <td align="left" valign="top"><p>How do I get a list of all available | | 7382 | <td align="left" valign="top"><p>How do I get a list of all available |
7371 | tools?</p></td> | | 7383 | tools?</p></td> |
7372 | </tr> | | 7384 | </tr> |
7373 | <tr class="answer"> | | 7385 | <tr class="answer"> |
7374 | <td align="left" valign="top"></td> | | 7386 | <td align="left" valign="top"></td> |
7375 | <td align="left" valign="top"><p>TODO</p></td> | | 7387 | <td align="left" valign="top"><p>TODO</p></td> |
7376 | </tr> | | 7388 | </tr> |
7377 | <tr class="question"> | | 7389 | <tr class="question"> |
7378 | <td align="left" valign="top"> | | 7390 | <td align="left" valign="top"> |
7379 | <a name="tools.used"></a><a name="idm77716752"></a><p><b>18.4.3.</b></p> | | 7391 | <a name="tools.used"></a><a name="idm77796752"></a><p><b>18.4.3.</b></p> |
7380 | </td> | | 7392 | </td> |
7381 | <td align="left" valign="top"><p>How can I get a list of all the tools that a | | 7393 | <td align="left" valign="top"><p>How can I get a list of all the tools that a |
7382 | package is using while being built? I want to know whether it | | 7394 | package is using while being built? I want to know whether it |
7383 | uses sed or not.</p></td> | | 7395 | uses sed or not.</p></td> |
7384 | </tr> | | 7396 | </tr> |
7385 | <tr class="answer"> | | 7397 | <tr class="answer"> |
7386 | <td align="left" valign="top"></td> | | 7398 | <td align="left" valign="top"></td> |
7387 | <td align="left" valign="top"><p>Currently, you can't. (TODO: But I want to be able | | 7399 | <td align="left" valign="top"><p>Currently, you can't. (TODO: But I want to be able |
7388 | to do it.)</p></td> | | 7400 | to do it.)</p></td> |
7389 | </tr> | | 7401 | </tr> |
7390 | </tbody> | | 7402 | </tbody> |
7391 | </table> | | 7403 | </table> |
7392 | </div> | | 7404 | </div> |
7393 | </div> | | 7405 | </div> |
7394 | </div> | | 7406 | </div> |
7395 | <div class="chapter"> | | 7407 | <div class="chapter"> |
7396 | <div class="titlepage"><div><div><h2 class="title"> | | 7408 | <div class="titlepage"><div><div><h2 class="title"> |
7397 | <a name="fixes"></a>Chapter 19. Making your package work</h2></div></div></div> | | 7409 | <a name="fixes"></a>Chapter 19. Making your package work</h2></div></div></div> |
7398 | <div class="toc"> | | 7410 | <div class="toc"> |
7399 | <p><b>Table of Contents</b></p> | | 7411 | <p><b>Table of Contents</b></p> |
7400 | <dl> | | 7412 | <dl> |
7401 | <dt><span class="sect1"><a href="#general-operation">19.1. General operation</a></span></dt> | | 7413 | <dt><span class="sect1"><a href="#general-operation">19.1. General operation</a></span></dt> |
7402 | <dd><dl> | | 7414 | <dd><dl> |
7403 | <dt><span class="sect2"><a href="#portability-of-packages">19.1.1. Portability of packages</a></span></dt> | | 7415 | <dt><span class="sect2"><a href="#portability-of-packages">19.1.1. Portability of packages</a></span></dt> |
7404 | <dt><span class="sect2"><a href="#pulling-vars-from-etc-mk.conf">19.1.2. How to pull in user-settable variables from <code class="filename">mk.conf</code></a></span></dt> | | 7416 | <dt><span class="sect2"><a href="#pulling-vars-from-etc-mk.conf">19.1.2. How to pull in user-settable variables from <code class="filename">mk.conf</code></a></span></dt> |
7405 | <dt><span class="sect2"><a href="#user-interaction">19.1.3. User interaction</a></span></dt> | | 7417 | <dt><span class="sect2"><a href="#user-interaction">19.1.3. User interaction</a></span></dt> |
7406 | <dt><span class="sect2"><a href="#handling-licenses">19.1.4. Handling licenses</a></span></dt> | | 7418 | <dt><span class="sect2"><a href="#handling-licenses">19.1.4. Handling licenses</a></span></dt> |
7407 | <dt><span class="sect2"><a href="#restricted-packages">19.1.5. Restricted packages</a></span></dt> | | 7419 | <dt><span class="sect2"><a href="#restricted-packages">19.1.5. Restricted packages</a></span></dt> |
7408 | <dt><span class="sect2"><a href="#dependencies">19.1.6. Handling dependencies</a></span></dt> | | 7420 | <dt><span class="sect2"><a href="#dependencies">19.1.6. Handling dependencies</a></span></dt> |
7409 | <dt><span class="sect2"><a href="#conflicts">19.1.7. Handling conflicts with other packages</a></span></dt> | | 7421 | <dt><span class="sect2"><a href="#conflicts">19.1.7. Handling conflicts with other packages</a></span></dt> |
7410 | <dt><span class="sect2"><a href="#not-building-packages">19.1.8. Packages that cannot or should not be built</a></span></dt> | | 7422 | <dt><span class="sect2"><a href="#not-building-packages">19.1.8. Packages that cannot or should not be built</a></span></dt> |
7411 | <dt><span class="sect2"><a href="#undeletable-packages">19.1.9. Packages which should not be deleted, once installed</a></span></dt> | | 7423 | <dt><span class="sect2"><a href="#undeletable-packages">19.1.9. Packages which should not be deleted, once installed</a></span></dt> |
7412 | <dt><span class="sect2"><a href="#security-handling">19.1.10. Handling packages with security problems</a></span></dt> | | 7424 | <dt><span class="sect2"><a href="#security-handling">19.1.10. Handling packages with security problems</a></span></dt> |
7413 | <dt><span class="sect2"><a href="#bumping-pkgrevision">19.1.11. How to handle incrementing versions when fixing an existing package</a></span></dt> | | 7425 | <dt><span class="sect2"><a href="#bumping-pkgrevision">19.1.11. How to handle incrementing versions when fixing an existing package</a></span></dt> |
7414 | <dt><span class="sect2"><a href="#fixes.subst">19.1.12. Substituting variable text in the package files (the SUBST framework)</a></span></dt> | | 7426 | <dt><span class="sect2"><a href="#fixes.subst">19.1.12. Substituting variable text in the package files (the SUBST framework)</a></span></dt> |
7415 | </dl></dd> | | 7427 | </dl></dd> |
7416 | <dt><span class="sect1"><a href="#fixes.fetch">19.2. Fixing problems in the <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> | | 7428 | <dt><span class="sect1"><a href="#fixes.fetch">19.2. Fixing problems in the <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> |
7417 | <dd><dl> | | 7429 | <dd><dl> |
7418 | <dt><span class="sect2"><a href="#no-plain-download">19.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> | | 7430 | <dt><span class="sect2"><a href="#no-plain-download">19.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> |
7419 | <dt><span class="sect2"><a href="#modified-distfiles-same-name">19.2.2. How to handle modified distfiles with the 'old' name</a></span></dt> | | 7431 | <dt><span class="sect2"><a href="#modified-distfiles-same-name">19.2.2. How to handle modified distfiles with the 'old' name</a></span></dt> |
7420 | </dl></dd> | | 7432 | </dl></dd> |
7421 | <dt><span class="sect1"><a href="#fixes.configure">19.3. Fixing problems in the <span class="emphasis"><em>configure</em></span> phase</a></span></dt> | | 7433 | <dt><span class="sect1"><a href="#fixes.configure">19.3. Fixing problems in the <span class="emphasis"><em>configure</em></span> phase</a></span></dt> |
7422 | <dd><dl> | | 7434 | <dd><dl> |
7423 | <dt><span class="sect2"><a href="#fixes.libtool">19.3.1. Shared libraries - libtool</a></span></dt> | | 7435 | <dt><span class="sect2"><a href="#fixes.libtool">19.3.1. Shared libraries - libtool</a></span></dt> |
7424 | <dt><span class="sect2"><a href="#using-libtool">19.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> | | 7436 | <dt><span class="sect2"><a href="#using-libtool">19.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> |
7425 | <dt><span class="sect2"><a href="#autoconf-automake">19.3.3. GNU Autoconf/Automake</a></span></dt> | | 7437 | <dt><span class="sect2"><a href="#autoconf-automake">19.3.3. GNU Autoconf/Automake</a></span></dt> |
7426 | </dl></dd> | | 7438 | </dl></dd> |
7427 | <dt><span class="sect1"><a href="#programming-languages">19.4. Programming languages</a></span></dt> | | 7439 | <dt><span class="sect1"><a href="#programming-languages">19.4. Programming languages</a></span></dt> |
7428 | <dd><dl> | | 7440 | <dd><dl> |
7429 | <dt><span class="sect2"><a href="#basic-programming-languages">19.4.1. C, C++, and Fortran</a></span></dt> | | 7441 | <dt><span class="sect2"><a href="#basic-programming-languages">19.4.1. C, C++, and Fortran</a></span></dt> |
7430 | <dt><span class="sect2"><a href="#java-programming-language">19.4.2. Java</a></span></dt> | | 7442 | <dt><span class="sect2"><a href="#java-programming-language">19.4.2. Java</a></span></dt> |
7431 | <dt><span class="sect2"><a href="#perl-scripts">19.4.3. Packages containing perl scripts</a></span></dt> | | 7443 | <dt><span class="sect2"><a href="#perl-scripts">19.4.3. Packages containing perl scripts</a></span></dt> |
7432 | <dt><span class="sect2"><a href="#shell-scripts">19.4.4. Packages containing shell scripts</a></span></dt> | | 7444 | <dt><span class="sect2"><a href="#shell-scripts">19.4.4. Packages containing shell scripts</a></span></dt> |
7433 | <dt><span class="sect2"><a href="#other-programming-languages">19.4.5. Other programming languages</a></span></dt> | | 7445 | <dt><span class="sect2"><a href="#other-programming-languages">19.4.5. Other programming languages</a></span></dt> |
7434 | </dl></dd> | | 7446 | </dl></dd> |
7435 | <dt><span class="sect1"><a href="#fixes.build">19.5. Fixing problems in the <span class="emphasis"><em>build</em></span> phase</a></span></dt> | | 7447 | <dt><span class="sect1"><a href="#fixes.build">19.5. Fixing problems in the <span class="emphasis"><em>build</em></span> phase</a></span></dt> |
7436 | <dd><dl> | | 7448 | <dd><dl> |
7437 | <dt><span class="sect2"><a href="#fixes.build.cpp">19.5.1. Compiling C and C++ code conditionally</a></span></dt> | | 7449 | <dt><span class="sect2"><a href="#fixes.build.cpp">19.5.1. Compiling C and C++ code conditionally</a></span></dt> |
7438 | <dt><span class="sect2"><a href="#compiler-bugs">19.5.2. How to handle compiler bugs</a></span></dt> | | 7450 | <dt><span class="sect2"><a href="#compiler-bugs">19.5.2. How to handle compiler bugs</a></span></dt> |
7439 | <dt><span class="sect2"><a href="#undefined-reference">19.5.3. Undefined reference to <span class="quote">“<span class="quote">...</span>”</span></a></span></dt> | | 7451 | <dt><span class="sect2"><a href="#undefined-reference">19.5.3. Undefined reference to <span class="quote">“<span class="quote">...</span>”</span></a></span></dt> |
7440 | <dt><span class="sect2"><a href="#out-of-memory">19.5.4. Running out of memory</a></span></dt> | | 7452 | <dt><span class="sect2"><a href="#out-of-memory">19.5.4. Running out of memory</a></span></dt> |
7441 | </dl></dd> | | 7453 | </dl></dd> |
7442 | <dt><span class="sect1"><a href="#fixes.install">19.6. Fixing problems in the <span class="emphasis"><em>install</em></span> phase</a></span></dt> | | 7454 | <dt><span class="sect1"><a href="#fixes.install">19.6. Fixing problems in the <span class="emphasis"><em>install</em></span> phase</a></span></dt> |
7443 | <dd><dl> | | 7455 | <dd><dl> |
7444 | <dt><span class="sect2"><a href="#install-scripts">19.6.1. Creating needed directories</a></span></dt> | | 7456 | <dt><span class="sect2"><a href="#install-scripts">19.6.1. Creating needed directories</a></span></dt> |
7445 | <dt><span class="sect2"><a href="#where-to-install-documentation">19.6.2. Where to install documentation</a></span></dt> | | 7457 | <dt><span class="sect2"><a href="#where-to-install-documentation">19.6.2. Where to install documentation</a></span></dt> |
7446 | <dt><span class="sect2"><a href="#installing-score-files">19.6.3. Installing highscore files</a></span></dt> | | 7458 | <dt><span class="sect2"><a href="#installing-score-files">19.6.3. Installing highscore files</a></span></dt> |
7447 | <dt><span class="sect2"><a href="#destdir-support">19.6.4. Adding DESTDIR support to packages</a></span></dt> | | 7459 | <dt><span class="sect2"><a href="#destdir-support">19.6.4. Adding DESTDIR support to packages</a></span></dt> |
7448 | <dt><span class="sect2"><a href="#hardcoded-paths">19.6.5. Packages with hardcoded paths to other interpreters</a></span></dt> | | 7460 | <dt><span class="sect2"><a href="#hardcoded-paths">19.6.5. Packages with hardcoded paths to other interpreters</a></span></dt> |
7449 | <dt><span class="sect2"><a href="#perl-modules">19.6.6. Packages installing perl modules</a></span></dt> | | 7461 | <dt><span class="sect2"><a href="#perl-modules">19.6.6. Packages installing perl modules</a></span></dt> |
7450 | <dt><span class="sect2"><a href="#faq.info-files">19.6.7. Packages installing info files</a></span></dt> | | 7462 | <dt><span class="sect2"><a href="#faq.info-files">19.6.7. Packages installing info files</a></span></dt> |
7451 | <dt><span class="sect2"><a href="#manpages">19.6.8. Packages installing man pages</a></span></dt> | | 7463 | <dt><span class="sect2"><a href="#manpages">19.6.8. Packages installing man pages</a></span></dt> |
7452 | <dt><span class="sect2"><a href="#gconf-data-files">19.6.9. Packages installing GConf data files</a></span></dt> | | 7464 | <dt><span class="sect2"><a href="#gconf-data-files">19.6.9. Packages installing GConf data files</a></span></dt> |
7453 | <dt><span class="sect2"><a href="#scrollkeeper-data-files">19.6.10. Packages installing scrollkeeper/rarian data files</a></span></dt> | | 7465 | <dt><span class="sect2"><a href="#scrollkeeper-data-files">19.6.10. Packages installing scrollkeeper/rarian data files</a></span></dt> |
7454 | <dt><span class="sect2"><a href="#x11-fonts">19.6.11. Packages installing X11 fonts</a></span></dt> | | 7466 | <dt><span class="sect2"><a href="#x11-fonts">19.6.11. Packages installing X11 fonts</a></span></dt> |
7455 | <dt><span class="sect2"><a href="#gtk2-modules">19.6.12. Packages installing GTK2 modules</a></span></dt> | | 7467 | <dt><span class="sect2"><a href="#gtk2-modules">19.6.12. Packages installing GTK2 modules</a></span></dt> |
7456 | <dt><span class="sect2"><a href="#sgml-xml-data">19.6.13. Packages installing SGML or XML data</a></span></dt> | | 7468 | <dt><span class="sect2"><a href="#sgml-xml-data">19.6.13. Packages installing SGML or XML data</a></span></dt> |
7457 | <dt><span class="sect2"><a href="#mime-database">19.6.14. Packages installing extensions to the MIME database</a></span></dt> | | 7469 | <dt><span class="sect2"><a href="#mime-database">19.6.14. Packages installing extensions to the MIME database</a></span></dt> |
7458 | <dt><span class="sect2"><a href="#intltool">19.6.15. Packages using intltool</a></span></dt> | | 7470 | <dt><span class="sect2"><a href="#intltool">19.6.15. Packages using intltool</a></span></dt> |
7459 | <dt><span class="sect2"><a href="#startup-scripts">19.6.16. Packages installing startup scripts</a></span></dt> | | 7471 | <dt><span class="sect2"><a href="#startup-scripts">19.6.16. Packages installing startup scripts</a></span></dt> |
7460 | <dt><span class="sect2"><a href="#tex-packages">19.6.17. Packages installing TeX modules</a></span></dt> | | 7472 | <dt><span class="sect2"><a href="#tex-packages">19.6.17. Packages installing TeX modules</a></span></dt> |
7461 | <dt><span class="sect2"><a href="#emulation-packages">19.6.18. Packages supporting running binaries in | | 7473 | <dt><span class="sect2"><a href="#emulation-packages">19.6.18. Packages supporting running binaries in |
7462 | emulation</a></span></dt> | | 7474 | emulation</a></span></dt> |
7463 | <dt><span class="sect2"><a href="#hicolor-theme">19.6.19. Packages installing hicolor theme icons</a></span></dt> | | 7475 | <dt><span class="sect2"><a href="#hicolor-theme">19.6.19. Packages installing hicolor theme icons</a></span></dt> |
7464 | <dt><span class="sect2"><a href="#desktop-files">19.6.20. Packages installing desktop files</a></span></dt> | | 7476 | <dt><span class="sect2"><a href="#desktop-files">19.6.20. Packages installing desktop files</a></span></dt> |
7465 | </dl></dd> | | 7477 | </dl></dd> |
7466 | <dt><span class="sect1"><a href="#punting">19.7. Marking packages as having problems</a></span></dt> | | 7478 | <dt><span class="sect1"><a href="#punting">19.7. Marking packages as having problems</a></span></dt> |
7467 | </dl> | | 7479 | </dl> |
7468 | </div> | | 7480 | </div> |
7469 | <div class="sect1"> | | 7481 | <div class="sect1"> |
7470 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 7482 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
7471 | <a name="general-operation"></a>19.1. General operation</h2></div></div></div> | | 7483 | <a name="general-operation"></a>19.1. General operation</h2></div></div></div> |
7472 | <div class="sect2"> | | 7484 | <div class="sect2"> |
7473 | <div class="titlepage"><div><div><h3 class="title"> | | 7485 | <div class="titlepage"><div><div><h3 class="title"> |
7474 | <a name="portability-of-packages"></a>19.1.1. Portability of packages</h3></div></div></div> | | 7486 | <a name="portability-of-packages"></a>19.1.1. Portability of packages</h3></div></div></div> |
7475 | <p>One appealing feature of pkgsrc is that it runs on many | | 7487 | <p>One appealing feature of pkgsrc is that it runs on many |
7476 | different platforms. As a result, it is important to ensure, | | 7488 | different platforms. As a result, it is important to ensure, |
7477 | where possible, that packages in pkgsrc are portable. This | | 7489 | where possible, that packages in pkgsrc are portable. This |
7478 | chapter mentions some particular details you should pay | | 7490 | chapter mentions some particular details you should pay |
7479 | attention to while working on pkgsrc.</p> | | 7491 | attention to while working on pkgsrc.</p> |
7480 | </div> | | 7492 | </div> |
7481 | <div class="sect2"> | | 7493 | <div class="sect2"> |
7482 | <div class="titlepage"><div><div><h3 class="title"> | | 7494 | <div class="titlepage"><div><div><h3 class="title"> |
7483 | <a name="pulling-vars-from-etc-mk.conf"></a>19.1.2. How to pull in user-settable variables from <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> | | 7495 | <a name="pulling-vars-from-etc-mk.conf"></a>19.1.2. How to pull in user-settable variables from <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> |
7484 | </h3></div></div></div> | | 7496 | </h3></div></div></div> |
7485 | <p>The pkgsrc user can configure pkgsrc by overriding several | | 7497 | <p>The pkgsrc user can configure pkgsrc by overriding several |
7486 | variables in the file pointed to by <code class="varname">MAKECONF</code>, | | 7498 | variables in the file pointed to by <code class="varname">MAKECONF</code>, |
7487 | which is <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> by default. When you | | 7499 | which is <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> by default. When you |
7488 | want to use those variables in the preprocessor directives of | | 7500 | want to use those variables in the preprocessor directives of |
7489 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> (for example <code class="literal">.if</code> or | | 7501 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> (for example <code class="literal">.if</code> or |
7490 | <code class="literal">.for</code>), you need to include the file | | 7502 | <code class="literal">.for</code>), you need to include the file |
7491 | <code class="filename">../../mk/bsd.prefs.mk</code> before, which in turn | | 7503 | <code class="filename">../../mk/bsd.prefs.mk</code> before, which in turn |
7492 | loads the user preferences.</p> | | 7504 | loads the user preferences.</p> |
7493 | <p>But note that some variables may not be completely defined | | 7505 | <p>But note that some variables may not be completely defined |
7494 | after <code class="filename">../../mk/bsd.prefs.mk</code> has been | | 7506 | after <code class="filename">../../mk/bsd.prefs.mk</code> has been |
7495 | included, as they may contain references to variables that are | | 7507 | included, as they may contain references to variables that are |
7496 | not yet defined. In shell commands this is no problem, since | | 7508 | not yet defined. In shell commands this is no problem, since |
7497 | variables are actually macros, which are only expanded when they | | 7509 | variables are actually macros, which are only expanded when they |
7498 | are used. But in the preprocessor directives mentioned above and | | 7510 | are used. But in the preprocessor directives mentioned above and |
7499 | in dependency lines (of the form <code class="literal">target: | | 7511 | in dependency lines (of the form <code class="literal">target: |
7500 | dependencies</code>) the variables are expanded at load | | 7512 | dependencies</code>) the variables are expanded at load |
7501 | time.</p> | | 7513 | time.</p> |
7502 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 7514 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
7503 | <h3 class="title">Note</h3> | | 7515 | <h3 class="title">Note</h3> |
7504 | <p>Currently there is no exhaustive list of all | | 7516 | <p>Currently there is no exhaustive list of all |
7505 | variables that tells you whether they can be used at load time | | 7517 | variables that tells you whether they can be used at load time |
7506 | or only at run time, but it is in preparation.</p> | | 7518 | or only at run time, but it is in preparation.</p> |
7507 | </div> | | 7519 | </div> |
7508 | </div> | | 7520 | </div> |
7509 | <div class="sect2"> | | 7521 | <div class="sect2"> |
7510 | <div class="titlepage"><div><div><h3 class="title"> | | 7522 | <div class="titlepage"><div><div><h3 class="title"> |
7511 | <a name="user-interaction"></a>19.1.3. User interaction</h3></div></div></div> | | 7523 | <a name="user-interaction"></a>19.1.3. User interaction</h3></div></div></div> |
7512 | <p>Occasionally, packages require interaction from the user, | | 7524 | <p>Occasionally, packages require interaction from the user, |
7513 | and this can be in a number of ways:</p> | | 7525 | and this can be in a number of ways:</p> |
7514 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 7526 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
7515 | <li class="listitem"><p>When fetching the distfiles, some packages require user | | 7527 | <li class="listitem"><p>When fetching the distfiles, some packages require user |
7516 | interaction such as entering username/password or accepting a | | 7528 | interaction such as entering username/password or accepting a |
7517 | license on a web page.</p></li> | | 7529 | license on a web page.</p></li> |
7518 | <li class="listitem"><p>When extracting the distfiles, some packages may ask for | | 7530 | <li class="listitem"><p>When extracting the distfiles, some packages may ask for |
7519 | passwords.</p></li> | | 7531 | passwords.</p></li> |
7520 | <li class="listitem"><p>help to configure the package before it is built</p></li> | | 7532 | <li class="listitem"><p>help to configure the package before it is built</p></li> |
7521 | <li class="listitem"><p>help during the build process</p></li> | | 7533 | <li class="listitem"><p>help during the build process</p></li> |
7522 | <li class="listitem"><p>help during the installation of a package</p></li> | | 7534 | <li class="listitem"><p>help during the installation of a package</p></li> |
7523 | </ul></div> | | 7535 | </ul></div> |
7524 | <p>The <code class="varname">INTERACTIVE_STAGE</code> definition is | | 7536 | <p>The <code class="varname">INTERACTIVE_STAGE</code> definition is |
7525 | provided to notify the pkgsrc mechanism of an interactive stage | | 7537 | provided to notify the pkgsrc mechanism of an interactive stage |
7526 | which will be needed, and this should be set in the package's | | 7538 | which will be needed, and this should be set in the package's |
7527 | <code class="filename">Makefile</code>, e.g.:</p> | | 7539 | <code class="filename">Makefile</code>, e.g.:</p> |
7528 | <pre class="programlisting"> | | 7540 | <pre class="programlisting"> |
7529 | INTERACTIVE_STAGE= build | | 7541 | INTERACTIVE_STAGE= build |
7530 | </pre> | | 7542 | </pre> |
7531 | <p>Multiple interactive stages can be specified:</p> | | 7543 | <p>Multiple interactive stages can be specified:</p> |
7532 | <pre class="programlisting"> | | 7544 | <pre class="programlisting"> |
7533 | INTERACTIVE_STAGE= configure install | | 7545 | INTERACTIVE_STAGE= configure install |
7534 | </pre> | | 7546 | </pre> |
7535 | <p>The user can then decide to skip this package by setting the | | 7547 | <p>The user can then decide to skip this package by setting the |
7536 | <code class="varname">BATCH</code> variable.</p> | | 7548 | <code class="varname">BATCH</code> variable.</p> |
7537 | </div> | | 7549 | </div> |
7538 | <div class="sect2"> | | 7550 | <div class="sect2"> |
7539 | <div class="titlepage"><div><div><h3 class="title"> | | 7551 | <div class="titlepage"><div><div><h3 class="title"> |
7540 | <a name="handling-licenses"></a>19.1.4. Handling licenses</h3></div></div></div> | | 7552 | <a name="handling-licenses"></a>19.1.4. Handling licenses</h3></div></div></div> |
7541 | <p>Authors of software can choose the licence under which | | 7553 | <p>Authors of software can choose the licence under which |
7542 | software can be copied. This is due to copyright law, and reasons | | 7554 | software can be copied. This is due to copyright law, and reasons |
7543 | for license choices are outside the scope of pkgsrc. The pkgsrc | | 7555 | for license choices are outside the scope of pkgsrc. The pkgsrc |
7544 | system recognizes that there are a number of licenses which some | | 7556 | system recognizes that there are a number of licenses which some |
7545 | users may find objectionable or difficult or impossible to comply | | 7557 | users may find objectionable or difficult or impossible to comply |
7546 | with. The Free Software Foundation has declared some licenses | | 7558 | with. The Free Software Foundation has declared some licenses |
7547 | "Free", and the Open Source Initiative has a definition of "Open | | 7559 | "Free", and the Open Source Initiative has a definition of "Open |
7548 | Source". The pkgsrc system, as a policy choice, does not label | | 7560 | Source". The pkgsrc system, as a policy choice, does not label |
7549 | packages which have licenses that are Free or Open Source. | | 7561 | packages which have licenses that are Free or Open Source. |
7550 | However, packages without a license meeting either of those tests | | 7562 | However, packages without a license meeting either of those tests |
7551 | are labeled with a license tag denoting the license. Note that a | | 7563 | are labeled with a license tag denoting the license. Note that a |
7552 | package with no license to copy trivially does not meet either the | | 7564 | package with no license to copy trivially does not meet either the |
7553 | Free or Open Source test.</p> | | 7565 | Free or Open Source test.</p> |
7554 | <p>For packages which are not Free or Open Source, pkgsrc will | | 7566 | <p>For packages which are not Free or Open Source, pkgsrc will |
7555 | not build the package unless the user has indicated to pkgsrc that | | 7567 | not build the package unless the user has indicated to pkgsrc that |
7556 | packages with that particular license may be built. Note that | | 7568 | packages with that particular license may be built. Note that |
7557 | this documentation avoids the term "accepted the license". The | | 7569 | this documentation avoids the term "accepted the license". The |
7558 | pkgsrc system is merely providing a mechanism to avoid | | 7570 | pkgsrc system is merely providing a mechanism to avoid |
7559 | accidentally building a package with a non-free license; | | 7571 | accidentally building a package with a non-free license; |
7560 | judgement and responsibility remain with the user. (Installation | | 7572 | judgement and responsibility remain with the user. (Installation |
7561 | of binary packages are not currently subject to this mechanism; | | 7573 | of binary packages are not currently subject to this mechanism; |
7562 | this is a bug.)</p> | | 7574 | this is a bug.)</p> |
7563 | <p>One might want to only install packages with a BSD license, | | 7575 | <p>One might want to only install packages with a BSD license, |
7564 | or the GPL, and not the other. The free licenses are added to the | | 7576 | or the GPL, and not the other. The free licenses are added to the |
7565 | default <code class="varname">ACCEPTABLE_LICENSES</code> variable. The | | 7577 | default <code class="varname">ACCEPTABLE_LICENSES</code> variable. The |
7566 | user can override the default by setting the | | 7578 | user can override the default by setting the |
7567 | <code class="varname">ACCEPTABLE_LICENSES</code> variable with "=" instead | | 7579 | <code class="varname">ACCEPTABLE_LICENSES</code> variable with "=" instead |
7568 | of "+=". The licenses accepted by default are: | | 7580 | of "+=". The licenses accepted by default are: |
7569 | </p> | | 7581 | </p> |
7570 | <pre class="programlisting"> | | 7582 | <pre class="programlisting"> |
7571 | apache-1.1 apache-2.0 | | 7583 | apache-1.1 apache-2.0 |
7572 | arphic-public | | 7584 | arphic-public |
7573 | artistic artistic-2.0 | | 7585 | artistic artistic-2.0 |
7574 | boost-license | | 7586 | boost-license |
7575 | cc-by-sa-v3.0 | | 7587 | cc-by-sa-v3.0 |
7576 | cc0-1.0-universal | | 7588 | cc0-1.0-universal |
7577 | cddl-1.0 | | 7589 | cddl-1.0 |
7578 | cpl-1.0 | | 7590 | cpl-1.0 |
7579 | epl-v1.0 | | 7591 | epl-v1.0 |
7580 | gnu-fdl-v1.1 gnu-fdl-v1.2 gnu-fdl-v1.3 | | 7592 | gnu-fdl-v1.1 gnu-fdl-v1.2 gnu-fdl-v1.3 |
7581 | gnu-gpl-v1 | | 7593 | gnu-gpl-v1 |
7582 | gnu-gpl-v2 gnu-lgpl-v2 gnu-lgpl-v2.1 | | 7594 | gnu-gpl-v2 gnu-lgpl-v2 gnu-lgpl-v2.1 |
7583 | gnu-gpl-v3 gnu-lgpl-v3 | | 7595 | gnu-gpl-v3 gnu-lgpl-v3 |
7584 | ibm-public-license-1.0 | | 7596 | ibm-public-license-1.0 |
7585 | ipafont | | 7597 | ipafont |
7586 | isc | | 7598 | isc |
7587 | lppl-1.3c | | 7599 | lppl-1.3c |
7588 | lucent | | 7600 | lucent |
7589 | miros | | 7601 | miros |
7590 | mit | | 7602 | mit |
7591 | mpl-1.0 mpl-1.1 mpl-2.0 | | 7603 | mpl-1.0 mpl-1.1 mpl-2.0 |
7592 | mplusfont | | 7604 | mplusfont |
7593 | ofl-v1.0 ofl-v1.1 | | 7605 | ofl-v1.0 ofl-v1.1 |
7594 | original-bsd modified-bsd 2-clause-bsd | | 7606 | original-bsd modified-bsd 2-clause-bsd |
7595 | php | | 7607 | php |
7596 | png-license | | 7608 | png-license |
7597 | postgresql-license | | 7609 | postgresql-license |
7598 | public-domain | | 7610 | public-domain |
7599 | python-software-foundation | | 7611 | python-software-foundation |
7600 | qpl-v1.0 | | 7612 | qpl-v1.0 |
7601 | sgi-free-software-b-v2.0 | | 7613 | sgi-free-software-b-v2.0 |
7602 | sleepycat-public | | 7614 | sleepycat-public |
7603 | unlicense | | 7615 | unlicense |
7604 | x11 | | 7616 | x11 |
7605 | zlib | | 7617 | zlib |
7606 | zpl | | 7618 | zpl |
7607 | </pre> | | 7619 | </pre> |
7608 | <p> | | 7620 | <p> |
7609 | </p> | | 7621 | </p> |
7610 | <p>The license tag mechanism is intended to address | | 7622 | <p>The license tag mechanism is intended to address |
7611 | copyright-related issues surrounding building, installing and | | 7623 | copyright-related issues surrounding building, installing and |
7612 | using a package, and not to address redistribution issues (see | | 7624 | using a package, and not to address redistribution issues (see |
7613 | <code class="varname">RESTRICTED</code> and | | 7625 | <code class="varname">RESTRICTED</code> and |
7614 | <code class="varname">NO_SRC_ON_FTP</code>, etc.). | | 7626 | <code class="varname">NO_SRC_ON_FTP</code>, etc.). |
7615 | Packages with redistribution restrictions should set these | | 7627 | Packages with redistribution restrictions should set these |
7616 | tags.</p> | | 7628 | tags.</p> |
7617 | <p>Denoting that a package may be copied according to a | | 7629 | <p>Denoting that a package may be copied according to a |
7618 | particular license is done by placing the license in | | 7630 | particular license is done by placing the license in |
7619 | <code class="filename">pkgsrc/licenses</code> and setting the | | 7631 | <code class="filename">pkgsrc/licenses</code> and setting the |
7620 | <code class="varname">LICENSE</code> variable to a string identifying the | | 7632 | <code class="varname">LICENSE</code> variable to a string identifying the |
7621 | license, e.g. in <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/graphics/xv/README.html" target="_top"><code class="filename">graphics/xv</code></a>:</p> | | 7633 | license, e.g. in <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/graphics/xv/README.html" target="_top"><code class="filename">graphics/xv</code></a>:</p> |
7622 | <pre class="programlisting"> | | 7634 | <pre class="programlisting"> |
7623 | LICENSE= xv-license | | 7635 | LICENSE= xv-license |
7624 | </pre> | | 7636 | </pre> |
7625 | <p>When trying to build, the user will get a notice that the | | 7637 | <p>When trying to build, the user will get a notice that the |
7626 | package is covered by a license which has not been placed in the | | 7638 | package is covered by a license which has not been placed in the |
7627 | <code class="varname">ACCEPTABLE_LICENSES</code> variable:</p> | | 7639 | <code class="varname">ACCEPTABLE_LICENSES</code> variable:</p> |
7628 | <pre class="programlisting"> | | 7640 | <pre class="programlisting"> |
7629 | <code class="prompt">%</code> <strong class="userinput"><code>make</code></strong> | | 7641 | <code class="prompt">%</code> <strong class="userinput"><code>make</code></strong> |
7630 | ===> xv-3.10anb9 has an unacceptable license: xv-license. | | 7642 | ===> xv-3.10anb9 has an unacceptable license: xv-license. |
7631 | ===> To view the license, enter "/usr/bin/make show-license". | | 7643 | ===> To view the license, enter "/usr/bin/make show-license". |
7632 | ===> To indicate acceptance, add this line to your /etc/mk.conf: | | 7644 | ===> To indicate acceptance, add this line to your /etc/mk.conf: |
7633 | ===> ACCEPTABLE_LICENSES+=xv-license | | 7645 | ===> ACCEPTABLE_LICENSES+=xv-license |
7634 | *** Error code 1 | | 7646 | *** Error code 1 |
7635 | </pre> | | 7647 | </pre> |
7636 | <p>The license can be viewed with <span class="command"><strong>make | | 7648 | <p>The license can be viewed with <span class="command"><strong>make |
7637 | show-license</strong></span>, and if the user so chooses, the line | | 7649 | show-license</strong></span>, and if the user so chooses, the line |
7638 | printed above can be added to <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to | | 7650 | printed above can be added to <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to |
7639 | convey to pkgsrc that it should not in the future fail because of | | 7651 | convey to pkgsrc that it should not in the future fail because of |
7640 | that license:</p> | | 7652 | that license:</p> |
7641 | <pre class="programlisting"> | | 7653 | <pre class="programlisting"> |
7642 | ACCEPTABLE_LICENSES+=xv-license | | 7654 | ACCEPTABLE_LICENSES+=xv-license |
7643 | </pre> | | 7655 | </pre> |
7644 | <p>When adding a package with a new license, the following steps | | 7656 | <p>When adding a package with a new license, the following steps |
7645 | are required:</p> | | 7657 | are required:</p> |
7646 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 7658 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
7647 | <li class="listitem"> | | 7659 | <li class="listitem"> |
7648 | <p>Check if the file can avoid the -license filename tag as described above by referencing <a class="ulink" href="http://www.gnu.org/licenses/license-list.html" target="_top">Various Licenses and Comments about Them</a> and <a class="ulink" href="http://opensource.org/licenses/alphabetical" target="_top">Licenses by Name | Open Source Initiative</a>. If this is the case, additionally add the license filename to:</p> | | 7660 | <p>Check if the file can avoid the -license filename tag as described above by referencing <a class="ulink" href="http://www.gnu.org/licenses/license-list.html" target="_top">Various Licenses and Comments about Them</a> and <a class="ulink" href="http://opensource.org/licenses/alphabetical" target="_top">Licenses by Name | Open Source Initiative</a>. If this is the case, additionally add the license filename to:</p> |
7649 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 7661 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
7650 | <li class="listitem"><p>DEFAULT_ACCEPTABLE_LICENSES in <code class="filename">pkgsrc/mk/license.mk</code></p></li> | | 7662 | <li class="listitem"><p>DEFAULT_ACCEPTABLE_LICENSES in <code class="filename">pkgsrc/mk/license.mk</code></p></li> |
7651 | <li class="listitem"><p>default_acceptable_licenses in <code class="filename">pkgsrc/pkgtools/pkg_install/files/lib/license.c</code></p></li> | | 7663 | <li class="listitem"><p>default_acceptable_licenses in <code class="filename">pkgsrc/pkgtools/pkg_install/files/lib/license.c</code></p></li> |
7652 | <li class="listitem"><p>the ACCEPTABLE_LICENSES list in <code class="filename">pkgsrc/doc/guide/files/fixes.xml</code></p></li> | | 7664 | <li class="listitem"><p>the ACCEPTABLE_LICENSES list in <code class="filename">pkgsrc/doc/guide/files/fixes.xml</code></p></li> |
7653 | </ul></div> | | 7665 | </ul></div> |
7654 | <p>with the proper syntax as demonstrated in those files, respectively.</p> | | 7666 | <p>with the proper syntax as demonstrated in those files, respectively.</p> |
7655 | </li> | | 7667 | </li> |
7656 | <li class="listitem"><p>The license text should be added to <code class="filename">pkgsrc/licenses</code> for displaying. A list of known licenses can be seen in this directory.</p></li> | | 7668 | <li class="listitem"><p>The license text should be added to <code class="filename">pkgsrc/licenses</code> for displaying. A list of known licenses can be seen in this directory.</p></li> |
7657 | </ol></div> | | 7669 | </ol></div> |
7658 | <p>When the license changes (in a way other than formatting), | | 7670 | <p>When the license changes (in a way other than formatting), |
7659 | please make sure that the new license has a different name (e.g., | | 7671 | please make sure that the new license has a different name (e.g., |
7660 | append the version number if it exists, or the date). Just | | 7672 | append the version number if it exists, or the date). Just |
7661 | because a user told pkgsrc to build programs under a previous | | 7673 | because a user told pkgsrc to build programs under a previous |
7662 | version of a license does not mean that pkgsrc should build | | 7674 | version of a license does not mean that pkgsrc should build |
7663 | programs under the new licenses. The higher-level point is that | | 7675 | programs under the new licenses. The higher-level point is that |
7664 | pkgsrc does not evaluate licenses for reasonableness; the only | | 7676 | pkgsrc does not evaluate licenses for reasonableness; the only |
7665 | test is a mechanistic test of whether a particular text has been | | 7677 | test is a mechanistic test of whether a particular text has been |
7666 | approved by either of two bodies.</p> | | 7678 | approved by either of two bodies.</p> |
7667 | <p>The use of <code class="varname">LICENSE=shareware</code>, | | 7679 | <p>The use of <code class="varname">LICENSE=shareware</code>, |
7668 | <code class="varname">LICENSE=no-commercial-use</code>, and similar language | | 7680 | <code class="varname">LICENSE=no-commercial-use</code>, and similar language |
7669 | is deprecated because it does not crisply refer to a particular | | 7681 | is deprecated because it does not crisply refer to a particular |
7670 | license text. Another problem with such usage is that it does not | | 7682 | license text. Another problem with such usage is that it does not |
7671 | enable a user to tell pkgsrc to proceed for a single package | | 7683 | enable a user to tell pkgsrc to proceed for a single package |
7672 | without also telling pkgsrc to proceed for all packages with that | | 7684 | without also telling pkgsrc to proceed for all packages with that |
7673 | tag.</p> | | 7685 | tag.</p> |
7674 | </div> | | 7686 | </div> |
7675 | <div class="sect2"> | | 7687 | <div class="sect2"> |
7676 | <div class="titlepage"><div><div><h3 class="title"> | | 7688 | <div class="titlepage"><div><div><h3 class="title"> |
7677 | <a name="restricted-packages"></a>19.1.5. Restricted packages</h3></div></div></div> | | 7689 | <a name="restricted-packages"></a>19.1.5. Restricted packages</h3></div></div></div> |
7678 | <p>Some licenses restrict how software may be re-distributed. | | 7690 | <p>Some licenses restrict how software may be re-distributed. |
7679 | Because a license tag is required unless the package is Free or | | 7691 | Because a license tag is required unless the package is Free or |
7680 | Open Source, all packages with restrictions should have license | | 7692 | Open Source, all packages with restrictions should have license |
7681 | tags. By declaring the restrictions, package tools can | | 7693 | tags. By declaring the restrictions, package tools can |
7682 | automatically refrain from e.g. placing binary packages on FTP | | 7694 | automatically refrain from e.g. placing binary packages on FTP |
7683 | sites.</p> | | 7695 | sites.</p> |
7684 | <p>There are four restrictions that may be encoded, which are | | 7696 | <p>There are four restrictions that may be encoded, which are |
7685 | the cross product of sources (distfiles) and binaries not being | | 7697 | the cross product of sources (distfiles) and binaries not being |
7686 | placed on FTP sites and CD-ROMs. Because this is rarely the exact | | 7698 | placed on FTP sites and CD-ROMs. Because this is rarely the exact |
7687 | language in any license, and because non-Free licenses tend to be | | 7699 | language in any license, and because non-Free licenses tend to be |
7688 | different from each other, pkgsrc adopts a definition of FTP and | | 7700 | different from each other, pkgsrc adopts a definition of FTP and |
7689 | CD-ROM. Pkgsrc uses "FTP" to mean that the source or binary file | | 7701 | CD-ROM. Pkgsrc uses "FTP" to mean that the source or binary file |
7690 | should not be made available over the Internet at no charge. | | 7702 | should not be made available over the Internet at no charge. |
7691 | Pkgsrc uses "CD-ROM" to mean that the source or binary may not be | | 7703 | Pkgsrc uses "CD-ROM" to mean that the source or binary may not be |
7692 | made available on some kind of media, together with other source | | 7704 | made available on some kind of media, together with other source |
7693 | and binary packages, and which is sold for a distribution charge. | | 7705 | and binary packages, and which is sold for a distribution charge. |
7694 | </p> | | 7706 | </p> |
7695 | <p>In order to encode these restrictions, the package system | | 7707 | <p>In order to encode these restrictions, the package system |
7696 | defines five make variables that can be set to note these | | 7708 | defines five make variables that can be set to note these |
7697 | restrictions:</p> | | 7709 | restrictions:</p> |
7698 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 7710 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
7699 | <li class="listitem"> | | 7711 | <li class="listitem"> |
7700 | <p><code class="varname">RESTRICTED</code></p> | | 7712 | <p><code class="varname">RESTRICTED</code></p> |
7701 | <p>This variable should be set whenever a restriction | | 7713 | <p>This variable should be set whenever a restriction |
7702 | exists (regardless of its kind). Set this variable to a | | 7714 | exists (regardless of its kind). Set this variable to a |
7703 | string containing the reason for the restriction. It should | | 7715 | string containing the reason for the restriction. It should |
7704 | be understood that those wanting to understand the restriction | | 7716 | be understood that those wanting to understand the restriction |
7705 | will have to read the license, and perhaps seek advice of | | 7717 | will have to read the license, and perhaps seek advice of |
7706 | counsel.</p> | | 7718 | counsel.</p> |
7707 | </li> | | 7719 | </li> |
7708 | <li class="listitem"> | | 7720 | <li class="listitem"> |
7709 | <p><code class="varname">NO_BIN_ON_CDROM</code></p> | | 7721 | <p><code class="varname">NO_BIN_ON_CDROM</code></p> |
7710 | <p>Binaries may not be placed on CD-ROM containing other | | 7722 | <p>Binaries may not be placed on CD-ROM containing other |
7711 | binary packages, for which a distribution charge may be made. | | 7723 | binary packages, for which a distribution charge may be made. |
7712 | In this case, set this variable to | | 7724 | In this case, set this variable to |
7713 | <code class="varname">${RESTRICTED}</code>.</p> | | 7725 | <code class="varname">${RESTRICTED}</code>.</p> |
7714 | </li> | | 7726 | </li> |
7715 | <li class="listitem"> | | 7727 | <li class="listitem"> |
7716 | <p><code class="varname">NO_BIN_ON_FTP</code></p> | | 7728 | <p><code class="varname">NO_BIN_ON_FTP</code></p> |
7717 | <p>Binaries may not made available on the Internet without | | 7729 | <p>Binaries may not made available on the Internet without |
7718 | charge. In this case, set this variable to | | 7730 | charge. In this case, set this variable to |
7719 | <code class="varname">${RESTRICTED}</code>. If this variable is set, | | 7731 | <code class="varname">${RESTRICTED}</code>. If this variable is set, |
7720 | binary packages will not be included on ftp.NetBSD.org.</p> | | 7732 | binary packages will not be included on ftp.NetBSD.org.</p> |
7721 | </li> | | 7733 | </li> |
7722 | <li class="listitem"> | | 7734 | <li class="listitem"> |
7723 | <p><code class="varname">NO_SRC_ON_CDROM</code></p> | | 7735 | <p><code class="varname">NO_SRC_ON_CDROM</code></p> |
7724 | <p>Distfiles may not be placed on CD-ROM, together with | | 7736 | <p>Distfiles may not be placed on CD-ROM, together with |
7725 | other distfiles, for which a fee may be charged. In this | | 7737 | other distfiles, for which a fee may be charged. In this |
7726 | case, set this variable to <code class="varname">${RESTRICTED}</code>. | | 7738 | case, set this variable to <code class="varname">${RESTRICTED}</code>. |
7727 | </p> | | 7739 | </p> |
7728 | </li> | | 7740 | </li> |
7729 | <li class="listitem"> | | 7741 | <li class="listitem"> |
7730 | <p><code class="varname">NO_SRC_ON_FTP</code></p> | | 7742 | <p><code class="varname">NO_SRC_ON_FTP</code></p> |
7731 | <p>Distfiles may not made available via FTP at no charge. | | 7743 | <p>Distfiles may not made available via FTP at no charge. |
7732 | In this case, set this variable to | | 7744 | In this case, set this variable to |
7733 | <code class="varname">${RESTRICTED}</code>. If this variable is set, | | 7745 | <code class="varname">${RESTRICTED}</code>. If this variable is set, |
7734 | the distfile(s) will not be mirrored on ftp.NetBSD.org.</p> | | 7746 | the distfile(s) will not be mirrored on ftp.NetBSD.org.</p> |
7735 | </li> | | 7747 | </li> |
7736 | </ul></div> | | 7748 | </ul></div> |
7737 | <p>Please note that packages will to be removed from pkgsrc | | 7749 | <p>Please note that packages will to be removed from pkgsrc |
7738 | when the distfiles are not distributable and cannot be obtained | | 7750 | when the distfiles are not distributable and cannot be obtained |
7739 | for a period of one full quarter branch. Packages with manual / | | 7751 | for a period of one full quarter branch. Packages with manual / |
7740 | interactive fetch must have a maintainer and it is his/her | | 7752 | interactive fetch must have a maintainer and it is his/her |
7741 | responsibility to ensure this.</p> | | 7753 | responsibility to ensure this.</p> |
7742 | </div> | | 7754 | </div> |
7743 | <div class="sect2"> | | 7755 | <div class="sect2"> |
7744 | <div class="titlepage"><div><div><h3 class="title"> | | 7756 | <div class="titlepage"><div><div><h3 class="title"> |
7745 | <a name="dependencies"></a>19.1.6. Handling dependencies</h3></div></div></div> | | 7757 | <a name="dependencies"></a>19.1.6. Handling dependencies</h3></div></div></div> |
7746 | <p>Your package may depend on some other package being present | | 7758 | <p>Your package may depend on some other package being present |
7747 | - and there are various ways of expressing this dependency. | | 7759 | - and there are various ways of expressing this dependency. |
7748 | pkgsrc supports the <code class="varname">BUILD_DEPENDS</code> and | | 7760 | pkgsrc supports the <code class="varname">BUILD_DEPENDS</code> and |
7749 | <code class="varname">DEPENDS</code> definitions, the | | 7761 | <code class="varname">DEPENDS</code> definitions, the |
7750 | <code class="varname">USE_TOOLS</code> definition, as well as dependencies | | 7762 | <code class="varname">USE_TOOLS</code> definition, as well as dependencies |
7751 | via <code class="filename">buildlink3.mk</code>, which is the preferred way | | 7763 | via <code class="filename">buildlink3.mk</code>, which is the preferred way |
7752 | to handle dependencies, and which uses the variables named above. | | 7764 | to handle dependencies, and which uses the variables named above. |
7753 | See <a class="xref" href="#buildlink" title="Chapter 14. Buildlink methodology">Chapter 14, <i>Buildlink methodology</i></a> for more information.</p> | | 7765 | See <a class="xref" href="#buildlink" title="Chapter 14. Buildlink methodology">Chapter 14, <i>Buildlink methodology</i></a> for more information.</p> |
7754 | <p>The basic difference between the two variables is as | | 7766 | <p>The basic difference between the two variables is as |
7755 | follows: The <code class="varname">DEPENDS</code> definition registers | | 7767 | follows: The <code class="varname">DEPENDS</code> definition registers |
7756 | that pre-requisite in the binary package so it will be pulled in | | 7768 | that pre-requisite in the binary package so it will be pulled in |
7757 | when the binary package is later installed, whilst the | | 7769 | when the binary package is later installed, whilst the |
7758 | <code class="varname">BUILD_DEPENDS</code> definition does not, marking a | | 7770 | <code class="varname">BUILD_DEPENDS</code> definition does not, marking a |
7759 | dependency that is only needed for building the package.</p> | | 7771 | dependency that is only needed for building the package.</p> |
7760 | <p>This means that if you only need a package present whilst | | 7772 | <p>This means that if you only need a package present whilst |
7761 | you are building, it should be noted as a | | 7773 | you are building, it should be noted as a |
7762 | <code class="varname">BUILD_DEPENDS</code>.</p> | | 7774 | <code class="varname">BUILD_DEPENDS</code>.</p> |
7763 | <p>The format for a <code class="varname">BUILD_DEPENDS</code> and a | | 7775 | <p>The format for a <code class="varname">BUILD_DEPENDS</code> and a |
7764 | <code class="varname">DEPENDS</code> definition is:</p> | | 7776 | <code class="varname">DEPENDS</code> definition is:</p> |
7765 | <pre class="programlisting"> | | 7777 | <pre class="programlisting"> |
7766 | <pre-req-package-name>:../../<category>/<pre-req-package> | | 7778 | <pre-req-package-name>:../../<category>/<pre-req-package> |
7767 | </pre> | | 7779 | </pre> |
7768 | <p>Please note that the <span class="quote">“<span class="quote">pre-req-package-name</span>”</span> | | 7780 | <p>Please note that the <span class="quote">“<span class="quote">pre-req-package-name</span>”</span> |
7769 | may include any of the wildcard version numbers recognized by | | 7781 | may include any of the wildcard version numbers recognized by |
7770 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_info+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_info</span>(1)</span></a>.</p> | | 7782 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_info+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_info</span>(1)</span></a>.</p> |
7771 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 7783 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
7772 | <li class="listitem"> | | 7784 | <li class="listitem"> |
7773 | <p>If your package needs another package's binaries or | | 7785 | <p>If your package needs another package's binaries or |
7774 | libraries to build and run, and if that package has a | | 7786 | libraries to build and run, and if that package has a |
7775 | <code class="filename">buildlink3.mk</code> file available, use it:</p> | | 7787 | <code class="filename">buildlink3.mk</code> file available, use it:</p> |
7776 | <pre class="programlisting"> | | 7788 | <pre class="programlisting"> |
7777 | .include "../../graphics/jpeg/buildlink3.mk" | | 7789 | .include "../../graphics/jpeg/buildlink3.mk" |
7778 | </pre> | | 7790 | </pre> |
7779 | </li> | | 7791 | </li> |
7780 | <li class="listitem"> | | 7792 | <li class="listitem"> |
7781 | <p>If your package needs another package's binaries or | | 7793 | <p>If your package needs another package's binaries or |
7782 | libraries only for building, and if that package has a | | 7794 | libraries only for building, and if that package has a |
7783 | <code class="filename">buildlink3.mk</code> file available, use it:</p> | | 7795 | <code class="filename">buildlink3.mk</code> file available, use it:</p> |
7784 | <pre class="programlisting"> | | 7796 | <pre class="programlisting"> |
7785 | .include "../../graphics/jpeg/buildlink3.mk" | | 7797 | .include "../../graphics/jpeg/buildlink3.mk" |
7786 | </pre> | | 7798 | </pre> |
7787 | <p>but set | | 7799 | <p>but set |
7788 | <code class="varname">BUILDLINK_DEPMETHOD.<em class="replaceable"><code>jpeg</code></em>?=build</code> | | 7800 | <code class="varname">BUILDLINK_DEPMETHOD.<em class="replaceable"><code>jpeg</code></em>?=build</code> |
7789 | to make it a build dependency only. This case is rather | | 7801 | to make it a build dependency only. This case is rather |
7790 | rare.</p> | | 7802 | rare.</p> |
7791 | </li> | | 7803 | </li> |
7792 | <li class="listitem"> | | 7804 | <li class="listitem"> |
7793 | <p>If your package needs binaries from another package to build, | | 7805 | <p>If your package needs binaries from another package to build, |
7794 | use the <code class="varname">BUILD_DEPENDS</code> definition:</p> | | 7806 | use the <code class="varname">BUILD_DEPENDS</code> definition:</p> |
7795 | <pre class="programlisting"> | | 7807 | <pre class="programlisting"> |
7796 | BUILD_DEPENDS+= scons-[0-9]*:../../devel/scons | | 7808 | BUILD_DEPENDS+= scons-[0-9]*:../../devel/scons |
7797 | </pre> | | 7809 | </pre> |
7798 | </li> | | 7810 | </li> |
7799 | <li class="listitem"><p>If your package needs a library with which to link and | | 7811 | <li class="listitem"><p>If your package needs a library with which to link and |
7800 | there is no <code class="filename">buildlink3.mk</code> file | | 7812 | there is no <code class="filename">buildlink3.mk</code> file |
7801 | available, create one. Using | | 7813 | available, create one. Using |
7802 | <code class="varname">DEPENDS</code> won't be sufficient because the | | 7814 | <code class="varname">DEPENDS</code> won't be sufficient because the |
7803 | include files and libraries will be hidden from the compiler.</p></li> | | 7815 | include files and libraries will be hidden from the compiler.</p></li> |
7804 | <li class="listitem"> | | 7816 | <li class="listitem"> |
7805 | <p>If your package needs some executable to be able to run | | 7817 | <p>If your package needs some executable to be able to run |
7806 | correctly and if there's no | | 7818 | correctly and if there's no |
7807 | <code class="filename">buildlink3.mk</code> file, this is specified | | 7819 | <code class="filename">buildlink3.mk</code> file, this is specified |
7808 | using the <code class="varname">DEPENDS</code> variable. The | | 7820 | using the <code class="varname">DEPENDS</code> variable. The |
7809 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/print/lyx/README.html" target="_top"><code class="filename">print/lyx</code></a> package needs to | | 7821 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/print/lyx/README.html" target="_top"><code class="filename">print/lyx</code></a> package needs to |
7810 | be able to execute the latex binary from the teTeX package | | 7822 | be able to execute the latex binary from the teTeX package |
7811 | when it runs, and that is specified:</p> | | 7823 | when it runs, and that is specified:</p> |
7812 | <pre class="programlisting"> | | 7824 | <pre class="programlisting"> |
7813 | DEPENDS+= teTeX-[0-9]*:../../print/teTeX | | 7825 | DEPENDS+= teTeX-[0-9]*:../../print/teTeX |
7814 | </pre> | | 7826 | </pre> |
7815 | </li> | | 7827 | </li> |
7816 | <li class="listitem"> | | 7828 | <li class="listitem"> |
7817 | <p>You can use wildcards in package dependencies. Note that | | 7829 | <p>You can use wildcards in package dependencies. Note that |
7818 | such wildcard dependencies are retained when creating binary | | 7830 | such wildcard dependencies are retained when creating binary |
7819 | packages. The dependency is checked when installing the binary | | 7831 | packages. The dependency is checked when installing the binary |
7820 | package and any package which matches the pattern will be | | 7832 | package and any package which matches the pattern will be |
7821 | used. Wildcard dependencies should be used with care.</p> | | 7833 | used. Wildcard dependencies should be used with care.</p> |
7822 | <p>The <span class="quote">“<span class="quote">-[0-9]*</span>”</span> should be used instead of | | 7834 | <p>The <span class="quote">“<span class="quote">-[0-9]*</span>”</span> should be used instead of |
7823 | <span class="quote">“<span class="quote">-*</span>”</span> to avoid potentially ambiguous matches | | 7835 | <span class="quote">“<span class="quote">-*</span>”</span> to avoid potentially ambiguous matches |
7824 | such as <span class="quote">“<span class="quote">tk-postgresql</span>”</span> matching a | | 7836 | such as <span class="quote">“<span class="quote">tk-postgresql</span>”</span> matching a |
7825 | <span class="quote">“<span class="quote">tk-*</span>”</span> <code class="varname">DEPENDS</code>.</p> | | 7837 | <span class="quote">“<span class="quote">tk-*</span>”</span> <code class="varname">DEPENDS</code>.</p> |
7826 | <p>Wildcards can also be used to specify that a package | | 7838 | <p>Wildcards can also be used to specify that a package |
7827 | will only build against a certain minimum version of a | | 7839 | will only build against a certain minimum version of a |
7828 | pre-requisite:</p> | | 7840 | pre-requisite:</p> |
7829 | <pre class="programlisting"> | | 7841 | <pre class="programlisting"> |
7830 | DEPENDS+= ImageMagick>=6.0:../../graphics/ImageMagick | | 7842 | DEPENDS+= ImageMagick>=6.0:../../graphics/ImageMagick |
7831 | </pre> | | 7843 | </pre> |
7832 | <p>This means that the package will build using version 6.0 | | 7844 | <p>This means that the package will build using version 6.0 |
7833 | of ImageMagick or newer. Such a dependency may be warranted | | 7845 | of ImageMagick or newer. Such a dependency may be warranted |
7834 | if, for example, the command line options of an executable | | 7846 | if, for example, the command line options of an executable |
7835 | have changed.</p> | | 7847 | have changed.</p> |
7836 | <p>If you need to depend on minimum versions of libraries, | | 7848 | <p>If you need to depend on minimum versions of libraries, |
7837 | see the buildlink section of the pkgsrc guide.</p> | | 7849 | see the buildlink section of the pkgsrc guide.</p> |
7838 | <p>For security fixes, please update the package | | 7850 | <p>For security fixes, please update the package |
7839 | vulnerabilities file. See <a class="xref" href="#security-handling" title="19.1.10. Handling packages with security problems">Section 19.1.10, “Handling packages with security problems”</a> for more | | 7851 | vulnerabilities file. See <a class="xref" href="#security-handling" title="19.1.10. Handling packages with security problems">Section 19.1.10, “Handling packages with security problems”</a> for more |
7840 | information.</p> | | 7852 | information.</p> |
7841 | </li> | | 7853 | </li> |
7842 | <li class="listitem"> | | 7854 | <li class="listitem"> |
7843 | <p>If the package depends on either one of two (or more) | | 7855 | <p>If the package depends on either one of two (or more) |
7844 | packages, specify the <span class="quote">“<span class="quote">pre-req-package-name</span>”</span> as a | | 7856 | packages, specify the <span class="quote">“<span class="quote">pre-req-package-name</span>”</span> as a |
7845 | comma-separated list between curly braces.</p> | | 7857 | comma-separated list between curly braces.</p> |
7846 | <p>As an example, take a package that depends on the Perl | | 7858 | <p>As an example, take a package that depends on the Perl |
7847 | <span class="quote">“<span class="quote">version</span>”</span> module, which has been part of Perl | | 7859 | <span class="quote">“<span class="quote">version</span>”</span> module, which has been part of Perl |
7848 | itself since version 5.10.0. This either/or dependency is | | 7860 | itself since version 5.10.0. This either/or dependency is |
7849 | expressed as:</p> | | 7861 | expressed as:</p> |
7850 | <pre class="programlisting"> | | 7862 | <pre class="programlisting"> |
7851 | DEPENDS+= {perl>=5.10.0,p5-version-[0-9]*}:../../devel/p5-version | | 7863 | DEPENDS+= {perl>=5.10.0,p5-version-[0-9]*}:../../devel/p5-version |
7852 | </pre> | | 7864 | </pre> |
7853 | </li> | | 7865 | </li> |
7854 | </ol></div> | | 7866 | </ol></div> |
7855 | <p>If your package needs files from another package to build, | | 7867 | <p>If your package needs files from another package to build, |
7856 | add the relevant distribution files to | | 7868 | add the relevant distribution files to |
7857 | <code class="varname">DISTFILES</code>, so they will be extracted | | 7869 | <code class="varname">DISTFILES</code>, so they will be extracted |
7858 | automatically. See the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/print/ghostscript/README.html" target="_top"><code class="filename">print/ghostscript</code></a> package for an example. | | 7870 | automatically. See the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/print/ghostscript/README.html" target="_top"><code class="filename">print/ghostscript</code></a> package for an example. |
7859 | (It relies on the jpeg sources being present in source form | | 7871 | (It relies on the jpeg sources being present in source form |
7860 | during the build.)</p> | | 7872 | during the build.)</p> |
7861 | </div> | | 7873 | </div> |
7862 | <div class="sect2"> | | 7874 | <div class="sect2"> |
7863 | <div class="titlepage"><div><div><h3 class="title"> | | 7875 | <div class="titlepage"><div><div><h3 class="title"> |
7864 | <a name="conflicts"></a>19.1.7. Handling conflicts with other packages</h3></div></div></div> | | 7876 | <a name="conflicts"></a>19.1.7. Handling conflicts with other packages</h3></div></div></div> |
7865 | <p>Your package may conflict with other packages a user might | | 7877 | <p>Your package may conflict with other packages a user might |
7866 | already have installed on his system, e.g. if your package | | 7878 | already have installed on his system, e.g. if your package |
7867 | installs the same set of files as another package in the pkgsrc | | 7879 | installs the same set of files as another package in the pkgsrc |
7868 | tree or has the same <code class="varname">PKGNAME</code>.</p> | | 7880 | tree or has the same <code class="varname">PKGNAME</code>.</p> |
7869 | <p>These cases are handled automatically by the packaging tools | | 7881 | <p>These cases are handled automatically by the packaging tools |
7870 | at package installation time and do not need to be handled | | 7882 | at package installation time and do not need to be handled |
7871 | manually.</p> | | 7883 | manually.</p> |
7872 | <p>In case the conflicts can not be recognized automatically | | 7884 | <p>In case the conflicts can not be recognized automatically |
7873 | (e.g., packages using the same config file location but no other | | 7885 | (e.g., packages using the same config file location but no other |
7874 | shared files), you can set <code class="varname">CONFLICTS</code> to a | | 7886 | shared files), you can set <code class="varname">CONFLICTS</code> to a |
7875 | space-separated list of packages (including version string) your | | 7887 | space-separated list of packages (including version string) your |
7876 | package conflicts with.</p> | | 7888 | package conflicts with.</p> |
7877 | <p>For example, if both <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/foo/bar/README.html" target="_top"><code class="filename">foo/bar</code></a> | | 7889 | <p>For example, if both <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/foo/bar/README.html" target="_top"><code class="filename">foo/bar</code></a> |
7878 | and <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/foo/baz/README.html" target="_top"><code class="filename">foo/baz</code></a> | | 7890 | and <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/foo/baz/README.html" target="_top"><code class="filename">foo/baz</code></a> |
7879 | use the same config file, you would set in | | 7891 | use the same config file, you would set in |
7880 | <code class="filename">foo/bar/Makefile</code>:</p> | | 7892 | <code class="filename">foo/bar/Makefile</code>:</p> |
7881 | <pre class="programlisting"> | | 7893 | <pre class="programlisting"> |
7882 | CONFLICTS= baz-[0-9]* | | 7894 | CONFLICTS= baz-[0-9]* |
7883 | </pre> | | 7895 | </pre> |
7884 | <p>and in <code class="filename">pkgsrc/foo/baz/Makefile</code>:</p> | | 7896 | <p>and in <code class="filename">pkgsrc/foo/baz/Makefile</code>:</p> |
7885 | <pre class="programlisting"> | | 7897 | <pre class="programlisting"> |
7886 | CONFLICTS= bar-[0-9]* | | 7898 | CONFLICTS= bar-[0-9]* |
7887 | </pre> | | 7899 | </pre> |
7888 | </div> | | 7900 | </div> |
7889 | <div class="sect2"> | | 7901 | <div class="sect2"> |
7890 | <div class="titlepage"><div><div><h3 class="title"> | | 7902 | <div class="titlepage"><div><div><h3 class="title"> |
7891 | <a name="not-building-packages"></a>19.1.8. Packages that cannot or should not be built</h3></div></div></div> | | 7903 | <a name="not-building-packages"></a>19.1.8. Packages that cannot or should not be built</h3></div></div></div> |
7892 | <p>There are several reasons why a package might be | | 7904 | <p>There are several reasons why a package might be |
7893 | instructed to not build under certain circumstances. If the | | 7905 | instructed to not build under certain circumstances. If the |
7894 | package builds and runs on most platforms, the exceptions | | 7906 | package builds and runs on most platforms, the exceptions |
7895 | should be noted with <code class="varname">NOT_FOR_PLATFORM</code>. If | | 7907 | should be noted with <code class="varname">BROKEN_ON_PLATFORM</code>. If |
7896 | the package builds and runs on a small handful of platforms, | | 7908 | the package builds and runs on a small handful of platforms, |
7897 | set <code class="varname">ONLY_FOR_PLATFORM</code> instead. | | 7909 | set <code class="varname">BROKEN_EXCEPT_ON_PLATFORM</code> instead. |
| | | 7910 | Both <code class="varname">BROKEN_ON_PLATFORM</code> and |
| | | 7911 | <code class="varname">BROKEN_EXCEPT_ON_PLATFORM</code> are OS triples |
| | | 7912 | (OS-version-platform) that can use glob-style |
| | | 7913 | wildcards.</p> |
| | | 7914 | <p>If a package is not appropriate for some platforms (as |
| | | 7915 | oopposed to merely broken), a different set of variables should be |
| | | 7916 | used as this affects failure reporting and statistics. |
| | | 7917 | If the package is appropriate for most platforms, the exceptions |
| | | 7918 | should be noted with <code class="varname">NOT_FOR_PLATFORM</code>. If |
| | | 7919 | the package is appropriate for only a small handful of platforms |
| | | 7920 | (often exactly one), set <code class="varname">ONLY_FOR_PLATFORM</code> instead. |
7898 | Both <code class="varname">ONLY_FOR_PLATFORM</code> and | | 7921 | Both <code class="varname">ONLY_FOR_PLATFORM</code> and |
7899 | <code class="varname">NOT_FOR_PLATFORM</code> are OS triples | | 7922 | <code class="varname">NOT_FOR_PLATFORM</code> are OS triples |
7900 | (OS-version-platform) that can use glob-style | | 7923 | (OS-version-platform) that can use glob-style |
7901 | wildcards.</p> | | 7924 | wildcards.</p> |
7902 | <p>Some packages are tightly bound to a specific version of an | | 7925 | <p>Some packages are tightly bound to a specific version of an |
7903 | operating system, e.g. LKMs or <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/sysutils/lsof/README.html" target="_top"><code class="filename">sysutils/lsof</code></a>. Such binary packages are not | | 7926 | operating system, e.g. LKMs or <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/sysutils/lsof/README.html" target="_top"><code class="filename">sysutils/lsof</code></a>. Such binary packages are not |
7904 | backwards compatible with other versions of the OS, and should be | | 7927 | backwards compatible with other versions of the OS, and should be |
7905 | uploaded to a version specific directory on the FTP server. Mark | | 7928 | uploaded to a version specific directory on the FTP server. Mark |
7906 | these packages by setting <code class="varname">OSVERSION_SPECIFIC</code> to | | 7929 | these packages by setting <code class="varname">OSVERSION_SPECIFIC</code> to |
7907 | <span class="quote">“<span class="quote">yes</span>”</span>. This variable is not currently used by any of | | 7930 | <span class="quote">“<span class="quote">yes</span>”</span>. This variable is not currently used by any of |
7908 | the package system internals, but may be used in the | | 7931 | the package system internals, but may be used in the |
7909 | future.</p> | | 7932 | future.</p> |
7910 | <p>If the package should be skipped (for example, because it | | 7933 | <p>If the package should be skipped (for example, because it |
7911 | provides functionality already provided by the system), set | | 7934 | provides functionality already provided by the system), set |
7912 | <code class="varname">PKG_SKIP_REASON</code> to a descriptive message. If | | 7935 | <code class="varname">PKG_SKIP_REASON</code> to a descriptive message. If |
7913 | the package should fail because some preconditions are not met, | | 7936 | the package should fail because some preconditions are not met, |
7914 | set <code class="varname">PKG_FAIL_REASON</code> to a descriptive | | 7937 | set <code class="varname">PKG_FAIL_REASON</code> to a descriptive |
7915 | message.</p> | | 7938 | message.</p> |
7916 | </div> | | 7939 | </div> |
7917 | <div class="sect2"> | | 7940 | <div class="sect2"> |
7918 | <div class="titlepage"><div><div><h3 class="title"> | | 7941 | <div class="titlepage"><div><div><h3 class="title"> |
7919 | <a name="undeletable-packages"></a>19.1.9. Packages which should not be deleted, once installed</h3></div></div></div> | | 7942 | <a name="undeletable-packages"></a>19.1.9. Packages which should not be deleted, once installed</h3></div></div></div> |
7920 | <p>To ensure that a package may not be deleted, once it has been | | 7943 | <p>To ensure that a package may not be deleted, once it has been |
7921 | installed, the <code class="varname">PKG_PRESERVE</code> definition should | | 7944 | installed, the <code class="varname">PKG_PRESERVE</code> definition should |
7922 | be set in the package Makefile. This will be carried into any | | 7945 | be set in the package Makefile. This will be carried into any |
7923 | binary package that is made from this pkgsrc entry. A | | 7946 | binary package that is made from this pkgsrc entry. A |
7924 | <span class="quote">“<span class="quote">preserved</span>”</span> package will | | 7947 | <span class="quote">“<span class="quote">preserved</span>”</span> package will |
7925 | not be deleted using <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> unless the | | 7948 | not be deleted using <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> unless the |
7926 | <span class="quote">“<span class="quote">-f</span>”</span> option is used.</p> | | 7949 | <span class="quote">“<span class="quote">-f</span>”</span> option is used.</p> |
7927 | </div> | | 7950 | </div> |
7928 | <div class="sect2"> | | 7951 | <div class="sect2"> |
7929 | <div class="titlepage"><div><div><h3 class="title"> | | 7952 | <div class="titlepage"><div><div><h3 class="title"> |
7930 | <a name="security-handling"></a>19.1.10. Handling packages with security problems</h3></div></div></div> | | 7953 | <a name="security-handling"></a>19.1.10. Handling packages with security problems</h3></div></div></div> |
7931 | <p>When a vulnerability is found, this should be noted in | | 7954 | <p>When a vulnerability is found, this should be noted in |
7932 | <code class="filename">localsrc/security/advisories/pkg-vulnerabilities</code>, | | 7955 | <code class="filename">localsrc/security/advisories/pkg-vulnerabilities</code>, |
7933 | and after committing that file, ask pkgsrc-security@NetBSD.org to | | 7956 | and after committing that file, ask pkgsrc-security@NetBSD.org to |
7934 | update the file on ftp.NetBSD.org.</p> | | 7957 | update the file on ftp.NetBSD.org.</p> |
7935 | <p>After fixing the vulnerability by a patch, its | | 7958 | <p>After fixing the vulnerability by a patch, its |
7936 | <code class="varname">PKGREVISION</code> should be increased (this is of | | 7959 | <code class="varname">PKGREVISION</code> should be increased (this is of |
7937 | course not necessary if the problem is fixed by using a newer | | 7960 | course not necessary if the problem is fixed by using a newer |
7938 | release of the software), and the pattern in the | | 7961 | release of the software), and the pattern in the |
7939 | pkg-vulnerabilities file must be updated.</p> | | 7962 | pkg-vulnerabilities file must be updated.</p> |
7940 | <p>Also, if the fix should be applied to the stable pkgsrc | | 7963 | <p>Also, if the fix should be applied to the stable pkgsrc |
7941 | branch, be sure to submit a pullup request!</p> | | 7964 | branch, be sure to submit a pullup request!</p> |
7942 | <p>Binary packages already on ftp.NetBSD.org will be handled | | 7965 | <p>Binary packages already on ftp.NetBSD.org will be handled |
7943 | semi-automatically by a weekly cron job.</p> | | 7966 | semi-automatically by a weekly cron job.</p> |
7944 | </div> | | 7967 | </div> |
7945 | <div class="sect2"> | | 7968 | <div class="sect2"> |
7946 | <div class="titlepage"><div><div><h3 class="title"> | | 7969 | <div class="titlepage"><div><div><h3 class="title"> |
7947 | <a name="bumping-pkgrevision"></a>19.1.11. How to handle incrementing versions when fixing an existing package</h3></div></div></div> | | 7970 | <a name="bumping-pkgrevision"></a>19.1.11. How to handle incrementing versions when fixing an existing package</h3></div></div></div> |
7948 | <p>When making fixes to an existing package it can be useful | | 7971 | <p>When making fixes to an existing package it can be useful |
7949 | to change the version number in <code class="varname">PKGNAME</code>. To | | 7972 | to change the version number in <code class="varname">PKGNAME</code>. To |
7950 | avoid conflicting with future versions by the original author, a | | 7973 | avoid conflicting with future versions by the original author, a |
7951 | <span class="quote">“<span class="quote">nb1</span>”</span>, <span class="quote">“<span class="quote">nb2</span>”</span>, ... suffix can be used | | 7974 | <span class="quote">“<span class="quote">nb1</span>”</span>, <span class="quote">“<span class="quote">nb2</span>”</span>, ... suffix can be used |
7952 | on package versions by setting <code class="varname">PKGREVISION=1</code> | | 7975 | on package versions by setting <code class="varname">PKGREVISION=1</code> |
7953 | (2, ...). The <span class="quote">“<span class="quote">nb</span>”</span> is treated like a | | 7976 | (2, ...). The <span class="quote">“<span class="quote">nb</span>”</span> is treated like a |
7954 | <span class="quote">“<span class="quote">.</span>”</span> by the package tools. e.g.</p> | | 7977 | <span class="quote">“<span class="quote">.</span>”</span> by the package tools. e.g.</p> |
7955 | <pre class="programlisting"> | | 7978 | <pre class="programlisting"> |
7956 | DISTNAME= foo-17.42 | | 7979 | DISTNAME= foo-17.42 |
7957 | PKGREVISION= 9 | | 7980 | PKGREVISION= 9 |
7958 | </pre> | | 7981 | </pre> |
7959 | <p>will result in a <code class="varname">PKGNAME</code> of | | 7982 | <p>will result in a <code class="varname">PKGNAME</code> of |
7960 | <span class="quote">“<span class="quote">foo-17.42nb9</span>”</span>. If you want to use the original | | 7983 | <span class="quote">“<span class="quote">foo-17.42nb9</span>”</span>. If you want to use the original |
7961 | value of <code class="varname">PKGNAME</code> without the <span class="quote">“<span class="quote">nbX</span>”</span> | | 7984 | value of <code class="varname">PKGNAME</code> without the <span class="quote">“<span class="quote">nbX</span>”</span> |
7962 | suffix, e.g. for setting <code class="varname">DIST_SUBDIR</code>, use | | 7985 | suffix, e.g. for setting <code class="varname">DIST_SUBDIR</code>, use |
7963 | <code class="varname">PKGNAME_NOREV</code>.</p> | | 7986 | <code class="varname">PKGNAME_NOREV</code>.</p> |
7964 | <p>When a new release of the package is released, the | | 7987 | <p>When a new release of the package is released, the |
7965 | <code class="varname">PKGREVISION</code> should be removed, e.g. on a new | | 7988 | <code class="varname">PKGREVISION</code> should be removed, e.g. on a new |
7966 | minor release of the above package, things should be like:</p> | | 7989 | minor release of the above package, things should be like:</p> |
7967 | <pre class="programlisting"> | | 7990 | <pre class="programlisting"> |
7968 | DISTNAME= foo-17.43 | | 7991 | DISTNAME= foo-17.43 |
7969 | </pre> | | 7992 | </pre> |
7970 | <p><code class="varname">PKGREVISION</code> should be incremented for any | | 7993 | <p><code class="varname">PKGREVISION</code> should be incremented for any |
7971 | non-trivial change in the resulting binary package. Without a | | 7994 | non-trivial change in the resulting binary package. Without a |
7972 | <code class="varname">PKGREVISION</code> bump, someone with the previous | | 7995 | <code class="varname">PKGREVISION</code> bump, someone with the previous |
7973 | version installed has no way of knowing that their package is out | | 7996 | version installed has no way of knowing that their package is out |
7974 | of date. Thus, changes without increasing | | 7997 | of date. Thus, changes without increasing |
7975 | <code class="varname">PKGREVISION</code> are essentially labeled "this is so | | 7998 | <code class="varname">PKGREVISION</code> are essentially labeled "this is so |
7976 | trivial that no reasonable person would want to upgrade", and this | | 7999 | trivial that no reasonable person would want to upgrade", and this |
7977 | is the rough test for when increasing | | 8000 | is the rough test for when increasing |
7978 | <code class="varname">PKGREVISION</code> is appropriate. Examples of | | 8001 | <code class="varname">PKGREVISION</code> is appropriate. Examples of |
7979 | changes that do not merit increasing | | 8002 | changes that do not merit increasing |
7980 | <code class="varname">PKGREVISION</code> are:</p> | | 8003 | <code class="varname">PKGREVISION</code> are:</p> |
7981 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 8004 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
7982 | <li class="listitem"><p>Changing <code class="varname">HOMEPAGE</code>, | | 8005 | <li class="listitem"><p>Changing <code class="varname">HOMEPAGE</code>, |
7983 | <code class="varname">MAINTAINER</code>, <code class="varname">OWNER</code>, | | 8006 | <code class="varname">MAINTAINER</code>, <code class="varname">OWNER</code>, |
7984 | or comments in Makefile.</p></li> | | 8007 | or comments in Makefile.</p></li> |
7985 | <li class="listitem"><p> | | 8008 | <li class="listitem"><p> |
7986 | Changing build variables if the resulting binary package is the same.</p></li> | | 8009 | Changing build variables if the resulting binary package is the same.</p></li> |
7987 | <li class="listitem"><p> | | 8010 | <li class="listitem"><p> |
7988 | Changing <code class="filename">DESCR</code>.</p></li> | | 8011 | Changing <code class="filename">DESCR</code>.</p></li> |
7989 | <li class="listitem"><p> | | 8012 | <li class="listitem"><p> |
7990 | Adding <code class="varname">PKG_OPTIONS</code> if the default options don't change.</p></li> | | 8013 | Adding <code class="varname">PKG_OPTIONS</code> if the default options don't change.</p></li> |
7991 | </ul></div> | | 8014 | </ul></div> |
7992 | <p>Examples of changes that do merit an increase to | | 8015 | <p>Examples of changes that do merit an increase to |
7993 | <code class="varname">PKGREVISION</code> include:</p> | | 8016 | <code class="varname">PKGREVISION</code> include:</p> |
7994 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 8017 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
7995 | <li class="listitem"><p> | | 8018 | <li class="listitem"><p> |
7996 | Security fixes</p></li> | | 8019 | Security fixes</p></li> |
7997 | <li class="listitem"><p> | | 8020 | <li class="listitem"><p> |
7998 | Changes or additions to a patch file</p></li> | | 8021 | Changes or additions to a patch file</p></li> |
7999 | <li class="listitem"><p> | | 8022 | <li class="listitem"><p> |
8000 | Changes to the <code class="filename">PLIST</code></p></li> | | 8023 | Changes to the <code class="filename">PLIST</code></p></li> |
8001 | <li class="listitem"><p>A dependency is changed or renamed.</p></li> | | 8024 | <li class="listitem"><p>A dependency is changed or renamed.</p></li> |
8002 | </ul></div> | | 8025 | </ul></div> |
8003 | <p>PKGREVISION must also be incremented when dependencies have ABI | | 8026 | <p>PKGREVISION must also be incremented when dependencies have ABI |
8004 | changes.</p> | | 8027 | changes.</p> |
8005 | </div> | | 8028 | </div> |
8006 | <div class="sect2"> | | 8029 | <div class="sect2"> |
8007 | <div class="titlepage"><div><div><h3 class="title"> | | 8030 | <div class="titlepage"><div><div><h3 class="title"> |
8008 | <a name="fixes.subst"></a>19.1.12. Substituting variable text in the package files (the SUBST framework)</h3></div></div></div> | | 8031 | <a name="fixes.subst"></a>19.1.12. Substituting variable text in the package files (the SUBST framework)</h3></div></div></div> |
8009 | <p>When you want to replace the same text in multiple files | | 8032 | <p>When you want to replace the same text in multiple files |
8010 | or when the replacement text varies, patches alone cannot help. | | 8033 | or when the replacement text varies, patches alone cannot help. |
8011 | This is where the SUBST framework comes in. It provides an | | 8034 | This is where the SUBST framework comes in. It provides an |
8012 | easy-to-use interface for replacing text in files. | | 8035 | easy-to-use interface for replacing text in files. |
8013 | Example:</p> | | 8036 | Example:</p> |
8014 | <pre class="programlisting"> | | 8037 | <pre class="programlisting"> |
8015 | SUBST_CLASSES+= fix-paths | | 8038 | SUBST_CLASSES+= fix-paths |
8016 | SUBST_STAGE.fix-paths= pre-configure | | 8039 | SUBST_STAGE.fix-paths= pre-configure |
8017 | SUBST_MESSAGE.fix-paths= Fixing absolute paths. | | 8040 | SUBST_MESSAGE.fix-paths= Fixing absolute paths. |
8018 | SUBST_FILES.fix-paths= src/*.c | | 8041 | SUBST_FILES.fix-paths= src/*.c |
8019 | SUBST_FILES.fix-paths+= scripts/*.sh | | 8042 | SUBST_FILES.fix-paths+= scripts/*.sh |
8020 | SUBST_SED.fix-paths= -e 's,"/usr/local,"${PREFIX},g' | | 8043 | SUBST_SED.fix-paths= -e 's,"/usr/local,"${PREFIX},g' |
8021 | SUBST_SED.fix-paths+= -e 's,"/var/log,"${VARBASE}/log,g' | | 8044 | SUBST_SED.fix-paths+= -e 's,"/var/log,"${VARBASE}/log,g' |
8022 | </pre> | | 8045 | </pre> |
8023 | <p><code class="varname">SUBST_CLASSES</code> is a list of identifiers | | 8046 | <p><code class="varname">SUBST_CLASSES</code> is a list of identifiers |
8024 | that are used to identify the different SUBST blocks that are | | 8047 | that are used to identify the different SUBST blocks that are |
8025 | defined. The SUBST framework is heavily used by pkgsrc, so it is | | 8048 | defined. The SUBST framework is heavily used by pkgsrc, so it is |
8026 | important to always use the <code class="literal">+=</code> operator with | | 8049 | important to always use the <code class="literal">+=</code> operator with |
8027 | this variable. Otherwise some substitutions may be | | 8050 | this variable. Otherwise some substitutions may be |
8028 | skipped.</p> | | 8051 | skipped.</p> |
8029 | <p>The remaining variables of each SUBST block are | | 8052 | <p>The remaining variables of each SUBST block are |
8030 | parameterized with the identifier from the first line | | 8053 | parameterized with the identifier from the first line |
8031 | (<code class="literal">fix-paths</code> in this case.) They can be seen as | | 8054 | (<code class="literal">fix-paths</code> in this case.) They can be seen as |
8032 | parameters to a function call.</p> | | 8055 | parameters to a function call.</p> |
8033 | <p><code class="varname">SUBST_STAGE.*</code> specifies the stage at | | 8056 | <p><code class="varname">SUBST_STAGE.*</code> specifies the stage at |
8034 | which the replacement will take place. All combinations of | | 8057 | which the replacement will take place. All combinations of |
8035 | <code class="literal">pre-</code>, <code class="literal">do-</code> and | | 8058 | <code class="literal">pre-</code>, <code class="literal">do-</code> and |
8036 | <code class="literal">post-</code> together with a phase name are | | 8059 | <code class="literal">post-</code> together with a phase name are |
8037 | possible, though only few are actually used. Most commonly used | | 8060 | possible, though only few are actually used. Most commonly used |
8038 | are <code class="literal">post-patch</code> and | | 8061 | are <code class="literal">post-patch</code> and |
8039 | <code class="literal">pre-configure</code>. Of these two, | | 8062 | <code class="literal">pre-configure</code>. Of these two, |
8040 | <code class="literal">pre-configure</code> should be preferred because | | 8063 | <code class="literal">pre-configure</code> should be preferred because |
8041 | then it is possible to run <span class="command"><strong>bmake patch</strong></span> and | | 8064 | then it is possible to run <span class="command"><strong>bmake patch</strong></span> and |
8042 | have the state after applying the patches but before making any | | 8065 | have the state after applying the patches but before making any |
8043 | other changes. This is especially useful when you are debugging | | 8066 | other changes. This is especially useful when you are debugging |
8044 | a package in order to create new patches for it. Similarly, | | 8067 | a package in order to create new patches for it. Similarly, |
8045 | <code class="literal">post-build</code> is preferred over | | 8068 | <code class="literal">post-build</code> is preferred over |
8046 | <code class="literal">pre-install</code>, because the install phase should | | 8069 | <code class="literal">pre-install</code>, because the install phase should |
8047 | generally be kept as simple as possible. When you use | | 8070 | generally be kept as simple as possible. When you use |
8048 | <code class="literal">post-build</code>, you have the same files in the | | 8071 | <code class="literal">post-build</code>, you have the same files in the |
8049 | working directory that will be installed later, so you can check | | 8072 | working directory that will be installed later, so you can check |
8050 | if the substitution has succeeded.</p> | | 8073 | if the substitution has succeeded.</p> |
8051 | <p><code class="varname">SUBST_MESSAGE.*</code> is an optional text | | 8074 | <p><code class="varname">SUBST_MESSAGE.*</code> is an optional text |
8052 | that is printed just before the substitution is done.</p> | | 8075 | that is printed just before the substitution is done.</p> |
8053 | <p><code class="varname">SUBST_FILES.*</code> is the list of shell | | 8076 | <p><code class="varname">SUBST_FILES.*</code> is the list of shell |
8054 | globbing patterns that specifies the files in which the | | 8077 | globbing patterns that specifies the files in which the |
8055 | substitution will take place. The patterns are interpreted | | 8078 | substitution will take place. The patterns are interpreted |
8056 | relatively to the <code class="varname">WRKSRC</code> directory.</p> | | 8079 | relatively to the <code class="varname">WRKSRC</code> directory.</p> |
8057 | <p><code class="varname">SUBST_SED.*</code> is a list of arguments to | | 8080 | <p><code class="varname">SUBST_SED.*</code> is a list of arguments to |
8058 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?sed+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">sed</span>(1)</span></a> that specify the actual substitution. Every sed | | 8081 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?sed+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">sed</span>(1)</span></a> that specify the actual substitution. Every sed |
8059 | command should be prefixed with <code class="literal">-e</code>, so that | | 8082 | command should be prefixed with <code class="literal">-e</code>, so that |
8060 | all SUBST blocks look uniform.</p> | | 8083 | all SUBST blocks look uniform.</p> |
8061 | <p>There are some more variables, but they are so seldomly | | 8084 | <p>There are some more variables, but they are so seldomly |
8062 | used that they are only documented in the | | 8085 | used that they are only documented in the |
8063 | <code class="filename">mk/subst.mk</code> file.</p> | | 8086 | <code class="filename">mk/subst.mk</code> file.</p> |
8064 | </div> | | 8087 | </div> |
8065 | </div> | | 8088 | </div> |
8066 | <div class="sect1"> | | 8089 | <div class="sect1"> |
8067 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 8090 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
8068 | <a name="fixes.fetch"></a>19.2. Fixing problems in the <span class="emphasis"><em>fetch</em></span> phase</h2></div></div></div> | | 8091 | <a name="fixes.fetch"></a>19.2. Fixing problems in the <span class="emphasis"><em>fetch</em></span> phase</h2></div></div></div> |
8069 | <div class="sect2"> | | 8092 | <div class="sect2"> |
8070 | <div class="titlepage"><div><div><h3 class="title"> | | 8093 | <div class="titlepage"><div><div><h3 class="title"> |
8071 | <a name="no-plain-download"></a>19.2.1. Packages whose distfiles aren't available for plain downloading</h3></div></div></div> | | 8094 | <a name="no-plain-download"></a>19.2.1. Packages whose distfiles aren't available for plain downloading</h3></div></div></div> |
8072 | <p>If you need to download from a dynamic URL you can set | | 8095 | <p>If you need to download from a dynamic URL you can set |
8073 | <code class="varname">DYNAMIC_MASTER_SITES</code> and a <span class="command"><strong>make | | 8096 | <code class="varname">DYNAMIC_MASTER_SITES</code> and a <span class="command"><strong>make |
8074 | fetch</strong></span> will call <code class="filename">files/getsite.sh</code> | | 8097 | fetch</strong></span> will call <code class="filename">files/getsite.sh</code> |
8075 | with the name of each file to download as an argument, expecting | | 8098 | with the name of each file to download as an argument, expecting |
8076 | it to output the URL of the directory from which to download | | 8099 | it to output the URL of the directory from which to download |
8077 | it. <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/graphics/ns-cult3d/README.html" target="_top"><code class="filename">graphics/ns-cult3d</code></a> is an | | 8100 | it. <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/graphics/ns-cult3d/README.html" target="_top"><code class="filename">graphics/ns-cult3d</code></a> is an |
8078 | example of this usage.</p> | | 8101 | example of this usage.</p> |
8079 | <p>If the download can't be automated, because the user must | | 8102 | <p>If the download can't be automated, because the user must |
8080 | submit personal information to apply for a password, or must pay | | 8103 | submit personal information to apply for a password, or must pay |
8081 | for the source, or whatever, you can set | | 8104 | for the source, or whatever, you can set |
8082 | <code class="varname">FETCH_MESSAGE</code> to a list of lines that are | | 8105 | <code class="varname">FETCH_MESSAGE</code> to a list of lines that are |
8083 | displayed to the user before aborting the build. Example:</p> | | 8106 | displayed to the user before aborting the build. Example:</p> |
8084 | <pre class="programlisting"> | | 8107 | <pre class="programlisting"> |
8085 | FETCH_MESSAGE= "Please download the files" | | 8108 | FETCH_MESSAGE= "Please download the files" |
8086 | FETCH_MESSAGE+= " "${DISTFILES:Q} | | 8109 | FETCH_MESSAGE+= " "${DISTFILES:Q} |
8087 | FETCH_MESSAGE+= "manually from "${MASTER_SITES:Q}"." | | 8110 | FETCH_MESSAGE+= "manually from "${MASTER_SITES:Q}"." |
8088 | </pre> | | 8111 | </pre> |
8089 | </div> | | 8112 | </div> |
8090 | <div class="sect2"> | | 8113 | <div class="sect2"> |
8091 | <div class="titlepage"><div><div><h3 class="title"> | | 8114 | <div class="titlepage"><div><div><h3 class="title"> |
8092 | <a name="modified-distfiles-same-name"></a>19.2.2. How to handle modified distfiles with the 'old' name</h3></div></div></div> | | 8115 | <a name="modified-distfiles-same-name"></a>19.2.2. How to handle modified distfiles with the 'old' name</h3></div></div></div> |
8093 | <p>Sometimes authors of a software package make some | | 8116 | <p>Sometimes authors of a software package make some |
8094 | modifications after the software was released, and they put up a | | 8117 | modifications after the software was released, and they put up a |
8095 | new distfile without changing the package's version number. If a | | 8118 | new distfile without changing the package's version number. If a |
8096 | package is already in pkgsrc at that time, the checksum will | | 8119 | package is already in pkgsrc at that time, the checksum will |
8097 | no longer match. The contents of the new distfile should be | | 8120 | no longer match. The contents of the new distfile should be |
8098 | compared against the old one before changing anything, to make | | 8121 | compared against the old one before changing anything, to make |
8099 | sure the distfile was really updated on purpose, and that | | 8122 | sure the distfile was really updated on purpose, and that |
8100 | no trojan horse or so crept in. | | 8123 | no trojan horse or so crept in. |
8101 | Please mention that the distfiles were compared and what was found | | 8124 | Please mention that the distfiles were compared and what was found |
8102 | in your commit message.</p> | | 8125 | in your commit message.</p> |
8103 | <p>Then, the correct way to work around this is to | | 8126 | <p>Then, the correct way to work around this is to |
8104 | set <code class="varname">DIST_SUBDIR</code> to a unique directory name, | | 8127 | set <code class="varname">DIST_SUBDIR</code> to a unique directory name, |
8105 | usually based on <code class="varname">PKGNAME_NOREV</code>. All | | 8128 | usually based on <code class="varname">PKGNAME_NOREV</code>. All |
8106 | <code class="varname">DISTFILES</code> and | | 8129 | <code class="varname">DISTFILES</code> and |
8107 | <code class="varname">PATCHFILES</code> for this package will be put in that | | 8130 | <code class="varname">PATCHFILES</code> for this package will be put in that |
8108 | subdirectory of the local distfiles directory. | | 8131 | subdirectory of the local distfiles directory. |
8109 | (See <a class="xref" href="#bumping-pkgrevision" title="19.1.11. How to handle incrementing versions when fixing an existing package">Section 19.1.11, “How to handle incrementing versions when fixing an existing package”</a> for more details.) | | 8132 | (See <a class="xref" href="#bumping-pkgrevision" title="19.1.11. How to handle incrementing versions when fixing an existing package">Section 19.1.11, “How to handle incrementing versions when fixing an existing package”</a> for more details.) |
8110 | In case this | | 8133 | In case this |
8111 | happens more often, <code class="varname">PKGNAME</code> can be used (thus | | 8134 | happens more often, <code class="varname">PKGNAME</code> can be used (thus |
8112 | including the <code class="filename">nbX</code> suffix) or a date stamp | | 8135 | including the <code class="filename">nbX</code> suffix) or a date stamp |
8113 | can be appended, like <code class="varname">${PKGNAME_NOREV}-YYYYMMDD</code>.</p> | | 8136 | can be appended, like <code class="varname">${PKGNAME_NOREV}-YYYYMMDD</code>.</p> |
8114 | <p><code class="varname">DIST_SUBDIR</code> is also used when a distfile's name does not contain a version and the distfile is apt to change. In cases where the likelihood of this is very small, <code class="varname">DIST_SUBDIR</code> might not be required. Additionally, <code class="varname">DIST_SUBDIR</code> must not be removed unless the distfile name changes, even if a package is being moved or renamed.</p> | | 8137 | <p><code class="varname">DIST_SUBDIR</code> is also used when a distfile's name does not contain a version and the distfile is apt to change. In cases where the likelihood of this is very small, <code class="varname">DIST_SUBDIR</code> might not be required. Additionally, <code class="varname">DIST_SUBDIR</code> must not be removed unless the distfile name changes, even if a package is being moved or renamed.</p> |
8115 | <p>Do not forget regenerating the <code class="filename">distinfo</code> file | | 8138 | <p>Do not forget regenerating the <code class="filename">distinfo</code> file |
8116 | after that, since it contains the <code class="varname">DIST_SUBDIR</code> | | 8139 | after that, since it contains the <code class="varname">DIST_SUBDIR</code> |
8117 | path in the filenames. | | 8140 | path in the filenames. |
8118 | Also, increase the PKGREVISION if the installed package is different. | | 8141 | Also, increase the PKGREVISION if the installed package is different. |
8119 | Furthermore, a mail to the package's authors seems appropriate | | 8142 | Furthermore, a mail to the package's authors seems appropriate |
8120 | telling them that changing distfiles after releases without | | 8143 | telling them that changing distfiles after releases without |
8121 | changing the file names is not good practice.</p> | | 8144 | changing the file names is not good practice.</p> |
8122 | </div> | | 8145 | </div> |
8123 | </div> | | 8146 | </div> |
8124 | <div class="sect1"> | | 8147 | <div class="sect1"> |
8125 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 8148 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
8126 | <a name="fixes.configure"></a>19.3. Fixing problems in the <span class="emphasis"><em>configure</em></span> phase</h2></div></div></div> | | 8149 | <a name="fixes.configure"></a>19.3. Fixing problems in the <span class="emphasis"><em>configure</em></span> phase</h2></div></div></div> |
8127 | <div class="sect2"> | | 8150 | <div class="sect2"> |
8128 | <div class="titlepage"><div><div><h3 class="title"> | | 8151 | <div class="titlepage"><div><div><h3 class="title"> |
8129 | <a name="fixes.libtool"></a>19.3.1. Shared libraries - libtool</h3></div></div></div> | | 8152 | <a name="fixes.libtool"></a>19.3.1. Shared libraries - libtool</h3></div></div></div> |
8130 | <p>pkgsrc supports many different machines, with different | | 8153 | <p>pkgsrc supports many different machines, with different |
8131 | object formats like a.out and ELF, and varying abilities to do | | 8154 | object formats like a.out and ELF, and varying abilities to do |
8132 | shared library and dynamic loading at all. To accompany this, | | 8155 | shared library and dynamic loading at all. To accompany this, |
8133 | varying commands and options have to be passed to the | | 8156 | varying commands and options have to be passed to the |
8134 | compiler, linker, etc. to get the Right Thing, which can be | | 8157 | compiler, linker, etc. to get the Right Thing, which can be |
8135 | pretty annoying especially if you don't have all the machines | | 8158 | pretty annoying especially if you don't have all the machines |
8136 | at your hand to test things. The | | 8159 | at your hand to test things. The |
8137 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/libtool/README.html" target="_top"><code class="filename">devel/libtool</code></a> pkg | | 8160 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/libtool/README.html" target="_top"><code class="filename">devel/libtool</code></a> pkg |
8138 | can help here, as it just <span class="quote">“<span class="quote">knows</span>”</span> how to build | | 8161 | can help here, as it just <span class="quote">“<span class="quote">knows</span>”</span> how to build |
8139 | both static and dynamic libraries from a set of source files, | | 8162 | both static and dynamic libraries from a set of source files, |
8140 | thus being platform-independent.</p> | | 8163 | thus being platform-independent.</p> |
8141 | <p>Here's how to use libtool in a package in seven simple | | 8164 | <p>Here's how to use libtool in a package in seven simple |
8142 | steps:</p> | | 8165 | steps:</p> |
8143 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8166 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8144 | <li class="listitem"><p>Add <code class="varname">USE_LIBTOOL=yes</code> to the package | | 8167 | <li class="listitem"><p>Add <code class="varname">USE_LIBTOOL=yes</code> to the package |
8145 | Makefile.</p></li> | | 8168 | Makefile.</p></li> |
8146 | <li class="listitem"><p>For library objects, use <span class="quote">“<span class="quote">${LIBTOOL} --mode=compile | | 8169 | <li class="listitem"><p>For library objects, use <span class="quote">“<span class="quote">${LIBTOOL} --mode=compile |
8147 | ${CC}</span>”</span> in place of <span class="quote">“<span class="quote">${CC}</span>”</span>. You could even | | 8170 | ${CC}</span>”</span> in place of <span class="quote">“<span class="quote">${CC}</span>”</span>. You could even |
8148 | add it to the definition of <code class="varname">CC</code>, if only | | 8171 | add it to the definition of <code class="varname">CC</code>, if only |
8149 | libraries are being built in a given Makefile. This one command | | 8172 | libraries are being built in a given Makefile. This one command |
8150 | will build both PIC and non-PIC library objects, so you need not | | 8173 | will build both PIC and non-PIC library objects, so you need not |
8151 | have separate shared and non-shared library rules.</p></li> | | 8174 | have separate shared and non-shared library rules.</p></li> |
8152 | <li class="listitem"> | | 8175 | <li class="listitem"> |
8153 | <p>For the linking of the library, remove any | | 8176 | <p>For the linking of the library, remove any |
8154 | <span class="quote">“<span class="quote">ar</span>”</span>, <span class="quote">“<span class="quote">ranlib</span>”</span>, and <span class="quote">“<span class="quote">ld | | 8177 | <span class="quote">“<span class="quote">ar</span>”</span>, <span class="quote">“<span class="quote">ranlib</span>”</span>, and <span class="quote">“<span class="quote">ld |
8155 | -Bshareable</span>”</span> commands, and instead use:</p> | | 8178 | -Bshareable</span>”</span> commands, and instead use:</p> |
8156 | <pre class="programlisting"> | | 8179 | <pre class="programlisting"> |
8157 | ${LIBTOOL} --mode=link \ | | 8180 | ${LIBTOOL} --mode=link \ |
8158 | ${CC} -o ${.TARGET:.a=.la} \ | | 8181 | ${CC} -o ${.TARGET:.a=.la} \ |
8159 | ${OBJS:.o=.lo} \ | | 8182 | ${OBJS:.o=.lo} \ |
8160 | -rpath ${PREFIX}/lib \ | | 8183 | -rpath ${PREFIX}/lib \ |
8161 | -version-info major:minor | | 8184 | -version-info major:minor |
8162 | </pre> | | 8185 | </pre> |
8163 | <p>Note that the library is changed to have a | | 8186 | <p>Note that the library is changed to have a |
8164 | <code class="filename">.la</code> extension, and the objects are | | 8187 | <code class="filename">.la</code> extension, and the objects are |
8165 | changed to have a <code class="filename">.lo</code> | | 8188 | changed to have a <code class="filename">.lo</code> |
8166 | extension. Change <code class="varname">OBJS</code> as | | 8189 | extension. Change <code class="varname">OBJS</code> as |
8167 | necessary. This automatically creates all of the | | 8190 | necessary. This automatically creates all of the |
8168 | <code class="filename">.a</code>, | | 8191 | <code class="filename">.a</code>, |
8169 | <code class="filename">.so.major.minor</code>, and ELF symlinks (if | | 8192 | <code class="filename">.so.major.minor</code>, and ELF symlinks (if |
8170 | necessary) in the build directory. Be sure to include | | 8193 | necessary) in the build directory. Be sure to include |
8171 | <span class="quote">“<span class="quote">-version-info</span>”</span>, especially when major and | | 8194 | <span class="quote">“<span class="quote">-version-info</span>”</span>, especially when major and |
8172 | minor are zero, as libtool will otherwise strip off the | | 8195 | minor are zero, as libtool will otherwise strip off the |
8173 | shared library version.</p> | | 8196 | shared library version.</p> |
8174 | <p>From the libtool manual:</p> | | 8197 | <p>From the libtool manual:</p> |
8175 | <pre class="programlisting"> | | 8198 | <pre class="programlisting"> |
8176 | So, libtool library versions are described by three integers: | | 8199 | So, libtool library versions are described by three integers: |
8177 | | | 8200 | |
8178 | CURRENT | | 8201 | CURRENT |
8179 | The most recent interface number that this library implements. | | 8202 | The most recent interface number that this library implements. |
8180 | | | 8203 | |
8181 | REVISION | | 8204 | REVISION |
8182 | The implementation number of the CURRENT interface. | | 8205 | The implementation number of the CURRENT interface. |
8183 | | | 8206 | |
8184 | AGE | | 8207 | AGE |
8185 | The difference between the newest and oldest interfaces that | | 8208 | The difference between the newest and oldest interfaces that |
8186 | this library implements. In other words, the library implements | | 8209 | this library implements. In other words, the library implements |
8187 | all the interface numbers in the range from number `CURRENT - | | 8210 | all the interface numbers in the range from number `CURRENT - |
8188 | AGE' to `CURRENT'. | | 8211 | AGE' to `CURRENT'. |
8189 | | | 8212 | |
8190 | If two libraries have identical CURRENT and AGE numbers, then the | | 8213 | If two libraries have identical CURRENT and AGE numbers, then the |
8191 | dynamic linker chooses the library with the greater REVISION number. | | 8214 | dynamic linker chooses the library with the greater REVISION number. |
8192 | </pre> | | 8215 | </pre> |
8193 | <p>The <span class="quote">“<span class="quote">-release</span>”</span> option will produce | | 8216 | <p>The <span class="quote">“<span class="quote">-release</span>”</span> option will produce |
8194 | different results for a.out and ELF (excluding symlinks) | | 8217 | different results for a.out and ELF (excluding symlinks) |
8195 | in only one case. An ELF library of the form | | 8218 | in only one case. An ELF library of the form |
8196 | <span class="quote">“<span class="quote">libfoo-release.so.<span class="emphasis"><em>x</em></span>.<span class="emphasis"><em>y</em></span></span>”</span> | | 8219 | <span class="quote">“<span class="quote">libfoo-release.so.<span class="emphasis"><em>x</em></span>.<span class="emphasis"><em>y</em></span></span>”</span> |
8197 | will have a symlink of | | 8220 | will have a symlink of |
8198 | <span class="quote">“<span class="quote">libfoo.so.<span class="emphasis"><em>x</em></span>.<span class="emphasis"><em>y</em></span></span>”</span> | | 8221 | <span class="quote">“<span class="quote">libfoo.so.<span class="emphasis"><em>x</em></span>.<span class="emphasis"><em>y</em></span></span>”</span> |
8199 | on an a.out platform. This is handled | | 8222 | on an a.out platform. This is handled |
8200 | automatically.</p> | | 8223 | automatically.</p> |
8201 | <p>The <span class="quote">“<span class="quote">-rpath argument</span>”</span> is the install | | 8224 | <p>The <span class="quote">“<span class="quote">-rpath argument</span>”</span> is the install |
8202 | directory of the library being built.</p> | | 8225 | directory of the library being built.</p> |
8203 | <p>In the <code class="filename">PLIST</code>, include only the | | 8226 | <p>In the <code class="filename">PLIST</code>, include only the |
8204 | <code class="filename">.la</code> file, the other files will be | | 8227 | <code class="filename">.la</code> file, the other files will be |
8205 | added automatically.</p> | | 8228 | added automatically.</p> |
8206 | </li> | | 8229 | </li> |
8207 | <li class="listitem"> | | 8230 | <li class="listitem"> |
8208 | <p>When linking shared object (<code class="filename">.so</code>) | | 8231 | <p>When linking shared object (<code class="filename">.so</code>) |
8209 | files, i.e. files that are loaded via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?dlopen+3+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">dlopen</span>(3)</span></a>, NOT | | 8232 | files, i.e. files that are loaded via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?dlopen+3+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">dlopen</span>(3)</span></a>, NOT |
8210 | shared libraries, use <span class="quote">“<span class="quote">-module | | 8233 | shared libraries, use <span class="quote">“<span class="quote">-module |
8211 | -avoid-version</span>”</span> to prevent them getting version | | 8234 | -avoid-version</span>”</span> to prevent them getting version |
8212 | tacked on.</p> | | 8235 | tacked on.</p> |
8213 | <p>The <code class="filename">PLIST</code> file gets the | | 8236 | <p>The <code class="filename">PLIST</code> file gets the |
8214 | <code class="filename">foo.so</code> entry.</p> | | 8237 | <code class="filename">foo.so</code> entry.</p> |
8215 | </li> | | 8238 | </li> |
8216 | <li class="listitem"> | | 8239 | <li class="listitem"> |
8217 | <p>When linking programs that depend on these libraries | | 8240 | <p>When linking programs that depend on these libraries |
8218 | <span class="emphasis"><em>before</em></span> they are installed, preface | | 8241 | <span class="emphasis"><em>before</em></span> they are installed, preface |
8219 | the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?cc+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">cc</span>(1)</span></a> or <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?ld+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">ld</span>(1)</span></a> line with <span class="quote">“<span class="quote">${LIBTOOL} | | 8242 | the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?cc+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">cc</span>(1)</span></a> or <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?ld+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">ld</span>(1)</span></a> line with <span class="quote">“<span class="quote">${LIBTOOL} |
8220 | --mode=link</span>”</span>, and it will find the correct | | 8243 | --mode=link</span>”</span>, and it will find the correct |
8221 | libraries (static or shared), but please be aware that | | 8244 | libraries (static or shared), but please be aware that |
8222 | libtool will not allow you to specify a relative path in | | 8245 | libtool will not allow you to specify a relative path in |
8223 | -L (such as <span class="quote">“<span class="quote">-L../somelib</span>”</span>), because it | | 8246 | -L (such as <span class="quote">“<span class="quote">-L../somelib</span>”</span>), because it |
8224 | expects you to change that argument to be the | | 8247 | expects you to change that argument to be the |
8225 | <code class="filename">.la</code> file. e.g.</p> | | 8248 | <code class="filename">.la</code> file. e.g.</p> |
8226 | <pre class="programlisting"> | | 8249 | <pre class="programlisting"> |
8227 | ${LIBTOOL} --mode=link ${CC} -o someprog -L../somelib -lsomelib | | 8250 | ${LIBTOOL} --mode=link ${CC} -o someprog -L../somelib -lsomelib |
8228 | </pre> | | 8251 | </pre> |
8229 | <p>should be changed to:</p> | | 8252 | <p>should be changed to:</p> |
8230 | <pre class="programlisting"> | | 8253 | <pre class="programlisting"> |
8231 | ${LIBTOOL} --mode=link ${CC} -o <em class="replaceable"><code>someprog</code></em> <em class="replaceable"><code>../somelib/somelib.la</code></em> | | 8254 | ${LIBTOOL} --mode=link ${CC} -o <em class="replaceable"><code>someprog</code></em> <em class="replaceable"><code>../somelib/somelib.la</code></em> |
8232 | </pre> | | 8255 | </pre> |
8233 | <p>and it will do the right thing with the libraries.</p> | | 8256 | <p>and it will do the right thing with the libraries.</p> |
8234 | </li> | | 8257 | </li> |
8235 | <li class="listitem"> | | 8258 | <li class="listitem"> |
8236 | <p>When installing libraries, preface the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?install+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">install</span>(1)</span></a> | | 8259 | <p>When installing libraries, preface the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?install+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">install</span>(1)</span></a> |
8237 | or <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?cp+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">cp</span>(1)</span></a> command with <span class="quote">“<span class="quote">${LIBTOOL} | | 8260 | or <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?cp+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">cp</span>(1)</span></a> command with <span class="quote">“<span class="quote">${LIBTOOL} |
8238 | --mode=install</span>”</span>, and change the library name to | | 8261 | --mode=install</span>”</span>, and change the library name to |
8239 | <code class="filename">.la</code>. e.g.</p> | | 8262 | <code class="filename">.la</code>. e.g.</p> |
8240 | <pre class="programlisting"> | | 8263 | <pre class="programlisting"> |
8241 | ${LIBTOOL} --mode=install ${BSD_INSTALL_LIB} ${SOMELIB:.a=.la} ${PREFIX}/lib | | 8264 | ${LIBTOOL} --mode=install ${BSD_INSTALL_LIB} ${SOMELIB:.a=.la} ${PREFIX}/lib |
8242 | </pre> | | 8265 | </pre> |
8243 | <p>This will install the static <code class="filename">.a</code>, | | 8266 | <p>This will install the static <code class="filename">.a</code>, |
8244 | shared library, any needed symlinks, and run | | 8267 | shared library, any needed symlinks, and run |
8245 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?ldconfig+8+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">ldconfig</span>(8)</span></a>.</p> | | 8268 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?ldconfig+8+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">ldconfig</span>(8)</span></a>.</p> |
8246 | </li> | | 8269 | </li> |
8247 | <li class="listitem"><p>In your <code class="filename">PLIST</code>, include only | | 8270 | <li class="listitem"><p>In your <code class="filename">PLIST</code>, include only |
8248 | the <code class="filename">.la</code> | | 8271 | the <code class="filename">.la</code> |
8249 | file (this is a change from previous behaviour).</p></li> | | 8272 | file (this is a change from previous behaviour).</p></li> |
8250 | </ol></div> | | 8273 | </ol></div> |
8251 | </div> | | 8274 | </div> |
8252 | <div class="sect2"> | | 8275 | <div class="sect2"> |
8253 | <div class="titlepage"><div><div><h3 class="title"> | | 8276 | <div class="titlepage"><div><div><h3 class="title"> |
8254 | <a name="using-libtool"></a>19.3.2. Using libtool on GNU packages that already support libtool</h3></div></div></div> | | 8277 | <a name="using-libtool"></a>19.3.2. Using libtool on GNU packages that already support libtool</h3></div></div></div> |
8255 | <p>Add <code class="varname">USE_LIBTOOL=yes</code> to the | | 8278 | <p>Add <code class="varname">USE_LIBTOOL=yes</code> to the |
8256 | package Makefile. This will override the package's own libtool | | 8279 | package Makefile. This will override the package's own libtool |
8257 | in most cases. For older libtool using packages, libtool is | | 8280 | in most cases. For older libtool using packages, libtool is |
8258 | made by ltconfig script during the do-configure step; you can | | 8281 | made by ltconfig script during the do-configure step; you can |
8259 | check the libtool script location by doing <span class="command"><strong>make | | 8282 | check the libtool script location by doing <span class="command"><strong>make |
8260 | configure; find work*/ -name libtool</strong></span>.</p> | | 8283 | configure; find work*/ -name libtool</strong></span>.</p> |
8261 | <p><code class="varname">LIBTOOL_OVERRIDE</code> specifies which libtool | | 8284 | <p><code class="varname">LIBTOOL_OVERRIDE</code> specifies which libtool |
8262 | scripts, relative to <code class="varname">WRKSRC</code>, to override. By | | 8285 | scripts, relative to <code class="varname">WRKSRC</code>, to override. By |
8263 | default, it is set to <span class="quote">“<span class="quote">libtool */libtool | | 8286 | default, it is set to <span class="quote">“<span class="quote">libtool */libtool |
8264 | */*/libtool</span>”</span>. If this does not match the location of the | | 8287 | */*/libtool</span>”</span>. If this does not match the location of the |
8265 | package's libtool script(s), set it as appropriate.</p> | | 8288 | package's libtool script(s), set it as appropriate.</p> |
8266 | <p>If you do not need <code class="filename">*.a</code> static | | 8289 | <p>If you do not need <code class="filename">*.a</code> static |
8267 | libraries built and installed, then use | | 8290 | libraries built and installed, then use |
8268 | <code class="varname">SHLIBTOOL_OVERRIDE</code> instead.</p> | | 8291 | <code class="varname">SHLIBTOOL_OVERRIDE</code> instead.</p> |
8269 | <p>If your package makes use of the platform-independent library | | 8292 | <p>If your package makes use of the platform-independent library |
8270 | for loading dynamic shared objects, that comes with libtool | | 8293 | for loading dynamic shared objects, that comes with libtool |
8271 | (libltdl), you should include devel/libltdl/buildlink3.mk.</p> | | 8294 | (libltdl), you should include devel/libltdl/buildlink3.mk.</p> |
8272 | <p>Some packages use libtool incorrectly so that the package | | 8295 | <p>Some packages use libtool incorrectly so that the package |
8273 | may not work or build in some circumstances. Some of the more | | 8296 | may not work or build in some circumstances. Some of the more |
8274 | common errors are:</p> | | 8297 | common errors are:</p> |
8275 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 8298 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
8276 | <li class="listitem"> | | 8299 | <li class="listitem"> |
8277 | <p>The inclusion of a shared object (-module) as a dependent library in an | | 8300 | <p>The inclusion of a shared object (-module) as a dependent library in an |
8278 | executable or library. This in itself isn't a problem if one of two things | | 8301 | executable or library. This in itself isn't a problem if one of two things |
8279 | has been done:</p> | | 8302 | has been done:</p> |
8280 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8303 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8281 | <li class="listitem"><p>The shared object is named correctly, i.e. | | 8304 | <li class="listitem"><p>The shared object is named correctly, i.e. |
8282 | <code class="filename">libfoo.la</code>, not | | 8305 | <code class="filename">libfoo.la</code>, not |
8283 | <code class="filename">foo.la</code></p></li> | | 8306 | <code class="filename">foo.la</code></p></li> |
8284 | <li class="listitem"><p>The -dlopen option is used when linking an executable.</p></li> | | 8307 | <li class="listitem"><p>The -dlopen option is used when linking an executable.</p></li> |
8285 | </ol></div> | | 8308 | </ol></div> |
8286 | </li> | | 8309 | </li> |
8287 | <li class="listitem"><p>The use of libltdl without the correct calls to initialisation routines. | | 8310 | <li class="listitem"><p>The use of libltdl without the correct calls to initialisation routines. |
8288 | The function lt_dlinit() should be called and the macro | | 8311 | The function lt_dlinit() should be called and the macro |
8289 | <code class="varname">LTDL_SET_PRELOADED_SYMBOLS</code> included in | | 8312 | <code class="varname">LTDL_SET_PRELOADED_SYMBOLS</code> included in |
8290 | executables.</p></li> | | 8313 | executables.</p></li> |
8291 | </ul></div> | | 8314 | </ul></div> |
8292 | </div> | | 8315 | </div> |
8293 | <div class="sect2"> | | 8316 | <div class="sect2"> |
8294 | <div class="titlepage"><div><div><h3 class="title"> | | 8317 | <div class="titlepage"><div><div><h3 class="title"> |
8295 | <a name="autoconf-automake"></a>19.3.3. GNU Autoconf/Automake</h3></div></div></div> | | 8318 | <a name="autoconf-automake"></a>19.3.3. GNU Autoconf/Automake</h3></div></div></div> |
8296 | <p>If a package needs GNU autoconf or automake to be executed | | 8319 | <p>If a package needs GNU autoconf or automake to be executed |
8297 | to regenerate the configure script and Makefile.in makefile | | 8320 | to regenerate the configure script and Makefile.in makefile |
8298 | templates, then they should be executed in a pre-configure | | 8321 | templates, then they should be executed in a pre-configure |
8299 | target.</p> | | 8322 | target.</p> |
8300 | <p>For packages that need only autoconf:</p> | | 8323 | <p>For packages that need only autoconf:</p> |
8301 | <pre class="programlisting"> | | 8324 | <pre class="programlisting"> |
8302 | AUTOCONF_REQD= 2.50 # if default version is not good enough | | 8325 | AUTOCONF_REQD= 2.50 # if default version is not good enough |
8303 | USE_TOOLS+= autoconf # use "autoconf213" for autoconf-2.13 | | 8326 | USE_TOOLS+= autoconf # use "autoconf213" for autoconf-2.13 |
8304 | ... | | 8327 | ... |
8305 | | | 8328 | |
8306 | pre-configure: | | 8329 | pre-configure: |
8307 | cd ${WRKSRC} && autoconf | | 8330 | cd ${WRKSRC} && autoconf |
8308 | | | 8331 | |
8309 | ... | | 8332 | ... |
8310 | </pre> | | 8333 | </pre> |
8311 | <p>and for packages that need automake and autoconf:</p> | | 8334 | <p>and for packages that need automake and autoconf:</p> |
8312 | <pre class="programlisting"> | | 8335 | <pre class="programlisting"> |
8313 | AUTOMAKE_REQD= 1.7.1 # if default version is not good enough | | 8336 | AUTOMAKE_REQD= 1.7.1 # if default version is not good enough |
8314 | USE_TOOLS+= automake # use "automake14" for automake-1.4 | | 8337 | USE_TOOLS+= automake # use "automake14" for automake-1.4 |
8315 | ... | | 8338 | ... |
8316 | | | 8339 | |
8317 | pre-configure: | | 8340 | pre-configure: |
8318 | set -e; cd ${WRKSRC}; \ | | 8341 | set -e; cd ${WRKSRC}; \ |
8319 | aclocal; autoheader; automake -a --foreign -i; autoconf | | 8342 | aclocal; autoheader; automake -a --foreign -i; autoconf |
8320 | | | 8343 | |
8321 | ... | | 8344 | ... |
8322 | </pre> | | 8345 | </pre> |
8323 | <p>Packages which use GNU Automake will almost certainly | | 8346 | <p>Packages which use GNU Automake will almost certainly |
8324 | require GNU Make.</p> | | 8347 | require GNU Make.</p> |
8325 | <p>There are times when the configure process makes | | 8348 | <p>There are times when the configure process makes |
8326 | additional changes to the generated files, which then causes | | 8349 | additional changes to the generated files, which then causes |
8327 | the build process to try to re-execute the automake sequence. | | 8350 | the build process to try to re-execute the automake sequence. |
8328 | This is prevented by touching various files in the configure | | 8351 | This is prevented by touching various files in the configure |
8329 | stage. If this causes problems with your package you can set | | 8352 | stage. If this causes problems with your package you can set |
8330 | <code class="varname">AUTOMAKE_OVERRIDE=NO</code> in the package | | 8353 | <code class="varname">AUTOMAKE_OVERRIDE=NO</code> in the package |
8331 | Makefile.</p> | | 8354 | Makefile.</p> |
8332 | </div> | | 8355 | </div> |
8333 | </div> | | 8356 | </div> |
8334 | <div class="sect1"> | | 8357 | <div class="sect1"> |
8335 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 8358 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
8336 | <a name="programming-languages"></a>19.4. Programming languages</h2></div></div></div> | | 8359 | <a name="programming-languages"></a>19.4. Programming languages</h2></div></div></div> |
8337 | <div class="sect2"> | | 8360 | <div class="sect2"> |
8338 | <div class="titlepage"><div><div><h3 class="title"> | | 8361 | <div class="titlepage"><div><div><h3 class="title"> |
8339 | <a name="basic-programming-languages"></a>19.4.1. C, C++, and Fortran</h3></div></div></div> | | 8362 | <a name="basic-programming-languages"></a>19.4.1. C, C++, and Fortran</h3></div></div></div> |
8340 | <p>Compilers for the C, C++, and Fortran languages comes with | | 8363 | <p>Compilers for the C, C++, and Fortran languages comes with |
8341 | the NetBSD base system. By default, pkgsrc assumes that a package | | 8364 | the NetBSD base system. By default, pkgsrc assumes that a package |
8342 | is written in C and will hide all other compilers (via the wrapper | | 8365 | is written in C and will hide all other compilers (via the wrapper |
8343 | framework, see <a class="xref" href="#buildlink" title="Chapter 14. Buildlink methodology">Chapter 14, <i>Buildlink methodology</i></a>).</p> | | 8366 | framework, see <a class="xref" href="#buildlink" title="Chapter 14. Buildlink methodology">Chapter 14, <i>Buildlink methodology</i></a>).</p> |
8344 | <p>To declare which language's compiler a package needs, set | | 8367 | <p>To declare which language's compiler a package needs, set |
8345 | the <code class="varname">USE_LANGUAGES</code> variable. Allowed values | | 8368 | the <code class="varname">USE_LANGUAGES</code> variable. Allowed values |
8346 | currently are <span class="quote">“<span class="quote">c</span>”</span>, <span class="quote">“<span class="quote">c++</span>”</span>, and | | 8369 | currently are <span class="quote">“<span class="quote">c</span>”</span>, <span class="quote">“<span class="quote">c++</span>”</span>, and |
8347 | <span class="quote">“<span class="quote">fortran</span>”</span> (and any combination). The default is | | 8370 | <span class="quote">“<span class="quote">fortran</span>”</span> (and any combination). The default is |
8348 | <span class="quote">“<span class="quote">c</span>”</span>. Packages using GNU configure scripts, even if | | 8371 | <span class="quote">“<span class="quote">c</span>”</span>. Packages using GNU configure scripts, even if |
8349 | written in C++, usually need a C compiler for the configure | | 8372 | written in C++, usually need a C compiler for the configure |
8350 | phase.</p> | | 8373 | phase.</p> |
8351 | </div> | | 8374 | </div> |
8352 | <div class="sect2"> | | 8375 | <div class="sect2"> |
8353 | <div class="titlepage"><div><div><h3 class="title"> | | 8376 | <div class="titlepage"><div><div><h3 class="title"> |
8354 | <a name="java-programming-language"></a>19.4.2. Java</h3></div></div></div> | | 8377 | <a name="java-programming-language"></a>19.4.2. Java</h3></div></div></div> |
8355 | <p>If a program is written in Java, use the Java framework in | | 8378 | <p>If a program is written in Java, use the Java framework in |
8356 | pkgsrc. The package must include | | 8379 | pkgsrc. The package must include |
8357 | <code class="filename">../../mk/java-vm.mk</code>. This Makefile fragment | | 8380 | <code class="filename">../../mk/java-vm.mk</code>. This Makefile fragment |
8358 | provides the following variables:</p> | | 8381 | provides the following variables:</p> |
8359 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 8382 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
8360 | <li class="listitem"><p><code class="varname">USE_JAVA</code> defines if a build | | 8383 | <li class="listitem"><p><code class="varname">USE_JAVA</code> defines if a build |
8361 | dependency on the JDK is added. If | | 8384 | dependency on the JDK is added. If |
8362 | <code class="varname">USE_JAVA</code> is set to <span class="quote">“<span class="quote">run</span>”</span>, then | | 8385 | <code class="varname">USE_JAVA</code> is set to <span class="quote">“<span class="quote">run</span>”</span>, then |
8363 | there is only a runtime dependency on the JDK. The default is | | 8386 | there is only a runtime dependency on the JDK. The default is |
8364 | <span class="quote">“<span class="quote">yes</span>”</span>, which also adds a build dependency on the | | 8387 | <span class="quote">“<span class="quote">yes</span>”</span>, which also adds a build dependency on the |
8365 | JDK.</p></li> | | 8388 | JDK.</p></li> |
8366 | <li class="listitem"><p>Set <code class="varname">USE_JAVA2</code> to declare that | | 8389 | <li class="listitem"><p>Set <code class="varname">USE_JAVA2</code> to declare that |
8367 | a package needs a Java2 implementation. The supported values | | 8390 | a package needs a Java2 implementation. The supported values |
8368 | are <span class="quote">“<span class="quote">yes</span>”</span>, <span class="quote">“<span class="quote">1.4</span>”</span>, and | | 8391 | are <span class="quote">“<span class="quote">yes</span>”</span>, <span class="quote">“<span class="quote">1.4</span>”</span>, and |
8369 | <span class="quote">“<span class="quote">1.5</span>”</span>. <span class="quote">“<span class="quote">yes</span>”</span> accepts any Java2 | | 8392 | <span class="quote">“<span class="quote">1.5</span>”</span>. <span class="quote">“<span class="quote">yes</span>”</span> accepts any Java2 |
8370 | implementation, <span class="quote">“<span class="quote">1.4</span>”</span> insists on versions 1.4 or | | 8393 | implementation, <span class="quote">“<span class="quote">1.4</span>”</span> insists on versions 1.4 or |
8371 | above, and <span class="quote">“<span class="quote">1.5</span>”</span> only accepts versions 1.5 or | | 8394 | above, and <span class="quote">“<span class="quote">1.5</span>”</span> only accepts versions 1.5 or |
8372 | above. This variable is not set by default.</p></li> | | 8395 | above. This variable is not set by default.</p></li> |
8373 | <li class="listitem"><p><code class="varname">PKG_JAVA_HOME</code> is | | 8396 | <li class="listitem"><p><code class="varname">PKG_JAVA_HOME</code> is |
8374 | automatically set to the runtime location of the used Java | | 8397 | automatically set to the runtime location of the used Java |
8375 | implementation dependency. It may be used to set | | 8398 | implementation dependency. It may be used to set |
8376 | <code class="varname">JAVA_HOME</code> to a good value if the program | | 8399 | <code class="varname">JAVA_HOME</code> to a good value if the program |
8377 | needs this variable to be defined. | | 8400 | needs this variable to be defined. |
8378 | </p></li> | | 8401 | </p></li> |
8379 | </ul></div> | | 8402 | </ul></div> |
8380 | </div> | | 8403 | </div> |
8381 | <div class="sect2"> | | 8404 | <div class="sect2"> |
8382 | <div class="titlepage"><div><div><h3 class="title"> | | 8405 | <div class="titlepage"><div><div><h3 class="title"> |
8383 | <a name="perl-scripts"></a>19.4.3. Packages containing perl scripts</h3></div></div></div> | | 8406 | <a name="perl-scripts"></a>19.4.3. Packages containing perl scripts</h3></div></div></div> |
8384 | <p>If your package contains interpreted perl scripts, add | | 8407 | <p>If your package contains interpreted perl scripts, add |
8385 | <span class="quote">“<span class="quote">perl</span>”</span> to the <code class="varname">USE_TOOLS</code> variable | | 8408 | <span class="quote">“<span class="quote">perl</span>”</span> to the <code class="varname">USE_TOOLS</code> variable |
8386 | and set <code class="varname">REPLACE_PERL</code> to ensure that the proper | | 8409 | and set <code class="varname">REPLACE_PERL</code> to ensure that the proper |
8387 | interpreter path is set. <code class="varname">REPLACE_PERL</code> should | | 8410 | interpreter path is set. <code class="varname">REPLACE_PERL</code> should |
8388 | contain a list of scripts, relative to <code class="varname">WRKSRC</code>, | | 8411 | contain a list of scripts, relative to <code class="varname">WRKSRC</code>, |
8389 | that you want adjusted. Every occurrence of | | 8412 | that you want adjusted. Every occurrence of |
8390 | <code class="filename">*/bin/perl</code> in a she-bang line will be | | 8413 | <code class="filename">*/bin/perl</code> in a she-bang line will be |
8391 | replaced with the full path to the perl executable.</p> | | 8414 | replaced with the full path to the perl executable.</p> |
8392 | <p>If a particular version of perl is needed, set the | | 8415 | <p>If a particular version of perl is needed, set the |
8393 | <code class="varname">PERL5_REQD</code> variable to the version number. The | | 8416 | <code class="varname">PERL5_REQD</code> variable to the version number. The |
8394 | default is <span class="quote">“<span class="quote">5.0</span>”</span>.</p> | | 8417 | default is <span class="quote">“<span class="quote">5.0</span>”</span>.</p> |
8395 | <p>See <a class="xref" href="#perl-modules" title="19.6.6. Packages installing perl modules">Section 19.6.6, “Packages installing perl modules”</a> for information | | 8418 | <p>See <a class="xref" href="#perl-modules" title="19.6.6. Packages installing perl modules">Section 19.6.6, “Packages installing perl modules”</a> for information |
8396 | about handling perl modules.</p> | | 8419 | about handling perl modules.</p> |
8397 | </div> | | 8420 | </div> |
8398 | <div class="sect2"> | | 8421 | <div class="sect2"> |
8399 | <div class="titlepage"><div><div><h3 class="title"> | | 8422 | <div class="titlepage"><div><div><h3 class="title"> |
8400 | <a name="shell-scripts"></a>19.4.4. Packages containing shell scripts</h3></div></div></div> | | 8423 | <a name="shell-scripts"></a>19.4.4. Packages containing shell scripts</h3></div></div></div> |
8401 | <p><code class="varname">REPLACE_SH</code>, | | 8424 | <p><code class="varname">REPLACE_SH</code>, |
8402 | <code class="varname">REPLACE_BASH</code>, <code class="varname">REPLACE_CSH</code>, | | 8425 | <code class="varname">REPLACE_BASH</code>, <code class="varname">REPLACE_CSH</code>, |
8403 | and <code class="varname">REPLACE_KSH</code> can be used to replace shell | | 8426 | and <code class="varname">REPLACE_KSH</code> can be used to replace shell |
8404 | hash bangs in files. Please use the appropriate one, prefering | | 8427 | hash bangs in files. Please use the appropriate one, prefering |
8405 | <code class="varname">REPLACE_SH</code> in case this shell is sufficient. | | 8428 | <code class="varname">REPLACE_SH</code> in case this shell is sufficient. |
8406 | Each should contain a list of scripts, relative to | | 8429 | Each should contain a list of scripts, relative to |
8407 | <code class="varname">WRKSRC</code>, that you want adjusted. Every | | 8430 | <code class="varname">WRKSRC</code>, that you want adjusted. Every |
8408 | occurrence of the matching shell in a she-bang line will be | | 8431 | occurrence of the matching shell in a she-bang line will be |
8409 | replaced with the full path to the shell executable. | | 8432 | replaced with the full path to the shell executable. |
8410 | When using <code class="varname">REPLACE_BASH</code>, don't forget to add | | 8433 | When using <code class="varname">REPLACE_BASH</code>, don't forget to add |
8411 | <code class="filename">bash</code> to <code class="varname">USE_TOOLS</code>.</p> | | 8434 | <code class="filename">bash</code> to <code class="varname">USE_TOOLS</code>.</p> |
8412 | </div> | | 8435 | </div> |
8413 | <div class="sect2"> | | 8436 | <div class="sect2"> |
8414 | <div class="titlepage"><div><div><h3 class="title"> | | 8437 | <div class="titlepage"><div><div><h3 class="title"> |
8415 | <a name="other-programming-languages"></a>19.4.5. Other programming languages</h3></div></div></div> | | 8438 | <a name="other-programming-languages"></a>19.4.5. Other programming languages</h3></div></div></div> |
8416 | <p>Currently, there is no special handling for other languages | | 8439 | <p>Currently, there is no special handling for other languages |
8417 | in pkgsrc. If a compiler package provides a | | 8440 | in pkgsrc. If a compiler package provides a |
8418 | <code class="filename">buildlink3.mk</code> file, include that, otherwise | | 8441 | <code class="filename">buildlink3.mk</code> file, include that, otherwise |
8419 | just add a (build) dependency on the appropriate compiler | | 8442 | just add a (build) dependency on the appropriate compiler |
8420 | package.</p> | | 8443 | package.</p> |
8421 | </div> | | 8444 | </div> |
8422 | </div> | | 8445 | </div> |
8423 | <div class="sect1"> | | 8446 | <div class="sect1"> |
8424 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 8447 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
8425 | <a name="fixes.build"></a>19.5. Fixing problems in the <span class="emphasis"><em>build</em></span> phase</h2></div></div></div> | | 8448 | <a name="fixes.build"></a>19.5. Fixing problems in the <span class="emphasis"><em>build</em></span> phase</h2></div></div></div> |
8426 | <p>The most common failures when building a package are that | | 8449 | <p>The most common failures when building a package are that |
8427 | some platforms do not provide certain header files, functions or | | 8450 | some platforms do not provide certain header files, functions or |
8428 | libraries, or they provide the functions in a library that the | | 8451 | libraries, or they provide the functions in a library that the |
8429 | original package author didn't know. To work around this, you | | 8452 | original package author didn't know. To work around this, you |
8430 | can rewrite the source code in most cases so that it does not | | 8453 | can rewrite the source code in most cases so that it does not |
8431 | use the missing functions or provides a replacement function.</p> | | 8454 | use the missing functions or provides a replacement function.</p> |
8432 | <div class="sect2"> | | 8455 | <div class="sect2"> |
8433 | <div class="titlepage"><div><div><h3 class="title"> | | 8456 | <div class="titlepage"><div><div><h3 class="title"> |
8434 | <a name="fixes.build.cpp"></a>19.5.1. Compiling C and C++ code conditionally</h3></div></div></div> | | 8457 | <a name="fixes.build.cpp"></a>19.5.1. Compiling C and C++ code conditionally</h3></div></div></div> |
8435 | <p>If a package already comes with a GNU configure script, the | | 8458 | <p>If a package already comes with a GNU configure script, the |
8436 | preferred way to fix the build failure is to change the | | 8459 | preferred way to fix the build failure is to change the |
8437 | configure script, not the code. In the other cases, you can | | 8460 | configure script, not the code. In the other cases, you can |
8438 | utilize the C preprocessor, which defines certain macros | | 8461 | utilize the C preprocessor, which defines certain macros |
8439 | depending on the operating system and hardware architecture it | | 8462 | depending on the operating system and hardware architecture it |
8440 | compiles for. These macros can be queried using for example | | 8463 | compiles for. These macros can be queried using for example |
8441 | <code class="varname">#if defined(__i386)</code>. Almost every operating | | 8464 | <code class="varname">#if defined(__i386)</code>. Almost every operating |
8442 | system, hardware architecture and compiler has its own macro. | | 8465 | system, hardware architecture and compiler has its own macro. |
8443 | For example, if the macros <code class="varname">__GNUC__</code>, | | 8466 | For example, if the macros <code class="varname">__GNUC__</code>, |
8444 | <code class="varname">__i386__</code> and <code class="varname">__NetBSD__</code> | | 8467 | <code class="varname">__i386__</code> and <code class="varname">__NetBSD__</code> |
8445 | are all defined, you know that you are using NetBSD on an i386 | | 8468 | are all defined, you know that you are using NetBSD on an i386 |
8446 | compatible CPU, and your compiler is GCC.</p> | | 8469 | compatible CPU, and your compiler is GCC.</p> |
8447 | <p>The list of the following macros for hardware and | | 8470 | <p>The list of the following macros for hardware and |
8448 | operating system depends on the compiler that is used. For | | 8471 | operating system depends on the compiler that is used. For |
8449 | example, if you want to conditionally compile code on Solaris, | | 8472 | example, if you want to conditionally compile code on Solaris, |
8450 | don't use <code class="varname">__sun__</code>, as the SunPro compiler | | 8473 | don't use <code class="varname">__sun__</code>, as the SunPro compiler |
8451 | does not define it. Use <code class="varname">__sun</code> instead.</p> | | 8474 | does not define it. Use <code class="varname">__sun</code> instead.</p> |
8452 | <div class="sect3"> | | 8475 | <div class="sect3"> |
8453 | <div class="titlepage"><div><div><h4 class="title"> | | 8476 | <div class="titlepage"><div><div><h4 class="title"> |
8454 | <a name="fixes.build.cpp.os"></a>19.5.1.1. C preprocessor macros to identify the operating system</h4></div></div></div> | | 8477 | <a name="fixes.build.cpp.os"></a>19.5.1.1. C preprocessor macros to identify the operating system</h4></div></div></div> |
8455 | <p>To distinguish between 4.4 BSD-derived systems and the | | 8478 | <p>To distinguish between 4.4 BSD-derived systems and the |
8456 | rest of the world, you should use the following code.</p> | | 8479 | rest of the world, you should use the following code.</p> |
8457 | <pre class="programlisting"> | | 8480 | <pre class="programlisting"> |
8458 | #include <sys/param.h> | | 8481 | #include <sys/param.h> |
8459 | #if (defined(BSD) && BSD >= 199306) | | 8482 | #if (defined(BSD) && BSD >= 199306) |
8460 | /* BSD-specific code goes here */ | | 8483 | /* BSD-specific code goes here */ |
8461 | #else | | 8484 | #else |
8462 | /* non-BSD-specific code goes here */ | | 8485 | /* non-BSD-specific code goes here */ |
8463 | #endif | | 8486 | #endif |
8464 | </pre> | | 8487 | </pre> |
8465 | <p>If this distinction is not fine enough, you can also test | | 8488 | <p>If this distinction is not fine enough, you can also test |
8466 | for the following macros.</p> | | 8489 | for the following macros.</p> |
8467 | <pre class="programlisting"> | | 8490 | <pre class="programlisting"> |
8468 | Cygwin __CYGWIN__ | | 8491 | Cygwin __CYGWIN__ |
8469 | DragonFly __DragonFly__ | | 8492 | DragonFly __DragonFly__ |
8470 | FreeBSD __FreeBSD__ | | 8493 | FreeBSD __FreeBSD__ |
8471 | Haiku __HAIKU__ | | 8494 | Haiku __HAIKU__ |
8472 | Interix __INTERIX | | 8495 | Interix __INTERIX |
8473 | IRIX __sgi (TODO: get a definite source for this) | | 8496 | IRIX __sgi (TODO: get a definite source for this) |
8474 | Linux linux, __linux, __linux__ | | 8497 | Linux linux, __linux, __linux__ |
| | | 8498 | Mac OS X __APPLE__ |
8475 | MirBSD __MirBSD__ (__OpenBSD__ is also defined) | | 8499 | MirBSD __MirBSD__ (__OpenBSD__ is also defined) |
8476 | Minix3 __minix | | 8500 | Minix3 __minix |
8477 | NetBSD __NetBSD__ | | 8501 | NetBSD __NetBSD__ |
8478 | OpenBSD __OpenBSD__ | | 8502 | OpenBSD __OpenBSD__ |
8479 | Solaris sun, __sun | | 8503 | Solaris sun, __sun |
8480 | </pre> | | 8504 | </pre> |
8481 | </div> | | 8505 | </div> |
8482 | <div class="sect3"> | | 8506 | <div class="sect3"> |
8483 | <div class="titlepage"><div><div><h4 class="title"> | | 8507 | <div class="titlepage"><div><div><h4 class="title"> |
8484 | <a name="fixes.build.cpp.arch"></a>19.5.1.2. C preprocessor macros to identify the hardware architecture</h4></div></div></div> | | 8508 | <a name="fixes.build.cpp.arch"></a>19.5.1.2. C preprocessor macros to identify the hardware architecture</h4></div></div></div> |
8485 | <pre class="programlisting"> | | 8509 | <pre class="programlisting"> |
8486 | i386 i386, __i386, __i386__ | | 8510 | i386 i386, __i386, __i386__ |
8487 | MIPS __mips | | 8511 | MIPS __mips |
8488 | SPARC sparc, __sparc | | 8512 | SPARC sparc, __sparc |
8489 | </pre> | | 8513 | </pre> |
8490 | </div> | | 8514 | </div> |
8491 | <div class="sect3"> | | 8515 | <div class="sect3"> |
8492 | <div class="titlepage"><div><div><h4 class="title"> | | 8516 | <div class="titlepage"><div><div><h4 class="title"> |
8493 | <a name="fixes.build.cpp.compiler"></a>19.5.1.3. C preprocessor macros to identify the compiler</h4></div></div></div> | | 8517 | <a name="fixes.build.cpp.compiler"></a>19.5.1.3. C preprocessor macros to identify the compiler</h4></div></div></div> |
8494 | <pre class="programlisting"> | | 8518 | <pre class="programlisting"> |
8495 | GCC __GNUC__ (major version), __GNUC_MINOR__ | | 8519 | GCC __GNUC__ (major version), __GNUC_MINOR__ |
8496 | MIPSpro _COMPILER_VERSION (0x741 for MIPSpro 7.41) | | 8520 | MIPSpro _COMPILER_VERSION (0x741 for MIPSpro 7.41) |
8497 | SunPro __SUNPRO_C (0x570 for Sun C 5.7) | | 8521 | SunPro __SUNPRO_C (0x570 for Sun C 5.7) |
8498 | SunPro C++ __SUNPRO_CC (0x580 for Sun C++ 5.8) | | 8522 | SunPro C++ __SUNPRO_CC (0x580 for Sun C++ 5.8) |
8499 | </pre> | | 8523 | </pre> |
8500 | </div> | | 8524 | </div> |
8501 | </div> | | 8525 | </div> |
8502 | <div class="sect2"> | | 8526 | <div class="sect2"> |
8503 | <div class="titlepage"><div><div><h3 class="title"> | | 8527 | <div class="titlepage"><div><div><h3 class="title"> |
8504 | <a name="compiler-bugs"></a>19.5.2. How to handle compiler bugs</h3></div></div></div> | | 8528 | <a name="compiler-bugs"></a>19.5.2. How to handle compiler bugs</h3></div></div></div> |
8505 | <p>Some source files trigger bugs in the compiler, based on | | 8529 | <p>Some source files trigger bugs in the compiler, based on |
8506 | combinations of compiler version and architecture and almost | | 8530 | combinations of compiler version and architecture and almost |
8507 | always relation to optimisation being enabled. Common symptoms | | 8531 | always relation to optimisation being enabled. Common symptoms |
8508 | are gcc internal errors or never finishing compiling a | | 8532 | are gcc internal errors or never finishing compiling a |
8509 | file.</p> | | 8533 | file.</p> |
8510 | <p>Typically, a workaround involves testing the | | 8534 | <p>Typically, a workaround involves testing the |
8511 | <code class="varname">MACHINE_ARCH</code> and compiler version, disabling | | 8535 | <code class="varname">MACHINE_ARCH</code> and compiler version, disabling |
8512 | optimisation for that combination of file, | | 8536 | optimisation for that combination of file, |
8513 | <code class="varname">MACHINE_ARCH</code> and compiler, and documenting it | | 8537 | <code class="varname">MACHINE_ARCH</code> and compiler, and documenting it |
8514 | in <code class="filename">pkgsrc/doc/HACKS</code>. See that file for a | | 8538 | in <code class="filename">pkgsrc/doc/HACKS</code>. See that file for a |
8515 | number of examples.</p> | | 8539 | number of examples.</p> |
8516 | </div> | | 8540 | </div> |
8517 | <div class="sect2"> | | 8541 | <div class="sect2"> |
8518 | <div class="titlepage"><div><div><h3 class="title"> | | 8542 | <div class="titlepage"><div><div><h3 class="title"> |
8519 | <a name="undefined-reference"></a>19.5.3. Undefined reference to <span class="quote">“<span class="quote">...</span>”</span> | | 8543 | <a name="undefined-reference"></a>19.5.3. Undefined reference to <span class="quote">“<span class="quote">...</span>”</span> |
8520 | </h3></div></div></div> | | 8544 | </h3></div></div></div> |
8521 | <p>This error message often means that a package did not | | 8545 | <p>This error message often means that a package did not |
8522 | link to a shared library it needs. The following functions are | | 8546 | link to a shared library it needs. The following functions are |
8523 | known to cause this error message over and over.</p> | | 8547 | known to cause this error message over and over.</p> |
8524 | <div class="informaltable"> | | 8548 | <div class="informaltable"> |
8525 | <a name="undefined-reference-functions"></a><table border="1"> | | 8549 | <a name="undefined-reference-functions"></a><table border="1"> |
8526 | <colgroup> | | 8550 | <colgroup> |
8527 | <col> | | 8551 | <col> |
8528 | <col> | | 8552 | <col> |
8529 | <col> | | 8553 | <col> |
8530 | </colgroup> | | 8554 | </colgroup> |
8531 | <thead><tr> | | 8555 | <thead><tr> |
8532 | <th>Function</th> | | 8556 | <th>Function</th> |
8533 | <th>Library</th> | | 8557 | <th>Library</th> |
8534 | <th>Affected platforms</th> | | 8558 | <th>Affected platforms</th> |
8535 | </tr></thead> | | 8559 | </tr></thead> |
8536 | <tbody> | | 8560 | <tbody> |
8537 | <tr> | | 8561 | <tr> |
8538 | <td>accept, bind, connect</td> | | 8562 | <td>accept, bind, connect</td> |
8539 | <td>-lsocket</td> | | 8563 | <td>-lsocket</td> |
8540 | <td>Solaris</td> | | 8564 | <td>Solaris</td> |
8541 | </tr> | | 8565 | </tr> |
8542 | <tr> | | 8566 | <tr> |
8543 | <td>crypt</td> | | 8567 | <td>crypt</td> |
8544 | <td>-lcrypt</td> | | 8568 | <td>-lcrypt</td> |
8545 | <td>DragonFly, NetBSD</td> | | 8569 | <td>DragonFly, NetBSD</td> |
8546 | </tr> | | 8570 | </tr> |
8547 | <tr> | | 8571 | <tr> |
8548 | <td>dlopen, dlsym</td> | | 8572 | <td>dlopen, dlsym</td> |
8549 | <td>-ldl</td> | | 8573 | <td>-ldl</td> |
8550 | <td>Linux</td> | | 8574 | <td>Linux</td> |
8551 | </tr> | | 8575 | </tr> |
8552 | <tr> | | 8576 | <tr> |
8553 | <td>gethost*</td> | | 8577 | <td>gethost*</td> |
8554 | <td>-lnsl</td> | | 8578 | <td>-lnsl</td> |
8555 | <td>Solaris</td> | | 8579 | <td>Solaris</td> |
8556 | </tr> | | 8580 | </tr> |
8557 | <tr> | | 8581 | <tr> |
8558 | <td>inet_aton</td> | | 8582 | <td>inet_aton</td> |
8559 | <td>-lresolv</td> | | 8583 | <td>-lresolv</td> |
8560 | <td>Solaris</td> | | 8584 | <td>Solaris</td> |
8561 | </tr> | | 8585 | </tr> |
8562 | <tr> | | 8586 | <tr> |
8563 | <td>nanosleep, sem_*, timer_*</td> | | 8587 | <td>nanosleep, sem_*, timer_*</td> |
8564 | <td>-lrt</td> | | 8588 | <td>-lrt</td> |
8565 | <td>Solaris</td> | | 8589 | <td>Solaris</td> |
8566 | </tr> | | 8590 | </tr> |
8567 | <tr> | | 8591 | <tr> |
8568 | <td>openpty</td> | | 8592 | <td>openpty</td> |
8569 | <td>-lutil</td> | | 8593 | <td>-lutil</td> |
8570 | <td>Linux</td> | | 8594 | <td>Linux</td> |
8571 | </tr> | | 8595 | </tr> |
8572 | </tbody> | | 8596 | </tbody> |
8573 | </table> | | 8597 | </table> |
8574 | </div> | | 8598 | </div> |
8575 | <p>To fix these linker errors, it is often sufficient to say | | 8599 | <p>To fix these linker errors, it is often sufficient to say |
8576 | <code class="literal">LIBS.<em class="replaceable"><code>OperatingSystem</code></em>+= | | 8600 | <code class="literal">LIBS.<em class="replaceable"><code>OperatingSystem</code></em>+= |
8577 | -l<em class="replaceable"><code>foo</code></em></code> to the package | | 8601 | -l<em class="replaceable"><code>foo</code></em></code> to the package |
8578 | <code class="filename">Makefile</code> and then say <span class="command"><strong>bmake clean; | | 8602 | <code class="filename">Makefile</code> and then say <span class="command"><strong>bmake clean; |
8579 | bmake</strong></span>.</p> | | 8603 | bmake</strong></span>.</p> |
8580 | <div class="sect3"> | | 8604 | <div class="sect3"> |
8581 | <div class="titlepage"><div><div><h4 class="title"> | | 8605 | <div class="titlepage"><div><div><h4 class="title"> |
8582 | <a name="undefined-reference-sunpro"></a>19.5.3.1. Special issue: The SunPro compiler</h4></div></div></div> | | 8606 | <a name="undefined-reference-sunpro"></a>19.5.3.1. Special issue: The SunPro compiler</h4></div></div></div> |
8583 | <p>When you are using the SunPro compiler, there is another | | 8607 | <p>When you are using the SunPro compiler, there is another |
8584 | possibility. That compiler cannot handle the following code:</p> | | 8608 | possibility. That compiler cannot handle the following code:</p> |
8585 | <pre class="programlisting"> | | 8609 | <pre class="programlisting"> |
8586 | extern int extern_func(int); | | 8610 | extern int extern_func(int); |
8587 | | | 8611 | |
8588 | static inline int | | 8612 | static inline int |
8589 | inline_func(int x) | | 8613 | inline_func(int x) |
8590 | { | | 8614 | { |
8591 | return extern_func(x); | | 8615 | return extern_func(x); |
8592 | } | | 8616 | } |
8593 | | | 8617 | |
8594 | int main(void) | | 8618 | int main(void) |
8595 | { | | 8619 | { |
8596 | return 0; | | 8620 | return 0; |
8597 | } | | 8621 | } |
8598 | </pre> | | 8622 | </pre> |
8599 | <p>It generates the code for <code class="function">inline_func</code> even if | | 8623 | <p>It generates the code for <code class="function">inline_func</code> even if |
8600 | that function is never used. This code then refers to | | 8624 | that function is never used. This code then refers to |
8601 | <code class="function">extern_func</code>, which can usually not be resolved. To | | 8625 | <code class="function">extern_func</code>, which can usually not be resolved. To |
8602 | solve this problem you can try to tell the package to disable inlining | | 8626 | solve this problem you can try to tell the package to disable inlining |
8603 | of functions.</p> | | 8627 | of functions.</p> |
8604 | </div> | | 8628 | </div> |
8605 | </div> | | 8629 | </div> |
8606 | <div class="sect2"> | | 8630 | <div class="sect2"> |
8607 | <div class="titlepage"><div><div><h3 class="title"> | | 8631 | <div class="titlepage"><div><div><h3 class="title"> |
8608 | <a name="out-of-memory"></a>19.5.4. Running out of memory</h3></div></div></div> | | 8632 | <a name="out-of-memory"></a>19.5.4. Running out of memory</h3></div></div></div> |
8609 | <p>Sometimes packages fail to build because the compiler runs | | 8633 | <p>Sometimes packages fail to build because the compiler runs |
8610 | into an operating system specific soft limit. With the | | 8634 | into an operating system specific soft limit. With the |
8611 | <code class="varname">UNLIMIT_RESOURCES</code> variable pkgsrc can be told | | 8635 | <code class="varname">UNLIMIT_RESOURCES</code> variable pkgsrc can be told |
8612 | to unlimit the resources. Currently, the allowed values are | | 8636 | to unlimit the resources. Currently, the allowed values are |
8613 | <span class="quote">“<span class="quote">datasize</span>”</span> and <span class="quote">“<span class="quote">stacksize</span>”</span> (or both). | | 8637 | <span class="quote">“<span class="quote">datasize</span>”</span> and <span class="quote">“<span class="quote">stacksize</span>”</span> (or both). |
8614 | Setting this variable is similar to running the shell builtin | | 8638 | Setting this variable is similar to running the shell builtin |
8615 | <span class="command"><strong>ulimit</strong></span> command to raise the maximum data | | 8639 | <span class="command"><strong>ulimit</strong></span> command to raise the maximum data |
8616 | segment size or maximum stack size of a process, respectively, to | | 8640 | segment size or maximum stack size of a process, respectively, to |
8617 | their hard limits.</p> | | 8641 | their hard limits.</p> |
8618 | </div> | | 8642 | </div> |
8619 | </div> | | 8643 | </div> |
8620 | <div class="sect1"> | | 8644 | <div class="sect1"> |
8621 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 8645 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
8622 | <a name="fixes.install"></a>19.6. Fixing problems in the <span class="emphasis"><em>install</em></span> phase</h2></div></div></div> | | 8646 | <a name="fixes.install"></a>19.6. Fixing problems in the <span class="emphasis"><em>install</em></span> phase</h2></div></div></div> |
8623 | <div class="sect2"> | | 8647 | <div class="sect2"> |
8624 | <div class="titlepage"><div><div><h3 class="title"> | | 8648 | <div class="titlepage"><div><div><h3 class="title"> |
8625 | <a name="install-scripts"></a>19.6.1. Creating needed directories</h3></div></div></div> | | 8649 | <a name="install-scripts"></a>19.6.1. Creating needed directories</h3></div></div></div> |
8626 | <p>The BSD-compatible <span class="command"><strong>install</strong></span> supplied | | 8650 | <p>The BSD-compatible <span class="command"><strong>install</strong></span> supplied |
8627 | with some operating systems cannot create more than one | | 8651 | with some operating systems cannot create more than one |
8628 | directory at a time. As such, you should call | | 8652 | directory at a time. As such, you should call |
8629 | <code class="literal">${INSTALL_*_DIR}</code> like this:</p> | | 8653 | <code class="literal">${INSTALL_*_DIR}</code> like this:</p> |
8630 | <pre class="programlisting"> | | 8654 | <pre class="programlisting"> |
8631 | ${INSTALL_DATA_DIR} ${PREFIX}/dir1 | | 8655 | ${INSTALL_DATA_DIR} ${PREFIX}/dir1 |
8632 | ${INSTALL_DATA_DIR} ${PREFIX}/dir2 | | 8656 | ${INSTALL_DATA_DIR} ${PREFIX}/dir2 |
8633 | </pre> | | 8657 | </pre> |
8634 | <p>You can also just append <span class="quote">“<span class="quote"><code class="literal">dir1 | | 8658 | <p>You can also just append <span class="quote">“<span class="quote"><code class="literal">dir1 |
8635 | dir2</code></span>”</span> to the | | 8659 | dir2</code></span>”</span> to the |
8636 | <code class="varname">INSTALLATION_DIRS</code> variable, which will | | 8660 | <code class="varname">INSTALLATION_DIRS</code> variable, which will |
8637 | automatically do the right thing.</p> | | 8661 | automatically do the right thing.</p> |
8638 | </div> | | 8662 | </div> |
8639 | <div class="sect2"> | | 8663 | <div class="sect2"> |
8640 | <div class="titlepage"><div><div><h3 class="title"> | | 8664 | <div class="titlepage"><div><div><h3 class="title"> |
8641 | <a name="where-to-install-documentation"></a>19.6.2. Where to install documentation</h3></div></div></div> | | 8665 | <a name="where-to-install-documentation"></a>19.6.2. Where to install documentation</h3></div></div></div> |
8642 | <p>In general, documentation should be installed into | | 8666 | <p>In general, documentation should be installed into |
8643 | <code class="filename">${PREFIX}/share/doc/${PKGBASE}</code> or | | 8667 | <code class="filename">${PREFIX}/share/doc/${PKGBASE}</code> or |
8644 | <code class="filename">${PREFIX}/share/doc/${PKGNAME}</code> (the latter | | 8668 | <code class="filename">${PREFIX}/share/doc/${PKGNAME}</code> (the latter |
8645 | includes the version number of the package).</p> | | 8669 | includes the version number of the package).</p> |
8646 | <p>Many modern packages using GNU autoconf allow to set the | | 8670 | <p>Many modern packages using GNU autoconf allow to set the |
8647 | directory where HTML documentation is installed with the | | 8671 | directory where HTML documentation is installed with the |
8648 | <span class="quote">“<span class="quote">--with-html-dir</span>”</span> option. Sometimes using this flag | | 8672 | <span class="quote">“<span class="quote">--with-html-dir</span>”</span> option. Sometimes using this flag |
8649 | is needed because otherwise the documentation ends up in | | 8673 | is needed because otherwise the documentation ends up in |
8650 | <code class="filename">${PREFIX}/share/doc/html</code> or other | | 8674 | <code class="filename">${PREFIX}/share/doc/html</code> or other |
8651 | places.</p> | | 8675 | places.</p> |
8652 | <p>An exception to the above is that library API documentation | | 8676 | <p>An exception to the above is that library API documentation |
8653 | generated with the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/textproc/gtk-doc/README.html" target="_top"><code class="filename">textproc/gtk-doc</code></a> tools, for use by special | | 8677 | generated with the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/textproc/gtk-doc/README.html" target="_top"><code class="filename">textproc/gtk-doc</code></a> tools, for use by special |
8654 | browsers (devhelp) should be left at their default location, which | | 8678 | browsers (devhelp) should be left at their default location, which |
8655 | is <code class="filename">${PREFIX}/share/gtk-doc</code>. Such | | 8679 | is <code class="filename">${PREFIX}/share/gtk-doc</code>. Such |
8656 | documentation can be recognized from files ending in | | 8680 | documentation can be recognized from files ending in |
8657 | <code class="filename">.devhelp</code> or <code class="filename">.devhelp2</code>. | | 8681 | <code class="filename">.devhelp</code> or <code class="filename">.devhelp2</code>. |
8658 | (It is also acceptable to install such files in | | 8682 | (It is also acceptable to install such files in |
8659 | <code class="filename">${PREFIX}/share/doc/${PKGBASE}</code> or | | 8683 | <code class="filename">${PREFIX}/share/doc/${PKGBASE}</code> or |
8660 | <code class="filename">${PREFIX}/share/doc/${PKGNAME}</code>; the | | 8684 | <code class="filename">${PREFIX}/share/doc/${PKGNAME}</code>; the |
8661 | <code class="filename">.devhelp*</code> file must be directly in that | | 8685 | <code class="filename">.devhelp*</code> file must be directly in that |
8662 | directory then, no additional subdirectory level is allowed in | | 8686 | directory then, no additional subdirectory level is allowed in |
8663 | this case. This is usually achieved by using | | 8687 | this case. This is usually achieved by using |
8664 | <span class="quote">“<span class="quote">--with-html-dir=${PREFIX}/share/doc</span>”</span>. | | 8688 | <span class="quote">“<span class="quote">--with-html-dir=${PREFIX}/share/doc</span>”</span>. |
8665 | <code class="filename">${PREFIX}/share/gtk-doc</code> is preferred | | 8689 | <code class="filename">${PREFIX}/share/gtk-doc</code> is preferred |
8666 | though.)</p> | | 8690 | though.)</p> |
8667 | </div> | | 8691 | </div> |
8668 | <div class="sect2"> | | 8692 | <div class="sect2"> |
8669 | <div class="titlepage"><div><div><h3 class="title"> | | 8693 | <div class="titlepage"><div><div><h3 class="title"> |
8670 | <a name="installing-score-files"></a>19.6.3. Installing highscore files</h3></div></div></div> | | 8694 | <a name="installing-score-files"></a>19.6.3. Installing highscore files</h3></div></div></div> |
8671 | <p>Certain packages, most of them in the games category, install | | 8695 | <p>Certain packages, most of them in the games category, install |
8672 | a score file that allows all users on the system to record their | | 8696 | a score file that allows all users on the system to record their |
8673 | highscores. In order for this to work, the binaries need to be | | 8697 | highscores. In order for this to work, the binaries need to be |
8674 | installed setgid and the score files owned by the appropriate | | 8698 | installed setgid and the score files owned by the appropriate |
8675 | group and/or owner (traditionally the "games" user/group). Set | | 8699 | group and/or owner (traditionally the "games" user/group). Set |
8676 | <code class="varname">USE_GAMESGROUP</code> to yes to support this. The | | 8700 | <code class="varname">USE_GAMESGROUP</code> to yes to support this. The |
8677 | following variables, documented in more detail in | | 8701 | following variables, documented in more detail in |
8678 | <code class="filename">mk/defaults/mk.conf</code>, control this | | 8702 | <code class="filename">mk/defaults/mk.conf</code>, control this |
8679 | behaviour: <code class="varname">GAMEDATAMODE</code>, | | 8703 | behaviour: <code class="varname">GAMEDATAMODE</code>, |
8680 | <code class="varname">GAMEDIRMODE</code>, <code class="varname">GAMES_GROUP</code>, | | 8704 | <code class="varname">GAMEDIRMODE</code>, <code class="varname">GAMES_GROUP</code>, |
8681 | <code class="varname">GAMEMODE</code>, <code class="varname">GAME_USER</code>.</p> | | 8705 | <code class="varname">GAMEMODE</code>, <code class="varname">GAME_USER</code>.</p> |
8682 | <p>A package should therefore never hard code file ownership or | | 8706 | <p>A package should therefore never hard code file ownership or |
8683 | access permissions but rely on <code class="varname">INSTALL_GAME</code> and | | 8707 | access permissions but rely on <code class="varname">INSTALL_GAME</code> and |
8684 | <code class="varname">INSTALL_GAME_DATA</code> to set these | | 8708 | <code class="varname">INSTALL_GAME_DATA</code> to set these |
8685 | correctly.</p> | | 8709 | correctly.</p> |
8686 | </div> | | 8710 | </div> |
8687 | <div class="sect2"> | | 8711 | <div class="sect2"> |
8688 | <div class="titlepage"><div><div><h3 class="title"> | | 8712 | <div class="titlepage"><div><div><h3 class="title"> |
8689 | <a name="destdir-support"></a>19.6.4. Adding DESTDIR support to packages</h3></div></div></div> | | 8713 | <a name="destdir-support"></a>19.6.4. Adding DESTDIR support to packages</h3></div></div></div> |
8690 | <p><code class="varname">DESTDIR</code> support means that a package | | 8714 | <p><code class="varname">DESTDIR</code> support means that a package |
8691 | installs into a staging directory, not the final location of the | | 8715 | installs into a staging directory, not the final location of the |
8692 | files. Then a binary package is created which can be used for | | 8716 | files. Then a binary package is created which can be used for |
8693 | installation as usual. There are two ways: Either the package must | | 8717 | installation as usual. There are two ways: Either the package must |
8694 | install as root (<span class="quote">“<span class="quote">destdir</span>”</span>) or the package can | | 8718 | install as root (<span class="quote">“<span class="quote">destdir</span>”</span>) or the package can |
8695 | install as non-root user (<span class="quote">“<span class="quote">user-destdir</span>”</span>).</p> | | 8719 | install as non-root user (<span class="quote">“<span class="quote">user-destdir</span>”</span>).</p> |
8696 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 8720 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
8697 | <li class="listitem"><p><code class="varname">PKG_DESTDIR_SUPPORT</code> has to be | | 8721 | <li class="listitem"><p><code class="varname">PKG_DESTDIR_SUPPORT</code> has to be |
8698 | set to <span class="quote">“<span class="quote">none</span>”</span>, <span class="quote">“<span class="quote">destdir</span>”</span>, or | | 8722 | set to <span class="quote">“<span class="quote">none</span>”</span>, <span class="quote">“<span class="quote">destdir</span>”</span>, or |
8699 | <span class="quote">“<span class="quote">user-destdir</span>”</span>. By default <code class="varname">PKG_DESTDIR_SUPPORT</code> | | 8723 | <span class="quote">“<span class="quote">user-destdir</span>”</span>. By default <code class="varname">PKG_DESTDIR_SUPPORT</code> |
8700 | is set to <span class="quote">“<span class="quote">user-destdir</span>”</span> to help catching more | | 8724 | is set to <span class="quote">“<span class="quote">user-destdir</span>”</span> to help catching more |
8701 | potential packaging problems. If bsd.prefs.mk is included in the Makefile, | | 8725 | potential packaging problems. If bsd.prefs.mk is included in the Makefile, |
8702 | <code class="varname">PKG_DESTDIR_SUPPORT</code> needs to be set before | | 8726 | <code class="varname">PKG_DESTDIR_SUPPORT</code> needs to be set before |
8703 | the inclusion.</p></li> | | 8727 | the inclusion.</p></li> |
8704 | <li class="listitem"><p>All installation operations have to be prefixed with | | 8728 | <li class="listitem"><p>All installation operations have to be prefixed with |
8705 | <code class="filename">${DESTDIR}</code>.</p></li> | | 8729 | <code class="filename">${DESTDIR}</code>.</p></li> |
8706 | <li class="listitem"><p>automake gets this DESTDIR mostly right | | 8730 | <li class="listitem"><p>automake gets this DESTDIR mostly right |
8707 | automatically. Many manual rules and pre/post-install often are | | 8731 | automatically. Many manual rules and pre/post-install often are |
8708 | incorrect; fix them.</p></li> | | 8732 | incorrect; fix them.</p></li> |
8709 | <li class="listitem"><p>If files are installed with special owner/group | | 8733 | <li class="listitem"><p>If files are installed with special owner/group |
8710 | use <code class="varname">SPECIAL_PERMS</code>.</p></li> | | 8734 | use <code class="varname">SPECIAL_PERMS</code>.</p></li> |
8711 | <li class="listitem"><p>In general, packages should support | | 8735 | <li class="listitem"><p>In general, packages should support |
8712 | <code class="varname">UNPRIVILEGED</code> to be able to use | | 8736 | <code class="varname">UNPRIVILEGED</code> to be able to use |
8713 | DESTDIR.</p></li> | | 8737 | DESTDIR.</p></li> |
8714 | </ul></div> | | 8738 | </ul></div> |
8715 | </div> | | 8739 | </div> |
8716 | <div class="sect2"> | | 8740 | <div class="sect2"> |
8717 | <div class="titlepage"><div><div><h3 class="title"> | | 8741 | <div class="titlepage"><div><div><h3 class="title"> |
8718 | <a name="hardcoded-paths"></a>19.6.5. Packages with hardcoded paths to other interpreters</h3></div></div></div> | | 8742 | <a name="hardcoded-paths"></a>19.6.5. Packages with hardcoded paths to other interpreters</h3></div></div></div> |
8719 | <p>Your package may also contain scripts with hardcoded paths to | | 8743 | <p>Your package may also contain scripts with hardcoded paths to |
8720 | other interpreters besides (or as well as) perl. To correct the | | 8744 | other interpreters besides (or as well as) perl. To correct the |
8721 | full pathname to the script interpreter, you need to set the | | 8745 | full pathname to the script interpreter, you need to set the |
8722 | following definitions in your <code class="filename">Makefile</code> (we | | 8746 | following definitions in your <code class="filename">Makefile</code> (we |
8723 | shall use <span class="command"><strong>tclsh</strong></span> in this example):</p> | | 8747 | shall use <span class="command"><strong>tclsh</strong></span> in this example):</p> |
8724 | <pre class="programlisting"> | | 8748 | <pre class="programlisting"> |
8725 | REPLACE_INTERPRETER+= tcl | | 8749 | REPLACE_INTERPRETER+= tcl |
8726 | REPLACE.tcl.old= .*/bin/tclsh | | 8750 | REPLACE.tcl.old= .*/bin/tclsh |
8727 | REPLACE.tcl.new= ${PREFIX}/bin/tclsh | | 8751 | REPLACE.tcl.new= ${PREFIX}/bin/tclsh |
8728 | REPLACE_FILES.tcl= # list of tcl scripts which need to be fixed, | | 8752 | REPLACE_FILES.tcl= # list of tcl scripts which need to be fixed, |
8729 | # relative to ${WRKSRC}, just as in REPLACE_PERL | | 8753 | # relative to ${WRKSRC}, just as in REPLACE_PERL |
8730 | </pre> | | 8754 | </pre> |
8731 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 8755 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
8732 | <h3 class="title">Note</h3> | | 8756 | <h3 class="title">Note</h3> |
8733 | <p>Before March 2006, these variables were called | | 8757 | <p>Before March 2006, these variables were called |
8734 | <code class="varname">_REPLACE.*</code> and | | 8758 | <code class="varname">_REPLACE.*</code> and |
8735 | <code class="varname">_REPLACE_FILES.*</code>.</p> | | 8759 | <code class="varname">_REPLACE_FILES.*</code>.</p> |
8736 | </div> | | 8760 | </div> |
8737 | </div> | | 8761 | </div> |
8738 | <div class="sect2"> | | 8762 | <div class="sect2"> |
8739 | <div class="titlepage"><div><div><h3 class="title"> | | 8763 | <div class="titlepage"><div><div><h3 class="title"> |
8740 | <a name="perl-modules"></a>19.6.6. Packages installing perl modules</h3></div></div></div> | | 8764 | <a name="perl-modules"></a>19.6.6. Packages installing perl modules</h3></div></div></div> |
8741 | <p>Makefiles of packages providing perl5 modules should include | | 8765 | <p>Makefiles of packages providing perl5 modules should include |
8742 | the Makefile fragment | | 8766 | the Makefile fragment |
8743 | <code class="filename">../../lang/perl5/module.mk</code>. It provides a | | 8767 | <code class="filename">../../lang/perl5/module.mk</code>. It provides a |
8744 | <span class="command"><strong>do-configure</strong></span> target for the standard perl | | 8768 | <span class="command"><strong>do-configure</strong></span> target for the standard perl |
8745 | configuration for such modules as well as various hooks to tune | | 8769 | configuration for such modules as well as various hooks to tune |
8746 | this configuration. See comments in this file for | | 8770 | this configuration. See comments in this file for |
8747 | details.</p> | | 8771 | details.</p> |
8748 | <p>Perl5 modules will install into different places depending | | 8772 | <p>Perl5 modules will install into different places depending |
8749 | on the version of perl used during the build process. To | | 8773 | on the version of perl used during the build process. To |
8750 | address this, pkgsrc will append lines to the | | 8774 | address this, pkgsrc will append lines to the |
8751 | <code class="filename">PLIST</code> corresponding to the files listed in | | 8775 | <code class="filename">PLIST</code> corresponding to the files listed in |
8752 | the installed <code class="filename">.packlist</code> file generated by | | 8776 | the installed <code class="filename">.packlist</code> file generated by |
8753 | most perl5 modules. This is invoked by defining | | 8777 | most perl5 modules. This is invoked by defining |
8754 | <code class="varname">PERL5_PACKLIST</code> to a space-separated list of | | 8778 | <code class="varname">PERL5_PACKLIST</code> to a space-separated list of |
8755 | packlist files relative to <code class="varname">PERL5_PACKLIST_DIR</code> | | 8779 | packlist files relative to <code class="varname">PERL5_PACKLIST_DIR</code> |
8756 | (<code class="varname">PERL5_INSTALLVENDORARCH</code> by default), | | 8780 | (<code class="varname">PERL5_INSTALLVENDORARCH</code> by default), |
8757 | e.g.:</p> | | 8781 | e.g.:</p> |
8758 | <pre class="programlisting"> | | 8782 | <pre class="programlisting"> |
8759 | PERL5_PACKLIST= auto/Pg/.packlist | | 8783 | PERL5_PACKLIST= auto/Pg/.packlist |
8760 | </pre> | | 8784 | </pre> |
8761 | <p>The perl5 config variables | | 8785 | <p>The perl5 config variables |
8762 | <code class="varname">installarchlib</code>, | | 8786 | <code class="varname">installarchlib</code>, |
8763 | <code class="varname">installscript</code>, | | 8787 | <code class="varname">installscript</code>, |
8764 | <code class="varname">installvendorbin</code>, | | 8788 | <code class="varname">installvendorbin</code>, |
8765 | <code class="varname">installvendorscript</code>, | | 8789 | <code class="varname">installvendorscript</code>, |
8766 | <code class="varname">installvendorarch</code>, | | 8790 | <code class="varname">installvendorarch</code>, |
8767 | <code class="varname">installvendorlib</code>, | | 8791 | <code class="varname">installvendorlib</code>, |
8768 | <code class="varname">installvendorman1dir</code>, and | | 8792 | <code class="varname">installvendorman1dir</code>, and |
8769 | <code class="varname">installvendorman3dir</code> represent those | | 8793 | <code class="varname">installvendorman3dir</code> represent those |
8770 | locations in which components of perl5 modules may be installed, | | 8794 | locations in which components of perl5 modules may be installed, |
8771 | provided as variable with uppercase and prefixed with | | 8795 | provided as variable with uppercase and prefixed with |
8772 | <code class="varname">PERL5_</code>, e.g. <code class="varname">PERL5_INSTALLARCHLIB</code> | | 8796 | <code class="varname">PERL5_</code>, e.g. <code class="varname">PERL5_INSTALLARCHLIB</code> |
8773 | and may be used by perl5 packages that don't have a packlist. | | 8797 | and may be used by perl5 packages that don't have a packlist. |
8774 | These variables are also substituted for in the | | 8798 | These variables are also substituted for in the |
8775 | <code class="filename">PLIST</code> as uppercase prefixed with | | 8799 | <code class="filename">PLIST</code> as uppercase prefixed with |
8776 | <code class="varname">PERL5_SUB_</code>.</p> | | 8800 | <code class="varname">PERL5_SUB_</code>.</p> |
8777 | </div> | | 8801 | </div> |
8778 | <div class="sect2"> | | 8802 | <div class="sect2"> |
8779 | <div class="titlepage"><div><div><h3 class="title"> | | 8803 | <div class="titlepage"><div><div><h3 class="title"> |
8780 | <a name="faq.info-files"></a>19.6.7. Packages installing info files</h3></div></div></div> | | 8804 | <a name="faq.info-files"></a>19.6.7. Packages installing info files</h3></div></div></div> |
8781 | <p>Some packages install info files or use the | | 8805 | <p>Some packages install info files or use the |
8782 | <span class="quote">“<span class="quote">makeinfo</span>”</span> or <span class="quote">“<span class="quote">install-info</span>”</span> | | 8806 | <span class="quote">“<span class="quote">makeinfo</span>”</span> or <span class="quote">“<span class="quote">install-info</span>”</span> |
8783 | commands. <code class="varname">INFO_FILES</code> should be defined in | | 8807 | commands. <code class="varname">INFO_FILES</code> should be defined in |
8784 | the package Makefile so that <code class="filename">INSTALL</code> and | | 8808 | the package Makefile so that <code class="filename">INSTALL</code> and |
8785 | <code class="filename">DEINSTALL</code> scripts will be generated to | | 8809 | <code class="filename">DEINSTALL</code> scripts will be generated to |
8786 | handle registration of the info files in the Info directory | | 8810 | handle registration of the info files in the Info directory |
8787 | file. The <span class="quote">“<span class="quote">install-info</span>”</span> command used for the info | | 8811 | file. The <span class="quote">“<span class="quote">install-info</span>”</span> command used for the info |
8788 | files registration is either provided by the system, or by a | | 8812 | files registration is either provided by the system, or by a |
8789 | special purpose package automatically added as dependency if | | 8813 | special purpose package automatically added as dependency if |
8790 | needed.</p> | | 8814 | needed.</p> |
8791 | <p><code class="varname">PKGINFODIR</code> is the directory under | | 8815 | <p><code class="varname">PKGINFODIR</code> is the directory under |
8792 | <code class="filename">${PREFIX}</code> where info files are primarily | | 8816 | <code class="filename">${PREFIX}</code> where info files are primarily |
8793 | located. <code class="varname">PKGINFODIR</code> defaults to | | 8817 | located. <code class="varname">PKGINFODIR</code> defaults to |
8794 | <span class="quote">“<span class="quote">info</span>”</span> and can be overridden by the user.</p> | | 8818 | <span class="quote">“<span class="quote">info</span>”</span> and can be overridden by the user.</p> |
8795 | <p>The info files for the package should be listed in the | | 8819 | <p>The info files for the package should be listed in the |
8796 | package <code class="filename">PLIST</code>; however any split info files | | 8820 | package <code class="filename">PLIST</code>; however any split info files |
8797 | need not be listed.</p> | | 8821 | need not be listed.</p> |
8798 | <p>A package which needs the <span class="quote">“<span class="quote">makeinfo</span>”</span> command | | 8822 | <p>A package which needs the <span class="quote">“<span class="quote">makeinfo</span>”</span> command |
8799 | at build time must add <span class="quote">“<span class="quote">makeinfo</span>”</span> to | | 8823 | at build time must add <span class="quote">“<span class="quote">makeinfo</span>”</span> to |
8800 | <code class="varname">USE_TOOLS</code> in its Makefile. If a minimum | | 8824 | <code class="varname">USE_TOOLS</code> in its Makefile. If a minimum |
8801 | version of the <span class="quote">“<span class="quote">makeinfo</span>”</span> command is needed it | | 8825 | version of the <span class="quote">“<span class="quote">makeinfo</span>”</span> command is needed it |
8802 | should be noted with the <code class="varname">TEXINFO_REQD</code> | | 8826 | should be noted with the <code class="varname">TEXINFO_REQD</code> |
8803 | variable in the package <code class="filename">Makefile</code>. By | | 8827 | variable in the package <code class="filename">Makefile</code>. By |
8804 | default, a minimum version of 3.12 is required. If the system | | 8828 | default, a minimum version of 3.12 is required. If the system |
8805 | does not provide a <span class="command"><strong>makeinfo</strong></span> command or if it | | 8829 | does not provide a <span class="command"><strong>makeinfo</strong></span> command or if it |
8806 | does not match the required minimum, a build dependency on the | | 8830 | does not match the required minimum, a build dependency on the |
8807 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/gtexinfo/README.html" target="_top"><code class="filename">devel/gtexinfo</code></a> package will | | 8831 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/gtexinfo/README.html" target="_top"><code class="filename">devel/gtexinfo</code></a> package will |
8808 | be added automatically.</p> | | 8832 | be added automatically.</p> |
8809 | <p>The build and installation process of the software provided | | 8833 | <p>The build and installation process of the software provided |
8810 | by the package should not use the | | 8834 | by the package should not use the |
8811 | <span class="command"><strong>install-info</strong></span> command as the registration of | | 8835 | <span class="command"><strong>install-info</strong></span> command as the registration of |
8812 | info files is the task of the package | | 8836 | info files is the task of the package |
8813 | <code class="filename">INSTALL</code> script, and it must use the | | 8837 | <code class="filename">INSTALL</code> script, and it must use the |
8814 | appropriate <span class="command"><strong>makeinfo</strong></span> command.</p> | | 8838 | appropriate <span class="command"><strong>makeinfo</strong></span> command.</p> |
8815 | <p>To achieve this goal, the pkgsrc infrastructure creates | | 8839 | <p>To achieve this goal, the pkgsrc infrastructure creates |
8816 | overriding scripts for the <span class="command"><strong>install-info</strong></span> and | | 8840 | overriding scripts for the <span class="command"><strong>install-info</strong></span> and |
8817 | <span class="command"><strong>makeinfo</strong></span> commands in a directory listed early | | 8841 | <span class="command"><strong>makeinfo</strong></span> commands in a directory listed early |
8818 | in <code class="varname">PATH</code>.</p> | | 8842 | in <code class="varname">PATH</code>.</p> |
8819 | <p>The script overriding <span class="command"><strong>install-info</strong></span> has | | 8843 | <p>The script overriding <span class="command"><strong>install-info</strong></span> has |
8820 | no effect except the logging of a message. The script overriding | | 8844 | no effect except the logging of a message. The script overriding |
8821 | <span class="command"><strong>makeinfo</strong></span> logs a message and according to the | | 8845 | <span class="command"><strong>makeinfo</strong></span> logs a message and according to the |
8822 | value of <code class="varname">TEXINFO_REQD</code> either runs the appropriate | | 8846 | value of <code class="varname">TEXINFO_REQD</code> either runs the appropriate |
8823 | <span class="command"><strong>makeinfo</strong></span> command or exit on error.</p> | | 8847 | <span class="command"><strong>makeinfo</strong></span> command or exit on error.</p> |
8824 | </div> | | 8848 | </div> |
8825 | <div class="sect2"> | | 8849 | <div class="sect2"> |
8826 | <div class="titlepage"><div><div><h3 class="title"> | | 8850 | <div class="titlepage"><div><div><h3 class="title"> |
8827 | <a name="manpages"></a>19.6.8. Packages installing man pages</h3></div></div></div> | | 8851 | <a name="manpages"></a>19.6.8. Packages installing man pages</h3></div></div></div> |
8828 | <p>All packages that install manual pages should install them | | 8852 | <p>All packages that install manual pages should install them |
8829 | into the same directory, so that there is one common place to look | | 8853 | into the same directory, so that there is one common place to look |
8830 | for them. In pkgsrc, this place is | | 8854 | for them. In pkgsrc, this place is |
8831 | <code class="literal">${PREFIX}/${PKGMANDIR}</code>, and this expression | | 8855 | <code class="literal">${PREFIX}/${PKGMANDIR}</code>, and this expression |
8832 | should be used in packages. The default for | | 8856 | should be used in packages. The default for |
8833 | <code class="varname">PKGMANDIR</code> is | | 8857 | <code class="varname">PKGMANDIR</code> is |
8834 | <span class="quote">“<span class="quote"><code class="filename">man</code></span>”</span>. Another often-used value | | 8858 | <span class="quote">“<span class="quote"><code class="filename">man</code></span>”</span>. Another often-used value |
8835 | is <span class="quote">“<span class="quote"><code class="filename">share/man</code></span>”</span>.</p> | | 8859 | is <span class="quote">“<span class="quote"><code class="filename">share/man</code></span>”</span>.</p> |
8836 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 8860 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
8837 | <h3 class="title">Note</h3> | | 8861 | <h3 class="title">Note</h3> |
8838 | <p>The support for a custom <code class="varname">PKGMANDIR</code> | | 8862 | <p>The support for a custom <code class="varname">PKGMANDIR</code> |
8839 | is far from complete.</p> | | 8863 | is far from complete.</p> |
8840 | </div> | | 8864 | </div> |
8841 | <p>The <code class="filename">PLIST</code> files can just use | | 8865 | <p>The <code class="filename">PLIST</code> files can just use |
8842 | <code class="filename">man/</code> as the top level directory for the man | | 8866 | <code class="filename">man/</code> as the top level directory for the man |
8843 | page file entries, and the pkgsrc framework will convert as | | 8867 | page file entries, and the pkgsrc framework will convert as |
8844 | needed. In all other places, the correct | | 8868 | needed. In all other places, the correct |
8845 | <code class="varname">PKGMANDIR</code> must be used.</p> | | 8869 | <code class="varname">PKGMANDIR</code> must be used.</p> |
8846 | <p>Packages that are | | 8870 | <p>Packages that are |
8847 | configured with <code class="varname">GNU_CONFIGURE</code> set as | | 8871 | configured with <code class="varname">GNU_CONFIGURE</code> set as |
8848 | <span class="quote">“<span class="quote">yes</span>”</span>, by default will use the | | 8872 | <span class="quote">“<span class="quote">yes</span>”</span>, by default will use the |
8849 | <code class="filename">./configure</code> | | 8873 | <code class="filename">./configure</code> |
8850 | --mandir switch to set where the man pages should be installed. | | 8874 | --mandir switch to set where the man pages should be installed. |
8851 | The path is <code class="varname">GNU_CONFIGURE_MANDIR</code> which defaults | | 8875 | The path is <code class="varname">GNU_CONFIGURE_MANDIR</code> which defaults |
8852 | to <code class="varname">${PREFIX}/${PKGMANDIR}</code>.</p> | | 8876 | to <code class="varname">${PREFIX}/${PKGMANDIR}</code>.</p> |
8853 | <p>Packages that use <code class="varname">GNU_CONFIGURE</code> but do not | | 8877 | <p>Packages that use <code class="varname">GNU_CONFIGURE</code> but do not |
8854 | use --mandir, can set <code class="varname">CONFIGURE_HAS_MANDIR</code> | | 8878 | use --mandir, can set <code class="varname">CONFIGURE_HAS_MANDIR</code> |
8855 | to <span class="quote">“<span class="quote">no</span>”</span>. | | 8879 | to <span class="quote">“<span class="quote">no</span>”</span>. |
8856 | Or if the <code class="filename">./configure</code> script uses | | 8880 | Or if the <code class="filename">./configure</code> script uses |
8857 | a non-standard use of --mandir, you can set | | 8881 | a non-standard use of --mandir, you can set |
8858 | <code class="varname">GNU_CONFIGURE_MANDIR</code> as needed.</p> | | 8882 | <code class="varname">GNU_CONFIGURE_MANDIR</code> as needed.</p> |
8859 | <p>See <a class="xref" href="#manpage-compression" title="13.5. Man page compression">Section 13.5, “Man page compression”</a> for | | 8883 | <p>See <a class="xref" href="#manpage-compression" title="13.5. Man page compression">Section 13.5, “Man page compression”</a> for |
8860 | information on installation of compressed manual pages.</p> | | 8884 | information on installation of compressed manual pages.</p> |
8861 | </div> | | 8885 | </div> |
8862 | <div class="sect2"> | | 8886 | <div class="sect2"> |
8863 | <div class="titlepage"><div><div><h3 class="title"> | | 8887 | <div class="titlepage"><div><div><h3 class="title"> |
8864 | <a name="gconf-data-files"></a>19.6.9. Packages installing GConf data files</h3></div></div></div> | | 8888 | <a name="gconf-data-files"></a>19.6.9. Packages installing GConf data files</h3></div></div></div> |
8865 | <p>If a package installs <code class="filename">.schemas</code> or | | 8889 | <p>If a package installs <code class="filename">.schemas</code> or |
8866 | <code class="filename">.entries</code> files, used by GConf, | | 8890 | <code class="filename">.entries</code> files, used by GConf, |
8867 | you need to take some extra steps to make sure they get registered | | 8891 | you need to take some extra steps to make sure they get registered |
8868 | in the database:</p> | | 8892 | in the database:</p> |
8869 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8893 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8870 | <li class="listitem"><p>Include <code class="filename">../../devel/GConf/schemas.mk</code> | | 8894 | <li class="listitem"><p>Include <code class="filename">../../devel/GConf/schemas.mk</code> |
8871 | instead of its <code class="filename">buildlink3.mk</code> file. This | | 8895 | instead of its <code class="filename">buildlink3.mk</code> file. This |
8872 | takes care of rebuilding the GConf database at installation and | | 8896 | takes care of rebuilding the GConf database at installation and |
8873 | deinstallation time, and tells the package where to install | | 8897 | deinstallation time, and tells the package where to install |
8874 | GConf data files using some standard configure arguments. It | | 8898 | GConf data files using some standard configure arguments. It |
8875 | also disallows any access to the database directly from the | | 8899 | also disallows any access to the database directly from the |
8876 | package.</p></li> | | 8900 | package.</p></li> |
8877 | <li class="listitem"><p>Ensure that the package installs its | | 8901 | <li class="listitem"><p>Ensure that the package installs its |
8878 | <code class="filename">.schemas</code> files under | | 8902 | <code class="filename">.schemas</code> files under |
8879 | <code class="filename">${PREFIX}/share/gconf/schemas</code>. If they get | | 8903 | <code class="filename">${PREFIX}/share/gconf/schemas</code>. If they get |
8880 | installed under <code class="filename">${PREFIX}/etc</code>, you will | | 8904 | installed under <code class="filename">${PREFIX}/etc</code>, you will |
8881 | need to manually patch the package.</p></li> | | 8905 | need to manually patch the package.</p></li> |
8882 | <li class="listitem"><p>Check the PLIST and remove any entries under the etc/gconf | | 8906 | <li class="listitem"><p>Check the PLIST and remove any entries under the etc/gconf |
8883 | directory, as they will be handled automatically. See | | 8907 | directory, as they will be handled automatically. See |
8884 | <a class="xref" href="#faq.conf" title="9.13. How do I change the location of configuration files?">Section 9.13, “How do I change the location of configuration files?”</a> for more information.</p></li> | | 8908 | <a class="xref" href="#faq.conf" title="9.14. How do I change the location of configuration files?">Section 9.14, “How do I change the location of configuration files?”</a> for more information.</p></li> |
8885 | <li class="listitem"><p>Define the <code class="varname">GCONF_SCHEMAS</code> variable in | | 8909 | <li class="listitem"><p>Define the <code class="varname">GCONF_SCHEMAS</code> variable in |
8886 | your <code class="filename">Makefile</code> with a list of all | | 8910 | your <code class="filename">Makefile</code> with a list of all |
8887 | <code class="filename">.schemas</code> files installed by the package, if | | 8911 | <code class="filename">.schemas</code> files installed by the package, if |
8888 | any. Names must not contain any directories in them.</p></li> | | 8912 | any. Names must not contain any directories in them.</p></li> |
8889 | <li class="listitem"><p>Define the <code class="varname">GCONF_ENTRIES</code> variable in | | 8913 | <li class="listitem"><p>Define the <code class="varname">GCONF_ENTRIES</code> variable in |
8890 | your <code class="filename">Makefile</code> with a | | 8914 | your <code class="filename">Makefile</code> with a |
8891 | list of all <code class="filename">.entries</code> files installed by the | | 8915 | list of all <code class="filename">.entries</code> files installed by the |
8892 | package, if any. Names must not contain any directories in | | 8916 | package, if any. Names must not contain any directories in |
8893 | them.</p></li> | | 8917 | them.</p></li> |
8894 | </ol></div> | | 8918 | </ol></div> |
8895 | </div> | | 8919 | </div> |
8896 | <div class="sect2"> | | 8920 | <div class="sect2"> |
8897 | <div class="titlepage"><div><div><h3 class="title"> | | 8921 | <div class="titlepage"><div><div><h3 class="title"> |
8898 | <a name="scrollkeeper-data-files"></a>19.6.10. Packages installing scrollkeeper/rarian data files</h3></div></div></div> | | 8922 | <a name="scrollkeeper-data-files"></a>19.6.10. Packages installing scrollkeeper/rarian data files</h3></div></div></div> |
8899 | <p>If a package installs <code class="filename">.omf</code> files, used by | | 8923 | <p>If a package installs <code class="filename">.omf</code> files, used by |
8900 | scrollkeeper/rarian, you need to take some extra steps to make sure they | | 8924 | scrollkeeper/rarian, you need to take some extra steps to make sure they |
8901 | get registered in the database:</p> | | 8925 | get registered in the database:</p> |
8902 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8926 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8903 | <li class="listitem"><p>Include | | 8927 | <li class="listitem"><p>Include |
8904 | <code class="filename">../../mk/omf-scrollkeeper.mk</code> | | 8928 | <code class="filename">../../mk/omf-scrollkeeper.mk</code> |
8905 | instead of rarian's <code class="filename">buildlink3.mk</code> file. This | | 8929 | instead of rarian's <code class="filename">buildlink3.mk</code> file. This |
8906 | takes care of rebuilding the scrollkeeper database at | | 8930 | takes care of rebuilding the scrollkeeper database at |
8907 | installation and deinstallation time, and disallows any access | | 8931 | installation and deinstallation time, and disallows any access |
8908 | to it directly from the package.</p></li> | | 8932 | to it directly from the package.</p></li> |
8909 | <li class="listitem"><p>Check the PLIST and remove any entries under the | | 8933 | <li class="listitem"><p>Check the PLIST and remove any entries under the |
8910 | <code class="filename">libdata/scrollkeeper</code> directory, as they | | 8934 | <code class="filename">libdata/scrollkeeper</code> directory, as they |
8911 | will be handled automatically.</p></li> | | 8935 | will be handled automatically.</p></li> |
8912 | <li class="listitem"><p>Remove the <code class="filename">share/omf</code> directory from | | 8936 | <li class="listitem"><p>Remove the <code class="filename">share/omf</code> directory from |
8913 | the PLIST. It will be handled by rarian. (<span class="command"><strong>make | | 8937 | the PLIST. It will be handled by rarian. (<span class="command"><strong>make |
8914 | print-PLIST</strong></span> does this automatically.)</p></li> | | 8938 | print-PLIST</strong></span> does this automatically.)</p></li> |
8915 | </ol></div> | | 8939 | </ol></div> |
8916 | </div> | | 8940 | </div> |
8917 | <div class="sect2"> | | 8941 | <div class="sect2"> |
8918 | <div class="titlepage"><div><div><h3 class="title"> | | 8942 | <div class="titlepage"><div><div><h3 class="title"> |
8919 | <a name="x11-fonts"></a>19.6.11. Packages installing X11 fonts</h3></div></div></div> | | 8943 | <a name="x11-fonts"></a>19.6.11. Packages installing X11 fonts</h3></div></div></div> |
8920 | <p>If a package installs font files, you will need to rebuild | | 8944 | <p>If a package installs font files, you will need to rebuild |
8921 | the fonts database in the directory where they get installed at | | 8945 | the fonts database in the directory where they get installed at |
8922 | installation and deinstallation time. This can be automatically | | 8946 | installation and deinstallation time. This can be automatically |
8923 | done by using the pkginstall framework.</p> | | 8947 | done by using the pkginstall framework.</p> |
8924 | <p>You can list the directories where fonts are installed in the | | 8948 | <p>You can list the directories where fonts are installed in the |
8925 | <code class="varname">FONTS_DIRS.<em class="replaceable"><code>type</code></em></code> | | 8949 | <code class="varname">FONTS_DIRS.<em class="replaceable"><code>type</code></em></code> |
8926 | variables, where <em class="replaceable"><code>type</code></em> can be one of | | 8950 | variables, where <em class="replaceable"><code>type</code></em> can be one of |
8927 | <span class="quote">“<span class="quote">ttf</span>”</span>, <span class="quote">“<span class="quote">type1</span>”</span> or <span class="quote">“<span class="quote">x11</span>”</span>. | | 8951 | <span class="quote">“<span class="quote">ttf</span>”</span>, <span class="quote">“<span class="quote">type1</span>”</span> or <span class="quote">“<span class="quote">x11</span>”</span>. |
8928 | Also make sure that the database file | | 8952 | Also make sure that the database file |
8929 | <code class="filename">fonts.dir</code> is not listed in the PLIST.</p> | | 8953 | <code class="filename">fonts.dir</code> is not listed in the PLIST.</p> |
8930 | <p>Note that you should not create new directories for fonts; | | 8954 | <p>Note that you should not create new directories for fonts; |
8931 | instead use the standard ones to avoid that the user needs to | | 8955 | instead use the standard ones to avoid that the user needs to |
8932 | manually configure his X server to find them.</p> | | 8956 | manually configure his X server to find them.</p> |
8933 | </div> | | 8957 | </div> |
8934 | <div class="sect2"> | | 8958 | <div class="sect2"> |
8935 | <div class="titlepage"><div><div><h3 class="title"> | | 8959 | <div class="titlepage"><div><div><h3 class="title"> |
8936 | <a name="gtk2-modules"></a>19.6.12. Packages installing GTK2 modules</h3></div></div></div> | | 8960 | <a name="gtk2-modules"></a>19.6.12. Packages installing GTK2 modules</h3></div></div></div> |
8937 | <p>If a package installs GTK2 immodules or loaders, you need to | | 8961 | <p>If a package installs GTK2 immodules or loaders, you need to |
8938 | take some extra steps to get them registered in the GTK2 database | | 8962 | take some extra steps to get them registered in the GTK2 database |
8939 | properly:</p> | | 8963 | properly:</p> |
8940 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8964 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8941 | <li class="listitem"><p>Include | | 8965 | <li class="listitem"><p>Include |
8942 | <code class="filename">../../x11/gtk2/modules.mk</code> instead of its | | 8966 | <code class="filename">../../x11/gtk2/modules.mk</code> instead of its |
8943 | <code class="filename">buildlink3.mk</code> file. This takes care of | | 8967 | <code class="filename">buildlink3.mk</code> file. This takes care of |
8944 | rebuilding the database at installation and deinstallation time.</p></li> | | 8968 | rebuilding the database at installation and deinstallation time.</p></li> |
8945 | <li class="listitem"><p>Set <code class="varname">GTK2_IMMODULES=YES</code> if | | 8969 | <li class="listitem"><p>Set <code class="varname">GTK2_IMMODULES=YES</code> if |
8946 | your package installs GTK2 immodules.</p></li> | | 8970 | your package installs GTK2 immodules.</p></li> |
8947 | <li class="listitem"><p>Set <code class="varname">GTK2_LOADERS=YES</code> if your package installs | | 8971 | <li class="listitem"><p>Set <code class="varname">GTK2_LOADERS=YES</code> if your package installs |
8948 | GTK2 loaders.</p></li> | | 8972 | GTK2 loaders.</p></li> |
8949 | <li class="listitem"> | | 8973 | <li class="listitem"> |
8950 | <p>Patch the package to not touch any of the GTK2 | | 8974 | <p>Patch the package to not touch any of the GTK2 |
8951 | databases directly. These are:</p> | | 8975 | databases directly. These are:</p> |
8952 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 8976 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
8953 | <li class="listitem"><p><code class="filename">libdata/gtk-2.0/gdk-pixbuf.loaders</code></p></li> | | 8977 | <li class="listitem"><p><code class="filename">libdata/gtk-2.0/gdk-pixbuf.loaders</code></p></li> |
8954 | <li class="listitem"><p><code class="filename">libdata/gtk-2.0/gtk.immodules</code></p></li> | | 8978 | <li class="listitem"><p><code class="filename">libdata/gtk-2.0/gtk.immodules</code></p></li> |
8955 | </ul></div> | | 8979 | </ul></div> |
8956 | </li> | | 8980 | </li> |
8957 | <li class="listitem"><p>Check the <code class="filename">PLIST</code> and remove | | 8981 | <li class="listitem"><p>Check the <code class="filename">PLIST</code> and remove |
8958 | any entries under the <code class="filename">libdata/gtk-2.0</code> | | 8982 | any entries under the <code class="filename">libdata/gtk-2.0</code> |
8959 | directory, as they will be handled automatically.</p></li> | | 8983 | directory, as they will be handled automatically.</p></li> |
8960 | </ol></div> | | 8984 | </ol></div> |
8961 | </div> | | 8985 | </div> |
8962 | <div class="sect2"> | | 8986 | <div class="sect2"> |
8963 | <div class="titlepage"><div><div><h3 class="title"> | | 8987 | <div class="titlepage"><div><div><h3 class="title"> |
8964 | <a name="sgml-xml-data"></a>19.6.13. Packages installing SGML or XML data</h3></div></div></div> | | 8988 | <a name="sgml-xml-data"></a>19.6.13. Packages installing SGML or XML data</h3></div></div></div> |
8965 | <p>If a package installs SGML or XML data files that need to be | | 8989 | <p>If a package installs SGML or XML data files that need to be |
8966 | registered in system-wide catalogs (like DTDs, sub-catalogs, | | 8990 | registered in system-wide catalogs (like DTDs, sub-catalogs, |
8967 | etc.), you need to take some extra steps:</p> | | 8991 | etc.), you need to take some extra steps:</p> |
8968 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8992 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8969 | <li class="listitem"><p>Include | | 8993 | <li class="listitem"><p>Include |
8970 | <code class="filename">../../textproc/xmlcatmgr/catalogs.mk</code> in | | 8994 | <code class="filename">../../textproc/xmlcatmgr/catalogs.mk</code> in |
8971 | your <code class="filename">Makefile</code>, which takes care of | | 8995 | your <code class="filename">Makefile</code>, which takes care of |
8972 | registering those files in system-wide catalogs at | | 8996 | registering those files in system-wide catalogs at |
8973 | installation and deinstallation time.</p></li> | | 8997 | installation and deinstallation time.</p></li> |
8974 | <li class="listitem"><p>Set <code class="varname">SGML_CATALOGS</code> to the full path of | | 8998 | <li class="listitem"><p>Set <code class="varname">SGML_CATALOGS</code> to the full path of |
8975 | any SGML catalogs installed by the package.</p></li> | | 8999 | any SGML catalogs installed by the package.</p></li> |
8976 | <li class="listitem"><p>Set <code class="varname">XML_CATALOGS</code> to the full path of | | 9000 | <li class="listitem"><p>Set <code class="varname">XML_CATALOGS</code> to the full path of |
8977 | any XML catalogs installed by the package.</p></li> | | 9001 | any XML catalogs installed by the package.</p></li> |
8978 | <li class="listitem"><p>Set <code class="varname">SGML_ENTRIES</code> to individual entries | | 9002 | <li class="listitem"><p>Set <code class="varname">SGML_ENTRIES</code> to individual entries |
8979 | to be added to the SGML catalog. These come in groups of | | 9003 | to be added to the SGML catalog. These come in groups of |
8980 | three strings; see xmlcatmgr(1) for more information | | 9004 | three strings; see xmlcatmgr(1) for more information |
8981 | (specifically, arguments recognized by the 'add' action). | | 9005 | (specifically, arguments recognized by the 'add' action). |
8982 | Note that you will normally not use this variable.</p></li> | | 9006 | Note that you will normally not use this variable.</p></li> |
8983 | <li class="listitem"><p>Set <code class="varname">XML_ENTRIES</code> to individual entries | | 9007 | <li class="listitem"><p>Set <code class="varname">XML_ENTRIES</code> to individual entries |
8984 | to be added to the XML catalog. These come in groups of three | | 9008 | to be added to the XML catalog. These come in groups of three |
8985 | strings; see xmlcatmgr(1) for more information (specifically, | | 9009 | strings; see xmlcatmgr(1) for more information (specifically, |
8986 | arguments recognized by the 'add' action). Note that you will | | 9010 | arguments recognized by the 'add' action). Note that you will |
8987 | normally not use this variable.</p></li> | | 9011 | normally not use this variable.</p></li> |
8988 | </ol></div> | | 9012 | </ol></div> |
8989 | </div> | | 9013 | </div> |
8990 | <div class="sect2"> | | 9014 | <div class="sect2"> |
8991 | <div class="titlepage"><div><div><h3 class="title"> | | 9015 | <div class="titlepage"><div><div><h3 class="title"> |
8992 | <a name="mime-database"></a>19.6.14. Packages installing extensions to the MIME database</h3></div></div></div> | | 9016 | <a name="mime-database"></a>19.6.14. Packages installing extensions to the MIME database</h3></div></div></div> |
8993 | <p>If a package provides extensions to the MIME database by | | 9017 | <p>If a package provides extensions to the MIME database by |
8994 | installing <code class="filename">.xml</code> files inside | | 9018 | installing <code class="filename">.xml</code> files inside |
8995 | <code class="filename">${PREFIX}/share/mime/packages</code>, you | | 9019 | <code class="filename">${PREFIX}/share/mime/packages</code>, you |
8996 | need to take some extra steps to ensure that the database is kept | | 9020 | need to take some extra steps to ensure that the database is kept |
8997 | consistent with respect to these new files:</p> | | 9021 | consistent with respect to these new files:</p> |
8998 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 9022 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8999 | <li class="listitem"><p>Include | | 9023 | <li class="listitem"><p>Include |
9000 | <code class="filename">../../databases/shared-mime-info/mimedb.mk</code> | | 9024 | <code class="filename">../../databases/shared-mime-info/mimedb.mk</code> |
9001 | (avoid using the <code class="filename">buildlink3.mk</code> file from | | 9025 | (avoid using the <code class="filename">buildlink3.mk</code> file from |
9002 | this same directory, which is reserved for inclusion from | | 9026 | this same directory, which is reserved for inclusion from |
9003 | other <code class="filename">buildlink3.mk</code> files). It takes | | 9027 | other <code class="filename">buildlink3.mk</code> files). It takes |
9004 | care of rebuilding the MIME database at installation and | | 9028 | care of rebuilding the MIME database at installation and |
9005 | deinstallation time, and disallows any access to it directly | | 9029 | deinstallation time, and disallows any access to it directly |
9006 | from the package.</p></li> | | 9030 | from the package.</p></li> |
9007 | <li class="listitem"><p>Check the PLIST and remove any entries under the | | 9031 | <li class="listitem"><p>Check the PLIST and remove any entries under the |
9008 | <code class="filename">share/mime</code> directory, | | 9032 | <code class="filename">share/mime</code> directory, |
9009 | <span class="emphasis"><em>except</em></span> for files saved under | | 9033 | <span class="emphasis"><em>except</em></span> for files saved under |
9010 | <code class="filename">share/mime/packages</code>. The former are | | 9034 | <code class="filename">share/mime/packages</code>. The former are |
9011 | handled automatically by | | 9035 | handled automatically by |
9012 | the update-mime-database program, but the latter are | | 9036 | the update-mime-database program, but the latter are |
9013 | package-dependent and must be removed by the package that | | 9037 | package-dependent and must be removed by the package that |
9014 | installed them in the first place.</p></li> | | 9038 | installed them in the first place.</p></li> |
9015 | <li class="listitem"><p>Remove any <code class="filename">share/mime/*</code> directories | | 9039 | <li class="listitem"><p>Remove any <code class="filename">share/mime/*</code> directories |
9016 | from the PLIST. They will be handled by the shared-mime-info | | 9040 | from the PLIST. They will be handled by the shared-mime-info |
9017 | package.</p></li> | | 9041 | package.</p></li> |
9018 | </ol></div> | | 9042 | </ol></div> |
9019 | </div> | | 9043 | </div> |
9020 | <div class="sect2"> | | 9044 | <div class="sect2"> |
9021 | <div class="titlepage"><div><div><h3 class="title"> | | 9045 | <div class="titlepage"><div><div><h3 class="title"> |
9022 | <a name="intltool"></a>19.6.15. Packages using intltool</h3></div></div></div> | | 9046 | <a name="intltool"></a>19.6.15. Packages using intltool</h3></div></div></div> |
9023 | <p>If a package uses intltool during its build, add | | 9047 | <p>If a package uses intltool during its build, add |
9024 | <code class="literal">intltool</code> to the <code class="varname">USE_TOOLS</code>, | | 9048 | <code class="literal">intltool</code> to the <code class="varname">USE_TOOLS</code>, |
9025 | which forces it to use the intltool package provided by pkgsrc, | | 9049 | which forces it to use the intltool package provided by pkgsrc, |
9026 | instead of the one bundled with the distribution file.</p> | | 9050 | instead of the one bundled with the distribution file.</p> |
9027 | <p>This tracks intltool's build-time dependencies and uses the | | 9051 | <p>This tracks intltool's build-time dependencies and uses the |
9028 | latest available version; this way, the package benefits of any | | 9052 | latest available version; this way, the package benefits of any |
9029 | bug fixes that may have appeared since it was released.</p> | | 9053 | bug fixes that may have appeared since it was released.</p> |
9030 | </div> | | 9054 | </div> |
9031 | <div class="sect2"> | | 9055 | <div class="sect2"> |
9032 | <div class="titlepage"><div><div><h3 class="title"> | | 9056 | <div class="titlepage"><div><div><h3 class="title"> |
9033 | <a name="startup-scripts"></a>19.6.16. Packages installing startup scripts</h3></div></div></div> | | 9057 | <a name="startup-scripts"></a>19.6.16. Packages installing startup scripts</h3></div></div></div> |
9034 | <p>If a package contains a rc.d script, it won't be copied into | | 9058 | <p>If a package contains a rc.d script, it won't be copied into |
9035 | the startup directory by default, but you can enable it, by adding | | 9059 | the startup directory by default, but you can enable it, by adding |
9036 | the option <code class="varname">PKG_RCD_SCRIPTS=YES</code> in | | 9060 | the option <code class="varname">PKG_RCD_SCRIPTS=YES</code> in |
9037 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. This option will copy the scripts | | 9061 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. This option will copy the scripts |
9038 | into <code class="filename">/etc/rc.d</code> when a package is installed, and | | 9062 | into <code class="filename">/etc/rc.d</code> when a package is installed, and |
9039 | it will automatically remove the scripts when the package is | | 9063 | it will automatically remove the scripts when the package is |
9040 | deinstalled.</p> | | 9064 | deinstalled.</p> |
9041 | </div> | | 9065 | </div> |
9042 | <div class="sect2"> | | 9066 | <div class="sect2"> |
9043 | <div class="titlepage"><div><div><h3 class="title"> | | 9067 | <div class="titlepage"><div><div><h3 class="title"> |
9044 | <a name="tex-packages"></a>19.6.17. Packages installing TeX modules</h3></div></div></div> | | 9068 | <a name="tex-packages"></a>19.6.17. Packages installing TeX modules</h3></div></div></div> |
9045 | <p>If a package installs TeX packages into the texmf tree, | | 9069 | <p>If a package installs TeX packages into the texmf tree, |
9046 | the <code class="filename">ls-R</code> database of the tree needs to be | | 9070 | the <code class="filename">ls-R</code> database of the tree needs to be |
9047 | updated.</p> | | 9071 | updated.</p> |
9048 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 9072 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
9049 | <h3 class="title">Note</h3> | | 9073 | <h3 class="title">Note</h3> |
9050 | <p>Except the main TeX packages such as kpathsea, | | 9074 | <p>Except the main TeX packages such as kpathsea, |
9051 | packages should install files | | 9075 | packages should install files |
9052 | into <code class="filename">${PREFIX}/share/texmf-dist</code>, | | 9076 | into <code class="filename">${PREFIX}/share/texmf-dist</code>, |
9053 | not <code class="filename">${PREFIX}/share/texmf</code>.</p> | | 9077 | not <code class="filename">${PREFIX}/share/texmf</code>.</p> |
9054 | </div> | | 9078 | </div> |
9055 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 9079 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
9056 | <li class="listitem"><p>Include | | 9080 | <li class="listitem"><p>Include |
9057 | <code class="filename">../../print/kpathsea/texmf.mk</code>. This | | 9081 | <code class="filename">../../print/kpathsea/texmf.mk</code>. This |
9058 | takes care of rebuilding the <code class="filename">ls-R</code> | | 9082 | takes care of rebuilding the <code class="filename">ls-R</code> |
9059 | database at installation and deinstallation time.</p></li> | | 9083 | database at installation and deinstallation time.</p></li> |
9060 | <li class="listitem"> | | 9084 | <li class="listitem"> |
9061 | <p>If your package installs files into a texmf | | 9085 | <p>If your package installs files into a texmf |
9062 | tree other than the one | | 9086 | tree other than the one |
9063 | at <code class="filename">${PREFIX}/share/texmf-dist</code>, | | 9087 | at <code class="filename">${PREFIX}/share/texmf-dist</code>, |
9064 | set <code class="varname">TEX_TEXMF_DIRS</code> to the list of all texmf | | 9088 | set <code class="varname">TEX_TEXMF_DIRS</code> to the list of all texmf |
9065 | trees that need database update.</p> | | 9089 | trees that need database update.</p> |
9066 | <p>If your package also installs font map files that need | | 9090 | <p>If your package also installs font map files that need |
9067 | to be registered using <span class="command"><strong>updmap</strong></span>, | | 9091 | to be registered using <span class="command"><strong>updmap</strong></span>, |
9068 | include <code class="filename">../../print/tex-tetex/map.mk</code> and | | 9092 | include <code class="filename">../../print/tex-tetex/map.mk</code> and |
9069 | set <code class="varname">TEX_MAP_FILES</code> and/or | | 9093 | set <code class="varname">TEX_MAP_FILES</code> and/or |
9070 | <code class="varname">TEX_MIXEDMAP_FILES</code> to the list of all | | 9094 | <code class="varname">TEX_MIXEDMAP_FILES</code> to the list of all |
9071 | such font map files. Then <span class="command"><strong>updmap</strong></span> will | | 9095 | such font map files. Then <span class="command"><strong>updmap</strong></span> will |
9072 | be run automatically at installation/deinstallation to | | 9096 | be run automatically at installation/deinstallation to |
9073 | enable/disable font map files for TeX output | | 9097 | enable/disable font map files for TeX output |
9074 | drivers.</p> | | 9098 | drivers.</p> |
9075 | </li> | | 9099 | </li> |
9076 | <li class="listitem"><p>Make sure that none of <code class="filename">ls-R</code> | | 9100 | <li class="listitem"><p>Make sure that none of <code class="filename">ls-R</code> |
9077 | databases are included in <code class="filename">PLIST</code>, as | | 9101 | databases are included in <code class="filename">PLIST</code>, as |
9078 | they will be removed only by the kpathsea package.</p></li> | | 9102 | they will be removed only by the kpathsea package.</p></li> |
9079 | </ol></div> | | 9103 | </ol></div> |
9080 | </div> | | 9104 | </div> |
9081 | <div class="sect2"> | | 9105 | <div class="sect2"> |
9082 | <div class="titlepage"><div><div><h3 class="title"> | | 9106 | <div class="titlepage"><div><div><h3 class="title"> |
9083 | <a name="emulation-packages"></a>19.6.18. Packages supporting running binaries in | | 9107 | <a name="emulation-packages"></a>19.6.18. Packages supporting running binaries in |
9084 | emulation</h3></div></div></div> | | 9108 | emulation</h3></div></div></div> |
9085 | <p>There are some packages that provide libraries and | | 9109 | <p>There are some packages that provide libraries and |
9086 | executables for running binaries from a one operating system | | 9110 | executables for running binaries from a one operating system |
9087 | on a different one (if the latter supports it). One example | | 9111 | on a different one (if the latter supports it). One example |
9088 | is running Linux binaries on NetBSD.</p> | | 9112 | is running Linux binaries on NetBSD.</p> |
9089 | <p>The <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/rpm2pkg/README.html" target="_top"><code class="filename">pkgtools/rpm2pkg</code></a> | | 9113 | <p>The <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/rpm2pkg/README.html" target="_top"><code class="filename">pkgtools/rpm2pkg</code></a> |
9090 | helps in extracting and packaging Linux rpm packages.</p> | | 9114 | helps in extracting and packaging Linux rpm packages.</p> |
9091 | <p>The <code class="varname">CHECK_SHLIBS</code> can be set to no to | | 9115 | <p>The <code class="varname">CHECK_SHLIBS</code> can be set to no to |
9092 | avoid the <span class="command"><strong>check-shlibs</strong></span> target, which tests | | 9116 | avoid the <span class="command"><strong>check-shlibs</strong></span> target, which tests |
9093 | if all libraries for each installed executable can be found by | | 9117 | if all libraries for each installed executable can be found by |
9094 | the dynamic linker. Since the standard dynamic linker is run, | | 9118 | the dynamic linker. Since the standard dynamic linker is run, |
9095 | this fails for emulation packages, because the libraries used | | 9119 | this fails for emulation packages, because the libraries used |
9096 | by the emulation are not in the standard directories.</p> | | 9120 | by the emulation are not in the standard directories.</p> |
9097 | </div> | | 9121 | </div> |
9098 | <div class="sect2"> | | 9122 | <div class="sect2"> |
9099 | <div class="titlepage"><div><div><h3 class="title"> | | 9123 | <div class="titlepage"><div><div><h3 class="title"> |
9100 | <a name="hicolor-theme"></a>19.6.19. Packages installing hicolor theme icons</h3></div></div></div> | | 9124 | <a name="hicolor-theme"></a>19.6.19. Packages installing hicolor theme icons</h3></div></div></div> |
9101 | <p>If a package installs images under the | | 9125 | <p>If a package installs images under the |
9102 | <code class="filename">share/icons/hicolor</code> and/or updates the | | 9126 | <code class="filename">share/icons/hicolor</code> and/or updates the |
9103 | <code class="filename">share/icons/hicolor/icon-theme.cache</code> | | 9127 | <code class="filename">share/icons/hicolor/icon-theme.cache</code> |
9104 | database, you need to take some extra steps to make sure that the | | 9128 | database, you need to take some extra steps to make sure that the |
9105 | shared theme directory is handled appropriately and that the cache | | 9129 | shared theme directory is handled appropriately and that the cache |
9106 | database is rebuilt:</p> | | 9130 | database is rebuilt:</p> |
9107 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 9131 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
9108 | <li class="listitem"><p>Include | | 9132 | <li class="listitem"><p>Include |
9109 | <code class="filename">../../graphics/hicolor-icon-theme/buildlink3.mk</code>.</p></li> | | 9133 | <code class="filename">../../graphics/hicolor-icon-theme/buildlink3.mk</code>.</p></li> |
9110 | <li class="listitem"><p>Check the <code class="filename">PLIST</code> and remove the | | 9134 | <li class="listitem"><p>Check the <code class="filename">PLIST</code> and remove the |
9111 | entry that refers to the theme cache.</p></li> | | 9135 | entry that refers to the theme cache.</p></li> |
9112 | <li class="listitem"><p>Ensure that the PLIST does not remove the shared icon | | 9136 | <li class="listitem"><p>Ensure that the PLIST does not remove the shared icon |
9113 | directories from the <code class="filename">share/icons/hicolor</code> | | 9137 | directories from the <code class="filename">share/icons/hicolor</code> |
9114 | hierarchy because they will be handled automatically.</p></li> | | 9138 | hierarchy because they will be handled automatically.</p></li> |
9115 | </ol></div> | | 9139 | </ol></div> |
9116 | <p>The best way to verify that the PLIST is correct with | | 9140 | <p>The best way to verify that the PLIST is correct with |
9117 | respect to the last two points is to regenerate it using | | 9141 | respect to the last two points is to regenerate it using |
9118 | <span class="command"><strong>make print-PLIST</strong></span>.</p> | | 9142 | <span class="command"><strong>make print-PLIST</strong></span>.</p> |
9119 | </div> | | 9143 | </div> |
9120 | <div class="sect2"> | | 9144 | <div class="sect2"> |
9121 | <div class="titlepage"><div><div><h3 class="title"> | | 9145 | <div class="titlepage"><div><div><h3 class="title"> |
9122 | <a name="desktop-files"></a>19.6.20. Packages installing desktop files</h3></div></div></div> | | 9146 | <a name="desktop-files"></a>19.6.20. Packages installing desktop files</h3></div></div></div> |
9123 | <p>If a package installs <code class="filename">.desktop</code> files | | 9147 | <p>If a package installs <code class="filename">.desktop</code> files |
9124 | under <code class="filename">share/applications</code> and these include | | 9148 | under <code class="filename">share/applications</code> and these include |
9125 | MIME information (MimeType key), you need to take extra steps to | | 9149 | MIME information (MimeType key), you need to take extra steps to |
9126 | ensure that they are registered into the MIME database:</p> | | 9150 | ensure that they are registered into the MIME database:</p> |
9127 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 9151 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
9128 | <li class="listitem"><p>Include | | 9152 | <li class="listitem"><p>Include |
9129 | <code class="filename">../../sysutils/desktop-file-utils/desktopdb.mk</code>.</p></li> | | 9153 | <code class="filename">../../sysutils/desktop-file-utils/desktopdb.mk</code>.</p></li> |
9130 | <li class="listitem"><p>Check the PLIST and remove the entry that refers to the | | 9154 | <li class="listitem"><p>Check the PLIST and remove the entry that refers to the |
9131 | <code class="filename">share/applications/mimeinfo.cache</code> file. | | 9155 | <code class="filename">share/applications/mimeinfo.cache</code> file. |
9132 | It will be handled automatically.</p></li> | | 9156 | It will be handled automatically.</p></li> |
9133 | </ol></div> | | 9157 | </ol></div> |
9134 | <p>The best way to verify that the PLIST is correct with | | 9158 | <p>The best way to verify that the PLIST is correct with |
9135 | respect to the last point is to regenerate it using <span class="command"><strong>make | | 9159 | respect to the last point is to regenerate it using <span class="command"><strong>make |
9136 | print-PLIST</strong></span>.</p> | | 9160 | print-PLIST</strong></span>.</p> |
9137 | </div> | | 9161 | </div> |
9138 | </div> | | 9162 | </div> |
9139 | <div class="sect1"> | | 9163 | <div class="sect1"> |
9140 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9164 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9141 | <a name="punting"></a>19.7. Marking packages as having problems</h2></div></div></div> | | 9165 | <a name="punting"></a>19.7. Marking packages as having problems</h2></div></div></div> |
9142 | <p>In some cases one does not have the time to solve a problem | | 9166 | <p>In some cases one does not have the time to solve a problem |
9143 | immediately. In this case, one can plainly mark a package as broken. For | | 9167 | immediately. In this case, one can plainly mark a package as broken. For |
9144 | this, one just sets the variable <code class="varname">BROKEN</code> to the | | 9168 | this, one just sets the variable <code class="varname">BROKEN</code> to the |
9145 | reason why the package is broken (similar to the | | 9169 | reason why the package is broken (similar to the |
9146 | <code class="varname">RESTRICTED</code> variable). A user trying to build | | 9170 | <code class="varname">RESTRICTED</code> variable). A user trying to build |
9147 | the package will immediately be shown this message, and the build | | 9171 | the package will immediately be shown this message, and the build |
9148 | will not be even tried.</p> | | 9172 | will not be even tried.</p> |
9149 | <p><code class="varname">BROKEN</code> packages are removed from pkgsrc in irregular | | 9173 | <p><code class="varname">BROKEN</code> packages are removed from pkgsrc in irregular |
9150 | intervals.</p> | | 9174 | intervals.</p> |
9151 | </div> | | 9175 | </div> |
9152 | </div> | | 9176 | </div> |
9153 | <div class="chapter"> | | 9177 | <div class="chapter"> |
9154 | <div class="titlepage"><div><div><h2 class="title"> | | 9178 | <div class="titlepage"><div><div><h2 class="title"> |
9155 | <a name="debug"></a>Chapter 20. Debugging</h2></div></div></div> | | 9179 | <a name="debug"></a>Chapter 20. Debugging</h2></div></div></div> |
9156 | <p>To check out all the gotchas when building a package, here are | | 9180 | <p>To check out all the gotchas when building a package, here are |
9157 | the steps that I do in order to get a package working. Please note | | 9181 | the steps that I do in order to get a package working. Please note |
9158 | this is basically the same as what was explained in the previous | | 9182 | this is basically the same as what was explained in the previous |
9159 | sections, only with some debugging aids.</p> | | 9183 | sections, only with some debugging aids.</p> |
9160 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 9184 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
9161 | <li class="listitem"><p>Be sure to set <code class="varname">PKG_DEVELOPER=yes</code> in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p></li> | | 9185 | <li class="listitem"><p>Be sure to set <code class="varname">PKG_DEVELOPER=yes</code> in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p></li> |
9162 | <li class="listitem"> | | 9186 | <li class="listitem"> |
9163 | <p>Install <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/url2pkg/README.html" target="_top"><code class="filename">pkgtools/url2pkg</code></a>, | | 9187 | <p>Install <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/url2pkg/README.html" target="_top"><code class="filename">pkgtools/url2pkg</code></a>, |
9164 | create a directory for a new package, change into it, then run | | 9188 | create a directory for a new package, change into it, then run |
9165 | <span class="command"><strong>url2pkg</strong></span>:</p> | | 9189 | <span class="command"><strong>url2pkg</strong></span>:</p> |
9166 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>mkdir /usr/pkgsrc/<em class="replaceable"><code>category</code></em>/<em class="replaceable"><code>examplepkg</code></em></code></strong> | | 9190 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>mkdir /usr/pkgsrc/<em class="replaceable"><code>category</code></em>/<em class="replaceable"><code>examplepkg</code></em></code></strong> |
9167 | <code class="prompt">%</code> <strong class="userinput"><code>cd /usr/pkgsrc/<em class="replaceable"><code>category</code></em>/<em class="replaceable"><code>examplepkg</code></em></code></strong> | | 9191 | <code class="prompt">%</code> <strong class="userinput"><code>cd /usr/pkgsrc/<em class="replaceable"><code>category</code></em>/<em class="replaceable"><code>examplepkg</code></em></code></strong> |
9168 | <code class="prompt">%</code> <strong class="userinput"><code>url2pkg http://www.example.com/path/to/distfile.tar.gz</code></strong></pre> | | 9192 | <code class="prompt">%</code> <strong class="userinput"><code>url2pkg http://www.example.com/path/to/distfile.tar.gz</code></strong></pre> |
9169 | </li> | | 9193 | </li> |
9170 | <li class="listitem"><p>Edit the <code class="filename">Makefile</code> as requested.</p></li> | | 9194 | <li class="listitem"><p>Edit the <code class="filename">Makefile</code> as requested.</p></li> |
9171 | <li class="listitem"><p>Fill in the <code class="filename">DESCR</code> file</p></li> | | 9195 | <li class="listitem"><p>Fill in the <code class="filename">DESCR</code> file</p></li> |
9172 | <li class="listitem"><p>Run <span class="command"><strong>make configure</strong></span></p></li> | | 9196 | <li class="listitem"><p>Run <span class="command"><strong>make configure</strong></span></p></li> |
9173 | <li class="listitem"><p>Add any dependencies glimpsed from documentation and the | | 9197 | <li class="listitem"><p>Add any dependencies glimpsed from documentation and the |
9174 | configure step to the package's | | 9198 | configure step to the package's |
9175 | <code class="filename">Makefile</code>.</p></li> | | 9199 | <code class="filename">Makefile</code>.</p></li> |
9176 | <li class="listitem"> | | 9200 | <li class="listitem"> |
9177 | <p>Make the package compile, doing multiple rounds of</p> | | 9201 | <p>Make the package compile, doing multiple rounds of</p> |
9178 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make</code></strong> | | 9202 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make</code></strong> |
9179 | <code class="prompt">%</code> <strong class="userinput"><code>pkgvi ${WRKSRC}/some/file/that/does/not/compile</code></strong> | | 9203 | <code class="prompt">%</code> <strong class="userinput"><code>pkgvi ${WRKSRC}/some/file/that/does/not/compile</code></strong> |
9180 | <code class="prompt">%</code> <strong class="userinput"><code>mkpatches</code></strong> | | 9204 | <code class="prompt">%</code> <strong class="userinput"><code>mkpatches</code></strong> |
9181 | <code class="prompt">%</code> <strong class="userinput"><code>patchdiff</code></strong> | | 9205 | <code class="prompt">%</code> <strong class="userinput"><code>patchdiff</code></strong> |
9182 | <code class="prompt">%</code> <strong class="userinput"><code>mv ${WRKDIR}/.newpatches/* patches</code></strong> | | 9206 | <code class="prompt">%</code> <strong class="userinput"><code>mv ${WRKDIR}/.newpatches/* patches</code></strong> |
9183 | <code class="prompt">%</code> <strong class="userinput"><code>make mps</code></strong> | | 9207 | <code class="prompt">%</code> <strong class="userinput"><code>make mps</code></strong> |
9184 | <code class="prompt">%</code> <strong class="userinput"><code>make clean</code></strong></pre> | | 9208 | <code class="prompt">%</code> <strong class="userinput"><code>make clean</code></strong></pre> |
9185 | <p>Doing this step as non-root user will ensure that no files | | 9209 | <p>Doing this step as non-root user will ensure that no files |
9186 | are modified that shouldn't be, especially during the build | | 9210 | are modified that shouldn't be, especially during the build |
9187 | phase. <span class="command"><strong>mkpatches</strong></span>, | | 9211 | phase. <span class="command"><strong>mkpatches</strong></span>, |
9188 | <span class="command"><strong>patchdiff</strong></span> and <span class="command"><strong>pkgvi</strong></span> are | | 9212 | <span class="command"><strong>patchdiff</strong></span> and <span class="command"><strong>pkgvi</strong></span> are |
9189 | from the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a> | | 9213 | from the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a> |
9190 | package.</p> | | 9214 | package.</p> |
9191 | </li> | | 9215 | </li> |
9192 | <li class="listitem"><p>Look at the <code class="filename">Makefile</code>, fix if | | 9216 | <li class="listitem"><p>Look at the <code class="filename">Makefile</code>, fix if |
9193 | necessary; see <a class="xref" href="#components.Makefile" title="11.1. Makefile">Section 11.1, “<code class="filename">Makefile</code>”</a>.</p></li> | | 9217 | necessary; see <a class="xref" href="#components.Makefile" title="11.1. Makefile">Section 11.1, “<code class="filename">Makefile</code>”</a>.</p></li> |
9194 | <li class="listitem"> | | 9218 | <li class="listitem"> |
9195 | <p>Generate a <code class="filename">PLIST</code>:</p> | | 9219 | <p>Generate a <code class="filename">PLIST</code>:</p> |
9196 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make install</code></strong> | | 9220 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make install</code></strong> |
9197 | <code class="prompt">#</code> <strong class="userinput"><code>make print-PLIST >PLIST</code></strong> | | 9221 | <code class="prompt">#</code> <strong class="userinput"><code>make print-PLIST >PLIST</code></strong> |
9198 | <code class="prompt">#</code> <strong class="userinput"><code>make deinstall</code></strong> | | 9222 | <code class="prompt">#</code> <strong class="userinput"><code>make deinstall</code></strong> |
9199 | <code class="prompt">#</code> <strong class="userinput"><code>make install</code></strong> | | 9223 | <code class="prompt">#</code> <strong class="userinput"><code>make install</code></strong> |
9200 | <code class="prompt">#</code> <strong class="userinput"><code>make deinstall</code></strong></pre> | | 9224 | <code class="prompt">#</code> <strong class="userinput"><code>make deinstall</code></strong></pre> |
9201 | <p>You usually need to be <code class="username">root</code> to do | | 9225 | <p>You usually need to be <code class="username">root</code> to do |
9202 | this. Look if there are any files left:</p> | | 9226 | this. Look if there are any files left:</p> |
9203 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make print-PLIST</code></strong></pre> | | 9227 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make print-PLIST</code></strong></pre> |
9204 | <p>If this reveals any files that are missing in | | 9228 | <p>If this reveals any files that are missing in |
9205 | <code class="filename">PLIST</code>, add them.</p> | | 9229 | <code class="filename">PLIST</code>, add them.</p> |
9206 | </li> | | 9230 | </li> |
9207 | <li class="listitem"> | | 9231 | <li class="listitem"> |
9208 | <p>Now that the <code class="filename">PLIST</code> is OK, install the | | 9232 | <p>Now that the <code class="filename">PLIST</code> is OK, install the |
9209 | package again and make a binary package:</p> | | 9233 | package again and make a binary package:</p> |
9210 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make reinstall</code></strong> | | 9234 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make reinstall</code></strong> |
9211 | <code class="prompt">#</code> <strong class="userinput"><code>make package</code></strong></pre> | | 9235 | <code class="prompt">#</code> <strong class="userinput"><code>make package</code></strong></pre> |
9212 | </li> | | 9236 | </li> |
9213 | <li class="listitem"> | | 9237 | <li class="listitem"> |
9214 | <p>Delete the installed package:</p> | | 9238 | <p>Delete the installed package:</p> |
9215 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>pkg_delete <em class="replaceable"><code>examplepkg</code></em></code></strong></pre> | | 9239 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>pkg_delete <em class="replaceable"><code>examplepkg</code></em></code></strong></pre> |
9216 | </li> | | 9240 | </li> |
9217 | <li class="listitem"> | | 9241 | <li class="listitem"> |
9218 | <p>Repeat the above <span class="command"><strong>make print-PLIST</strong></span> | | 9242 | <p>Repeat the above <span class="command"><strong>make print-PLIST</strong></span> |
9219 | command, which shouldn't find anything now:</p> | | 9243 | command, which shouldn't find anything now:</p> |
9220 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make print-PLIST</code></strong></pre> | | 9244 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make print-PLIST</code></strong></pre> |
9221 | </li> | | 9245 | </li> |
9222 | <li class="listitem"> | | 9246 | <li class="listitem"> |
9223 | <p>Reinstall the binary package:</p> | | 9247 | <p>Reinstall the binary package:</p> |
9224 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>pkg_add .../<em class="replaceable"><code>examplepkg</code></em>.tgz</code></strong></pre> | | 9248 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>pkg_add .../<em class="replaceable"><code>examplepkg</code></em>.tgz</code></strong></pre> |
9225 | </li> | | 9249 | </li> |
9226 | <li class="listitem"><p>Play with it. Make sure everything works.</p></li> | | 9250 | <li class="listitem"><p>Play with it. Make sure everything works.</p></li> |
9227 | <li class="listitem"> | | 9251 | <li class="listitem"> |
9228 | <p>Run <span class="command"><strong>pkglint</strong></span> from <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>, and fix the problems it | | 9252 | <p>Run <span class="command"><strong>pkglint</strong></span> from <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>, and fix the problems it |
9229 | reports:</p> | | 9253 | reports:</p> |
9230 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>pkglint</code></strong></pre> | | 9254 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>pkglint</code></strong></pre> |
9231 | </li> | | 9255 | </li> |
9232 | <li class="listitem"><p>Submit (or commit, if you have cvs access); see <a class="xref" href="#submit" title="Chapter 21. Submitting and Committing">Chapter 21, <i>Submitting and Committing</i></a>.</p></li> | | 9256 | <li class="listitem"><p>Submit (or commit, if you have cvs access); see <a class="xref" href="#submit" title="Chapter 21. Submitting and Committing">Chapter 21, <i>Submitting and Committing</i></a>.</p></li> |
9233 | </ul></div> | | 9257 | </ul></div> |
9234 | </div> | | 9258 | </div> |
9235 | <div class="chapter"> | | 9259 | <div class="chapter"> |
9236 | <div class="titlepage"><div><div><h2 class="title"> | | 9260 | <div class="titlepage"><div><div><h2 class="title"> |
9237 | <a name="submit"></a>Chapter 21. Submitting and Committing</h2></div></div></div> | | 9261 | <a name="submit"></a>Chapter 21. Submitting and Committing</h2></div></div></div> |
9238 | <div class="toc"> | | 9262 | <div class="toc"> |
9239 | <p><b>Table of Contents</b></p> | | 9263 | <p><b>Table of Contents</b></p> |
9240 | <dl> | | 9264 | <dl> |
9241 | <dt><span class="sect1"><a href="#submitting-binary-packages">21.1. Submitting binary packages</a></span></dt> | | 9265 | <dt><span class="sect1"><a href="#submitting-binary-packages">21.1. Submitting binary packages</a></span></dt> |
9242 | <dt><span class="sect1"><a href="#submitting-your-package">21.2. Submitting source packages (for non-NetBSD-developers)</a></span></dt> | | 9266 | <dt><span class="sect1"><a href="#submitting-your-package">21.2. Submitting source packages (for non-NetBSD-developers)</a></span></dt> |
9243 | <dt><span class="sect1"><a href="#general-notes-for-changes">21.3. General notes when adding, updating, or removing packages</a></span></dt> | | 9267 | <dt><span class="sect1"><a href="#general-notes-for-changes">21.3. General notes when adding, updating, or removing packages</a></span></dt> |
9244 | <dt><span class="sect1"><a href="#committing-importing">21.4. Committing: Adding a package to CVS</a></span></dt> | | 9268 | <dt><span class="sect1"><a href="#committing-importing">21.4. Committing: Adding a package to CVS</a></span></dt> |
9245 | <dt><span class="sect1"><a href="#updating-package">21.5. Updating a package to a newer version</a></span></dt> | | 9269 | <dt><span class="sect1"><a href="#updating-package">21.5. Updating a package to a newer version</a></span></dt> |
9246 | <dt><span class="sect1"><a href="#renaming-package">21.6. Renaming a package in pkgsrc</a></span></dt> | | 9270 | <dt><span class="sect1"><a href="#renaming-package">21.6. Renaming a package in pkgsrc</a></span></dt> |
9247 | <dt><span class="sect1"><a href="#moving-package">21.7. Moving a package in pkgsrc</a></span></dt> | | 9271 | <dt><span class="sect1"><a href="#moving-package">21.7. Moving a package in pkgsrc</a></span></dt> |
9248 | </dl> | | 9272 | </dl> |
9249 | </div> | | 9273 | </div> |
9250 | <div class="sect1"> | | 9274 | <div class="sect1"> |
9251 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9275 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9252 | <a name="submitting-binary-packages"></a>21.1. Submitting binary packages</h2></div></div></div> | | 9276 | <a name="submitting-binary-packages"></a>21.1. Submitting binary packages</h2></div></div></div> |
9253 | <p>Our policy is that we accept binaries only from pkgsrc | | 9277 | <p>Our policy is that we accept binaries only from pkgsrc |
9254 | developers to guarantee that the packages don't contain any | | 9278 | developers to guarantee that the packages don't contain any |
9255 | trojan horses etc. This is not to annoy anyone but rather to | | 9279 | trojan horses etc. This is not to annoy anyone but rather to |
9256 | protect our users! You're still free to put up your home-made | | 9280 | protect our users! You're still free to put up your home-made |
9257 | binary packages and tell the world where to get them. NetBSD | | 9281 | binary packages and tell the world where to get them. NetBSD |
9258 | developers doing bulk builds and wanting to upload them please | | 9282 | developers doing bulk builds and wanting to upload them please |
9259 | see <a class="xref" href="#bulk" title="Chapter 7. Creating binary packages for everything in pkgsrc (bulk builds)">Chapter 7, <i>Creating binary packages for everything in pkgsrc (bulk | | 9283 | see <a class="xref" href="#bulk" title="Chapter 7. Creating binary packages for everything in pkgsrc (bulk builds)">Chapter 7, <i>Creating binary packages for everything in pkgsrc (bulk |
9260 | builds)</i></a>.</p> | | 9284 | builds)</i></a>.</p> |
9261 | </div> | | 9285 | </div> |
9262 | <div class="sect1"> | | 9286 | <div class="sect1"> |
9263 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9287 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9264 | <a name="submitting-your-package"></a>21.2. Submitting source packages (for non-NetBSD-developers)</h2></div></div></div> | | 9288 | <a name="submitting-your-package"></a>21.2. Submitting source packages (for non-NetBSD-developers)</h2></div></div></div> |
9265 | <p>First, check that your package is complete, compiles and | | 9289 | <p>First, check that your package is complete, compiles and |
9266 | runs well; see <a class="xref" href="#debug" title="Chapter 20. Debugging">Chapter 20, <i>Debugging</i></a> and the rest of this | | 9290 | runs well; see <a class="xref" href="#debug" title="Chapter 20. Debugging">Chapter 20, <i>Debugging</i></a> and the rest of this |
9267 | document. Next, generate an uuencoded gzipped <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?tar+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">tar</span>(1)</span></a> | | 9291 | document. Next, generate an uuencoded gzipped <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?tar+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">tar</span>(1)</span></a> |
9268 | archive that contains all files that make up the package. | | 9292 | archive that contains all files that make up the package. |
9269 | Finally, send this package to the pkgsrc bug tracking system, | | 9293 | Finally, send this package to the pkgsrc bug tracking system, |
9270 | either with the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?send-pr+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">send-pr</span>(1)</span></a> command, or if you don't have | | 9294 | either with the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?send-pr+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">send-pr</span>(1)</span></a> command, or if you don't have |
9271 | that, go to the web page | | 9295 | that, go to the web page |
9272 | <a class="ulink" href="http://www.NetBSD.org/support/send-pr.html" target="_top">http://www.NetBSD.org/support/send-pr.html</a>, | | 9296 | <a class="ulink" href="http://www.NetBSD.org/support/send-pr.html" target="_top">http://www.NetBSD.org/support/send-pr.html</a>, |
9273 | which contains some instructions and a link to a form where you | | 9297 | which contains some instructions and a link to a form where you |
9274 | can submit packages. The | | 9298 | can submit packages. The |
9275 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/sysutils/gtk-send-pr/README.html" target="_top"><code class="filename">sysutils/gtk-send-pr</code></a> package is | | 9299 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/sysutils/gtk-send-pr/README.html" target="_top"><code class="filename">sysutils/gtk-send-pr</code></a> package is |
9276 | also available as a substitute for either of the above two tools. | | 9300 | also available as a substitute for either of the above two tools. |
9277 | </p> | | 9301 | </p> |
9278 | <p>In the form of the problem report, the category should be | | 9302 | <p>In the form of the problem report, the category should be |
9279 | <span class="quote">“<span class="quote">pkg</span>”</span>, the synopsis should include the package name | | 9303 | <span class="quote">“<span class="quote">pkg</span>”</span>, the synopsis should include the package name |
9280 | and version number, and the description field should contain a | | 9304 | and version number, and the description field should contain a |
9281 | short description of your package (contents of the COMMENT | | 9305 | short description of your package (contents of the COMMENT |
9282 | variable or DESCR file are OK). The uuencoded package data should | | 9306 | variable or DESCR file are OK). The uuencoded package data should |
9283 | go into the <span class="quote">“<span class="quote">fix</span>”</span> field.</p> | | 9307 | go into the <span class="quote">“<span class="quote">fix</span>”</span> field.</p> |
9284 | <p>If you want to submit several packages, please send a | | 9308 | <p>If you want to submit several packages, please send a |
9285 | separate PR for each one, it's easier for us to track things | | 9309 | separate PR for each one, it's easier for us to track things |
9286 | that way.</p> | | 9310 | that way.</p> |
9287 | <p>Alternatively, you can also import new packages into | | 9311 | <p>Alternatively, you can also import new packages into |
9288 | pkgsrc-wip (<span class="quote">“<span class="quote">pkgsrc work-in-progress</span>”</span>); see the | | 9312 | pkgsrc-wip (<span class="quote">“<span class="quote">pkgsrc work-in-progress</span>”</span>); see the |
9289 | homepage at <a class="ulink" href="http://pkgsrc-wip.sourceforge.net/" target="_top">http://pkgsrc-wip.sourceforge.net/</a> | | 9313 | homepage at <a class="ulink" href="http://pkgsrc-wip.sourceforge.net/" target="_top">http://pkgsrc-wip.sourceforge.net/</a> |
9290 | for details.</p> | | 9314 | for details.</p> |
9291 | </div> | | 9315 | </div> |
9292 | <div class="sect1"> | | 9316 | <div class="sect1"> |
9293 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9317 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9294 | <a name="general-notes-for-changes"></a>21.3. General notes when adding, updating, or removing packages</h2></div></div></div> | | 9318 | <a name="general-notes-for-changes"></a>21.3. General notes when adding, updating, or removing packages</h2></div></div></div> |
9295 | <p>Please note all package additions, updates, moves, and | | 9319 | <p>Please note all package additions, updates, moves, and |
9296 | removals in <code class="filename">pkgsrc/doc/CHANGES-<em class="replaceable"><code>YYYY</code></em></code>. It's very | | 9320 | removals in <code class="filename">pkgsrc/doc/CHANGES-<em class="replaceable"><code>YYYY</code></em></code>. It's very |
9297 | important to keep this file up to date and conforming to the | | 9321 | important to keep this file up to date and conforming to the |
9298 | existing format, because it will be used by scripts to | | 9322 | existing format, because it will be used by scripts to |
9299 | automatically update pages on <a class="ulink" href="http://www.NetBSD.org/" target="_top">www.NetBSD.org</a> and other | | 9323 | automatically update pages on <a class="ulink" href="http://www.NetBSD.org/" target="_top">www.NetBSD.org</a> and other |
9300 | sites. Additionally, check the | | 9324 | sites. Additionally, check the |
9301 | <code class="filename">pkgsrc/doc/TODO</code> file and remove the entry | | 9325 | <code class="filename">pkgsrc/doc/TODO</code> file and remove the entry |
9302 | for the package you updated or removed, in case it was mentioned | | 9326 | for the package you updated or removed, in case it was mentioned |
9303 | there.</p> | | 9327 | there.</p> |
9304 | <p>When the <code class="varname">PKGREVISION</code> of a package is | | 9328 | <p>When the <code class="varname">PKGREVISION</code> of a package is |
9305 | bumped, the change should appear in | | 9329 | bumped, the change should appear in |
9306 | <code class="filename">pkgsrc/doc/CHANGES-<em class="replaceable"><code>YYYY</code></em></code> if it is security | | 9330 | <code class="filename">pkgsrc/doc/CHANGES-<em class="replaceable"><code>YYYY</code></em></code> if it is security |
9307 | related or otherwise relevant. Mass bumps that result from a | | 9331 | related or otherwise relevant. Mass bumps that result from a |
9308 | dependency being updated should not be mentioned. In all other | | 9332 | dependency being updated should not be mentioned. In all other |
9309 | cases it's the developer's decision.</p> | | 9333 | cases it's the developer's decision.</p> |
9310 | <p>There is a make target that helps in creating proper | | 9334 | <p>There is a make target that helps in creating proper |
9311 | <code class="filename">CHANGES-<em class="replaceable"><code>YYYY</code></em></code> entries: <span class="command"><strong>make | | 9335 | <code class="filename">CHANGES-<em class="replaceable"><code>YYYY</code></em></code> entries: <span class="command"><strong>make |
9312 | changes-entry</strong></span>. It uses the optional <code class="varname">CTYPE</code> | | 9336 | changes-entry</strong></span>. It uses the optional <code class="varname">CTYPE</code> |
9313 | and <code class="varname">NETBSD_LOGIN_NAME</code> variables. The general | | 9337 | and <code class="varname">NETBSD_LOGIN_NAME</code> variables. The general |
9314 | usage is to first make sure that your <code class="filename">CHANGES-<em class="replaceable"><code>YYYY</code></em></code> | | 9338 | usage is to first make sure that your <code class="filename">CHANGES-<em class="replaceable"><code>YYYY</code></em></code> |
9315 | file is up-to-date (to avoid having to resolve conflicts later-on) | | 9339 | file is up-to-date (to avoid having to resolve conflicts later-on) |
9316 | and then to <span class="command"><strong>cd</strong></span> to the package directory. For | | 9340 | and then to <span class="command"><strong>cd</strong></span> to the package directory. For |
9317 | package updates, <span class="command"><strong>make changes-entry</strong></span> is enough. | | 9341 | package updates, <span class="command"><strong>make changes-entry</strong></span> is enough. |
9318 | For new packages, or package moves or removals, set the | | 9342 | For new packages, or package moves or removals, set the |
9319 | <code class="varname">CTYPE</code> variable on the command line to "Added", | | 9343 | <code class="varname">CTYPE</code> variable on the command line to "Added", |
9320 | "Moved", or "Removed". You can set <code class="varname">NETBSD_LOGIN_NAME</code> | | 9344 | "Moved", or "Removed". You can set <code class="varname">NETBSD_LOGIN_NAME</code> |
9321 | in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> if your local login name is | | 9345 | in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> if your local login name is |
9322 | not the same as your NetBSD login name. The target also automatically | | 9346 | not the same as your NetBSD login name. The target also automatically |
9323 | removes possibly existing entries for the package in the | | 9347 | removes possibly existing entries for the package in the |
9324 | <code class="filename">TODO</code> file. Don't forget to commit | | 9348 | <code class="filename">TODO</code> file. Don't forget to commit |
9325 | the changes, e.g. by using <span class="command"><strong>make commit-changes-entry</strong></span>! | | 9349 | the changes, e.g. by using <span class="command"><strong>make commit-changes-entry</strong></span>! |
9326 | If you are not using a checkout directly from cvs.NetBSD.org, but e.g. | | 9350 | If you are not using a checkout directly from cvs.NetBSD.org, but e.g. |
9327 | a local copy of the repository, you can set USE_NETBSD_REPO=yes. This | | 9351 | a local copy of the repository, you can set USE_NETBSD_REPO=yes. This |
9328 | makes the cvs commands use the main repository. | | 9352 | makes the cvs commands use the main repository. |
9329 | </p> | | 9353 | </p> |
9330 | </div> | | 9354 | </div> |
9331 | <div class="sect1"> | | 9355 | <div class="sect1"> |
9332 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9356 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9333 | <a name="committing-importing"></a>21.4. Committing: Adding a package to CVS</h2></div></div></div> | | 9357 | <a name="committing-importing"></a>21.4. Committing: Adding a package to CVS</h2></div></div></div> |
9334 | <p>This section is only of interest for pkgsrc developers with write | | 9358 | <p>This section is only of interest for pkgsrc developers with write |
9335 | access to the pkgsrc repository.</p> | | 9359 | access to the pkgsrc repository.</p> |
9336 | <p>When the package is finished, <span class="quote">“<span class="quote">cvs add</span>”</span> the files. | | 9360 | <p>When the package is finished, <span class="quote">“<span class="quote">cvs add</span>”</span> the files. |
9337 | Start by adding the directory and then files in the directory. Don't | | 9361 | Start by adding the directory and then files in the directory. Don't |
9338 | forget to add the new package to the category's | | 9362 | forget to add the new package to the category's |
9339 | <code class="filename">Makefile</code>. Make sure you don't forget any files; | | 9363 | <code class="filename">Makefile</code>. Make sure you don't forget any files; |
9340 | you can check by running <span class="quote">“<span class="quote">cvs status</span>”</span>. An example:</p> | | 9364 | you can check by running <span class="quote">“<span class="quote">cvs status</span>”</span>. An example:</p> |
9341 | <pre class="programlisting"> | | 9365 | <pre class="programlisting"> |
9342 | <code class="prompt">$</code> cd .../pkgsrc/category | | 9366 | <code class="prompt">$</code> cd .../pkgsrc/category |
9343 | <code class="prompt">$</code> cvs add pkgname | | 9367 | <code class="prompt">$</code> cvs add pkgname |
9344 | <code class="prompt">$</code> cd pkgname | | 9368 | <code class="prompt">$</code> cd pkgname |
9345 | <code class="prompt">$</code> cvs add DESCR Makefile PLIST distinfo buildlink3.mk patches | | 9369 | <code class="prompt">$</code> cvs add DESCR Makefile PLIST distinfo buildlink3.mk patches |
9346 | <code class="prompt">$</code> cvs add patches/p* | | 9370 | <code class="prompt">$</code> cvs add patches/p* |
9347 | <code class="prompt">$</code> cvs status | less | | 9371 | <code class="prompt">$</code> cvs status | less |
9348 | <code class="prompt">$</code> cvs commit | | 9372 | <code class="prompt">$</code> cvs commit |
9349 | <code class="prompt">$</code> cd .. | | 9373 | <code class="prompt">$</code> cd .. |
9350 | <code class="prompt">$</code> vi Makefile # add SUBDIRS+=pkgname line | | 9374 | <code class="prompt">$</code> vi Makefile # add SUBDIRS+=pkgname line |
9351 | <code class="prompt">$</code> cvs commit Makefile | | 9375 | <code class="prompt">$</code> cvs commit Makefile |
9352 | <code class="prompt">$</code> cd pkgname | | 9376 | <code class="prompt">$</code> cd pkgname |
9353 | <code class="prompt">$</code> make CTYPE=Added commit-changes-entry | | 9377 | <code class="prompt">$</code> make CTYPE=Added commit-changes-entry |
9354 | </pre> | | 9378 | </pre> |
9355 | <p>The commit message of the initial import should include part of the | | 9379 | <p>The commit message of the initial import should include part of the |
9356 | <code class="filename">DESCR</code> file, so people reading the mailing lists know | | 9380 | <code class="filename">DESCR</code> file, so people reading the mailing lists know |
9357 | what the package is/does.</p> | | 9381 | what the package is/does.</p> |
9358 | <p>Also mention the new package in | | 9382 | <p>Also mention the new package in |
9359 | <code class="filename">pkgsrc/doc/CHANGES-20xx</code>.</p> | | 9383 | <code class="filename">pkgsrc/doc/CHANGES-20xx</code>.</p> |
9360 | <p>Previously, <span class="quote">“<span class="quote">cvs import</span>”</span> was suggested, but it was | | 9384 | <p>Previously, <span class="quote">“<span class="quote">cvs import</span>”</span> was suggested, but it was |
9361 | much easier to get wrong than <span class="quote">“<span class="quote">cvs add</span>”</span>.</p> | | 9385 | much easier to get wrong than <span class="quote">“<span class="quote">cvs add</span>”</span>.</p> |
9362 | </div> | | 9386 | </div> |
9363 | <div class="sect1"> | | 9387 | <div class="sect1"> |
9364 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9388 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9365 | <a name="updating-package"></a>21.5. Updating a package to a newer version</h2></div></div></div> | | 9389 | <a name="updating-package"></a>21.5. Updating a package to a newer version</h2></div></div></div> |
9366 | <p>Please always put a concise, appropriate and relevant summary of the | | 9390 | <p>Please always put a concise, appropriate and relevant summary of the |
9367 | changes between old and new versions into the commit log when updating | | 9391 | changes between old and new versions into the commit log when updating |
9368 | a package. There are various reasons for this:</p> | | 9392 | a package. There are various reasons for this:</p> |
9369 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 9393 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
9370 | <li class="listitem"><p>A URL is volatile, and can change over time. It may go away completely | | 9394 | <li class="listitem"><p>A URL is volatile, and can change over time. It may go away completely |
9371 | or its information may be overwritten by newer information.</p></li> | | 9395 | or its information may be overwritten by newer information.</p></li> |
9372 | <li class="listitem"><p>Having the change information between old and new versions in our CVS | | 9396 | <li class="listitem"><p>Having the change information between old and new versions in our CVS |
9373 | repository is very useful for people who use either cvs or anoncvs.</p></li> | | 9397 | repository is very useful for people who use either cvs or anoncvs.</p></li> |
9374 | <li class="listitem"><p>Having the change information between old and new versions in our CVS | | 9398 | <li class="listitem"><p>Having the change information between old and new versions in our CVS |
9375 | repository is very useful for people who read the pkgsrc-changes mailing | | 9399 | repository is very useful for people who read the pkgsrc-changes mailing |
9376 | list, so that they can make tactical decisions about when to upgrade | | 9400 | list, so that they can make tactical decisions about when to upgrade |
9377 | the package.</p></li> | | 9401 | the package.</p></li> |
9378 | </ul></div> | | 9402 | </ul></div> |
9379 | <p>Please also recognize that, just because a new version of a package | | 9403 | <p>Please also recognize that, just because a new version of a package |
9380 | has been released, it should not automatically be upgraded in the CVS | | 9404 | has been released, it should not automatically be upgraded in the CVS |
9381 | repository. We prefer to be conservative in the packages that are | | 9405 | repository. We prefer to be conservative in the packages that are |
9382 | included in pkgsrc - development or beta packages are not really the | | 9406 | included in pkgsrc - development or beta packages are not really the |
9383 | best thing for most places in which pkgsrc is used. Please use your | | 9407 | best thing for most places in which pkgsrc is used. Please use your |
9384 | judgement about what should go into pkgsrc, and bear in mind that | | 9408 | judgement about what should go into pkgsrc, and bear in mind that |
9385 | stability is to be preferred above new and possibly untested features.</p> | | 9409 | stability is to be preferred above new and possibly untested features.</p> |
9386 | </div> | | 9410 | </div> |
9387 | <div class="sect1"> | | 9411 | <div class="sect1"> |
9388 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9412 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9389 | <a name="renaming-package"></a>21.6. Renaming a package in pkgsrc</h2></div></div></div> | | 9413 | <a name="renaming-package"></a>21.6. Renaming a package in pkgsrc</h2></div></div></div> |
9390 | <p>Renaming packages is not recommended.</p> | | 9414 | <p>Renaming packages is not recommended.</p> |
9391 | <p>When renaming packages, be sure to fix any references to old name | | 9415 | <p>When renaming packages, be sure to fix any references to old name |
9392 | in other Makefiles, options, buildlink files, etc.</p> | | 9416 | in other Makefiles, options, buildlink files, etc.</p> |
9393 | <p>Also When renaming a package, please define | | 9417 | <p>Also When renaming a package, please define |
9394 | <code class="varname">SUPERSEDES</code> to the package name and dewey version | | 9418 | <code class="varname">SUPERSEDES</code> to the package name and dewey version |
9395 | pattern(s) of the previous package name. | | 9419 | pattern(s) of the previous package name. |
9396 | This may be repeated for multiple renames. | | 9420 | This may be repeated for multiple renames. |
9397 | The new package would be an exact replacement. | | 9421 | The new package would be an exact replacement. |
9398 | </p> | | 9422 | </p> |
9399 | <p>Note that <span class="quote">“<span class="quote">successor</span>”</span> in the | | 9423 | <p>Note that <span class="quote">“<span class="quote">successor</span>”</span> in the |
9400 | CHANGES-<em class="replaceable"><code>YYYY</code></em> file doesn't necessarily | | 9424 | CHANGES-<em class="replaceable"><code>YYYY</code></em> file doesn't necessarily |
9401 | mean that it <span class="emphasis"><em>supersedes</em></span>, as that successor may | | 9425 | mean that it <span class="emphasis"><em>supersedes</em></span>, as that successor may |
9402 | not be an exact replacement but is a suggestion for the replaced | | 9426 | not be an exact replacement but is a suggestion for the replaced |
9403 | functionality.</p> | | 9427 | functionality.</p> |
9404 | </div> | | 9428 | </div> |
9405 | <div class="sect1"> | | 9429 | <div class="sect1"> |
9406 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9430 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9407 | <a name="moving-package"></a>21.7. Moving a package in pkgsrc</h2></div></div></div> | | 9431 | <a name="moving-package"></a>21.7. Moving a package in pkgsrc</h2></div></div></div> |
9408 | <p>It is preferred that packages are not renamed or moved, but if needed | | 9432 | <p>It is preferred that packages are not renamed or moved, but if needed |
9409 | please follow these steps. | | 9433 | please follow these steps. |
9410 | </p> | | 9434 | </p> |
9411 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 9435 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
9412 | <li class="listitem"><p>Make a copy of the directory somewhere else.</p></li> | | 9436 | <li class="listitem"><p>Make a copy of the directory somewhere else.</p></li> |
9413 | <li class="listitem"> | | 9437 | <li class="listitem"> |
9414 | <p>Remove all CVS dirs.</p> | | 9438 | <p>Remove all CVS dirs.</p> |
9415 | <p>Alternatively to the first two steps you can also do:</p> | | 9439 | <p>Alternatively to the first two steps you can also do:</p> |
9416 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cvs -d user@cvs.NetBSD.org:/cvsroot export -D today pkgsrc/category/package</code></strong></pre> | | 9440 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cvs -d user@cvs.NetBSD.org:/cvsroot export -D today pkgsrc/category/package</code></strong></pre> |
9417 | <p>and use that for further work.</p> | | 9441 | <p>and use that for further work.</p> |
9418 | </li> | | 9442 | </li> |
9419 | <li class="listitem"><p>Fix <code class="varname">CATEGORIES</code> and any | | 9443 | <li class="listitem"><p>Fix <code class="varname">CATEGORIES</code> and any |
9420 | <code class="varname">DEPENDS</code> paths that just did <span class="quote">“<span class="quote">../package</span>”</span> | | 9444 | <code class="varname">DEPENDS</code> paths that just did <span class="quote">“<span class="quote">../package</span>”</span> |
9421 | instead of <span class="quote">“<span class="quote">../../category/package</span>”</span>.</p></li> | | 9445 | instead of <span class="quote">“<span class="quote">../../category/package</span>”</span>.</p></li> |
9422 | <li class="listitem"><p>In the modified package's Makefile, consider setting | | 9446 | <li class="listitem"><p>In the modified package's Makefile, consider setting |
9423 | <code class="varname">PREV_PKGPATH</code> to the previous category/package | | 9447 | <code class="varname">PREV_PKGPATH</code> to the previous category/package |
9424 | pathname. The <code class="varname">PREV_PKGPATH</code> can be used by tools | | 9448 | pathname. The <code class="varname">PREV_PKGPATH</code> can be used by tools |
9425 | for doing an update using pkgsrc building; for example, it can | | 9449 | for doing an update using pkgsrc building; for example, it can |
9426 | search the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_summary+5+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_summary</span>(5)</span></a> database for <code class="varname">PREV_PKGPATH</code> | | 9450 | search the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_summary+5+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">pkg_summary</span>(5)</span></a> database for <code class="varname">PREV_PKGPATH</code> |
9427 | (if no <code class="varname">SUPERSEDES</code>) and then use the corresponding | | 9451 | (if no <code class="varname">SUPERSEDES</code>) and then use the corresponding |
9428 | new <code class="varname">PKGPATH</code> for that moved package. Note that | | 9452 | new <code class="varname">PKGPATH</code> for that moved package. Note that |
9429 | it may have multiple matches, so the tool should also check on the | | 9453 | it may have multiple matches, so the tool should also check on the |
9430 | <code class="varname">PKGBASE</code> too. The <code class="varname">PREV_PKGPATH</code> | | 9454 | <code class="varname">PKGBASE</code> too. The <code class="varname">PREV_PKGPATH</code> |
9431 | probably has no value unless <code class="varname">SUPERSEDES</code> is not | | 9455 | probably has no value unless <code class="varname">SUPERSEDES</code> is not |
9432 | set, i.e. <code class="varname">PKGBASE</code> stays the same. </p></li> | | 9456 | set, i.e. <code class="varname">PKGBASE</code> stays the same. </p></li> |
9433 | <li class="listitem"><p><span class="command"><strong>cvs import</strong></span> the modified package in the new | | 9457 | <li class="listitem"><p><span class="command"><strong>cvs import</strong></span> the modified package in the new |
9434 | place.</p></li> | | 9458 | place.</p></li> |
9435 | <li class="listitem"> | | 9459 | <li class="listitem"> |
9436 | <p>Check if any package depends on it: | | 9460 | <p>Check if any package depends on it: |
9437 | </p> | | 9461 | </p> |
9438 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cd /usr/pkgsrc</code></strong> | | 9462 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cd /usr/pkgsrc</code></strong> |
9439 | <code class="prompt">%</code> <strong class="userinput"><code>grep /package */*/Makefile* */*/buildlink*</code></strong></pre> | | 9463 | <code class="prompt">%</code> <strong class="userinput"><code>grep /package */*/Makefile* */*/buildlink*</code></strong></pre> |
9440 | </li> | | 9464 | </li> |
9441 | <li class="listitem"><p>Fix paths in packages from step 5 to point to new location.</p></li> | | 9465 | <li class="listitem"><p>Fix paths in packages from step 5 to point to new location.</p></li> |
9442 | <li class="listitem"><p><span class="command"><strong>cvs rm (-f)</strong></span> the package at the old location.</p></li> | | 9466 | <li class="listitem"><p><span class="command"><strong>cvs rm (-f)</strong></span> the package at the old location.</p></li> |
9443 | <li class="listitem"><p>Remove from <code class="filename">oldcategory/Makefile</code>.</p></li> | | 9467 | <li class="listitem"><p>Remove from <code class="filename">oldcategory/Makefile</code>.</p></li> |
9444 | <li class="listitem"><p>Add to <code class="filename">newcategory/Makefile</code>.</p></li> | | 9468 | <li class="listitem"><p>Add to <code class="filename">newcategory/Makefile</code>.</p></li> |
9445 | <li class="listitem"> | | 9469 | <li class="listitem"> |
9446 | <p>Commit the changed and removed files:</p> | | 9470 | <p>Commit the changed and removed files:</p> |
9447 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cvs commit oldcategory/package oldcategory/Makefile newcategory/Makefile</code></strong></pre> | | 9471 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cvs commit oldcategory/package oldcategory/Makefile newcategory/Makefile</code></strong></pre> |
9448 | <p>(and any packages from step 5, of course).</p> | | 9472 | <p>(and any packages from step 5, of course).</p> |
9449 | </li> | | 9473 | </li> |
9450 | </ol></div> | | 9474 | </ol></div> |
9451 | </div> | | 9475 | </div> |
9452 | </div> | | 9476 | </div> |
9453 | <div class="chapter"> | | 9477 | <div class="chapter"> |
9454 | <div class="titlepage"><div><div><h2 class="title"> | | 9478 | <div class="titlepage"><div><div><h2 class="title"> |
9455 | <a name="devfaq"></a>Chapter 22. Frequently Asked Questions</h2></div></div></div> | | 9479 | <a name="devfaq"></a>Chapter 22. Frequently Asked Questions</h2></div></div></div> |
9456 | <p>This section contains the answers to questions that may | | 9480 | <p>This section contains the answers to questions that may |
9457 | arise when you are writing a package. If you don't find your | | 9481 | arise when you are writing a package. If you don't find your |
9458 | question answered here, first have a look in the other chapters, | | 9482 | question answered here, first have a look in the other chapters, |
9459 | and if you still don't have the answer, ask on the | | 9483 | and if you still don't have the answer, ask on the |
9460 | <code class="literal">pkgsrc-users</code> mailing list.</p> | | 9484 | <code class="literal">pkgsrc-users</code> mailing list.</p> |
9461 | <div class="qandaset"> | | 9485 | <div class="qandaset"> |
9462 | <a name="idm77169424"></a><dl> | | 9486 | <a name="idm77235344"></a><dl> |
9463 | <dt>22.1. <a href="#devfaq.makeflags">What is the difference between | | 9487 | <dt>22.1. <a href="#devfaq.makeflags">What is the difference between |
9464 | MAKEFLAGS, .MAKEFLAGS and | | 9488 | MAKEFLAGS, .MAKEFLAGS and |
9465 | MAKE_FLAGS?</a> | | 9489 | MAKE_FLAGS?</a> |
9466 | </dt> | | 9490 | </dt> |
9467 | <dt>22.2. <a href="#devfaq.make">What is the difference between | | 9491 | <dt>22.2. <a href="#devfaq.make">What is the difference between |
9468 | MAKE, GMAKE and | | 9492 | MAKE, GMAKE and |
9469 | MAKE_PROGRAM?</a> | | 9493 | MAKE_PROGRAM?</a> |
9470 | </dt> | | 9494 | </dt> |
9471 | <dt>22.3. <a href="#devfaq.cc">What is the difference between | | 9495 | <dt>22.3. <a href="#devfaq.cc">What is the difference between |
9472 | CC, PKG_CC and | | 9496 | CC, PKG_CC and |
9473 | PKGSRC_COMPILER?</a> | | 9497 | PKGSRC_COMPILER?</a> |
9474 | </dt> | | 9498 | </dt> |
9475 | <dt>22.4. <a href="#devfaq.bl3flags">What is the difference between | | 9499 | <dt>22.4. <a href="#devfaq.bl3flags">What is the difference between |
9476 | BUILDLINK_LDFLAGS, | | 9500 | BUILDLINK_LDFLAGS, |
9477 | BUILDLINK_LDADD and | | 9501 | BUILDLINK_LDADD and |
9478 | BUILDLINK_LIBS?</a> | | 9502 | BUILDLINK_LIBS?</a> |
9479 | </dt> | | 9503 | </dt> |
9480 | <dt>22.5. <a href="#devfaq.bl3prefix">Why does make show-var | | 9504 | <dt>22.5. <a href="#devfaq.bl3prefix">Why does make show-var |
9481 | VARNAME=BUILDLINK_PREFIX.foo | | 9505 | VARNAME=BUILDLINK_PREFIX.foo |
9482 | say it's empty?</a> | | 9506 | say it's empty?</a> |
9483 | </dt> | | 9507 | </dt> |
9484 | <dt>22.6. <a href="#devfaq.master_sites">What does | | 9508 | <dt>22.6. <a href="#devfaq.master_sites">What does |
9485 | ${MASTER_SITE_SOURCEFORGE:=package/} mean? I | | 9509 | ${MASTER_SITE_SOURCEFORGE:=package/} mean? I |
9486 | don't understand the := inside | | 9510 | don't understand the := inside |
9487 | it.</a> | | 9511 | it.</a> |
9488 | </dt> | | 9512 | </dt> |
9489 | <dt>22.7. <a href="#devfaq.mailinglists">Which mailing lists are there for package | | 9513 | <dt>22.7. <a href="#devfaq.mailinglists">Which mailing lists are there for package |
9490 | developers?</a> | | 9514 | developers?</a> |
9491 | </dt> | | 9515 | </dt> |
9492 | <dt>22.8. <a href="#devfaq.documentation">Where is the pkgsrc | | 9516 | <dt>22.8. <a href="#devfaq.documentation">Where is the pkgsrc |
9493 | documentation?</a> | | 9517 | documentation?</a> |
9494 | </dt> | | 9518 | </dt> |
9495 | <dt>22.9. <a href="#devfaq.too-much-time">I have a little time to kill. What shall I | | 9519 | <dt>22.9. <a href="#devfaq.too-much-time">I have a little time to kill. What shall I |
9496 | do?</a> | | 9520 | do?</a> |
9497 | </dt> | | 9521 | </dt> |
9498 | </dl> | | 9522 | </dl> |
9499 | <table border="0" style="width: 100%;"> | | 9523 | <table border="0" style="width: 100%;"> |
9500 | <colgroup> | | 9524 | <colgroup> |
9501 | <col align="left" width="1%"> | | 9525 | <col align="left" width="1%"> |
9502 | <col> | | 9526 | <col> |
9503 | </colgroup> | | 9527 | </colgroup> |
9504 | <tbody> | | 9528 | <tbody> |
9505 | <tr class="question"> | | 9529 | <tr class="question"> |
9506 | <td align="left" valign="top"> | | 9530 | <td align="left" valign="top"> |
9507 | <a name="devfaq.makeflags"></a><a name="idm77169040"></a><p><b>22.1.</b></p> | | 9531 | <a name="devfaq.makeflags"></a><a name="idm77234960"></a><p><b>22.1.</b></p> |
9508 | </td> | | 9532 | </td> |
9509 | <td align="left" valign="top"><p>What is the difference between | | 9533 | <td align="left" valign="top"><p>What is the difference between |
9510 | <code class="varname">MAKEFLAGS</code>, <code class="varname">.MAKEFLAGS</code> and | | 9534 | <code class="varname">MAKEFLAGS</code>, <code class="varname">.MAKEFLAGS</code> and |
9511 | <code class="varname">MAKE_FLAGS</code>?</p></td> | | 9535 | <code class="varname">MAKE_FLAGS</code>?</p></td> |
9512 | </tr> | | 9536 | </tr> |
9513 | <tr class="answer"> | | 9537 | <tr class="answer"> |
9514 | <td align="left" valign="top"></td> | | 9538 | <td align="left" valign="top"></td> |
9515 | <td align="left" valign="top"><p><code class="varname">MAKEFLAGS</code> are the flags passed | | 9539 | <td align="left" valign="top"><p><code class="varname">MAKEFLAGS</code> are the flags passed |
9516 | to the pkgsrc-internal invocations of <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a>, while | | 9540 | to the pkgsrc-internal invocations of <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a>, while |
9517 | <code class="varname">MAKE_FLAGS</code> are the flags that are passed to | | 9541 | <code class="varname">MAKE_FLAGS</code> are the flags that are passed to |
9518 | the <code class="varname">MAKE_PROGRAM</code> when building the | | 9542 | the <code class="varname">MAKE_PROGRAM</code> when building the |
9519 | package. [FIXME: What is .MAKEFLAGS for?]</p></td> | | 9543 | package. [FIXME: What is .MAKEFLAGS for?]</p></td> |
9520 | </tr> | | 9544 | </tr> |
9521 | <tr class="question"> | | 9545 | <tr class="question"> |
9522 | <td align="left" valign="top"> | | 9546 | <td align="left" valign="top"> |
9523 | <a name="devfaq.make"></a><a name="idm77160848"></a><p><b>22.2.</b></p> | | 9547 | <a name="devfaq.make"></a><a name="idm77230992"></a><p><b>22.2.</b></p> |
9524 | </td> | | 9548 | </td> |
9525 | <td align="left" valign="top"><p>What is the difference between | | 9549 | <td align="left" valign="top"><p>What is the difference between |
9526 | <code class="varname">MAKE</code>, <code class="varname">GMAKE</code> and | | 9550 | <code class="varname">MAKE</code>, <code class="varname">GMAKE</code> and |
9527 | <code class="varname">MAKE_PROGRAM</code>?</p></td> | | 9551 | <code class="varname">MAKE_PROGRAM</code>?</p></td> |
9528 | </tr> | | 9552 | </tr> |
9529 | <tr class="answer"> | | 9553 | <tr class="answer"> |
9530 | <td align="left" valign="top"></td> | | 9554 | <td align="left" valign="top"></td> |
9531 | <td align="left" valign="top"><p><code class="varname">MAKE</code> is the path to the | | 9555 | <td align="left" valign="top"><p><code class="varname">MAKE</code> is the path to the |
9532 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> program that is used in the pkgsrc | | 9556 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> program that is used in the pkgsrc |
9533 | infrastructure. <code class="varname">GMAKE</code> is the path to GNU | | 9557 | infrastructure. <code class="varname">GMAKE</code> is the path to GNU |
9534 | Make, but you need to say <code class="varname">USE_TOOLS+=gmake</code> to | | 9558 | Make, but you need to say <code class="varname">USE_TOOLS+=gmake</code> to |
9535 | use that. <code class="varname">MAKE_PROGRAM</code> is the path to the | | 9559 | use that. <code class="varname">MAKE_PROGRAM</code> is the path to the |
9536 | Make program that is used for building the | | 9560 | Make program that is used for building the |
9537 | package.</p></td> | | 9561 | package.</p></td> |
9538 | </tr> | | 9562 | </tr> |
9539 | <tr class="question"> | | 9563 | <tr class="question"> |
9540 | <td align="left" valign="top"> | | 9564 | <td align="left" valign="top"> |
9541 | <a name="devfaq.cc"></a><a name="idm77156496"></a><p><b>22.3.</b></p> | | 9565 | <a name="devfaq.cc"></a><a name="idm77226512"></a><p><b>22.3.</b></p> |
9542 | </td> | | 9566 | </td> |
9543 | <td align="left" valign="top"><p>What is the difference between | | 9567 | <td align="left" valign="top"><p>What is the difference between |
9544 | <code class="varname">CC</code>, <code class="varname">PKG_CC</code> and | | 9568 | <code class="varname">CC</code>, <code class="varname">PKG_CC</code> and |
9545 | <code class="varname">PKGSRC_COMPILER</code>?</p></td> | | 9569 | <code class="varname">PKGSRC_COMPILER</code>?</p></td> |
9546 | </tr> | | 9570 | </tr> |
9547 | <tr class="answer"> | | 9571 | <tr class="answer"> |
9548 | <td align="left" valign="top"></td> | | 9572 | <td align="left" valign="top"></td> |
9549 | <td align="left" valign="top"><p><code class="varname">CC</code> is the path to the real C | | 9573 | <td align="left" valign="top"><p><code class="varname">CC</code> is the path to the real C |
9550 | compiler, which can be configured by the pkgsrc user. | | 9574 | compiler, which can be configured by the pkgsrc user. |
9551 | <code class="varname">PKG_CC</code> is the path to the compiler wrapper. | | 9575 | <code class="varname">PKG_CC</code> is the path to the compiler wrapper. |
9552 | <code class="varname">PKGSRC_COMPILER</code> is <span class="emphasis"><em>not</em></span> a | | 9576 | <code class="varname">PKGSRC_COMPILER</code> is <span class="emphasis"><em>not</em></span> a |
9553 | path to a compiler, but the type of compiler that should be | | 9577 | path to a compiler, but the type of compiler that should be |
9554 | used. See <code class="filename">mk/compiler.mk</code> for more | | 9578 | used. See <code class="filename">mk/compiler.mk</code> for more |
9555 | information about the latter variable.</p></td> | | 9579 | information about the latter variable.</p></td> |
9556 | </tr> | | 9580 | </tr> |
9557 | <tr class="question"> | | 9581 | <tr class="question"> |
9558 | <td align="left" valign="top"> | | 9582 | <td align="left" valign="top"> |
9559 | <a name="devfaq.bl3flags"></a><a name="idm77152272"></a><p><b>22.4.</b></p> | | 9583 | <a name="devfaq.bl3flags"></a><a name="idm77222416"></a><p><b>22.4.</b></p> |
9560 | </td> | | 9584 | </td> |
9561 | <td align="left" valign="top"><p>What is the difference between | | 9585 | <td align="left" valign="top"><p>What is the difference between |
9562 | <code class="varname">BUILDLINK_LDFLAGS</code>, | | 9586 | <code class="varname">BUILDLINK_LDFLAGS</code>, |
9563 | <code class="varname">BUILDLINK_LDADD</code> and | | 9587 | <code class="varname">BUILDLINK_LDADD</code> and |
9564 | <code class="varname">BUILDLINK_LIBS</code>?</p></td> | | 9588 | <code class="varname">BUILDLINK_LIBS</code>?</p></td> |
9565 | </tr> | | 9589 | </tr> |
9566 | <tr class="answer"> | | 9590 | <tr class="answer"> |
9567 | <td align="left" valign="top"></td> | | 9591 | <td align="left" valign="top"></td> |
9568 | <td align="left" valign="top"><p>[FIXME]</p></td> | | 9592 | <td align="left" valign="top"><p>[FIXME]</p></td> |
9569 | </tr> | | 9593 | </tr> |
9570 | <tr class="question"> | | 9594 | <tr class="question"> |
9571 | <td align="left" valign="top"> | | 9595 | <td align="left" valign="top"> |
9572 | <a name="devfaq.bl3prefix"></a><a name="idm77150096"></a><p><b>22.5.</b></p> | | 9596 | <a name="devfaq.bl3prefix"></a><a name="idm77220240"></a><p><b>22.5.</b></p> |
9573 | </td> | | 9597 | </td> |
9574 | <td align="left" valign="top"><p>Why does <span class="command"><strong>make show-var | | 9598 | <td align="left" valign="top"><p>Why does <span class="command"><strong>make show-var |
9575 | VARNAME=BUILDLINK_PREFIX.<em class="replaceable"><code>foo</code></em></strong></span> | | 9599 | VARNAME=BUILDLINK_PREFIX.<em class="replaceable"><code>foo</code></em></strong></span> |
9576 | say it's empty?</p></td> | | 9600 | say it's empty?</p></td> |
9577 | </tr> | | 9601 | </tr> |
9578 | <tr class="answer"> | | 9602 | <tr class="answer"> |
9579 | <td align="left" valign="top"></td> | | 9603 | <td align="left" valign="top"></td> |
9580 | <td align="left" valign="top"><p>For optimization reasons, some variables are only | | 9604 | <td align="left" valign="top"><p>For optimization reasons, some variables are only |
9581 | available in the <span class="quote">“<span class="quote">wrapper</span>”</span> phase and later. To | | 9605 | available in the <span class="quote">“<span class="quote">wrapper</span>”</span> phase and later. To |
9582 | <span class="quote">“<span class="quote">simulate</span>”</span> the wrapper phase, append | | 9606 | <span class="quote">“<span class="quote">simulate</span>”</span> the wrapper phase, append |
9583 | <span class="command"><strong>PKG_PHASE=wrapper</strong></span> to the above | | 9607 | <span class="command"><strong>PKG_PHASE=wrapper</strong></span> to the above |
9584 | command.</p></td> | | 9608 | command.</p></td> |
9585 | </tr> | | 9609 | </tr> |
9586 | <tr class="question"> | | 9610 | <tr class="question"> |
9587 | <td align="left" valign="top"> | | 9611 | <td align="left" valign="top"> |
9588 | <a name="devfaq.master_sites"></a><a name="idm77147024"></a><p><b>22.6.</b></p> | | 9612 | <a name="devfaq.master_sites"></a><a name="idm77208848"></a><p><b>22.6.</b></p> |
9589 | </td> | | 9613 | </td> |
9590 | <td align="left" valign="top"><p>What does | | 9614 | <td align="left" valign="top"><p>What does |
9591 | <code class="literal">${MASTER_SITE_SOURCEFORGE:=package/}</code> mean? I | | 9615 | <code class="literal">${MASTER_SITE_SOURCEFORGE:=package/}</code> mean? I |
9592 | don't understand the <code class="literal">:=</code> inside | | 9616 | don't understand the <code class="literal">:=</code> inside |
9593 | it.</p></td> | | 9617 | it.</p></td> |
9594 | </tr> | | 9618 | </tr> |
9595 | <tr class="answer"> | | 9619 | <tr class="answer"> |
9596 | <td align="left" valign="top"></td> | | 9620 | <td align="left" valign="top"></td> |
9597 | <td align="left" valign="top"><p>The <code class="literal">:=</code> is not really an | | 9621 | <td align="left" valign="top"><p>The <code class="literal">:=</code> is not really an |
9598 | assignment operator, like you might expect at first sight. | | 9622 | assignment operator, like you might expect at first sight. |
9599 | Instead, it is a degenerate form of | | 9623 | Instead, it is a degenerate form of |
9600 | <code class="literal">${LIST:<em class="replaceable"><code>old_string</code></em>=<em class="replaceable"><code>new_string</code></em>}</code>, | | 9624 | <code class="literal">${LIST:<em class="replaceable"><code>old_string</code></em>=<em class="replaceable"><code>new_string</code></em>}</code>, |
9601 | which is documented in the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> man page and which you | | 9625 | which is documented in the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> man page and which you |
9602 | may have seen as in <code class="literal">${SRCS:.c=.o}</code>. In the | | 9626 | may have seen as in <code class="literal">${SRCS:.c=.o}</code>. In the |
9603 | case of <code class="varname">MASTER_SITE_*</code>, | | 9627 | case of <code class="varname">MASTER_SITE_*</code>, |
9604 | <em class="replaceable"><code>old_string</code></em> is the empty string and | | 9628 | <em class="replaceable"><code>old_string</code></em> is the empty string and |
9605 | <em class="replaceable"><code>new_string</code></em> is | | 9629 | <em class="replaceable"><code>new_string</code></em> is |
9606 | <code class="literal">package/</code>. That's where the | | 9630 | <code class="literal">package/</code>. That's where the |
9607 | <code class="literal">:</code> and the <code class="literal">=</code> fall | | 9631 | <code class="literal">:</code> and the <code class="literal">=</code> fall |
9608 | together.</p></td> | | 9632 | together.</p></td> |
9609 | </tr> | | 9633 | </tr> |
9610 | <tr class="question"> | | 9634 | <tr class="question"> |
9611 | <td align="left" valign="top"> | | 9635 | <td align="left" valign="top"> |
9612 | <a name="devfaq.mailinglists"></a><a name="idm77130768"></a><p><b>22.7.</b></p> | | 9636 | <a name="devfaq.mailinglists"></a><a name="idm77200784"></a><p><b>22.7.</b></p> |
9613 | </td> | | 9637 | </td> |
9614 | <td align="left" valign="top"><p>Which mailing lists are there for package | | 9638 | <td align="left" valign="top"><p>Which mailing lists are there for package |
9615 | developers?</p></td> | | 9639 | developers?</p></td> |
9616 | </tr> | | 9640 | </tr> |
9617 | <tr class="answer"> | | 9641 | <tr class="answer"> |
9618 | <td align="left" valign="top"></td> | | 9642 | <td align="left" valign="top"></td> |
9619 | <td align="left" valign="top"><div class="variablelist"><dl class="variablelist"> | | 9643 | <td align="left" valign="top"><div class="variablelist"><dl class="variablelist"> |
9620 | <dt><span class="term"><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#tech-pkg" target="_top">tech-pkg</a></span></dt> | | 9644 | <dt><span class="term"><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#tech-pkg" target="_top">tech-pkg</a></span></dt> |
9621 | <dd><p>This is a list for technical discussions related | | 9645 | <dd><p>This is a list for technical discussions related |
9622 | to pkgsrc development, e.g. soliciting feedback for changes to | | 9646 | to pkgsrc development, e.g. soliciting feedback for changes to |
9623 | pkgsrc infrastructure, proposed new features, questions related | | 9647 | pkgsrc infrastructure, proposed new features, questions related |
9624 | to porting pkgsrc to a new platform, advice for maintaining a | | 9648 | to porting pkgsrc to a new platform, advice for maintaining a |
9625 | package, patches that affect many packages, help requests moved | | 9649 | package, patches that affect many packages, help requests moved |
9626 | from pkgsrc-users when an infrastructure bug is found, | | 9650 | from pkgsrc-users when an infrastructure bug is found, |
9627 | etc.</p></dd> | | 9651 | etc.</p></dd> |
9628 | <dt><span class="term"><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-bugs" target="_top">pkgsrc-bugs</a></span></dt> | | 9652 | <dt><span class="term"><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-bugs" target="_top">pkgsrc-bugs</a></span></dt> |
9629 | <dd><p>All bug reports in category "pkg" sent with | | 9653 | <dd><p>All bug reports in category "pkg" sent with |
9630 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?send-pr+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">send-pr</span>(1)</span></a> appear here. Please do not report your bugs here | | 9654 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?send-pr+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">send-pr</span>(1)</span></a> appear here. Please do not report your bugs here |
9631 | directly; use one of the other mailing | | 9655 | directly; use one of the other mailing |
9632 | lists.</p></dd> | | 9656 | lists.</p></dd> |
9633 | </dl></div></td> | | 9657 | </dl></div></td> |
9634 | </tr> | | 9658 | </tr> |
9635 | <tr class="question"> | | 9659 | <tr class="question"> |
9636 | <td align="left" valign="top"> | | 9660 | <td align="left" valign="top"> |
9637 | <a name="devfaq.documentation"></a><a name="idm77126928"></a><p><b>22.8.</b></p> | | 9661 | <a name="devfaq.documentation"></a><a name="idm77197072"></a><p><b>22.8.</b></p> |
9638 | </td> | | 9662 | </td> |
9639 | <td align="left" valign="top"><p>Where is the pkgsrc | | 9663 | <td align="left" valign="top"><p>Where is the pkgsrc |
9640 | documentation?</p></td> | | 9664 | documentation?</p></td> |
9641 | </tr> | | 9665 | </tr> |
9642 | <tr class="answer"> | | 9666 | <tr class="answer"> |
9643 | <td align="left" valign="top"></td> | | 9667 | <td align="left" valign="top"></td> |
9644 | <td align="left" valign="top"> | | 9668 | <td align="left" valign="top"> |
9645 | <p>There are many places where you can find | | 9669 | <p>There are many places where you can find |
9646 | documentation about pkgsrc:</p> | | 9670 | documentation about pkgsrc:</p> |
9647 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 9671 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
9648 | <li class="listitem"><p>The pkgsrc guide (this document) is a collection | | 9672 | <li class="listitem"><p>The pkgsrc guide (this document) is a collection |
9649 | of chapters that explain large parts of pkgsrc, but some | | 9673 | of chapters that explain large parts of pkgsrc, but some |
9650 | chapters tend to be outdated. Which ones they are is hard to | | 9674 | chapters tend to be outdated. Which ones they are is hard to |
9651 | say.</p></li> | | 9675 | say.</p></li> |
9652 | <li class="listitem"><p>On the mailing list archives (see <a class="ulink" href="http://mail-index.NetBSD.org/" target="_top">http://mail-index.NetBSD.org/</a>), you can find discussions | | 9676 | <li class="listitem"><p>On the mailing list archives (see <a class="ulink" href="http://mail-index.NetBSD.org/" target="_top">http://mail-index.NetBSD.org/</a>), you can find discussions |
9653 | about certain features, announcements of new parts of the pkgsrc | | 9677 | about certain features, announcements of new parts of the pkgsrc |
9654 | infrastructure and sometimes even announcements that a certain | | 9678 | infrastructure and sometimes even announcements that a certain |
9655 | feature has been marked as obsolete. The benefit here is that | | 9679 | feature has been marked as obsolete. The benefit here is that |
9656 | each message has a date appended to it.</p></li> | | 9680 | each message has a date appended to it.</p></li> |
9657 | <li class="listitem"><p>Many of the files in the | | 9681 | <li class="listitem"><p>Many of the files in the |
9658 | <code class="filename">mk/</code> directory start with a comment that | | 9682 | <code class="filename">mk/</code> directory start with a comment that |
9659 | describes the purpose of the file and how it can be used by the | | 9683 | describes the purpose of the file and how it can be used by the |
9660 | pkgsrc user and package authors. An easy way to find this | | 9684 | pkgsrc user and package authors. An easy way to find this |
9661 | documentation is to run <span class="command"><strong>bmake | | 9685 | documentation is to run <span class="command"><strong>bmake |
9662 | help</strong></span>.</p></li> | | 9686 | help</strong></span>.</p></li> |
9663 | <li class="listitem"><p>The CVS log messages are a rich source of | | 9687 | <li class="listitem"><p>The CVS log messages are a rich source of |
9664 | information, but they tend to be highly abbreviated, especially | | 9688 | information, but they tend to be highly abbreviated, especially |
9665 | for actions that occur often. Some contain a detailed | | 9689 | for actions that occur often. Some contain a detailed |
9666 | description of what has changed, but they are geared towards the | | 9690 | description of what has changed, but they are geared towards the |
9667 | other pkgsrc developers, not towards an average pkgsrc user. | | 9691 | other pkgsrc developers, not towards an average pkgsrc user. |
9668 | They also only document <span class="emphasis"><em>changes</em></span>, so if you | | 9692 | They also only document <span class="emphasis"><em>changes</em></span>, so if you |
9669 | don't know what has been before, these messages may not be worth | | 9693 | don't know what has been before, these messages may not be worth |
9670 | too much to you.</p></li> | | 9694 | too much to you.</p></li> |
9671 | <li class="listitem"><p>Some parts of pkgsrc are only <span class="quote">“<span class="quote">implicitly | | 9695 | <li class="listitem"><p>Some parts of pkgsrc are only <span class="quote">“<span class="quote">implicitly |
9672 | documented</span>”</span>, that is the documentation exists only in the | | 9696 | documented</span>”</span>, that is the documentation exists only in the |
9673 | mind of the developer who wrote the code. To get this | | 9697 | mind of the developer who wrote the code. To get this |
9674 | information, use the <span class="command"><strong>cvs annotate</strong></span> command | | 9698 | information, use the <span class="command"><strong>cvs annotate</strong></span> command |
9675 | to see who has written it and ask on the | | 9699 | to see who has written it and ask on the |
9676 | <code class="literal">tech-pkg</code> mailing list, so that others can | | 9700 | <code class="literal">tech-pkg</code> mailing list, so that others can |
9677 | find your questions later (see above). To be sure that the | | 9701 | find your questions later (see above). To be sure that the |
9678 | developer in charge reads the mail, you may CC him or | | 9702 | developer in charge reads the mail, you may CC him or |
9679 | her.</p></li> | | 9703 | her.</p></li> |
9680 | </ul></div> | | 9704 | </ul></div> |
9681 | </td> | | 9705 | </td> |
9682 | </tr> | | 9706 | </tr> |
9683 | <tr class="question"> | | 9707 | <tr class="question"> |
9684 | <td align="left" valign="top"> | | 9708 | <td align="left" valign="top"> |
9685 | <a name="devfaq.too-much-time"></a><a name="idm77120400"></a><p><b>22.9.</b></p> | | 9709 | <a name="devfaq.too-much-time"></a><a name="idm77190544"></a><p><b>22.9.</b></p> |
9686 | </td> | | 9710 | </td> |
9687 | <td align="left" valign="top"><p>I have a little time to kill. What shall I | | 9711 | <td align="left" valign="top"><p>I have a little time to kill. What shall I |
9688 | do?</p></td> | | 9712 | do?</p></td> |
9689 | </tr> | | 9713 | </tr> |
9690 | <tr class="answer"> | | 9714 | <tr class="answer"> |
9691 | <td align="left" valign="top"></td> | | 9715 | <td align="left" valign="top"></td> |
9692 | <td align="left" valign="top"> | | 9716 | <td align="left" valign="top"> |
9693 | <p>This is not really an FAQ yet, but here's the answer | | 9717 | <p>This is not really an FAQ yet, but here's the answer |
9694 | anyway.</p> | | 9718 | anyway.</p> |
9695 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 9719 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
9696 | <li class="listitem"><p>Run <span class="command"><strong>pkg_chk -N</strong></span> (from the | | 9720 | <li class="listitem"><p>Run <span class="command"><strong>pkg_chk -N</strong></span> (from the |
9697 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_chk/README.html" target="_top"><code class="filename">pkgtools/pkg_chk</code></a> package). It | | 9721 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_chk/README.html" target="_top"><code class="filename">pkgtools/pkg_chk</code></a> package). It |
9698 | will tell you about newer versions of installed packages that are | | 9722 | will tell you about newer versions of installed packages that are |
9699 | available, but not yet updated in pkgsrc.</p></li> | | 9723 | available, but not yet updated in pkgsrc.</p></li> |
9700 | <li class="listitem"><p>Browse <code class="filename">pkgsrc/doc/TODO</code> | | 9724 | <li class="listitem"><p>Browse <code class="filename">pkgsrc/doc/TODO</code> |
9701 | — it contains a list of suggested new packages and a list of | | 9725 | — it contains a list of suggested new packages and a list of |
9702 | cleanups and enhancements for pkgsrc that would be nice to | | 9726 | cleanups and enhancements for pkgsrc that would be nice to |
9703 | have.</p></li> | | 9727 | have.</p></li> |
9704 | <li class="listitem"><p>Review packages for which review was requested on | | 9728 | <li class="listitem"><p>Review packages for which review was requested on |
9705 | the <a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#tech-pkg" target="_top">tech-pkg</a> | | 9729 | the <a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#tech-pkg" target="_top">tech-pkg</a> |
9706 | mailing list.</p></li> | | 9730 | mailing list.</p></li> |
9707 | </ul></div> | | 9731 | </ul></div> |
9708 | </td> | | 9732 | </td> |
9709 | </tr> | | 9733 | </tr> |
9710 | </tbody> | | 9734 | </tbody> |
9711 | </table> | | 9735 | </table> |
9712 | </div> | | 9736 | </div> |
9713 | </div> | | 9737 | </div> |
9714 | <div class="chapter"> | | 9738 | <div class="chapter"> |
9715 | <div class="titlepage"><div><div><h2 class="title"> | | 9739 | <div class="titlepage"><div><div><h2 class="title"> |
9716 | <a name="gnome"></a>Chapter 23. GNOME packaging and porting</h2></div></div></div> | | 9740 | <a name="gnome"></a>Chapter 23. GNOME packaging and porting</h2></div></div></div> |
9717 | <div class="toc"> | | 9741 | <div class="toc"> |
9718 | <p><b>Table of Contents</b></p> | | 9742 | <p><b>Table of Contents</b></p> |
9719 | <dl> | | 9743 | <dl> |
9720 | <dt><span class="sect1"><a href="#meta-packages">23.1. Meta packages</a></span></dt> | | 9744 | <dt><span class="sect1"><a href="#meta-packages">23.1. Meta packages</a></span></dt> |
9721 | <dt><span class="sect1"><a href="#new-package">23.2. Packaging a GNOME application</a></span></dt> | | 9745 | <dt><span class="sect1"><a href="#new-package">23.2. Packaging a GNOME application</a></span></dt> |
9722 | <dt><span class="sect1"><a href="#full-update">23.3. Updating GNOME to a newer version</a></span></dt> | | 9746 | <dt><span class="sect1"><a href="#full-update">23.3. Updating GNOME to a newer version</a></span></dt> |
9723 | <dt><span class="sect1"><a href="#patching">23.4. Patching guidelines</a></span></dt> | | 9747 | <dt><span class="sect1"><a href="#patching">23.4. Patching guidelines</a></span></dt> |
9724 | </dl> | | 9748 | </dl> |
9725 | </div> | | 9749 | </div> |
9726 | <p>Quoting <a class="ulink" href="http://www.gnome.org/" target="_top">GNOME's web | | 9750 | <p>Quoting <a class="ulink" href="http://www.gnome.org/" target="_top">GNOME's web |
9727 | site</a>:</p> | | 9751 | site</a>:</p> |
9728 | <div class="blockquote"><blockquote class="blockquote"><p>The GNOME project provides two things: The GNOME desktop | | 9752 | <div class="blockquote"><blockquote class="blockquote"><p>The GNOME project provides two things: The GNOME desktop |
9729 | environment, an intuitive and attractive desktop for users, and the | | 9753 | environment, an intuitive and attractive desktop for users, and the |
9730 | GNOME development platform, an extensive framework for building | | 9754 | GNOME development platform, an extensive framework for building |
9731 | applications that integrate into the rest of the desktop.</p></blockquote></div> | | 9755 | applications that integrate into the rest of the desktop.</p></blockquote></div> |
9732 | <p>pkgsrc provides a seamless way to automatically build and install | | 9756 | <p>pkgsrc provides a seamless way to automatically build and install |
9733 | a complete GNOME environment <span class="emphasis"><em>under many different | | 9757 | a complete GNOME environment <span class="emphasis"><em>under many different |
9734 | platforms</em></span>. We can say with confidence that pkgsrc is one of | | 9758 | platforms</em></span>. We can say with confidence that pkgsrc is one of |
9735 | the most advanced build and packaging systems for GNOME due to its | | 9759 | the most advanced build and packaging systems for GNOME due to its |
9736 | included technologies buildlink3, the wrappers and tools framework and | | 9760 | included technologies buildlink3, the wrappers and tools framework and |
9737 | automatic configuration file management. Lots of efforts are put into | | 9761 | automatic configuration file management. Lots of efforts are put into |
9738 | achieving a completely clean deinstallation of installed software | | 9762 | achieving a completely clean deinstallation of installed software |
9739 | components.</p> | | 9763 | components.</p> |
9740 | <p>Given that pkgsrc is <a class="ulink" href="http://www.NetBSD.org/" target="_top">NetBSD</a>'s official packaging system, | | 9764 | <p>Given that pkgsrc is <a class="ulink" href="http://www.NetBSD.org/" target="_top">NetBSD</a>'s official packaging system, |
9741 | the above also means that great efforts are put into making GNOME work | | 9765 | the above also means that great efforts are put into making GNOME work |
9742 | under this operating system. Recently, <a class="ulink" href="http://www.dragonflybsd.org/" target="_top">DragonFly BSD</a> also adopted | | 9766 | under this operating system. Recently, <a class="ulink" href="http://www.dragonflybsd.org/" target="_top">DragonFly BSD</a> also adopted |
9743 | pkgsrc as its preferred packaging system, contributing lots of | | 9767 | pkgsrc as its preferred packaging system, contributing lots of |
9744 | portability fixes to make GNOME build and install under it.</p> | | 9768 | portability fixes to make GNOME build and install under it.</p> |
9745 | <p>This chapter is aimed at pkgsrc developers and other people | | 9769 | <p>This chapter is aimed at pkgsrc developers and other people |
9746 | interested in helping our GNOME porting and packaging efforts. It | | 9770 | interested in helping our GNOME porting and packaging efforts. It |
9747 | provides instructions on how to manage the existing packages and some | | 9771 | provides instructions on how to manage the existing packages and some |
9748 | important information regarding their internals.</p> | | 9772 | important information regarding their internals.</p> |
9749 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 9773 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
9750 | <h3 class="title">We need your help!</h3> | | 9774 | <h3 class="title">We need your help!</h3> |
9751 | <p>Should you have some spare cycles to devote to NetBSD, pkgsrc | | 9775 | <p>Should you have some spare cycles to devote to NetBSD, pkgsrc |
9752 | and GNOME and are willing to learn new exciting stuff, please jump | | 9776 | and GNOME and are willing to learn new exciting stuff, please jump |
9753 | straight to the <a class="ulink" href="http://www.NetBSD.org/contrib/projects.html#gnome" target="_top">pending | | 9777 | straight to the <a class="ulink" href="http://www.NetBSD.org/contrib/projects.html#gnome" target="_top">pending |
9754 | work</a> list! There is still a long way to go to get a | | 9778 | work</a> list! There is still a long way to go to get a |
9755 | fully-functional GNOME desktop under NetBSD and we need your help to | | 9779 | fully-functional GNOME desktop under NetBSD and we need your help to |
9756 | achieve it!</p> | | 9780 | achieve it!</p> |
9757 | </div> | | 9781 | </div> |
9758 | <div class="sect1"> | | 9782 | <div class="sect1"> |
9759 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9783 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9760 | <a name="meta-packages"></a>23.1. Meta packages</h2></div></div></div> | | 9784 | <a name="meta-packages"></a>23.1. Meta packages</h2></div></div></div> |
9761 | <p>pkgsrc includes three GNOME-related meta packages:</p> | | 9785 | <p>pkgsrc includes three GNOME-related meta packages:</p> |
9762 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 9786 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
9763 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome-base/README.html" target="_top"><code class="filename">meta-pkgs/gnome-base</code></a>: Provides | | 9787 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome-base/README.html" target="_top"><code class="filename">meta-pkgs/gnome-base</code></a>: Provides |
9764 | the core GNOME desktop environment. It only includes the necessary | | 9788 | the core GNOME desktop environment. It only includes the necessary |
9765 | bits to get it to boot correctly, although it may lack important | | 9789 | bits to get it to boot correctly, although it may lack important |
9766 | functionality for daily operation. The idea behind this package is | | 9790 | functionality for daily operation. The idea behind this package is |
9767 | to let end users build their own configurations on top of this one, | | 9791 | to let end users build their own configurations on top of this one, |
9768 | first installing this meta package to achieve a functional setup and | | 9792 | first installing this meta package to achieve a functional setup and |
9769 | then adding individual applications.</p></li> | | 9793 | then adding individual applications.</p></li> |
9770 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome/README.html" target="_top"><code class="filename">meta-pkgs/gnome</code></a>: Provides a | | 9794 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome/README.html" target="_top"><code class="filename">meta-pkgs/gnome</code></a>: Provides a |
9771 | complete installation of the GNOME platform and desktop as defined | | 9795 | complete installation of the GNOME platform and desktop as defined |
9772 | by the GNOME project; this is based on the components distributed in | | 9796 | by the GNOME project; this is based on the components distributed in |
9773 | the <code class="filename">platform/x.y/x.y.z/sources</code> and | | 9797 | the <code class="filename">platform/x.y/x.y.z/sources</code> and |
9774 | <code class="filename">desktop/x.y/x.y.z/sources</code> directories of the | | 9798 | <code class="filename">desktop/x.y/x.y.z/sources</code> directories of the |
9775 | official FTP server. Developer-only tools found in those | | 9799 | official FTP server. Developer-only tools found in those |
9776 | directories are not installed unless required by some other | | 9800 | directories are not installed unless required by some other |
9777 | component to work properly. Similarly, packages from the bindings | | 9801 | component to work properly. Similarly, packages from the bindings |
9778 | set (<code class="filename">bindings/x.y/x.y.z/sources</code>) are not pulled | | 9802 | set (<code class="filename">bindings/x.y/x.y.z/sources</code>) are not pulled |
9779 | in unless required as a dependency for an end-user component. This | | 9803 | in unless required as a dependency for an end-user component. This |
9780 | package "extends" <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome-base/README.html" target="_top"><code class="filename">meta-pkgs/gnome-base</code></a>.</p></li> | | 9804 | package "extends" <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome-base/README.html" target="_top"><code class="filename">meta-pkgs/gnome-base</code></a>.</p></li> |
9781 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome-devel/README.html" target="_top"><code class="filename">meta-pkgs/gnome-devel</code></a>: | | 9805 | <li class="listitem"><p><a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome-devel/README.html" target="_top"><code class="filename">meta-pkgs/gnome-devel</code></a>: |
9782 | Installs all the tools required to build a GNOME component when | | 9806 | Installs all the tools required to build a GNOME component when |
9783 | fetched from the CVS repository. These are required to let the | | 9807 | fetched from the CVS repository. These are required to let the |
9784 | <span class="command"><strong>autogen.sh</strong></span> scripts work appropriately.</p></li> | | 9808 | <span class="command"><strong>autogen.sh</strong></span> scripts work appropriately.</p></li> |
9785 | </ul></div> | | 9809 | </ul></div> |
9786 | <p>In all these packages, the <code class="varname">DEPENDS</code> lines are | | 9810 | <p>In all these packages, the <code class="varname">DEPENDS</code> lines are |
9787 | sorted in a way that eases updates: a package may depend on other | | 9811 | sorted in a way that eases updates: a package may depend on other |
9788 | packages listed before it but not on any listed after it. It is very | | 9812 | packages listed before it but not on any listed after it. It is very |
9789 | important to keep this order to ease updates so... <span class="emphasis"><em>do not | | 9813 | important to keep this order to ease updates so... <span class="emphasis"><em>do not |
9790 | change it to alphabetical sorting!</em></span></p> | | 9814 | change it to alphabetical sorting!</em></span></p> |
9791 | </div> | | 9815 | </div> |
9792 | <div class="sect1"> | | 9816 | <div class="sect1"> |
9793 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9817 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9794 | <a name="new-package"></a>23.2. Packaging a GNOME application</h2></div></div></div> | | 9818 | <a name="new-package"></a>23.2. Packaging a GNOME application</h2></div></div></div> |
9795 | <p>Almost all GNOME applications are written in C and use a common | | 9819 | <p>Almost all GNOME applications are written in C and use a common |
9796 | set of tools as their build system. Things get different with the new | | 9820 | set of tools as their build system. Things get different with the new |
9797 | bindings to other languages (such as Python), but the following will | | 9821 | bindings to other languages (such as Python), but the following will |
9798 | give you a general idea on the minimum required tools:</p> | | 9822 | give you a general idea on the minimum required tools:</p> |
9799 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 9823 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
9800 | <li class="listitem"> | | 9824 | <li class="listitem"> |
9801 | <p>Almost all GNOME applications use the GNU Autotools as their | | 9825 | <p>Almost all GNOME applications use the GNU Autotools as their |
9802 | build system. As a general rule you will need to tell this to your | | 9826 | build system. As a general rule you will need to tell this to your |
9803 | package:</p> | | 9827 | package:</p> |
9804 | <pre class="programlisting"> | | 9828 | <pre class="programlisting"> |
9805 | GNU_CONFIGURE=yes | | 9829 | GNU_CONFIGURE=yes |
9806 | USE_LIBTOOL=yes | | 9830 | USE_LIBTOOL=yes |
9807 | USE_TOOLS+=gmake | | 9831 | USE_TOOLS+=gmake |
9808 | </pre> | | 9832 | </pre> |
9809 | </li> | | 9833 | </li> |
9810 | <li class="listitem"> | | 9834 | <li class="listitem"> |
9811 | <p>If the package uses pkg-config to detect dependencies, add this | | 9835 | <p>If the package uses pkg-config to detect dependencies, add this |
9812 | tool to the list of required utilities:</p> | | 9836 | tool to the list of required utilities:</p> |
9813 | <pre class="programlisting">USE_TOOLS+=pkg-config</pre> | | 9837 | <pre class="programlisting">USE_TOOLS+=pkg-config</pre> |
9814 | <p>Also use <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/verifypc/README.html" target="_top"><code class="filename">pkgtools/verifypc</code></a> at | | 9838 | <p>Also use <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/verifypc/README.html" target="_top"><code class="filename">pkgtools/verifypc</code></a> at |
9815 | the end of the build process to ensure that you did not miss to | | 9839 | the end of the build process to ensure that you did not miss to |
9816 | specify any dependency in your package and that the version | | 9840 | specify any dependency in your package and that the version |
9817 | requirements are all correct.</p> | | 9841 | requirements are all correct.</p> |
9818 | </li> | | 9842 | </li> |
9819 | <li class="listitem"><p>If the package uses intltool, be sure to add | | 9843 | <li class="listitem"><p>If the package uses intltool, be sure to add |
9820 | <code class="literal">intltool</code> to the <code class="varname">USE_TOOLS</code> | | 9844 | <code class="literal">intltool</code> to the <code class="varname">USE_TOOLS</code> |
9821 | to handle dependencies and to force the package to use the latest | | 9845 | to handle dependencies and to force the package to use the latest |
9822 | available version.</p></li> | | 9846 | available version.</p></li> |
9823 | <li class="listitem"> | | 9847 | <li class="listitem"> |
9824 | <p>If the package uses gtk-doc (a documentation generation | | 9848 | <p>If the package uses gtk-doc (a documentation generation |
9825 | utility), do <span class="emphasis"><em>not</em></span> add a dependency on it. The | | 9849 | utility), do <span class="emphasis"><em>not</em></span> add a dependency on it. The |
9826 | tool is rather big and the distfile should come with pregenerated | | 9850 | tool is rather big and the distfile should come with pregenerated |
9827 | documentation anyway; if it does not, it is a bug that you ought to | | 9851 | documentation anyway; if it does not, it is a bug that you ought to |
9828 | report. For such packages you should disable gtk-doc (unless it is | | 9852 | report. For such packages you should disable gtk-doc (unless it is |
9829 | the default):</p> | | 9853 | the default):</p> |
9830 | <pre class="programlisting">CONFIGURE_ARGS+=--disable-gtk-doc</pre> | | 9854 | <pre class="programlisting">CONFIGURE_ARGS+=--disable-gtk-doc</pre> |
9831 | <p>The default location of installed HTML files | | 9855 | <p>The default location of installed HTML files |
9832 | (<code class="filename">share/gtk-doc/<package-name></code>) is correct | | 9856 | (<code class="filename">share/gtk-doc/<package-name></code>) is correct |
9833 | and should not be changed unless the package insists on installing | | 9857 | and should not be changed unless the package insists on installing |
9834 | them somewhere else. Otherwise programs as | | 9858 | them somewhere else. Otherwise programs as |
9835 | <span class="command"><strong>devhelp</strong></span> will not be able to open them. You can | | 9859 | <span class="command"><strong>devhelp</strong></span> will not be able to open them. You can |
9836 | do that with an entry similar to:</p> | | 9860 | do that with an entry similar to:</p> |
9837 | <pre class="programlisting">CONFIGURE_ARGS+=--with-html-dir=${PREFIX}/share/gtk-doc/...</pre> | | 9861 | <pre class="programlisting">CONFIGURE_ARGS+=--with-html-dir=${PREFIX}/share/gtk-doc/...</pre> |
9838 | </li> | | 9862 | </li> |
9839 | </ul></div> | | 9863 | </ul></div> |
9840 | <p>GNOME uses multiple <span class="emphasis"><em>shared</em></span> directories and | | 9864 | <p>GNOME uses multiple <span class="emphasis"><em>shared</em></span> directories and |
9841 | files under the installation prefix to maintain databases. In this | | 9865 | files under the installation prefix to maintain databases. In this |
9842 | context, shared means that those exact same directories and files are | | 9866 | context, shared means that those exact same directories and files are |
9843 | used among several different packages, leading to conflicts in the | | 9867 | used among several different packages, leading to conflicts in the |
9844 | <code class="filename">PLIST</code>. pkgsrc currently includes functionality to | | 9868 | <code class="filename">PLIST</code>. pkgsrc currently includes functionality to |
9845 | handle the most common cases, so you have to forget about using | | 9869 | handle the most common cases, so you have to forget about using |
9846 | <code class="literal">@unexec ${RMDIR}</code> lines in your file lists and | | 9870 | <code class="literal">@unexec ${RMDIR}</code> lines in your file lists and |
9847 | omitting shared files from them. If you find yourself doing those, | | 9871 | omitting shared files from them. If you find yourself doing those, |
9848 | <span class="emphasis"><em>your package is most likely incorrect</em></span>.</p> | | 9872 | <span class="emphasis"><em>your package is most likely incorrect</em></span>.</p> |
9849 | <p>The following table lists the common situations that result in | | 9873 | <p>The following table lists the common situations that result in |
9850 | using shared directories or files. For each of them, the appropriate | | 9874 | using shared directories or files. For each of them, the appropriate |
9851 | solution is given. After applying the solution be sure to | | 9875 | solution is given. After applying the solution be sure to |
9852 | <span class="emphasis"><em>regenerate the package's file list</em></span> with | | 9876 | <span class="emphasis"><em>regenerate the package's file list</em></span> with |
9853 | <span class="command"><strong>make print-PLIST</strong></span> and ensure it is correct.</p> | | 9877 | <span class="command"><strong>make print-PLIST</strong></span> and ensure it is correct.</p> |
9854 | <div class="table"> | | 9878 | <div class="table"> |
9855 | <a name="plist-handling"></a><p class="title"><b>Table 23.1. PLIST handling for GNOME packages</b></p> | | 9879 | <a name="plist-handling"></a><p class="title"><b>Table 23.1. PLIST handling for GNOME packages</b></p> |
9856 | <div class="table-contents"><table summary="PLIST handling for GNOME packages" border="1"> | | 9880 | <div class="table-contents"><table summary="PLIST handling for GNOME packages" border="1"> |
9857 | <colgroup> | | 9881 | <colgroup> |
9858 | <col> | | 9882 | <col> |
9859 | <col> | | 9883 | <col> |
9860 | </colgroup> | | 9884 | </colgroup> |
9861 | <thead><tr> | | 9885 | <thead><tr> |
9862 | <th>If the package...</th> | | 9886 | <th>If the package...</th> |
9863 | <th>Then...</th> | | 9887 | <th>Then...</th> |
9864 | </tr></thead> | | 9888 | </tr></thead> |
9865 | <tbody> | | 9889 | <tbody> |
9866 | <tr> | | 9890 | <tr> |
9867 | <td>Installs OMF files under <code class="filename">share/omf</code>.</td> | | 9891 | <td>Installs OMF files under <code class="filename">share/omf</code>.</td> |
9868 | <td>See <a class="xref" href="#scrollkeeper-data-files" title="19.6.10. Packages installing scrollkeeper/rarian data files">Section 19.6.10, “Packages installing scrollkeeper/rarian data files”</a>.</td> | | 9892 | <td>See <a class="xref" href="#scrollkeeper-data-files" title="19.6.10. Packages installing scrollkeeper/rarian data files">Section 19.6.10, “Packages installing scrollkeeper/rarian data files”</a>.</td> |
9869 | </tr> | | 9893 | </tr> |
9870 | <tr> | | 9894 | <tr> |
9871 | <td>Installs icons under the | | 9895 | <td>Installs icons under the |
9872 | <code class="filename">share/icons/hicolor</code> hierarchy or updates | | 9896 | <code class="filename">share/icons/hicolor</code> hierarchy or updates |
9873 | <code class="filename">share/icons/hicolor/icon-theme.cache</code>.</td> | | 9897 | <code class="filename">share/icons/hicolor/icon-theme.cache</code>.</td> |
9874 | <td>See <a class="xref" href="#hicolor-theme" title="19.6.19. Packages installing hicolor theme icons">Section 19.6.19, “Packages installing hicolor theme icons”</a>.</td> | | 9898 | <td>See <a class="xref" href="#hicolor-theme" title="19.6.19. Packages installing hicolor theme icons">Section 19.6.19, “Packages installing hicolor theme icons”</a>.</td> |
9875 | </tr> | | 9899 | </tr> |
9876 | <tr> | | 9900 | <tr> |
9877 | <td>Installs files under | | 9901 | <td>Installs files under |
9878 | <code class="filename">share/mime/packages</code>.</td> | | 9902 | <code class="filename">share/mime/packages</code>.</td> |
9879 | <td>See <a class="xref" href="#mime-database" title="19.6.14. Packages installing extensions to the MIME database">Section 19.6.14, “Packages installing extensions to the MIME database”</a>.</td> | | 9903 | <td>See <a class="xref" href="#mime-database" title="19.6.14. Packages installing extensions to the MIME database">Section 19.6.14, “Packages installing extensions to the MIME database”</a>.</td> |
9880 | </tr> | | 9904 | </tr> |
9881 | <tr> | | 9905 | <tr> |
9882 | <td>Installs <code class="filename">.desktop</code> files under | | 9906 | <td>Installs <code class="filename">.desktop</code> files under |
9883 | <code class="filename">share/applications</code> and these include MIME | | 9907 | <code class="filename">share/applications</code> and these include MIME |
9884 | information.</td> | | 9908 | information.</td> |
9885 | <td>See <a class="xref" href="#desktop-files" title="19.6.20. Packages installing desktop files">Section 19.6.20, “Packages installing desktop files”</a>.</td> | | 9909 | <td>See <a class="xref" href="#desktop-files" title="19.6.20. Packages installing desktop files">Section 19.6.20, “Packages installing desktop files”</a>.</td> |
9886 | </tr> | | 9910 | </tr> |
9887 | </tbody> | | 9911 | </tbody> |
9888 | </table></div> | | 9912 | </table></div> |
9889 | </div> | | 9913 | </div> |
9890 | <br class="table-break"> | | 9914 | <br class="table-break"> |
9891 | </div> | | 9915 | </div> |
9892 | <div class="sect1"> | | 9916 | <div class="sect1"> |
9893 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9917 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9894 | <a name="full-update"></a>23.3. Updating GNOME to a newer version</h2></div></div></div> | | 9918 | <a name="full-update"></a>23.3. Updating GNOME to a newer version</h2></div></div></div> |
9895 | <p>When seeing GNOME as a whole, there are two kinds of | | 9919 | <p>When seeing GNOME as a whole, there are two kinds of |
9896 | updates:</p> | | 9920 | updates:</p> |
9897 | <div class="variablelist"><dl class="variablelist"> | | 9921 | <div class="variablelist"><dl class="variablelist"> |
9898 | <dt><span class="term">Major update</span></dt> | | 9922 | <dt><span class="term">Major update</span></dt> |
9899 | <dd> | | 9923 | <dd> |
9900 | <p>Given that there is still a very long way for GNOME 3 (if it | | 9924 | <p>Given that there is still a very long way for GNOME 3 (if it |
9901 | ever appears), we consider a major update one that goes from a | | 9925 | ever appears), we consider a major update one that goes from a |
9902 | <code class="literal">2.X</code> version to a <code class="literal">2.Y</code> one, | | 9926 | <code class="literal">2.X</code> version to a <code class="literal">2.Y</code> one, |
9903 | where <code class="literal">Y</code> is even and greater than | | 9927 | where <code class="literal">Y</code> is even and greater than |
9904 | <code class="literal">X</code>. These are hard to achieve because they | | 9928 | <code class="literal">X</code>. These are hard to achieve because they |
9905 | introduce lots of changes in the components' code and almost all | | 9929 | introduce lots of changes in the components' code and almost all |
9906 | GNOME distfiles are updated to newer versions. Some of them can | | 9930 | GNOME distfiles are updated to newer versions. Some of them can |
9907 | even break API and ABI compatibility with the previous major | | 9931 | even break API and ABI compatibility with the previous major |
9908 | version series. As a result, the update needs to be done all at | | 9932 | version series. As a result, the update needs to be done all at |
9909 | once to minimize breakage.</p> | | 9933 | once to minimize breakage.</p> |
9910 | <p>A major update typically consists of around 80 package | | 9934 | <p>A major update typically consists of around 80 package |
9911 | updates and the addition of some new ones.</p> | | 9935 | updates and the addition of some new ones.</p> |
9912 | </dd> | | 9936 | </dd> |
9913 | <dt><span class="term">Minor update</span></dt> | | 9937 | <dt><span class="term">Minor update</span></dt> |
9914 | <dd> | | 9938 | <dd> |
9915 | <p>We consider a minor update one that goes from a | | 9939 | <p>We consider a minor update one that goes from a |
9916 | <code class="literal">2.A.X</code> version to a <code class="literal">2.A.Y</code> | | 9940 | <code class="literal">2.A.X</code> version to a <code class="literal">2.A.Y</code> |
9917 | one where <code class="literal">Y</code> is greater than | | 9941 | one where <code class="literal">Y</code> is greater than |
9918 | <code class="literal">X</code>. These are easy to achieve because they do | | 9942 | <code class="literal">X</code>. These are easy to achieve because they do |
9919 | not update all GNOME components, can be done in an incremental way | | 9943 | not update all GNOME components, can be done in an incremental way |
9920 | and do not break API nor ABI compatibility.</p> | | 9944 | and do not break API nor ABI compatibility.</p> |
9921 | <p>A minor update typically consists of around 50 package | | 9945 | <p>A minor update typically consists of around 50 package |
9922 | updates, although the numbers here may vary a lot.</p> | | 9946 | updates, although the numbers here may vary a lot.</p> |
9923 | </dd> | | 9947 | </dd> |
9924 | </dl></div> | | 9948 | </dl></div> |
9925 | <p>In order to update the GNOME components in pkgsrc to a new stable | | 9949 | <p>In order to update the GNOME components in pkgsrc to a new stable |
9926 | release (either major or minor), the following steps should be | | 9950 | release (either major or minor), the following steps should be |
9927 | followed:</p> | | 9951 | followed:</p> |
9928 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 9952 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
9929 | <li class="listitem"> | | 9953 | <li class="listitem"> |
9930 | <p>Get a list of all the tarballs that form the new release by | | 9954 | <p>Get a list of all the tarballs that form the new release by |
9931 | using the following commands. These will leave the full list of the | | 9955 | using the following commands. These will leave the full list of the |
9932 | components' distfiles into the <code class="filename">list.txt</code> | | 9956 | components' distfiles into the <code class="filename">list.txt</code> |
9933 | file:</p> | | 9957 | file:</p> |
9934 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>echo ls "*.tar.bz2" | \ | | 9958 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>echo ls "*.tar.bz2" | \ |
9935 | ftp -V ftp://ftp.gnome.org/pub/gnome/platform/x.y/x.y.z/sources/ | \ | | 9959 | ftp -V ftp://ftp.gnome.org/pub/gnome/platform/x.y/x.y.z/sources/ | \ |
9936 | awk '{ print $9 }' >list.txt</code></strong> | | 9960 | awk '{ print $9 }' >list.txt</code></strong> |
9937 | <code class="prompt">%</code> <strong class="userinput"><code>echo ls "*.tar.bz2" | \ | | 9961 | <code class="prompt">%</code> <strong class="userinput"><code>echo ls "*.tar.bz2" | \ |
9938 | ftp -V ftp://ftp.gnome.org/pub/gnome/desktop/x.y/x.y.z/sources/ | \ | | 9962 | ftp -V ftp://ftp.gnome.org/pub/gnome/desktop/x.y/x.y.z/sources/ | \ |
9939 | awk '{ print $9 }' >>list.txt</code></strong></pre> | | 9963 | awk '{ print $9 }' >>list.txt</code></strong></pre> |
9940 | </li> | | 9964 | </li> |
9941 | <li class="listitem"><p>Open each meta package's <code class="filename">Makefile</code> and | | 9965 | <li class="listitem"><p>Open each meta package's <code class="filename">Makefile</code> and |
9942 | bump their version to the release you are updating them to. The | | 9966 | bump their version to the release you are updating them to. The |
9943 | three meta packages should be always consistent with versioning. | | 9967 | three meta packages should be always consistent with versioning. |
9944 | Obviously remove any <code class="varname">PKGREVISION</code>s that might be | | 9968 | Obviously remove any <code class="varname">PKGREVISION</code>s that might be |
9945 | in them.</p></li> | | 9969 | in them.</p></li> |
9946 | <li class="listitem"> | | 9970 | <li class="listitem"> |
9947 | <p>For each meta package, update all its | | 9971 | <p>For each meta package, update all its |
9948 | <code class="varname">DEPENDS</code> lines to match the latest versions as | | 9972 | <code class="varname">DEPENDS</code> lines to match the latest versions as |
9949 | shown by the above commands. Do <span class="emphasis"><em>not</em></span> list any | | 9973 | shown by the above commands. Do <span class="emphasis"><em>not</em></span> list any |
9950 | newer version (even if found in the FTP) because the meta packages | | 9974 | newer version (even if found in the FTP) because the meta packages |
9951 | are supposed to list the exact versions that form a specific GNOME | | 9975 | are supposed to list the exact versions that form a specific GNOME |
9952 | release. Exceptions are permitted here if a newer version solves a | | 9976 | release. Exceptions are permitted here if a newer version solves a |
9953 | serious issue in the overall desktop experience; these typically | | 9977 | serious issue in the overall desktop experience; these typically |
9954 | come in the form of a revision bump in pkgsrc, not in newer versions | | 9978 | come in the form of a revision bump in pkgsrc, not in newer versions |
9955 | from the developers.</p> | | 9979 | from the developers.</p> |
9956 | <p>Packages not listed in the <code class="filename">list.txt</code> file | | 9980 | <p>Packages not listed in the <code class="filename">list.txt</code> file |
9957 | should be updated to the latest version available (if found in | | 9981 | should be updated to the latest version available (if found in |
9958 | pkgsrc). This is the case, for example, of the dependencies on the | | 9982 | pkgsrc). This is the case, for example, of the dependencies on the |
9959 | GNU Autotools in the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome-devel/README.html" target="_top"><code class="filename">meta-pkgs/gnome-devel</code></a> meta package.</p> | | 9983 | GNU Autotools in the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome-devel/README.html" target="_top"><code class="filename">meta-pkgs/gnome-devel</code></a> meta package.</p> |
9960 | </li> | | 9984 | </li> |
9961 | <li class="listitem"> | | 9985 | <li class="listitem"> |
9962 | <p>Generate a patch from the modified meta packages and extract the | | 9986 | <p>Generate a patch from the modified meta packages and extract the |
9963 | list of "new" lines. This will provide you an outline on what | | 9987 | list of "new" lines. This will provide you an outline on what |
9964 | packages need to be updated in pkgsrc and in what order:</p> | | 9988 | packages need to be updated in pkgsrc and in what order:</p> |
9965 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cvs diff -u gnome-devel gnome-base gnome | grep '^+D' >todo.txt</code></strong></pre> | | 9989 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cvs diff -u gnome-devel gnome-base gnome | grep '^+D' >todo.txt</code></strong></pre> |
9966 | </li> | | 9990 | </li> |
9967 | <li class="listitem"><p>For major desktop updates it is recommended to zap all your | | 9991 | <li class="listitem"><p>For major desktop updates it is recommended to zap all your |
9968 | installed packages and start over from scratch at this point.</p></li> | | 9992 | installed packages and start over from scratch at this point.</p></li> |
9969 | <li class="listitem"><p>Now comes the longest step by far: iterate over the contents | | 9993 | <li class="listitem"><p>Now comes the longest step by far: iterate over the contents |
9970 | of <code class="filename">todo.txt</code> and update the packages listed in | | 9994 | of <code class="filename">todo.txt</code> and update the packages listed in |
9971 | it in order. For major desktop updates none of these should be | | 9995 | it in order. For major desktop updates none of these should be |
9972 | committed until the entire set is completed because there are chances | | 9996 | committed until the entire set is completed because there are chances |
9973 | of breaking not-yet-updated packages.</p></li> | | 9997 | of breaking not-yet-updated packages.</p></li> |
9974 | <li class="listitem"><p>Once the packages are up to date and working, commit them to | | 9998 | <li class="listitem"><p>Once the packages are up to date and working, commit them to |
9975 | the tree one by one with appropriate log messages. At the end, | | 9999 | the tree one by one with appropriate log messages. At the end, |
9976 | commit the three meta package updates and all the corresponding | | 10000 | commit the three meta package updates and all the corresponding |
9977 | changes to the <code class="filename">doc/CHANGES-<YEAR></code> and | | 10001 | changes to the <code class="filename">doc/CHANGES-<YEAR></code> and |
9978 | <a href="http://cvsweb.NetBSD.org/bsdweb.cgi/pkgsrc/doc/TODO?rev=HEAD&content-type=text/x-cvsweb-markup" target="_top"><code class="filename">pkgsrc/doc/TODO</code></a> files.</p></li> | | 10002 | <a href="http://cvsweb.NetBSD.org/bsdweb.cgi/pkgsrc/doc/TODO?rev=HEAD&content-type=text/x-cvsweb-markup" target="_top"><code class="filename">pkgsrc/doc/TODO</code></a> files.</p></li> |
9979 | </ol></div> | | 10003 | </ol></div> |
9980 | </div> | | 10004 | </div> |
9981 | <div class="sect1"> | | 10005 | <div class="sect1"> |
9982 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10006 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9983 | <a name="patching"></a>23.4. Patching guidelines</h2></div></div></div> | | 10007 | <a name="patching"></a>23.4. Patching guidelines</h2></div></div></div> |
9984 | <p>GNOME is a very big component in pkgsrc which approaches 100 | | 10008 | <p>GNOME is a very big component in pkgsrc which approaches 100 |
9985 | packages. Please, it is very important that you always, always, | | 10009 | packages. Please, it is very important that you always, always, |
9986 | <span class="strong"><strong>always</strong></span> feed back any portability | | 10010 | <span class="strong"><strong>always</strong></span> feed back any portability |
9987 | fixes you do to a GNOME package to the mainstream developers (see <a class="xref" href="#components.patches.feedback" title="11.3.5. Feedback to the author">Section 11.3.5, “Feedback to the author”</a>). This is the only way to get | | 10011 | fixes you do to a GNOME package to the mainstream developers (see <a class="xref" href="#components.patches.feedback" title="11.3.5. Feedback to the author">Section 11.3.5, “Feedback to the author”</a>). This is the only way to get |
9988 | their attention on portability issues and to ensure that future versions | | 10012 | their attention on portability issues and to ensure that future versions |
9989 | can be built out-of-the box on NetBSD. The less custom patches in | | 10013 | can be built out-of-the box on NetBSD. The less custom patches in |
9990 | pkgsrc, the easier further updates are. Those developers in charge of | | 10014 | pkgsrc, the easier further updates are. Those developers in charge of |
9991 | issuing major GNOME updates will be grateful if you do that.</p> | | 10015 | issuing major GNOME updates will be grateful if you do that.</p> |
9992 | <p>The most common places to report bugs are the <a class="ulink" href="http://bugzilla.gnome.org/" target="_top">GNOME's Bugzilla</a> and the <a class="ulink" href="http://bugzilla.freedesktop.org/" target="_top">freedesktop.org's | | 10016 | <p>The most common places to report bugs are the <a class="ulink" href="http://bugzilla.gnome.org/" target="_top">GNOME's Bugzilla</a> and the <a class="ulink" href="http://bugzilla.freedesktop.org/" target="_top">freedesktop.org's |
9993 | Bugzilla</a>. Not all components use these to track bugs, but most | | 10017 | Bugzilla</a>. Not all components use these to track bugs, but most |
9994 | of them do. Do not be short on your reports: always provide detailed | | 10018 | of them do. Do not be short on your reports: always provide detailed |
9995 | explanations of the current failure, how it can be improved to achieve | | 10019 | explanations of the current failure, how it can be improved to achieve |
9996 | maximum portability and, if at all possible, provide a patch against CVS | | 10020 | maximum portability and, if at all possible, provide a patch against CVS |
9997 | head. The more verbose you are, the higher chances of your patch being | | 10021 | head. The more verbose you are, the higher chances of your patch being |
9998 | accepted.</p> | | 10022 | accepted.</p> |
9999 | <p>Also, please avoid using preprocessor magic to fix portability | | 10023 | <p>Also, please avoid using preprocessor magic to fix portability |
10000 | issues. While the FreeBSD GNOME people are doing a great job in porting | | 10024 | issues. While the FreeBSD GNOME people are doing a great job in porting |
10001 | GNOME to their operating system, the official GNOME sources are now | | 10025 | GNOME to their operating system, the official GNOME sources are now |
10002 | plagued by conditionals that check for <code class="varname">__FreeBSD__</code> | | 10026 | plagued by conditionals that check for <code class="varname">__FreeBSD__</code> |
10003 | and similar macros. This hurts portability. Please see our patching | | 10027 | and similar macros. This hurts portability. Please see our patching |
10004 | guidelines (<a class="xref" href="#components.patches.guidelines" title="11.3.4. Patching guidelines">Section 11.3.4, “Patching guidelines”</a>) for more | | 10028 | guidelines (<a class="xref" href="#components.patches.guidelines" title="11.3.4. Patching guidelines">Section 11.3.4, “Patching guidelines”</a>) for more |
10005 | details.</p> | | 10029 | details.</p> |
10006 | </div> | | 10030 | </div> |
10007 | </div> | | 10031 | </div> |
10008 | </div> | | 10032 | </div> |
10009 | <div class="part"> | | 10033 | <div class="part"> |
10010 | <div class="titlepage"><div><div><h1 class="title"> | | 10034 | <div class="titlepage"><div><div><h1 class="title"> |
10011 | <a name="infrastructure"></a>Part III. The pkgsrc infrastructure internals</h1></div></div></div> | | 10035 | <a name="infrastructure"></a>Part III. The pkgsrc infrastructure internals</h1></div></div></div> |
10012 | <div class="partintro"> | | 10036 | <div class="partintro"> |
10013 | <div></div> | | 10037 | <div></div> |
10014 | <p>This part of the guide deals with everything | | 10038 | <p>This part of the guide deals with everything |
10015 | from the infrastructure that is behind the interfaces described | | 10039 | from the infrastructure that is behind the interfaces described |
10016 | in the developer's guide. A casual package maintainer should not | | 10040 | in the developer's guide. A casual package maintainer should not |
10017 | need anything from this part.</p> | | 10041 | need anything from this part.</p> |
10018 | <div class="toc"> | | 10042 | <div class="toc"> |
10019 | <p><b>Table of Contents</b></p> | | 10043 | <p><b>Table of Contents</b></p> |
10020 | <dl> | | 10044 | <dl> |
10021 | <dt><span class="chapter"><a href="#infr.design">24. Design of the pkgsrc infrastructure</a></span></dt> | | 10045 | <dt><span class="chapter"><a href="#infr.design">24. Design of the pkgsrc infrastructure</a></span></dt> |
10022 | <dd><dl> | | 10046 | <dd><dl> |
10023 | <dt><span class="sect1"><a href="#infr.vardef">24.1. The meaning of variable definitions</a></span></dt> | | 10047 | <dt><span class="sect1"><a href="#infr.vardef">24.1. The meaning of variable definitions</a></span></dt> |
10024 | <dt><span class="sect1"><a href="#infr.vardef.problems">24.2. Avoiding problems before they arise</a></span></dt> | | 10048 | <dt><span class="sect1"><a href="#infr.vardef.problems">24.2. Avoiding problems before they arise</a></span></dt> |
10025 | <dt><span class="sect1"><a href="#infr.var">24.3. Variable evaluation</a></span></dt> | | 10049 | <dt><span class="sect1"><a href="#infr.var">24.3. Variable evaluation</a></span></dt> |
10026 | <dd><dl> | | 10050 | <dd><dl> |
10027 | <dt><span class="sect2"><a href="#infr.var.load">24.3.1. At load time</a></span></dt> | | 10051 | <dt><span class="sect2"><a href="#infr.var.load">24.3.1. At load time</a></span></dt> |
10028 | <dt><span class="sect2"><a href="#infr.var.run">24.3.2. At runtime</a></span></dt> | | 10052 | <dt><span class="sect2"><a href="#infr.var.run">24.3.2. At runtime</a></span></dt> |
10029 | </dl></dd> | | 10053 | </dl></dd> |
10030 | <dt><span class="sect1"><a href="#infr.varspec">24.4. How can variables be specified?</a></span></dt> | | 10054 | <dt><span class="sect1"><a href="#infr.varspec">24.4. How can variables be specified?</a></span></dt> |
10031 | <dt><span class="sect1"><a href="#infr.design.intf">24.5. Designing interfaces for Makefile fragments</a></span></dt> | | 10055 | <dt><span class="sect1"><a href="#infr.design.intf">24.5. Designing interfaces for Makefile fragments</a></span></dt> |
10032 | <dd><dl> | | 10056 | <dd><dl> |
10033 | <dt><span class="sect2"><a href="#infr.design.intf.proc">24.5.1. Procedures with parameters</a></span></dt> | | 10057 | <dt><span class="sect2"><a href="#infr.design.intf.proc">24.5.1. Procedures with parameters</a></span></dt> |
10034 | <dt><span class="sect2"><a href="#infr.design.intf.action">24.5.2. Actions taken on behalf of parameters</a></span></dt> | | 10058 | <dt><span class="sect2"><a href="#infr.design.intf.action">24.5.2. Actions taken on behalf of parameters</a></span></dt> |
10035 | </dl></dd> | | 10059 | </dl></dd> |
10036 | <dt><span class="sect1"><a href="#infr.order">24.6. The order in which files are loaded</a></span></dt> | | 10060 | <dt><span class="sect1"><a href="#infr.order">24.6. The order in which files are loaded</a></span></dt> |
10037 | <dd><dl> | | 10061 | <dd><dl> |
10038 | <dt><span class="sect2"><a href="#infr.order.prefs">24.6.1. The order in <code class="filename">bsd.prefs.mk</code></a></span></dt> | | 10062 | <dt><span class="sect2"><a href="#infr.order.prefs">24.6.1. The order in <code class="filename">bsd.prefs.mk</code></a></span></dt> |
10039 | <dt><span class="sect2"><a href="#infr.order.pkg">24.6.2. The order in <code class="filename">bsd.pkg.mk</code></a></span></dt> | | 10063 | <dt><span class="sect2"><a href="#infr.order.pkg">24.6.2. The order in <code class="filename">bsd.pkg.mk</code></a></span></dt> |
10040 | </dl></dd> | | 10064 | </dl></dd> |
10041 | </dl></dd> | | 10065 | </dl></dd> |
10042 | <dt><span class="chapter"><a href="#regression">25. Regression tests</a></span></dt> | | 10066 | <dt><span class="chapter"><a href="#regression">25. Regression tests</a></span></dt> |
10043 | <dd><dl> | | 10067 | <dd><dl> |
10044 | <dt><span class="sect1"><a href="#regression.descr">25.1. The regression tests framework</a></span></dt> | | 10068 | <dt><span class="sect1"><a href="#regression.descr">25.1. The regression tests framework</a></span></dt> |
10045 | <dt><span class="sect1"><a href="#regression.run">25.2. Running the regression tests</a></span></dt> | | 10069 | <dt><span class="sect1"><a href="#regression.run">25.2. Running the regression tests</a></span></dt> |
10046 | <dt><span class="sect1"><a href="#regression.new">25.3. Adding a new regression test</a></span></dt> | | 10070 | <dt><span class="sect1"><a href="#regression.new">25.3. Adding a new regression test</a></span></dt> |
10047 | <dd><dl> | | 10071 | <dd><dl> |
10048 | <dt><span class="sect2"><a href="#regression.fun.override">25.3.1. Overridable functions</a></span></dt> | | 10072 | <dt><span class="sect2"><a href="#regression.fun.override">25.3.1. Overridable functions</a></span></dt> |
10049 | <dt><span class="sect2"><a href="#regression.fun.helper">25.3.2. Helper functions</a></span></dt> | | 10073 | <dt><span class="sect2"><a href="#regression.fun.helper">25.3.2. Helper functions</a></span></dt> |
10050 | </dl></dd> | | 10074 | </dl></dd> |
10051 | </dl></dd> | | 10075 | </dl></dd> |
10052 | <dt><span class="chapter"><a href="#porting">26. Porting pkgsrc</a></span></dt> | | 10076 | <dt><span class="chapter"><a href="#porting">26. Porting pkgsrc</a></span></dt> |
10053 | <dd><dl> | | 10077 | <dd><dl> |
10054 | <dt><span class="sect1"><a href="#porting.opsys">26.1. Porting pkgsrc to a new operating system</a></span></dt> | | 10078 | <dt><span class="sect1"><a href="#porting.opsys">26.1. Porting pkgsrc to a new operating system</a></span></dt> |
10055 | <dt><span class="sect1"><a href="#porting.compiler">26.2. Adding support for a new compiler</a></span></dt> | | 10079 | <dt><span class="sect1"><a href="#porting.compiler">26.2. Adding support for a new compiler</a></span></dt> |
10056 | </dl></dd> | | 10080 | </dl></dd> |
10057 | </dl> | | 10081 | </dl> |
10058 | </div> | | 10082 | </div> |
10059 | </div> | | 10083 | </div> |
10060 | <div class="chapter"> | | 10084 | <div class="chapter"> |
10061 | <div class="titlepage"><div><div><h2 class="title"> | | 10085 | <div class="titlepage"><div><div><h2 class="title"> |
10062 | <a name="infr.design"></a>Chapter 24. Design of the pkgsrc infrastructure</h2></div></div></div> | | 10086 | <a name="infr.design"></a>Chapter 24. Design of the pkgsrc infrastructure</h2></div></div></div> |
10063 | <div class="toc"> | | 10087 | <div class="toc"> |
10064 | <p><b>Table of Contents</b></p> | | 10088 | <p><b>Table of Contents</b></p> |
10065 | <dl> | | 10089 | <dl> |
10066 | <dt><span class="sect1"><a href="#infr.vardef">24.1. The meaning of variable definitions</a></span></dt> | | 10090 | <dt><span class="sect1"><a href="#infr.vardef">24.1. The meaning of variable definitions</a></span></dt> |
10067 | <dt><span class="sect1"><a href="#infr.vardef.problems">24.2. Avoiding problems before they arise</a></span></dt> | | 10091 | <dt><span class="sect1"><a href="#infr.vardef.problems">24.2. Avoiding problems before they arise</a></span></dt> |
10068 | <dt><span class="sect1"><a href="#infr.var">24.3. Variable evaluation</a></span></dt> | | 10092 | <dt><span class="sect1"><a href="#infr.var">24.3. Variable evaluation</a></span></dt> |
10069 | <dd><dl> | | 10093 | <dd><dl> |
10070 | <dt><span class="sect2"><a href="#infr.var.load">24.3.1. At load time</a></span></dt> | | 10094 | <dt><span class="sect2"><a href="#infr.var.load">24.3.1. At load time</a></span></dt> |
10071 | <dt><span class="sect2"><a href="#infr.var.run">24.3.2. At runtime</a></span></dt> | | 10095 | <dt><span class="sect2"><a href="#infr.var.run">24.3.2. At runtime</a></span></dt> |
10072 | </dl></dd> | | 10096 | </dl></dd> |
10073 | <dt><span class="sect1"><a href="#infr.varspec">24.4. How can variables be specified?</a></span></dt> | | 10097 | <dt><span class="sect1"><a href="#infr.varspec">24.4. How can variables be specified?</a></span></dt> |
10074 | <dt><span class="sect1"><a href="#infr.design.intf">24.5. Designing interfaces for Makefile fragments</a></span></dt> | | 10098 | <dt><span class="sect1"><a href="#infr.design.intf">24.5. Designing interfaces for Makefile fragments</a></span></dt> |
10075 | <dd><dl> | | 10099 | <dd><dl> |
10076 | <dt><span class="sect2"><a href="#infr.design.intf.proc">24.5.1. Procedures with parameters</a></span></dt> | | 10100 | <dt><span class="sect2"><a href="#infr.design.intf.proc">24.5.1. Procedures with parameters</a></span></dt> |
10077 | <dt><span class="sect2"><a href="#infr.design.intf.action">24.5.2. Actions taken on behalf of parameters</a></span></dt> | | 10101 | <dt><span class="sect2"><a href="#infr.design.intf.action">24.5.2. Actions taken on behalf of parameters</a></span></dt> |
10078 | </dl></dd> | | 10102 | </dl></dd> |
10079 | <dt><span class="sect1"><a href="#infr.order">24.6. The order in which files are loaded</a></span></dt> | | 10103 | <dt><span class="sect1"><a href="#infr.order">24.6. The order in which files are loaded</a></span></dt> |
10080 | <dd><dl> | | 10104 | <dd><dl> |
10081 | <dt><span class="sect2"><a href="#infr.order.prefs">24.6.1. The order in <code class="filename">bsd.prefs.mk</code></a></span></dt> | | 10105 | <dt><span class="sect2"><a href="#infr.order.prefs">24.6.1. The order in <code class="filename">bsd.prefs.mk</code></a></span></dt> |
10082 | <dt><span class="sect2"><a href="#infr.order.pkg">24.6.2. The order in <code class="filename">bsd.pkg.mk</code></a></span></dt> | | 10106 | <dt><span class="sect2"><a href="#infr.order.pkg">24.6.2. The order in <code class="filename">bsd.pkg.mk</code></a></span></dt> |
10083 | </dl></dd> | | 10107 | </dl></dd> |
10084 | </dl> | | 10108 | </dl> |
10085 | </div> | | 10109 | </div> |
10086 | <p>The pkgsrc infrastructure consists of many small Makefile | | 10110 | <p>The pkgsrc infrastructure consists of many small Makefile |
10087 | fragments. Each such fragment needs a properly specified | | 10111 | fragments. Each such fragment needs a properly specified |
10088 | interface. This chapter explains how such an interface looks | | 10112 | interface. This chapter explains how such an interface looks |
10089 | like.</p> | | 10113 | like.</p> |
10090 | <div class="sect1"> | | 10114 | <div class="sect1"> |
10091 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10115 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10092 | <a name="infr.vardef"></a>24.1. The meaning of variable definitions</h2></div></div></div> | | 10116 | <a name="infr.vardef"></a>24.1. The meaning of variable definitions</h2></div></div></div> |
10093 | <p>Whenever a variable is defined in the pkgsrc | | 10117 | <p>Whenever a variable is defined in the pkgsrc |
10094 | infrastructure, the location and the way of definition provide | | 10118 | infrastructure, the location and the way of definition provide |
10095 | much information about the intended use of that variable. | | 10119 | much information about the intended use of that variable. |
10096 | Additionally, more documentation may be found in a header | | 10120 | Additionally, more documentation may be found in a header |
10097 | comment or in this pkgsrc guide.</p> | | 10121 | comment or in this pkgsrc guide.</p> |
10098 | <p>A special file is | | 10122 | <p>A special file is |
10099 | <code class="filename">mk/defaults/mk.conf</code>, which lists all | | 10123 | <code class="filename">mk/defaults/mk.conf</code>, which lists all |
10100 | variables that are intended to be user-defined. They are either | | 10124 | variables that are intended to be user-defined. They are either |
10101 | defined using the <code class="literal">?=</code> operator or they are | | 10125 | defined using the <code class="literal">?=</code> operator or they are |
10102 | left undefined because defining them to anything would | | 10126 | left undefined because defining them to anything would |
10103 | effectively mean <span class="quote">“<span class="quote">yes</span>”</span>. All these variables may be | | 10127 | effectively mean <span class="quote">“<span class="quote">yes</span>”</span>. All these variables may be |
10104 | overridden by the pkgsrc user in the <code class="varname">MAKECONF</code> | | 10128 | overridden by the pkgsrc user in the <code class="varname">MAKECONF</code> |
10105 | file.</p> | | 10129 | file.</p> |
10106 | <p>Outside this file, the following conventions apply: | | 10130 | <p>Outside this file, the following conventions apply: |
10107 | Variables that are defined using the <code class="literal">?=</code> | | 10131 | Variables that are defined using the <code class="literal">?=</code> |
10108 | operator may be overridden by a package.</p> | | 10132 | operator may be overridden by a package.</p> |
10109 | <p>Variables that are defined using the <code class="literal">=</code> | | 10133 | <p>Variables that are defined using the <code class="literal">=</code> |
10110 | operator may be used read-only at run-time.</p> | | 10134 | operator may be used read-only at run-time.</p> |
10111 | <p>Variables whose name starts with an underscore must not be | | 10135 | <p>Variables whose name starts with an underscore must not be |
10112 | accessed outside the pkgsrc infrastructure at all. They may | | 10136 | accessed outside the pkgsrc infrastructure at all. They may |
10113 | change without further notice.</p> | | 10137 | change without further notice.</p> |
10114 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 10138 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
10115 | <h3 class="title">Note</h3> | | 10139 | <h3 class="title">Note</h3> |
10116 | <p>These conventions are currently not applied | | 10140 | <p>These conventions are currently not applied |
10117 | consistently to the complete pkgsrc | | 10141 | consistently to the complete pkgsrc |
10118 | infrastructure.</p> | | 10142 | infrastructure.</p> |
10119 | </div> | | 10143 | </div> |
10120 | </div> | | 10144 | </div> |
10121 | <div class="sect1"> | | 10145 | <div class="sect1"> |
10122 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10146 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10123 | <a name="infr.vardef.problems"></a>24.2. Avoiding problems before they arise</h2></div></div></div> | | 10147 | <a name="infr.vardef.problems"></a>24.2. Avoiding problems before they arise</h2></div></div></div> |
10124 | <p>All variables that contain lists of things should default | | 10148 | <p>All variables that contain lists of things should default |
10125 | to being empty. Two examples that do not follow this rule are | | 10149 | to being empty. Two examples that do not follow this rule are |
10126 | <code class="varname">USE_LANGUAGES</code> and | | 10150 | <code class="varname">USE_LANGUAGES</code> and |
10127 | <code class="varname">DISTFILES</code>. These variables cannot simply be | | 10151 | <code class="varname">DISTFILES</code>. These variables cannot simply be |
10128 | modified using the <code class="literal">+=</code> operator in package | | 10152 | modified using the <code class="literal">+=</code> operator in package |
10129 | <code class="filename">Makefile</code>s (or other files included by | | 10153 | <code class="filename">Makefile</code>s (or other files included by |
10130 | them), since there is no guarantee whether the variable is | | 10154 | them), since there is no guarantee whether the variable is |
10131 | already set or not, and what its value is. In the case of | | 10155 | already set or not, and what its value is. In the case of |
10132 | <code class="varname">DISTFILES</code>, the packages <span class="quote">“<span class="quote">know</span>”</span> | | 10156 | <code class="varname">DISTFILES</code>, the packages <span class="quote">“<span class="quote">know</span>”</span> |
10133 | the default value and just define it as in the following | | 10157 | the default value and just define it as in the following |
10134 | example.</p> | | 10158 | example.</p> |
10135 | <pre class="programlisting"> | | 10159 | <pre class="programlisting"> |
10136 | DISTFILES= ${DISTNAME}${EXTRACT_SUFX} additional-files.tar.gz | | 10160 | DISTFILES= ${DISTNAME}${EXTRACT_SUFX} additional-files.tar.gz |
10137 | </pre> | | 10161 | </pre> |
10138 | <p>Because of the selection of this default value, the same | | 10162 | <p>Because of the selection of this default value, the same |
10139 | value appears in many package Makefiles. Similarly for | | 10163 | value appears in many package Makefiles. Similarly for |
10140 | <code class="varname">USE_LANGUAGES</code>, but in this case the default | | 10164 | <code class="varname">USE_LANGUAGES</code>, but in this case the default |
10141 | value (<span class="quote">“<span class="quote"><code class="literal">c</code></span>”</span>) is so short that it | | 10165 | value (<span class="quote">“<span class="quote"><code class="literal">c</code></span>”</span>) is so short that it |
10142 | doesn't stand out. Nevertheless it is mentioned in many | | 10166 | doesn't stand out. Nevertheless it is mentioned in many |
10143 | files.</p> | | 10167 | files.</p> |
10144 | </div> | | 10168 | </div> |
10145 | <div class="sect1"> | | 10169 | <div class="sect1"> |
10146 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10170 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10147 | <a name="infr.var"></a>24.3. Variable evaluation</h2></div></div></div> | | 10171 | <a name="infr.var"></a>24.3. Variable evaluation</h2></div></div></div> |
10148 | <div class="sect2"> | | 10172 | <div class="sect2"> |
10149 | <div class="titlepage"><div><div><h3 class="title"> | | 10173 | <div class="titlepage"><div><div><h3 class="title"> |
10150 | <a name="infr.var.load"></a>24.3.1. At load time</h3></div></div></div> | | 10174 | <a name="infr.var.load"></a>24.3.1. At load time</h3></div></div></div> |
10151 | <p>Variable evaluation takes place either at load time or at | | 10175 | <p>Variable evaluation takes place either at load time or at |
10152 | runtime, depending on the context in which they occur. The | | 10176 | runtime, depending on the context in which they occur. The |
10153 | contexts where variables are evaluated at load time are:</p> | | 10177 | contexts where variables are evaluated at load time are:</p> |
10154 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 10178 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
10155 | <li class="listitem"><p>The right hand side of the <code class="literal">:=</code> | | 10179 | <li class="listitem"><p>The right hand side of the <code class="literal">:=</code> |
10156 | and <code class="literal">!=</code> operators,</p></li> | | 10180 | and <code class="literal">!=</code> operators,</p></li> |
10157 | <li class="listitem"><p>Make directives like <code class="literal">.if</code> or | | 10181 | <li class="listitem"><p>Make directives like <code class="literal">.if</code> or |
10158 | <code class="literal">.for</code>,</p></li> | | 10182 | <code class="literal">.for</code>,</p></li> |
10159 | <li class="listitem"><p>Dependency lines.</p></li> | | 10183 | <li class="listitem"><p>Dependency lines.</p></li> |
10160 | </ul></div> | | 10184 | </ul></div> |
10161 | <p>A special exception are references to the iteration | | 10185 | <p>A special exception are references to the iteration |
10162 | variables of <code class="literal">.for</code> loops, which are expanded | | 10186 | variables of <code class="literal">.for</code> loops, which are expanded |
10163 | inline, no matter in which context they appear.</p> | | 10187 | inline, no matter in which context they appear.</p> |
10164 | <p>As the values of variables may change during load time, | | 10188 | <p>As the values of variables may change during load time, |
10165 | care must be taken not to evaluate them by accident. Typical | | 10189 | care must be taken not to evaluate them by accident. Typical |
10166 | examples for variables that should not be evaluated at load time | | 10190 | examples for variables that should not be evaluated at load time |
10167 | are <code class="varname">DEPENDS</code> and | | 10191 | are <code class="varname">DEPENDS</code> and |
10168 | <code class="varname">CONFIGURE_ARGS</code>. To make the effect more | | 10192 | <code class="varname">CONFIGURE_ARGS</code>. To make the effect more |
10169 | clear, here is an example:</p> | | 10193 | clear, here is an example:</p> |
10170 | <pre class="programlisting"> | | 10194 | <pre class="programlisting"> |
10171 | CONFIGURE_ARGS= # none | | 10195 | CONFIGURE_ARGS= # none |
10172 | CFLAGS= -O | | 10196 | CFLAGS= -O |
10173 | CONFIGURE_ARGS+= CFLAGS=${CFLAGS:Q} | | 10197 | CONFIGURE_ARGS+= CFLAGS=${CFLAGS:Q} |
10174 | | | 10198 | |
10175 | CONFIGURE_ARGS:= ${CONFIGURE_ARGS} | | 10199 | CONFIGURE_ARGS:= ${CONFIGURE_ARGS} |
10176 | | | 10200 | |
10177 | CFLAGS+= -Wall | | 10201 | CFLAGS+= -Wall |
10178 | </pre> | | 10202 | </pre> |
10179 | <p>This code shows how the use of the <code class="literal">:=</code> | | 10203 | <p>This code shows how the use of the <code class="literal">:=</code> |
10180 | operator can quickly lead to unexpected results. The first | | 10204 | operator can quickly lead to unexpected results. The first |
10181 | paragraph is fairly common code. The second paragraph evaluates | | 10205 | paragraph is fairly common code. The second paragraph evaluates |
10182 | the <code class="varname">CONFIGURE_ARGS</code> variable, which results in | | 10206 | the <code class="varname">CONFIGURE_ARGS</code> variable, which results in |
10183 | <code class="literal">CFLAGS=-O</code>. In the third paragraph, the | | 10207 | <code class="literal">CFLAGS=-O</code>. In the third paragraph, the |
10184 | <code class="literal">-Wall</code> is appended to the | | 10208 | <code class="literal">-Wall</code> is appended to the |
10185 | <code class="varname">CFLAGS</code>, but this addition will not appear in | | 10209 | <code class="varname">CFLAGS</code>, but this addition will not appear in |
10186 | <code class="varname">CONFIGURE_ARGS</code>. In actual code, the three | | 10210 | <code class="varname">CONFIGURE_ARGS</code>. In actual code, the three |
10187 | paragraphs from above typically occur in completely unrelated | | 10211 | paragraphs from above typically occur in completely unrelated |
10188 | files.</p> | | 10212 | files.</p> |
10189 | </div> | | 10213 | </div> |
10190 | <div class="sect2"> | | 10214 | <div class="sect2"> |
10191 | <div class="titlepage"><div><div><h3 class="title"> | | 10215 | <div class="titlepage"><div><div><h3 class="title"> |
10192 | <a name="infr.var.run"></a>24.3.2. At runtime</h3></div></div></div> | | 10216 | <a name="infr.var.run"></a>24.3.2. At runtime</h3></div></div></div> |
10193 | <p>After all the files have been loaded, the values of the | | 10217 | <p>After all the files have been loaded, the values of the |
10194 | variables cannot be changed anymore. Variables that are used in | | 10218 | variables cannot be changed anymore. Variables that are used in |
10195 | the shell commands are expanded at this point.</p> | | 10219 | the shell commands are expanded at this point.</p> |
10196 | </div> | | 10220 | </div> |
10197 | </div> | | 10221 | </div> |
10198 | <div class="sect1"> | | 10222 | <div class="sect1"> |
10199 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10223 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10200 | <a name="infr.varspec"></a>24.4. How can variables be specified?</h2></div></div></div> | | 10224 | <a name="infr.varspec"></a>24.4. How can variables be specified?</h2></div></div></div> |
10201 | <p>There are many ways in which the definition and use of a | | 10225 | <p>There are many ways in which the definition and use of a |
10202 | variable can be restricted in order to detect bugs and | | 10226 | variable can be restricted in order to detect bugs and |
10203 | violations of the (mostly unwritten) policies. See the | | 10227 | violations of the (mostly unwritten) policies. See the |
10204 | <code class="literal">pkglint</code> developer's documentation for further | | 10228 | <code class="literal">pkglint</code> developer's documentation for further |
10205 | details.</p> | | 10229 | details.</p> |
10206 | </div> | | 10230 | </div> |
10207 | <div class="sect1"> | | 10231 | <div class="sect1"> |
10208 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10232 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10209 | <a name="infr.design.intf"></a>24.5. Designing interfaces for Makefile fragments</h2></div></div></div> | | 10233 | <a name="infr.design.intf"></a>24.5. Designing interfaces for Makefile fragments</h2></div></div></div> |
10210 | <p>Most of the <code class="filename">.mk</code> files fall into one | | 10234 | <p>Most of the <code class="filename">.mk</code> files fall into one |
10211 | of the following classes. Cases where a file falls into more | | 10235 | of the following classes. Cases where a file falls into more |
10212 | than one class should be avoided as it often leads to subtle | | 10236 | than one class should be avoided as it often leads to subtle |
10213 | bugs.</p> | | 10237 | bugs.</p> |
10214 | <div class="sect2"> | | 10238 | <div class="sect2"> |
10215 | <div class="titlepage"><div><div><h3 class="title"> | | 10239 | <div class="titlepage"><div><div><h3 class="title"> |
10216 | <a name="infr.design.intf.proc"></a>24.5.1. Procedures with parameters</h3></div></div></div> | | 10240 | <a name="infr.design.intf.proc"></a>24.5.1. Procedures with parameters</h3></div></div></div> |
10217 | <p>In a traditional imperative programming language some of | | 10241 | <p>In a traditional imperative programming language some of |
10218 | the <code class="filename">.mk</code> files could be described as | | 10242 | the <code class="filename">.mk</code> files could be described as |
10219 | procedures. They take some input parameters and—after | | 10243 | procedures. They take some input parameters and—after |
10220 | inclusion—provide a result in output parameters. Since all | | 10244 | inclusion—provide a result in output parameters. Since all |
10221 | variables in <code class="filename">Makefile</code>s have global scope | | 10245 | variables in <code class="filename">Makefile</code>s have global scope |
10222 | care must be taken not to use parameter names that have already | | 10246 | care must be taken not to use parameter names that have already |
10223 | another meaning. For example, <code class="varname">PKGNAME</code> is a | | 10247 | another meaning. For example, <code class="varname">PKGNAME</code> is a |
10224 | bad choice for a parameter name.</p> | | 10248 | bad choice for a parameter name.</p> |
10225 | <p>Procedures are completely evaluated at preprocessing time. | | 10249 | <p>Procedures are completely evaluated at preprocessing time. |
10226 | That is, when calling a procedure all input parameters must be | | 10250 | That is, when calling a procedure all input parameters must be |
10227 | completely resolvable. For example, | | 10251 | completely resolvable. For example, |
10228 | <code class="varname">CONFIGURE_ARGS</code> should never be an input | | 10252 | <code class="varname">CONFIGURE_ARGS</code> should never be an input |
10229 | parameter since it is very likely that further text will be | | 10253 | parameter since it is very likely that further text will be |
10230 | added after calling the procedure, which would effectively apply | | 10254 | added after calling the procedure, which would effectively apply |
10231 | the procedure to only a part of the variable. Also, references | | 10255 | the procedure to only a part of the variable. Also, references |
10232 | to other variables wit will be modified after calling the | | 10256 | to other variables wit will be modified after calling the |
10233 | procedure.</p> | | 10257 | procedure.</p> |
10234 | <p>A procedure can declare its output parameters either as | | 10258 | <p>A procedure can declare its output parameters either as |
10235 | suitable for use in preprocessing directives or as only | | 10259 | suitable for use in preprocessing directives or as only |
10236 | available at runtime. The latter alternative is for variables | | 10260 | available at runtime. The latter alternative is for variables |
10237 | that contain references to other runtime variables.</p> | | 10261 | that contain references to other runtime variables.</p> |
10238 | <p>Procedures shall be written such that it is possible to | | 10262 | <p>Procedures shall be written such that it is possible to |
10239 | call the procedure more than once. That is, the file must not | | 10263 | call the procedure more than once. That is, the file must not |
10240 | contain multiple-inclusion guards.</p> | | 10264 | contain multiple-inclusion guards.</p> |
10241 | <p>Examples for procedures are | | 10265 | <p>Examples for procedures are |
10242 | <code class="filename">mk/bsd.options.mk</code> and | | 10266 | <code class="filename">mk/bsd.options.mk</code> and |
10243 | <code class="filename">mk/buildlink3/bsd.builtin.mk</code>. To express | | 10267 | <code class="filename">mk/buildlink3/bsd.builtin.mk</code>. To express |
10244 | that the parameters are evaluated at load time, they should be | | 10268 | that the parameters are evaluated at load time, they should be |
10245 | assigned using the <code class="literal">:=</code> operator, which should | | 10269 | assigned using the <code class="literal">:=</code> operator, which should |
10246 | be used only for this purpose.</p> | | 10270 | be used only for this purpose.</p> |
10247 | </div> | | 10271 | </div> |
10248 | <div class="sect2"> | | 10272 | <div class="sect2"> |
10249 | <div class="titlepage"><div><div><h3 class="title"> | | 10273 | <div class="titlepage"><div><div><h3 class="title"> |
10250 | <a name="infr.design.intf.action"></a>24.5.2. Actions taken on behalf of parameters</h3></div></div></div> | | 10274 | <a name="infr.design.intf.action"></a>24.5.2. Actions taken on behalf of parameters</h3></div></div></div> |
10251 | <p>Action files take some input parameters and may define | | 10275 | <p>Action files take some input parameters and may define |
10252 | runtime variables. They shall not define loadtime variables. | | 10276 | runtime variables. They shall not define loadtime variables. |
10253 | There are action files that are included implicitly by the | | 10277 | There are action files that are included implicitly by the |
10254 | pkgsrc infrastructure, while other must be included | | 10278 | pkgsrc infrastructure, while other must be included |
10255 | explicitly.</p> | | 10279 | explicitly.</p> |
10256 | <p>An example for action files is | | 10280 | <p>An example for action files is |
10257 | <code class="filename">mk/subst.mk</code>.</p> | | 10281 | <code class="filename">mk/subst.mk</code>.</p> |
10258 | </div> | | 10282 | </div> |
10259 | </div> | | 10283 | </div> |
10260 | <div class="sect1"> | | 10284 | <div class="sect1"> |
10261 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10285 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10262 | <a name="infr.order"></a>24.6. The order in which files are loaded</h2></div></div></div> | | 10286 | <a name="infr.order"></a>24.6. The order in which files are loaded</h2></div></div></div> |
10263 | <p>Package <code class="filename">Makefile</code>s usually consist of | | 10287 | <p>Package <code class="filename">Makefile</code>s usually consist of |
10264 | a set of variable definitions, and include the file | | 10288 | a set of variable definitions, and include the file |
10265 | <code class="filename">../../mk/bsd.pkg.mk</code> in the very last line. | | 10289 | <code class="filename">../../mk/bsd.pkg.mk</code> in the very last line. |
10266 | Before that, they may also include various other | | 10290 | Before that, they may also include various other |
10267 | <code class="filename">*.mk</code> files if they need to query the | | 10291 | <code class="filename">*.mk</code> files if they need to query the |
10268 | availability of certain features like the type of compiler or | | 10292 | availability of certain features like the type of compiler or |
10269 | the X11 implementation. Due to the heavy use of preprocessor | | 10293 | the X11 implementation. Due to the heavy use of preprocessor |
10270 | directives like <code class="literal">.if</code> and | | 10294 | directives like <code class="literal">.if</code> and |
10271 | <code class="literal">.for</code>, the order in which the files are loaded | | 10295 | <code class="literal">.for</code>, the order in which the files are loaded |
10272 | matters.</p> | | 10296 | matters.</p> |
10273 | <p>This section describes at which point the various files | | 10297 | <p>This section describes at which point the various files |
10274 | are loaded and gives reasons for that order.</p> | | 10298 | are loaded and gives reasons for that order.</p> |
10275 | <div class="sect2"> | | 10299 | <div class="sect2"> |
10276 | <div class="titlepage"><div><div><h3 class="title"> | | 10300 | <div class="titlepage"><div><div><h3 class="title"> |
10277 | <a name="infr.order.prefs"></a>24.6.1. The order in <code class="filename">bsd.prefs.mk</code> | | 10301 | <a name="infr.order.prefs"></a>24.6.1. The order in <code class="filename">bsd.prefs.mk</code> |
10278 | </h3></div></div></div> | | 10302 | </h3></div></div></div> |
10279 | <p>The very first action in <code class="filename">bsd.prefs.mk</code> | | 10303 | <p>The very first action in <code class="filename">bsd.prefs.mk</code> |
10280 | is to define some essential variables like | | 10304 | is to define some essential variables like |
10281 | <code class="varname">OPSYS</code>, <code class="varname">OS_VERSION</code> and | | 10305 | <code class="varname">OPSYS</code>, <code class="varname">OS_VERSION</code> and |
10282 | <code class="varname">MACHINE_ARCH</code>.</p> | | 10306 | <code class="varname">MACHINE_ARCH</code>.</p> |
10283 | <p>Then, the user settings are loaded from the file specified | | 10307 | <p>Then, the user settings are loaded from the file specified |
10284 | in <code class="varname">MAKECONF</code>, which is usually <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. | | 10308 | in <code class="varname">MAKECONF</code>, which is usually <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. |
10285 | After that, those variables | | 10309 | After that, those variables |
10286 | that have not been overridden by the user are loaded from | | 10310 | that have not been overridden by the user are loaded from |
10287 | <code class="filename">mk/defaults/mk.conf</code>.</p> | | 10311 | <code class="filename">mk/defaults/mk.conf</code>.</p> |
10288 | <p>After the user settings, the system settings and platform | | 10312 | <p>After the user settings, the system settings and platform |
10289 | settings are loaded, which may override the user | | 10313 | settings are loaded, which may override the user |
10290 | settings.</p> | | 10314 | settings.</p> |
10291 | <p>Then, the tool definitions are loaded. The tool wrappers | | 10315 | <p>Then, the tool definitions are loaded. The tool wrappers |
10292 | are not yet in effect. This only happens when building a | | 10316 | are not yet in effect. This only happens when building a |
10293 | package, so the proper variables must be used instead of the | | 10317 | package, so the proper variables must be used instead of the |
10294 | direct tool names.</p> | | 10318 | direct tool names.</p> |
10295 | <p>As the last steps, some essential variables from the | | 10319 | <p>As the last steps, some essential variables from the |
10296 | wrapper and the package system flavor are loaded, as well as the | | 10320 | wrapper and the package system flavor are loaded, as well as the |
10297 | variables that have been cached in earlier phases of a package | | 10321 | variables that have been cached in earlier phases of a package |
10298 | build.</p> | | 10322 | build.</p> |
10299 | </div> | | 10323 | </div> |
10300 | <div class="sect2"> | | 10324 | <div class="sect2"> |
10301 | <div class="titlepage"><div><div><h3 class="title"> | | 10325 | <div class="titlepage"><div><div><h3 class="title"> |
10302 | <a name="infr.order.pkg"></a>24.6.2. The order in <code class="filename">bsd.pkg.mk</code> | | 10326 | <a name="infr.order.pkg"></a>24.6.2. The order in <code class="filename">bsd.pkg.mk</code> |
10303 | </h3></div></div></div> | | 10327 | </h3></div></div></div> |
10304 | <p>First, <code class="filename">bsd.prefs.mk</code> is loaded.</p> | | 10328 | <p>First, <code class="filename">bsd.prefs.mk</code> is loaded.</p> |
10305 | <p>Then, the various <code class="filename">*-vars.mk</code> files are | | 10329 | <p>Then, the various <code class="filename">*-vars.mk</code> files are |
10306 | loaded, which fill default values for those variables that have | | 10330 | loaded, which fill default values for those variables that have |
10307 | not been defined by the package. These variables may later | | 10331 | not been defined by the package. These variables may later |
10308 | be used even in unrelated files.</p> | | 10332 | be used even in unrelated files.</p> |
10309 | <p>Then, the file <code class="filename">bsd.pkg.error.mk</code> | | 10333 | <p>Then, the file <code class="filename">bsd.pkg.error.mk</code> |
10310 | provides the target <code class="literal">error-check</code> that is added | | 10334 | provides the target <code class="literal">error-check</code> that is added |
10311 | as a special dependency to all other targets that use | | 10335 | as a special dependency to all other targets that use |
10312 | <code class="varname">DELAYED_ERROR_MSG</code> or | | 10336 | <code class="varname">DELAYED_ERROR_MSG</code> or |
10313 | <code class="varname">DELAYED_WARNING_MSG</code>.</p> | | 10337 | <code class="varname">DELAYED_WARNING_MSG</code>.</p> |
10314 | <p>Then, the package-specific hacks from | | 10338 | <p>Then, the package-specific hacks from |
10315 | <code class="filename">hacks.mk</code> are included.</p> | | 10339 | <code class="filename">hacks.mk</code> are included.</p> |
10316 | <p>Then, various other files follow. Most of them don't have | | 10340 | <p>Then, various other files follow. Most of them don't have |
10317 | any dependencies on what they need to have included before or | | 10341 | any dependencies on what they need to have included before or |
10318 | after them, though some do.</p> | | 10342 | after them, though some do.</p> |
10319 | <p>The code to check <code class="varname">PKG_FAIL_REASON</code> and | | 10343 | <p>The code to check <code class="varname">PKG_FAIL_REASON</code> and |
10320 | <code class="varname">PKG_SKIP_REASON</code> is then executed, which | | 10344 | <code class="varname">PKG_SKIP_REASON</code> is then executed, which |
10321 | restricts the use of these variables to all the files that have | | 10345 | restricts the use of these variables to all the files that have |
10322 | been included before. Appearances in later files will be | | 10346 | been included before. Appearances in later files will be |
10323 | silently ignored.</p> | | 10347 | silently ignored.</p> |
10324 | <p>Then, the files for the main targets are included, in the | | 10348 | <p>Then, the files for the main targets are included, in the |
10325 | order of later execution, though the actual order should not | | 10349 | order of later execution, though the actual order should not |
10326 | matter.</p> | | 10350 | matter.</p> |
10327 | <p>At last, some more files are included that don't set any | | 10351 | <p>At last, some more files are included that don't set any |
10328 | interesting variables but rather just define make targets to be | | 10352 | interesting variables but rather just define make targets to be |
10329 | executed.</p> | | 10353 | executed.</p> |
10330 | </div> | | 10354 | </div> |
10331 | </div> | | 10355 | </div> |
10332 | </div> | | 10356 | </div> |
10333 | <div class="chapter"> | | 10357 | <div class="chapter"> |
10334 | <div class="titlepage"><div><div><h2 class="title"> | | 10358 | <div class="titlepage"><div><div><h2 class="title"> |
10335 | <a name="regression"></a>Chapter 25. Regression tests</h2></div></div></div> | | 10359 | <a name="regression"></a>Chapter 25. Regression tests</h2></div></div></div> |
10336 | <div class="toc"> | | 10360 | <div class="toc"> |
10337 | <p><b>Table of Contents</b></p> | | 10361 | <p><b>Table of Contents</b></p> |
10338 | <dl> | | 10362 | <dl> |
10339 | <dt><span class="sect1"><a href="#regression.descr">25.1. The regression tests framework</a></span></dt> | | 10363 | <dt><span class="sect1"><a href="#regression.descr">25.1. The regression tests framework</a></span></dt> |
10340 | <dt><span class="sect1"><a href="#regression.run">25.2. Running the regression tests</a></span></dt> | | 10364 | <dt><span class="sect1"><a href="#regression.run">25.2. Running the regression tests</a></span></dt> |
10341 | <dt><span class="sect1"><a href="#regression.new">25.3. Adding a new regression test</a></span></dt> | | 10365 | <dt><span class="sect1"><a href="#regression.new">25.3. Adding a new regression test</a></span></dt> |
10342 | <dd><dl> | | 10366 | <dd><dl> |
10343 | <dt><span class="sect2"><a href="#regression.fun.override">25.3.1. Overridable functions</a></span></dt> | | 10367 | <dt><span class="sect2"><a href="#regression.fun.override">25.3.1. Overridable functions</a></span></dt> |
10344 | <dt><span class="sect2"><a href="#regression.fun.helper">25.3.2. Helper functions</a></span></dt> | | 10368 | <dt><span class="sect2"><a href="#regression.fun.helper">25.3.2. Helper functions</a></span></dt> |
10345 | </dl></dd> | | 10369 | </dl></dd> |
10346 | </dl> | | 10370 | </dl> |
10347 | </div> | | 10371 | </div> |
10348 | <p>The pkgsrc infrastructure consists of a large codebase, | | 10372 | <p>The pkgsrc infrastructure consists of a large codebase, |
10349 | and there are many corners where every little bit of a file is | | 10373 | and there are many corners where every little bit of a file is |
10350 | well thought out, making pkgsrc likely to fail as soon as | | 10374 | well thought out, making pkgsrc likely to fail as soon as |
10351 | anything is changed near those parts. To prevent most changes | | 10375 | anything is changed near those parts. To prevent most changes |
10352 | from breaking anything, a suite of regression tests should go | | 10376 | from breaking anything, a suite of regression tests should go |
10353 | along with every important part of the pkgsrc infrastructure. | | 10377 | along with every important part of the pkgsrc infrastructure. |
10354 | This chapter describes how regression tests work in pkgsrc and | | 10378 | This chapter describes how regression tests work in pkgsrc and |
10355 | how you can add new tests.</p> | | 10379 | how you can add new tests.</p> |
10356 | <div class="sect1"> | | 10380 | <div class="sect1"> |
10357 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10381 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10358 | <a name="regression.descr"></a>25.1. The regression tests framework</h2></div></div></div> | | 10382 | <a name="regression.descr"></a>25.1. The regression tests framework</h2></div></div></div> |
10359 | <p></p> | | 10383 | <p></p> |
10360 | </div> | | 10384 | </div> |
10361 | <div class="sect1"> | | 10385 | <div class="sect1"> |
10362 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10386 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10363 | <a name="regression.run"></a>25.2. Running the regression tests</h2></div></div></div> | | 10387 | <a name="regression.run"></a>25.2. Running the regression tests</h2></div></div></div> |
10364 | <p>You first need to install the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_regress/README.html" target="_top"><code class="filename">pkgtools/pkg_regress</code></a> package, which | | 10388 | <p>You first need to install the <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_regress/README.html" target="_top"><code class="filename">pkgtools/pkg_regress</code></a> package, which |
10365 | provides the <span class="command"><strong>pkg_regress</strong></span> command. Then you | | 10389 | provides the <span class="command"><strong>pkg_regress</strong></span> command. Then you |
10366 | can simply run that command, which will run all tests in the | | 10390 | can simply run that command, which will run all tests in the |
10367 | <code class="filename">regress</code> category.</p> | | 10391 | <code class="filename">regress</code> category.</p> |
10368 | </div> | | 10392 | </div> |
10369 | <div class="sect1"> | | 10393 | <div class="sect1"> |
10370 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10394 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10371 | <a name="regression.new"></a>25.3. Adding a new regression test</h2></div></div></div> | | 10395 | <a name="regression.new"></a>25.3. Adding a new regression test</h2></div></div></div> |
10372 | <p>Every directory in the <code class="filename">regress</code> | | 10396 | <p>Every directory in the <code class="filename">regress</code> |
10373 | category that contains a file called <code class="filename">spec</code> | | 10397 | category that contains a file called <code class="filename">spec</code> |
10374 | is considered a regression test. This file is a shell program | | 10398 | is considered a regression test. This file is a shell program |
10375 | that is included by the <span class="command"><strong>pkg_regress</strong></span> command. | | 10399 | that is included by the <span class="command"><strong>pkg_regress</strong></span> command. |
10376 | The following functions can be overridden to suit your | | 10400 | The following functions can be overridden to suit your |
10377 | needs.</p> | | 10401 | needs.</p> |
10378 | <div class="sect2"> | | 10402 | <div class="sect2"> |
10379 | <div class="titlepage"><div><div><h3 class="title"> | | 10403 | <div class="titlepage"><div><div><h3 class="title"> |
10380 | <a name="regression.fun.override"></a>25.3.1. Overridable functions</h3></div></div></div> | | 10404 | <a name="regression.fun.override"></a>25.3.1. Overridable functions</h3></div></div></div> |
10381 | <p>These functions do not take any parameters. They are all | | 10405 | <p>These functions do not take any parameters. They are all |
10382 | called in <span class="quote">“<span class="quote">set -e</span>”</span> mode, so you should be careful | | 10406 | called in <span class="quote">“<span class="quote">set -e</span>”</span> mode, so you should be careful |
10383 | to check the exitcodes of any commands you run in the | | 10407 | to check the exitcodes of any commands you run in the |
10384 | test.</p> | | 10408 | test.</p> |
10385 | <div class="variablelist"><dl class="variablelist"> | | 10409 | <div class="variablelist"><dl class="variablelist"> |
10386 | <dt><span class="term"><code class="varname">do_setup()</code></span></dt> | | 10410 | <dt><span class="term"><code class="varname">do_setup()</code></span></dt> |
10387 | <dd><p>This function prepares the environment for the | | 10411 | <dd><p>This function prepares the environment for the |
10388 | test. By default it does nothing.</p></dd> | | 10412 | test. By default it does nothing.</p></dd> |
10389 | <dt><span class="term"><code class="varname">do_test()</code></span></dt> | | 10413 | <dt><span class="term"><code class="varname">do_test()</code></span></dt> |
10390 | <dd><p>This function runs the actual test. By default, | | 10414 | <dd><p>This function runs the actual test. By default, |
10391 | it calls <code class="varname">TEST_MAKE</code> with the arguments | | 10415 | it calls <code class="varname">TEST_MAKE</code> with the arguments |
10392 | <code class="varname">MAKEARGS_TEST</code> and writes its output including | | 10416 | <code class="varname">MAKEARGS_TEST</code> and writes its output including |
10393 | error messages into the file | | 10417 | error messages into the file |
10394 | <code class="varname">TEST_OUTFILE</code>.</p></dd> | | 10418 | <code class="varname">TEST_OUTFILE</code>.</p></dd> |
10395 | <dt><span class="term"><code class="varname">check_result()</code></span></dt> | | 10419 | <dt><span class="term"><code class="varname">check_result()</code></span></dt> |
10396 | <dd><p>This function is run after the test and is | | 10420 | <dd><p>This function is run after the test and is |
10397 | typically used to compare the actual output from the one that is | | 10421 | typically used to compare the actual output from the one that is |
10398 | expected. It can make use of the various helper functions from | | 10422 | expected. It can make use of the various helper functions from |
10399 | the next section.</p></dd> | | 10423 | the next section.</p></dd> |
10400 | <dt><span class="term"><code class="varname">do_cleanup()</code></span></dt> | | 10424 | <dt><span class="term"><code class="varname">do_cleanup()</code></span></dt> |
10401 | <dd><p>This function cleans everything up after the | | 10425 | <dd><p>This function cleans everything up after the |
10402 | test has been run. By default it does nothing.</p></dd> | | 10426 | test has been run. By default it does nothing.</p></dd> |
10403 | </dl></div> | | 10427 | </dl></div> |
10404 | </div> | | 10428 | </div> |
10405 | <div class="sect2"> | | 10429 | <div class="sect2"> |
10406 | <div class="titlepage"><div><div><h3 class="title"> | | 10430 | <div class="titlepage"><div><div><h3 class="title"> |
10407 | <a name="regression.fun.helper"></a>25.3.2. Helper functions</h3></div></div></div> | | 10431 | <a name="regression.fun.helper"></a>25.3.2. Helper functions</h3></div></div></div> |
10408 | <div class="variablelist"><dl class="variablelist"> | | 10432 | <div class="variablelist"><dl class="variablelist"> |
10409 | <dt><span class="term"><code class="varname">exit_status(expected)</code></span></dt> | | 10433 | <dt><span class="term"><code class="varname">exit_status(expected)</code></span></dt> |
10410 | <dd><p>This function compares the exitcode of the | | 10434 | <dd><p>This function compares the exitcode of the |
10411 | <span class="command"><strong>do_test()</strong></span> function with its first parameter. | | 10435 | <span class="command"><strong>do_test()</strong></span> function with its first parameter. |
10412 | If they differ, the test will fail.</p></dd> | | 10436 | If they differ, the test will fail.</p></dd> |
10413 | <dt><span class="term"><code class="varname">output_require(regex...)</code></span></dt> | | 10437 | <dt><span class="term"><code class="varname">output_require(regex...)</code></span></dt> |
10414 | <dd><p>This function checks for each of its parameters | | 10438 | <dd><p>This function checks for each of its parameters |
10415 | if the output from <span class="command"><strong>do_test()</strong></span> matches the | | 10439 | if the output from <span class="command"><strong>do_test()</strong></span> matches the |
10416 | extended regular expression. If it does not, the test will | | 10440 | extended regular expression. If it does not, the test will |
10417 | fail.</p></dd> | | 10441 | fail.</p></dd> |
10418 | <dt><span class="term"><code class="varname">output_prohibit(regex...)</code></span></dt> | | 10442 | <dt><span class="term"><code class="varname">output_prohibit(regex...)</code></span></dt> |
10419 | <dd><p>This function checks for each of its parameters | | 10443 | <dd><p>This function checks for each of its parameters |
10420 | if the output from <span class="command"><strong>do_test()</strong></span> does | | 10444 | if the output from <span class="command"><strong>do_test()</strong></span> does |
10421 | <span class="emphasis"><em>not</em></span> match the extended regular expression. | | 10445 | <span class="emphasis"><em>not</em></span> match the extended regular expression. |
10422 | If any of the regular expressions matches, the test will | | 10446 | If any of the regular expressions matches, the test will |
10423 | fail.</p></dd> | | 10447 | fail.</p></dd> |
10424 | </dl></div> | | 10448 | </dl></div> |
10425 | </div> | | 10449 | </div> |
10426 | </div> | | 10450 | </div> |
10427 | </div> | | 10451 | </div> |
10428 | <div class="chapter"> | | 10452 | <div class="chapter"> |
10429 | <div class="titlepage"><div><div><h2 class="title"> | | 10453 | <div class="titlepage"><div><div><h2 class="title"> |
10430 | <a name="porting"></a>Chapter 26. Porting pkgsrc</h2></div></div></div> | | 10454 | <a name="porting"></a>Chapter 26. Porting pkgsrc</h2></div></div></div> |
10431 | <div class="toc"> | | 10455 | <div class="toc"> |
10432 | <p><b>Table of Contents</b></p> | | 10456 | <p><b>Table of Contents</b></p> |
10433 | <dl> | | 10457 | <dl> |
10434 | <dt><span class="sect1"><a href="#porting.opsys">26.1. Porting pkgsrc to a new operating system</a></span></dt> | | 10458 | <dt><span class="sect1"><a href="#porting.opsys">26.1. Porting pkgsrc to a new operating system</a></span></dt> |
10435 | <dt><span class="sect1"><a href="#porting.compiler">26.2. Adding support for a new compiler</a></span></dt> | | 10459 | <dt><span class="sect1"><a href="#porting.compiler">26.2. Adding support for a new compiler</a></span></dt> |
10436 | </dl> | | 10460 | </dl> |
10437 | </div> | | 10461 | </div> |
10438 | <p>The pkgsrc system has already been ported to many | | 10462 | <p>The pkgsrc system has already been ported to many |
10439 | operating systems, hardware architectures and compilers. This | | 10463 | operating systems, hardware architectures and compilers. This |
10440 | chapter explains the necessary steps to make pkgsrc even more | | 10464 | chapter explains the necessary steps to make pkgsrc even more |
10441 | portable.</p> | | 10465 | portable.</p> |
10442 | <div class="sect1"> | | 10466 | <div class="sect1"> |
10443 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10467 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10444 | <a name="porting.opsys"></a>26.1. Porting pkgsrc to a new operating system</h2></div></div></div> | | 10468 | <a name="porting.opsys"></a>26.1. Porting pkgsrc to a new operating system</h2></div></div></div> |
10445 | <p>To port pkgsrc to a new operating system (called | | 10469 | <p>To port pkgsrc to a new operating system (called |
10446 | <code class="literal">MyOS</code> in this example), you need to touch the | | 10470 | <code class="literal">MyOS</code> in this example), you need to touch the |
10447 | following files:</p> | | 10471 | following files:</p> |
10448 | <div class="variablelist"><dl class="variablelist"> | | 10472 | <div class="variablelist"><dl class="variablelist"> |
10449 | <dt><span class="term"><code class="filename">pkgtools/bootstrap-mk-files/files/mods/<em class="replaceable"><code>MyOS</code></em>.sys.mk</code></span></dt> | | 10473 | <dt><span class="term"><code class="filename">pkgtools/bootstrap-mk-files/files/mods/<em class="replaceable"><code>MyOS</code></em>.sys.mk</code></span></dt> |
10450 | <dd><p>This file contains some basic definitions, for | | 10474 | <dd><p>This file contains some basic definitions, for |
10451 | example the name of the C | | 10475 | example the name of the C |
10452 | compiler.</p></dd> | | 10476 | compiler.</p></dd> |
10453 | <dt><span class="term"><code class="filename">mk/bsd.prefs.mk</code></span></dt> | | 10477 | <dt><span class="term"><code class="filename">mk/bsd.prefs.mk</code></span></dt> |
10454 | <dd><p>Insert code that defines the variables | | 10478 | <dd><p>Insert code that defines the variables |
10455 | <code class="varname">OPSYS</code>, <code class="varname">OS_VERSION</code>, | | 10479 | <code class="varname">OPSYS</code>, <code class="varname">OS_VERSION</code>, |
10456 | <code class="varname">LOWER_OS_VERSION</code>, | | 10480 | <code class="varname">LOWER_OS_VERSION</code>, |
10457 | <code class="varname">LOWER_VENDOR</code>, | | 10481 | <code class="varname">LOWER_VENDOR</code>, |
10458 | <code class="varname">MACHINE_ARCH</code>, <code class="varname">OBJECT_FMT</code>, | | 10482 | <code class="varname">MACHINE_ARCH</code>, <code class="varname">OBJECT_FMT</code>, |
10459 | <code class="varname">APPEND_ELF</code>, and the other variables that | | 10483 | <code class="varname">APPEND_ELF</code>, and the other variables that |
10460 | appear in this file.</p></dd> | | 10484 | appear in this file.</p></dd> |
10461 | <dt><span class="term"><code class="filename">mk/platform/<em class="replaceable"><code>MyOS</code></em>.mk</code></span></dt> | | 10485 | <dt><span class="term"><code class="filename">mk/platform/<em class="replaceable"><code>MyOS</code></em>.mk</code></span></dt> |
10462 | <dd><p>This file contains the platform-specific | | 10486 | <dd><p>This file contains the platform-specific |
10463 | definitions that are used by pkgsrc. Start by copying one of the | | 10487 | definitions that are used by pkgsrc. Start by copying one of the |
10464 | other files and edit it to your | | 10488 | other files and edit it to your |
10465 | needs.</p></dd> | | 10489 | needs.</p></dd> |
10466 | <dt><span class="term"><code class="filename">mk/tools/tools.<em class="replaceable"><code>MyOS</code></em>.mk</code></span></dt> | | 10490 | <dt><span class="term"><code class="filename">mk/tools/tools.<em class="replaceable"><code>MyOS</code></em>.mk</code></span></dt> |
10467 | <dd><p>This file defines the paths to all the tools | | 10491 | <dd><p>This file defines the paths to all the tools |
10468 | that are needed by one or the other package in pkgsrc, as well | | 10492 | that are needed by one or the other package in pkgsrc, as well |
10469 | as by pkgsrc itself. Find out where these tools are on your | | 10493 | as by pkgsrc itself. Find out where these tools are on your |
10470 | platform and add them.</p></dd> | | 10494 | platform and add them.</p></dd> |
10471 | </dl></div> | | 10495 | </dl></div> |
10472 | <p>Now, you should be able to build some basic packages, like | | 10496 | <p>Now, you should be able to build some basic packages, like |
10473 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/lang/perl5/README.html" target="_top"><code class="filename">lang/perl5</code></a>, <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/shells/bash/README.html" target="_top"><code class="filename">shells/bash</code></a>.</p> | | 10497 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/lang/perl5/README.html" target="_top"><code class="filename">lang/perl5</code></a>, <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/shells/bash/README.html" target="_top"><code class="filename">shells/bash</code></a>.</p> |
10474 | </div> | | 10498 | </div> |
10475 | <div class="sect1"> | | 10499 | <div class="sect1"> |
10476 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10500 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10477 | <a name="porting.compiler"></a>26.2. Adding support for a new compiler</h2></div></div></div> | | 10501 | <a name="porting.compiler"></a>26.2. Adding support for a new compiler</h2></div></div></div> |
10478 | <p>TODO</p> | | 10502 | <p>TODO</p> |
10479 | </div> | | 10503 | </div> |
10480 | </div> | | 10504 | </div> |
10481 | </div> | | 10505 | </div> |
10482 | <div class="appendix"> | | 10506 | <div class="appendix"> |
10483 | <div class="titlepage"><div><div><h1 class="title"> | | 10507 | <div class="titlepage"><div><div><h1 class="title"> |
10484 | <a name="examples"></a>Appendix A. A simple example package: bison</h1></div></div></div> | | 10508 | <a name="examples"></a>Appendix A. A simple example package: bison</h1></div></div></div> |
10485 | <div class="toc"> | | 10509 | <div class="toc"> |
10486 | <p><b>Table of Contents</b></p> | | 10510 | <p><b>Table of Contents</b></p> |
10487 | <dl> | | 10511 | <dl> |
10488 | <dt><span class="sect1"><a href="#example-files">A.1. files</a></span></dt> | | 10512 | <dt><span class="sect1"><a href="#example-files">A.1. files</a></span></dt> |
10489 | <dd><dl> | | 10513 | <dd><dl> |
10490 | <dt><span class="sect2"><a href="#example-Makefile">A.1.1. Makefile</a></span></dt> | | 10514 | <dt><span class="sect2"><a href="#example-Makefile">A.1.1. Makefile</a></span></dt> |
10491 | <dt><span class="sect2"><a href="#example-descr">A.1.2. DESCR</a></span></dt> | | 10515 | <dt><span class="sect2"><a href="#example-descr">A.1.2. DESCR</a></span></dt> |
10492 | <dt><span class="sect2"><a href="#example-plist">A.1.3. PLIST</a></span></dt> | | 10516 | <dt><span class="sect2"><a href="#example-plist">A.1.3. PLIST</a></span></dt> |
10493 | <dt><span class="sect2"><a href="#checking-package-with-pkglint">A.1.4. Checking a package with <span class="command"><strong>pkglint</strong></span></a></span></dt> | | 10517 | <dt><span class="sect2"><a href="#checking-package-with-pkglint">A.1.4. Checking a package with <span class="command"><strong>pkglint</strong></span></a></span></dt> |
10494 | </dl></dd> | | 10518 | </dl></dd> |
10495 | <dt><span class="sect1"><a href="#steps-for-b-i-p">A.2. Steps for building, installing, packaging</a></span></dt> | | 10519 | <dt><span class="sect1"><a href="#steps-for-b-i-p">A.2. Steps for building, installing, packaging</a></span></dt> |
10496 | </dl> | | 10520 | </dl> |
10497 | </div> | | 10521 | </div> |
10498 | <p>We checked to find a piece of software that wasn't in the packages | | 10522 | <p>We checked to find a piece of software that wasn't in the packages |
10499 | collection, and picked GNU bison. Quite why someone would want to have | | 10523 | collection, and picked GNU bison. Quite why someone would want to have |
10500 | <span class="command"><strong>bison</strong></span> when Berkeley <span class="command"><strong>yacc</strong></span> is already | | 10524 | <span class="command"><strong>bison</strong></span> when Berkeley <span class="command"><strong>yacc</strong></span> is already |
10501 | present in the tree is beyond us, but it's useful for the purposes of | | 10525 | present in the tree is beyond us, but it's useful for the purposes of |
10502 | this exercise.</p> | | 10526 | this exercise.</p> |
10503 | <div class="sect1"> | | 10527 | <div class="sect1"> |
10504 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10528 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10505 | <a name="example-files"></a>A.1. files</h2></div></div></div> | | 10529 | <a name="example-files"></a>A.1. files</h2></div></div></div> |
10506 | <div class="sect2"> | | 10530 | <div class="sect2"> |
10507 | <div class="titlepage"><div><div><h3 class="title"> | | 10531 | <div class="titlepage"><div><div><h3 class="title"> |
10508 | <a name="example-Makefile"></a>A.1.1. Makefile</h3></div></div></div> | | 10532 | <a name="example-Makefile"></a>A.1.1. Makefile</h3></div></div></div> |
10509 | <pre class="programlisting"> | | 10533 | <pre class="programlisting"> |
10510 | # $NetBSD$ | | 10534 | # $NetBSD$ |
10511 | # | | 10535 | # |
10512 | | | 10536 | |
10513 | DISTNAME= bison-1.25 | | 10537 | DISTNAME= bison-1.25 |
10514 | CATEGORIES= devel | | 10538 | CATEGORIES= devel |
10515 | MASTER_SITES= ${MASTER_SITE_GNU} | | 10539 | MASTER_SITES= ${MASTER_SITE_GNU} |
10516 | | | 10540 | |
10517 | MAINTAINER= pkgsrc-users@NetBSD.org | | 10541 | MAINTAINER= pkgsrc-users@NetBSD.org |
10518 | HOMEPAGE= http://www.gnu.org/software/bison/bison.html | | 10542 | HOMEPAGE= http://www.gnu.org/software/bison/bison.html |
10519 | COMMENT= GNU yacc clone | | 10543 | COMMENT= GNU yacc clone |
10520 | | | 10544 | |
10521 | GNU_CONFIGURE= yes | | 10545 | GNU_CONFIGURE= yes |
10522 | INFO_FILES= yes | | 10546 | INFO_FILES= yes |
10523 | | | 10547 | |
10524 | .include "../../mk/bsd.pkg.mk" | | 10548 | .include "../../mk/bsd.pkg.mk" |
10525 | </pre> | | 10549 | </pre> |
10526 | </div> | | 10550 | </div> |
10527 | <div class="sect2"> | | 10551 | <div class="sect2"> |
10528 | <div class="titlepage"><div><div><h3 class="title"> | | 10552 | <div class="titlepage"><div><div><h3 class="title"> |
10529 | <a name="example-descr"></a>A.1.2. DESCR</h3></div></div></div> | | 10553 | <a name="example-descr"></a>A.1.2. DESCR</h3></div></div></div> |
10530 | <pre class="programlisting"> | | 10554 | <pre class="programlisting"> |
10531 | GNU version of yacc. Can make re-entrant parsers, and numerous other | | 10555 | GNU version of yacc. Can make re-entrant parsers, and numerous other |
10532 | improvements. Why you would want this when Berkeley <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?yacc+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">yacc</span>(1)</span></a> is part | | 10556 | improvements. Why you would want this when Berkeley <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?yacc+1+NetBSD-5.0.1+i386"><span class="citerefentry"><span class="refentrytitle">yacc</span>(1)</span></a> is part |
10533 | of the NetBSD source tree is beyond me. | | 10557 | of the NetBSD source tree is beyond me. |
10534 | </pre> | | 10558 | </pre> |
10535 | </div> | | 10559 | </div> |
10536 | <div class="sect2"> | | 10560 | <div class="sect2"> |
10537 | <div class="titlepage"><div><div><h3 class="title"> | | 10561 | <div class="titlepage"><div><div><h3 class="title"> |
10538 | <a name="example-plist"></a>A.1.3. PLIST</h3></div></div></div> | | 10562 | <a name="example-plist"></a>A.1.3. PLIST</h3></div></div></div> |
10539 | <pre class="programlisting"> | | 10563 | <pre class="programlisting"> |
10540 | @comment $NetBSD$ | | 10564 | @comment $NetBSD$ |
10541 | bin/bison | | 10565 | bin/bison |
10542 | man/man1/bison.1.gz | | 10566 | man/man1/bison.1.gz |
10543 | share/bison.simple | | 10567 | share/bison.simple |
10544 | share/bison.hairy | | 10568 | share/bison.hairy |
10545 | </pre> | | 10569 | </pre> |
10546 | </div> | | 10570 | </div> |
10547 | <div class="sect2"> | | 10571 | <div class="sect2"> |
10548 | <div class="titlepage"><div><div><h3 class="title"> | | 10572 | <div class="titlepage"><div><div><h3 class="title"> |
10549 | <a name="checking-package-with-pkglint"></a>A.1.4. Checking a package with <span class="command"><strong>pkglint</strong></span> | | 10573 | <a name="checking-package-with-pkglint"></a>A.1.4. Checking a package with <span class="command"><strong>pkglint</strong></span> |
10550 | </h3></div></div></div> | | 10574 | </h3></div></div></div> |
10551 | <p>The NetBSD package system comes with | | 10575 | <p>The NetBSD package system comes with |
10552 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a> | | 10576 | <a href="ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a> |
10553 | which helps to check the contents of these | | 10577 | which helps to check the contents of these |
10554 | files. After installation it is quite easy to use, just change to the | | 10578 | files. After installation it is quite easy to use, just change to the |
10555 | directory of the package you wish to examine and execute | | 10579 | directory of the package you wish to examine and execute |
10556 | <span class="command"><strong>pkglint</strong></span>:</p> | | 10580 | <span class="command"><strong>pkglint</strong></span>:</p> |
10557 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>pkglint</code></strong> | | 10581 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>pkglint</code></strong> |
10558 | looks fine.</pre> | | 10582 | looks fine.</pre> |
10559 | <p>Depending on the supplied command line arguments (see pkglint(1)), | | 10583 | <p>Depending on the supplied command line arguments (see pkglint(1)), |
10560 | more checks will be performed. Use e.g. <span class="command"><strong>pkglint -Call | | 10584 | more checks will be performed. Use e.g. <span class="command"><strong>pkglint -Call |
10561 | -Wall</strong></span> for a very thorough check.</p> | | 10585 | -Wall</strong></span> for a very thorough check.</p> |
10562 | </div> | | 10586 | </div> |
10563 | </div> | | 10587 | </div> |
10564 | <div class="sect1"> | | 10588 | <div class="sect1"> |
10565 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10589 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10566 | <a name="steps-for-b-i-p"></a>A.2. Steps for building, installing, packaging</h2></div></div></div> | | 10590 | <a name="steps-for-b-i-p"></a>A.2. Steps for building, installing, packaging</h2></div></div></div> |
10567 | <p>Create the directory where the package lives, | | 10591 | <p>Create the directory where the package lives, |
10568 | plus any auxiliary directories:</p> | | 10592 | plus any auxiliary directories:</p> |
10569 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>cd /usr/pkgsrc/lang</code></strong> | | 10593 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>cd /usr/pkgsrc/lang</code></strong> |
10570 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir bison</code></strong> | | 10594 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir bison</code></strong> |
10571 | <code class="prompt">#</code> <strong class="userinput"><code>cd bison</code></strong> | | 10595 | <code class="prompt">#</code> <strong class="userinput"><code>cd bison</code></strong> |
10572 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir patches</code></strong></pre> | | 10596 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir patches</code></strong></pre> |
10573 | <p>Create <code class="filename">Makefile</code>, <code class="filename">DESCR</code> and | | 10597 | <p>Create <code class="filename">Makefile</code>, <code class="filename">DESCR</code> and |
10574 | <code class="filename">PLIST</code> (see <a class="xref" href="#components" title="Chapter 11. Package components - files, directories and contents">Chapter 11, <i>Package components - files, directories and contents</i></a>) | | 10598 | <code class="filename">PLIST</code> (see <a class="xref" href="#components" title="Chapter 11. Package components - files, directories and contents">Chapter 11, <i>Package components - files, directories and contents</i></a>) |
10575 | then continue with fetching the distfile:</p> | | 10599 | then continue with fetching the distfile:</p> |
10576 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make fetch</code></strong> | | 10600 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make fetch</code></strong> |
10577 | >> bison-1.25.tar.gz doesn't seem to exist on this system. | | 10601 | >> bison-1.25.tar.gz doesn't seem to exist on this system. |
10578 | >> Attempting to fetch from ftp://prep.ai.mit.edu/pub/gnu//. | | 10602 | >> Attempting to fetch from ftp://prep.ai.mit.edu/pub/gnu//. |
10579 | Requesting ftp://prep.ai.mit.edu/pub/gnu//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/) | | 10603 | Requesting ftp://prep.ai.mit.edu/pub/gnu//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/) |
10580 | ftp: Error retrieving file: 500 Internal error | | 10604 | ftp: Error retrieving file: 500 Internal error |
10581 | | | 10605 | |
10582 | >> Attempting to fetch from ftp://wuarchive.wustl.edu/systems/gnu//. | | 10606 | >> Attempting to fetch from ftp://wuarchive.wustl.edu/systems/gnu//. |
10583 | Requesting ftp://wuarchive.wustl.edu/systems/gnu//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/) | | 10607 | Requesting ftp://wuarchive.wustl.edu/systems/gnu//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/) |
10584 | ftp: Error retrieving file: 500 Internal error | | 10608 | ftp: Error retrieving file: 500 Internal error |
10585 | | | 10609 | |
10586 | >> Attempting to fetch from ftp://ftp.freebsd.org/pub/FreeBSD/distfiles//. | | 10610 | >> Attempting to fetch from ftp://ftp.freebsd.org/pub/FreeBSD/distfiles//. |
10587 | Requesting ftp://ftp.freebsd.org/pub/FreeBSD/distfiles//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/) | | 10611 | Requesting ftp://ftp.freebsd.org/pub/FreeBSD/distfiles//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/) |
10588 | Successfully retrieved file.</pre> | | 10612 | Successfully retrieved file.</pre> |
10589 | <p>Generate the checksum of the distfile into | | 10613 | <p>Generate the checksum of the distfile into |
10590 | <code class="filename">distinfo</code>:</p> | | 10614 | <code class="filename">distinfo</code>:</p> |
10591 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make makedistinfo</code></strong></pre> | | 10615 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make makedistinfo</code></strong></pre> |
10592 | <p>Now compile:</p> | | 10616 | <p>Now compile:</p> |
10593 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make</code></strong> | | 10617 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make</code></strong> |
10594 | >> Checksum OK for bison-1.25.tar.gz. | | 10618 | >> Checksum OK for bison-1.25.tar.gz. |
10595 | ===> Extracting for bison-1.25 | | 10619 | ===> Extracting for bison-1.25 |
10596 | ===> Patching for bison-1.25 | | 10620 | ===> Patching for bison-1.25 |
10597 | ===> Ignoring empty patch directory | | 10621 | ===> Ignoring empty patch directory |
10598 | ===> Configuring for bison-1.25 | | 10622 | ===> Configuring for bison-1.25 |
10599 | creating cache ./config.cache | | 10623 | creating cache ./config.cache |
10600 | checking for gcc... cc | | 10624 | checking for gcc... cc |
10601 | checking whether we are using GNU C... yes | | 10625 | checking whether we are using GNU C... yes |
10602 | checking for a BSD compatible install... /usr/bin/install -c -o bin -g bin | | 10626 | checking for a BSD compatible install... /usr/bin/install -c -o bin -g bin |
10603 | checking how to run the C preprocessor... cc -E | | 10627 | checking how to run the C preprocessor... cc -E |
10604 | checking for minix/config.h... no | | 10628 | checking for minix/config.h... no |
10605 | checking for POSIXized ISC... no | | 10629 | checking for POSIXized ISC... no |
10606 | checking whether cross-compiling... no | | 10630 | checking whether cross-compiling... no |
10607 | checking for ANSI C header files... yes | | 10631 | checking for ANSI C header files... yes |
10608 | checking for string.h... yes | | 10632 | checking for string.h... yes |
10609 | checking for stdlib.h... yes | | 10633 | checking for stdlib.h... yes |
10610 | checking for memory.h... yes | | 10634 | checking for memory.h... yes |
10611 | checking for working const... yes | | 10635 | checking for working const... yes |
10612 | checking for working alloca.h... no | | 10636 | checking for working alloca.h... no |
10613 | checking for alloca... yes | | 10637 | checking for alloca... yes |
10614 | checking for strerror... yes | | 10638 | checking for strerror... yes |
10615 | updating cache ./config.cache | | 10639 | updating cache ./config.cache |
10616 | creating ./config.status | | 10640 | creating ./config.status |
10617 | creating Makefile | | 10641 | creating Makefile |
10618 | ===> Building for bison-1.25 | | 10642 | ===> Building for bison-1.25 |
10619 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g LR0.c | | 10643 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g LR0.c |
10620 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g allocate.c | | 10644 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g allocate.c |
10621 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g closure.c | | 10645 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g closure.c |
10622 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g conflicts.c | | 10646 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g conflicts.c |
10623 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g derives.c | | 10647 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g derives.c |
10624 | cc -c -DXPFILE=\"/usr/pkg/share/bison.simple\" -DXPFILE1=\"/usr/pkg/share/bison.hairy\" -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -g ./files.c | | 10648 | cc -c -DXPFILE=\"/usr/pkg/share/bison.simple\" -DXPFILE1=\"/usr/pkg/share/bison.hairy\" -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -g ./files.c |
10625 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g getargs.c | | 10649 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g getargs.c |
10626 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g gram.c | | 10650 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g gram.c |
10627 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g lalr.c | | 10651 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g lalr.c |
10628 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g lex.c | | 10652 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g lex.c |
10629 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g main.c | | 10653 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g main.c |
10630 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g nullable.c | | 10654 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g nullable.c |
10631 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g output.c | | 10655 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g output.c |
10632 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g print.c | | 10656 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g print.c |
10633 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g reader.c | | 10657 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g reader.c |
10634 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g reduce.c | | 10658 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g reduce.c |
10635 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g symtab.c | | 10659 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g symtab.c |
10636 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g warshall.c | | 10660 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g warshall.c |
10637 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g version.c | | 10661 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g version.c |
10638 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g getopt.c | | 10662 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g getopt.c |
10639 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g getopt1.c | | 10663 | cc -c -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRERROR=1 -I./../include -g getopt1.c |
10640 | cc -g -o bison LR0.o allocate.o closure.o conflicts.o derives.o files.o getargs.o gram.o lalr.o lex.o main.o nullable.o output.o print.o reader.o reduce.o symtab.o warshall.o version.o getopt.o getopt1.o | | 10664 | cc -g -o bison LR0.o allocate.o closure.o conflicts.o derives.o files.o getargs.o gram.o lalr.o lex.o main.o nullable.o output.o print.o reader.o reduce.o symtab.o warshall.o version.o getopt.o getopt1.o |
10641 | ./files.c:240: warning: mktemp() possibly used unsafely, consider using mkstemp() | | 10665 | ./files.c:240: warning: mktemp() possibly used unsafely, consider using mkstemp() |
10642 | rm -f bison.s1 | | 10666 | rm -f bison.s1 |
10643 | sed -e "/^#line/ s|bison|/usr/pkg/share/bison|" < ./bison.simple > bison.s1</pre> | | 10667 | sed -e "/^#line/ s|bison|/usr/pkg/share/bison|" < ./bison.simple > bison.s1</pre> |
10644 | <p>Everything seems OK, so install the files:</p> | | 10668 | <p>Everything seems OK, so install the files:</p> |
10645 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make install</code></strong> | | 10669 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make install</code></strong> |
10646 | >> Checksum OK for bison-1.25.tar.gz. | | 10670 | >> Checksum OK for bison-1.25.tar.gz. |
10647 | ===> Installing for bison-1.25 | | 10671 | ===> Installing for bison-1.25 |
10648 | sh ./mkinstalldirs /usr/pkg/bin /usr/pkg/share /usr/pkg/info /usr/pkg/man/man1 | | 10672 | sh ./mkinstalldirs /usr/pkg/bin /usr/pkg/share /usr/pkg/info /usr/pkg/man/man1 |
10649 | rm -f /usr/pkg/bin/bison | | 10673 | rm -f /usr/pkg/bin/bison |
10650 | cd /usr/pkg/share; rm -f bison.simple bison.hairy | | 10674 | cd /usr/pkg/share; rm -f bison.simple bison.hairy |
10651 | rm -f /usr/pkg/man/man1/bison.1 /usr/pkg/info/bison.info* | | 10675 | rm -f /usr/pkg/man/man1/bison.1 /usr/pkg/info/bison.info* |
10652 | install -c -o bin -g bin -m 555 bison /usr/pkg/bin/bison | | 10676 | install -c -o bin -g bin -m 555 bison /usr/pkg/bin/bison |
10653 | /usr/bin/install -c -o bin -g bin -m 644 bison.s1 /usr/pkg/share/bison.simple | | 10677 | /usr/bin/install -c -o bin -g bin -m 644 bison.s1 /usr/pkg/share/bison.simple |
10654 | /usr/bin/install -c -o bin -g bin -m 644 ./bison.hairy /usr/pkg/share/bison.hairy | | 10678 | /usr/bin/install -c -o bin -g bin -m 644 ./bison.hairy /usr/pkg/share/bison.hairy |
10655 | cd .; for f in bison.info*; do /usr/bin/install -c -o bin -g bin -m 644 $f /usr/pkg/info/$f; done | | 10679 | cd .; for f in bison.info*; do /usr/bin/install -c -o bin -g bin -m 644 $f /usr/pkg/info/$f; done |
10656 | /usr/bin/install -c -o bin -g bin -m 644 ./bison.1 /usr/pkg/man/man1/bison.1 | | 10680 | /usr/bin/install -c -o bin -g bin -m 644 ./bison.1 /usr/pkg/man/man1/bison.1 |
10657 | ===> Registering installation for bison-1.25</pre> | | 10681 | ===> Registering installation for bison-1.25</pre> |
10658 | <p>You can now use bison, and also - if you decide so - remove it with | | 10682 | <p>You can now use bison, and also - if you decide so - remove it with |
10659 | <span class="command"><strong>pkg_delete bison</strong></span>. Should you decide that you want a | | 10683 | <span class="command"><strong>pkg_delete bison</strong></span>. Should you decide that you want a |
10660 | binary package, do this now:</p> | | 10684 | binary package, do this now:</p> |
10661 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make package</code></strong> | | 10685 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make package</code></strong> |
10662 | >> Checksum OK for bison-1.25.tar.gz. | | 10686 | >> Checksum OK for bison-1.25.tar.gz. |
10663 | ===> Building package for bison-1.25 | | 10687 | ===> Building package for bison-1.25 |
10664 | Creating package bison-1.25.tgz | | 10688 | Creating package bison-1.25.tgz |
10665 | Registering depends:. | | 10689 | Registering depends:. |
10666 | Creating gzip'd tar ball in '/u/pkgsrc/lang/bison/bison-1.25.tgz'</pre> | | 10690 | Creating gzip'd tar ball in '/u/pkgsrc/lang/bison/bison-1.25.tgz'</pre> |
10667 | <p>Now that you don't need the source and object files | | 10691 | <p>Now that you don't need the source and object files |
10668 | any more, clean up:</p> | | 10692 | any more, clean up:</p> |
10669 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make clean</code></strong> | | 10693 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make clean</code></strong> |
10670 | ===> Cleaning for bison-1.25</pre> | | 10694 | ===> Cleaning for bison-1.25</pre> |
10671 | </div> | | 10695 | </div> |
10672 | </div> | | 10696 | </div> |
10673 | <div class="appendix"> | | 10697 | <div class="appendix"> |
10674 | <div class="titlepage"><div><div><h1 class="title"> | | 10698 | <div class="titlepage"><div><div><h1 class="title"> |
10675 | <a name="logs"></a>Appendix B. Build logs</h1></div></div></div> | | 10699 | <a name="logs"></a>Appendix B. Build logs</h1></div></div></div> |
10676 | <div class="toc"> | | 10700 | <div class="toc"> |
10677 | <p><b>Table of Contents</b></p> | | 10701 | <p><b>Table of Contents</b></p> |
10678 | <dl> | | 10702 | <dl> |
10679 | <dt><span class="sect1"><a href="#logs.building">B.1. Building figlet</a></span></dt> | | 10703 | <dt><span class="sect1"><a href="#logs.building">B.1. Building figlet</a></span></dt> |
10680 | <dt><span class="sect1"><a href="#logs.package">B.2. Packaging figlet</a></span></dt> | | 10704 | <dt><span class="sect1"><a href="#logs.package">B.2. Packaging figlet</a></span></dt> |
10681 | </dl> | | 10705 | </dl> |
10682 | </div> | | 10706 | </div> |
10683 | <div class="sect1"> | | 10707 | <div class="sect1"> |
10684 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10708 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |