| @@ -1,10354 +1,10354 @@ | | | @@ -1,10354 +1,10354 @@ |
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-2017 The NetBSD Foundation, Inc</p></div> | | 33 | <div><p class="copyright">Copyright © 1994-2018 The NetBSD Foundation, Inc</p></div> |
34 | <div><p class="pubdate">$NetBSD: pkgsrc.xml,v 1.31 2017/07/30 22:07:39 jnemeth Exp $</p></div> | | 34 | <div><p class="pubdate">$NetBSD: pkgsrc.xml,v 1.32 2018/01/01 01:26:07 jakllsch 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 class="toc"> | | 48 | <dl class="toc"> |
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 | </dl></dd> | | 80 | </dl></dd> |
81 | <dt><span class="chapter"><a href="#using">4. Using pkgsrc</a></span></dt> | | 81 | <dt><span class="chapter"><a href="#using">4. Using pkgsrc</a></span></dt> |
82 | <dd><dl> | | 82 | <dd><dl> |
83 | <dt><span class="sect1"><a href="#using-pkg">4.1. Using binary packages</a></span></dt> | | 83 | <dt><span class="sect1"><a href="#using-pkg">4.1. Using binary packages</a></span></dt> |
84 | <dd><dl> | | 84 | <dd><dl> |
85 | <dt><span class="sect2"><a href="#finding-binary-packages">4.1.1. Finding binary packages</a></span></dt> | | 85 | <dt><span class="sect2"><a href="#finding-binary-packages">4.1.1. Finding binary packages</a></span></dt> |
86 | <dt><span class="sect2"><a href="#installing-binary-packages">4.1.2. Installing binary packages</a></span></dt> | | 86 | <dt><span class="sect2"><a href="#installing-binary-packages">4.1.2. Installing binary packages</a></span></dt> |
87 | <dt><span class="sect2"><a href="#using.pkg_delete">4.1.3. Deinstalling packages</a></span></dt> | | 87 | <dt><span class="sect2"><a href="#using.pkg_delete">4.1.3. Deinstalling packages</a></span></dt> |
88 | <dt><span class="sect2"><a href="#using.pkg_info">4.1.4. Getting information about installed packages</a></span></dt> | | 88 | <dt><span class="sect2"><a href="#using.pkg_info">4.1.4. Getting information about installed packages</a></span></dt> |
89 | <dt><span class="sect2"><a href="#vulnerabilities">4.1.5. Checking for security vulnerabilities in installed packages</a></span></dt> | | 89 | <dt><span class="sect2"><a href="#vulnerabilities">4.1.5. Checking for security vulnerabilities in installed packages</a></span></dt> |
90 | <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> | | 90 | <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> |
91 | <dt><span class="sect2"><a href="#using.pkg_admin">4.1.7. Other administrative functions</a></span></dt> | | 91 | <dt><span class="sect2"><a href="#using.pkg_admin">4.1.7. Other administrative functions</a></span></dt> |
92 | </dl></dd> | | 92 | </dl></dd> |
93 | <dt><span class="sect1"><a href="#building-packages-from-source">4.2. Building packages from source</a></span></dt> | | 93 | <dt><span class="sect1"><a href="#building-packages-from-source">4.2. Building packages from source</a></span></dt> |
94 | <dd><dl> | | 94 | <dd><dl> |
95 | <dt><span class="sect2"><a href="#requirements">4.2.1. Requirements</a></span></dt> | | 95 | <dt><span class="sect2"><a href="#requirements">4.2.1. Requirements</a></span></dt> |
96 | <dt><span class="sect2"><a href="#fetching-distfiles">4.2.2. Fetching distfiles</a></span></dt> | | 96 | <dt><span class="sect2"><a href="#fetching-distfiles">4.2.2. Fetching distfiles</a></span></dt> |
97 | <dt><span class="sect2"><a href="#how-to-build-and-install">4.2.3. How to build and install</a></span></dt> | | 97 | <dt><span class="sect2"><a href="#how-to-build-and-install">4.2.3. How to build and install</a></span></dt> |
98 | </dl></dd> | | 98 | </dl></dd> |
99 | </dl></dd> | | 99 | </dl></dd> |
100 | <dt><span class="chapter"><a href="#configuring">5. Configuring pkgsrc</a></span></dt> | | 100 | <dt><span class="chapter"><a href="#configuring">5. Configuring pkgsrc</a></span></dt> |
101 | <dd><dl> | | 101 | <dd><dl> |
102 | <dt><span class="sect1"><a href="#general-configuration">5.1. General configuration</a></span></dt> | | 102 | <dt><span class="sect1"><a href="#general-configuration">5.1. General configuration</a></span></dt> |
103 | <dt><span class="sect1"><a href="#variables-affecting-build">5.2. Variables affecting the build process</a></span></dt> | | 103 | <dt><span class="sect1"><a href="#variables-affecting-build">5.2. Variables affecting the build process</a></span></dt> |
104 | <dt><span class="sect1"><a href="#variables-affecting-installation">5.3. Variables affecting the installation process</a></span></dt> | | 104 | <dt><span class="sect1"><a href="#variables-affecting-installation">5.3. Variables affecting the installation process</a></span></dt> |
105 | <dt><span class="sect1"><a href="#conf.compiler">5.4. Selecting and configuring the compiler</a></span></dt> | | 105 | <dt><span class="sect1"><a href="#conf.compiler">5.4. Selecting and configuring the compiler</a></span></dt> |
106 | <dd><dl> | | 106 | <dd><dl> |
107 | <dt><span class="sect2"><a href="#selecting-the-compiler">5.4.1. Selecting the compiler</a></span></dt> | | 107 | <dt><span class="sect2"><a href="#selecting-the-compiler">5.4.1. Selecting the compiler</a></span></dt> |
108 | <dt><span class="sect2"><a href="#conf.cflags">5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</a></span></dt> | | 108 | <dt><span class="sect2"><a href="#conf.cflags">5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</a></span></dt> |
109 | <dt><span class="sect2"><a href="#conf.ldflags">5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</a></span></dt> | | 109 | <dt><span class="sect2"><a href="#conf.ldflags">5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</a></span></dt> |
110 | </dl></dd> | | 110 | </dl></dd> |
111 | <dt><span class="sect1"><a href="#developer-advanced-settings">5.5. Developer/advanced settings</a></span></dt> | | 111 | <dt><span class="sect1"><a href="#developer-advanced-settings">5.5. Developer/advanced settings</a></span></dt> |
112 | <dt><span class="sect1"><a href="#selecting-build-options">5.6. Selecting Build Options</a></span></dt> | | 112 | <dt><span class="sect1"><a href="#selecting-build-options">5.6. Selecting Build Options</a></span></dt> |
113 | </dl></dd> | | 113 | </dl></dd> |
114 | <dt><span class="chapter"><a href="#binary">6. Creating binary packages</a></span></dt> | | 114 | <dt><span class="chapter"><a href="#binary">6. Creating binary packages</a></span></dt> |
115 | <dd><dl> | | 115 | <dd><dl> |
116 | <dt><span class="sect1"><a href="#building-a-single-binary-package">6.1. Building a single binary package</a></span></dt> | | 116 | <dt><span class="sect1"><a href="#building-a-single-binary-package">6.1. Building a single binary package</a></span></dt> |
117 | <dt><span class="sect1"><a href="#settings-for-creationg-of-binary-packages">6.2. Settings for creation of binary packages</a></span></dt> | | 117 | <dt><span class="sect1"><a href="#settings-for-creationg-of-binary-packages">6.2. Settings for creation of binary packages</a></span></dt> |
118 | </dl></dd> | | 118 | </dl></dd> |
119 | <dt><span class="chapter"><a href="#bulk">7. Creating binary packages for everything in pkgsrc (bulk | | 119 | <dt><span class="chapter"><a href="#bulk">7. Creating binary packages for everything in pkgsrc (bulk |
120 | builds)</a></span></dt> | | 120 | builds)</a></span></dt> |
121 | <dd><dl> | | 121 | <dd><dl> |
122 | <dt><span class="sect1"><a href="#bulk.pre">7.1. Preparations</a></span></dt> | | 122 | <dt><span class="sect1"><a href="#bulk.pre">7.1. Preparations</a></span></dt> |
123 | <dt><span class="sect1"><a href="#bulk.pbulk">7.2. Running a pbulk-style bulk build</a></span></dt> | | 123 | <dt><span class="sect1"><a href="#bulk.pbulk">7.2. Running a pbulk-style bulk build</a></span></dt> |
124 | <dd><dl><dt><span class="sect2"><a href="#bulk.pbulk.conf">7.2.1. Configuration</a></span></dt></dl></dd> | | 124 | <dd><dl><dt><span class="sect2"><a href="#bulk.pbulk.conf">7.2.1. Configuration</a></span></dt></dl></dd> |
125 | <dt><span class="sect1"><a href="#bulk.req">7.3. Requirements of a full bulk build</a></span></dt> | | 125 | <dt><span class="sect1"><a href="#bulk.req">7.3. Requirements of a full bulk build</a></span></dt> |
126 | <dt><span class="sect1"><a href="#creating-cdroms">7.4. Creating a multiple CD-ROM packages collection</a></span></dt> | | 126 | <dt><span class="sect1"><a href="#creating-cdroms">7.4. Creating a multiple CD-ROM packages collection</a></span></dt> |
127 | <dd><dl><dt><span class="sect2"><a href="#cdpack-example">7.4.1. Example of cdpack</a></span></dt></dl></dd> | | 127 | <dd><dl><dt><span class="sect2"><a href="#cdpack-example">7.4.1. Example of cdpack</a></span></dt></dl></dd> |
128 | </dl></dd> | | 128 | </dl></dd> |
129 | <dt><span class="chapter"><a href="#files">8. Directory layout of the installed files</a></span></dt> | | 129 | <dt><span class="chapter"><a href="#files">8. Directory layout of the installed files</a></span></dt> |
130 | <dd><dl> | | 130 | <dd><dl> |
131 | <dt><span class="sect1"><a href="#files.localbase">8.1. File system layout in <code class="literal">${LOCALBASE}</code></a></span></dt> | | 131 | <dt><span class="sect1"><a href="#files.localbase">8.1. File system layout in <code class="literal">${LOCALBASE}</code></a></span></dt> |
132 | <dt><span class="sect1"><a href="#files.varbase">8.2. File system layout in <code class="literal">${VARBASE}</code></a></span></dt> | | 132 | <dt><span class="sect1"><a href="#files.varbase">8.2. File system layout in <code class="literal">${VARBASE}</code></a></span></dt> |
133 | </dl></dd> | | 133 | </dl></dd> |
134 | <dt><span class="chapter"><a href="#faq">9. Frequently Asked Questions</a></span></dt> | | 134 | <dt><span class="chapter"><a href="#faq">9. Frequently Asked Questions</a></span></dt> |
135 | <dd><dl> | | 135 | <dd><dl> |
136 | <dt><span class="sect1"><a href="#mailing-list-pointers">9.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> | | 136 | <dt><span class="sect1"><a href="#mailing-list-pointers">9.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> |
137 | <dt><span class="sect1"><a href="#faq-pkgtools">9.2. Utilities for package management (pkgtools)</a></span></dt> | | 137 | <dt><span class="sect1"><a href="#faq-pkgtools">9.2. Utilities for package management (pkgtools)</a></span></dt> |
138 | <dt><span class="sect1"><a href="#non-root-pkgsrc">9.3. How to use pkgsrc as non-root</a></span></dt> | | 138 | <dt><span class="sect1"><a href="#non-root-pkgsrc">9.3. How to use pkgsrc as non-root</a></span></dt> |
139 | <dt><span class="sect1"><a href="#resume-transfers">9.4. How to resume transfers when fetching distfiles?</a></span></dt> | | 139 | <dt><span class="sect1"><a href="#resume-transfers">9.4. How to resume transfers when fetching distfiles?</a></span></dt> |
140 | <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> | | 140 | <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> |
141 | <dt><span class="sect1"><a href="#fetch-behind-firewall">9.6. How to fetch files from behind a firewall</a></span></dt> | | 141 | <dt><span class="sect1"><a href="#fetch-behind-firewall">9.6. How to fetch files from behind a firewall</a></span></dt> |
142 | <dt><span class="sect1"><a href="#fetch-https">9.7. How to fetch files from HTTPS sites</a></span></dt> | | 142 | <dt><span class="sect1"><a href="#fetch-https">9.7. How to fetch files from HTTPS sites</a></span></dt> |
143 | <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> | | 143 | <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> |
144 | <dt><span class="sect1"><a href="#fetching-all-distfiles">9.9. How to fetch all distfiles at once</a></span></dt> | | 144 | <dt><span class="sect1"><a href="#fetching-all-distfiles">9.9. How to fetch all distfiles at once</a></span></dt> |
145 | <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 | | 145 | <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 |
146 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</a></span></dt> | | 146 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</a></span></dt> |
147 | <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> | | 147 | <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> |
148 | <dt><span class="sect1"><a href="#using-sudo-with-pkgsrc">9.12. Using 'sudo' with pkgsrc</a></span></dt> | | 148 | <dt><span class="sect1"><a href="#using-sudo-with-pkgsrc">9.12. Using 'sudo' with pkgsrc</a></span></dt> |
149 | <dt><span class="sect1"><a href="#faq.conf">9.13. How do I change the location of configuration files?</a></span></dt> | | 149 | <dt><span class="sect1"><a href="#faq.conf">9.13. How do I change the location of configuration files?</a></span></dt> |
150 | <dt><span class="sect1"><a href="#audit-packages">9.14. Automated security checks</a></span></dt> | | 150 | <dt><span class="sect1"><a href="#audit-packages">9.14. Automated security checks</a></span></dt> |
151 | <dt><span class="sect1"><a href="#ufaq-cflags">9.15. Why do some packages ignore my <code class="varname">CFLAGS</code>?</a></span></dt> | | 151 | <dt><span class="sect1"><a href="#ufaq-cflags">9.15. Why do some packages ignore my <code class="varname">CFLAGS</code>?</a></span></dt> |
152 | <dt><span class="sect1"><a href="#ufaq-fail">9.16. A package does not build. What shall I do?</a></span></dt> | | 152 | <dt><span class="sect1"><a href="#ufaq-fail">9.16. A package does not build. What shall I do?</a></span></dt> |
153 | <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> | | 153 | <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> |
154 | </dl></dd> | | 154 | </dl></dd> |
155 | </dl></dd> | | 155 | </dl></dd> |
156 | <dt><span class="part"><a href="#developers-guide">II. The pkgsrc developer's guide</a></span></dt> | | 156 | <dt><span class="part"><a href="#developers-guide">II. The pkgsrc developer's guide</a></span></dt> |
157 | <dd><dl> | | 157 | <dd><dl> |
158 | <dt><span class="chapter"><a href="#creating">10. Creating a new pkgsrc package from scratch</a></span></dt> | | 158 | <dt><span class="chapter"><a href="#creating">10. Creating a new pkgsrc package from scratch</a></span></dt> |
159 | <dd><dl> | | 159 | <dd><dl> |
160 | <dt><span class="sect1"><a href="#creating.common">10.1. Common types of packages</a></span></dt> | | 160 | <dt><span class="sect1"><a href="#creating.common">10.1. Common types of packages</a></span></dt> |
161 | <dd><dl> | | 161 | <dd><dl> |
162 | <dt><span class="sect2"><a href="#creating.perl-module">10.1.1. Perl modules</a></span></dt> | | 162 | <dt><span class="sect2"><a href="#creating.perl-module">10.1.1. Perl modules</a></span></dt> |
163 | <dt><span class="sect2"><a href="#creating.python-module">10.1.2. Python modules and programs</a></span></dt> | | 163 | <dt><span class="sect2"><a href="#creating.python-module">10.1.2. Python modules and programs</a></span></dt> |
164 | </dl></dd> | | 164 | </dl></dd> |
165 | <dt><span class="sect1"><a href="#creating.examples">10.2. Examples</a></span></dt> | | 165 | <dt><span class="sect1"><a href="#creating.examples">10.2. Examples</a></span></dt> |
166 | <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> | | 166 | <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> |
167 | </dl></dd> | | 167 | </dl></dd> |
168 | <dt><span class="chapter"><a href="#components">11. Package components - files, directories and contents</a></span></dt> | | 168 | <dt><span class="chapter"><a href="#components">11. Package components - files, directories and contents</a></span></dt> |
169 | <dd><dl> | | 169 | <dd><dl> |
170 | <dt><span class="sect1"><a href="#components.Makefile">11.1. <code class="filename">Makefile</code></a></span></dt> | | 170 | <dt><span class="sect1"><a href="#components.Makefile">11.1. <code class="filename">Makefile</code></a></span></dt> |
171 | <dt><span class="sect1"><a href="#components.distinfo">11.2. <code class="filename">distinfo</code></a></span></dt> | | 171 | <dt><span class="sect1"><a href="#components.distinfo">11.2. <code class="filename">distinfo</code></a></span></dt> |
172 | <dt><span class="sect1"><a href="#components.patches">11.3. <code class="filename">patches/*</code></a></span></dt> | | 172 | <dt><span class="sect1"><a href="#components.patches">11.3. <code class="filename">patches/*</code></a></span></dt> |
173 | <dd><dl> | | 173 | <dd><dl> |
174 | <dt><span class="sect2"><a href="#components.patch.structure">11.3.1. Structure of a single patch file</a></span></dt> | | 174 | <dt><span class="sect2"><a href="#components.patch.structure">11.3.1. Structure of a single patch file</a></span></dt> |
175 | <dt><span class="sect2"><a href="#components.patches.caveats">11.3.2. Creating patch files</a></span></dt> | | 175 | <dt><span class="sect2"><a href="#components.patches.caveats">11.3.2. Creating patch files</a></span></dt> |
176 | <dt><span class="sect2"><a href="#components.patches.sources">11.3.3. Sources where the patch files come from</a></span></dt> | | 176 | <dt><span class="sect2"><a href="#components.patches.sources">11.3.3. Sources where the patch files come from</a></span></dt> |
177 | <dt><span class="sect2"><a href="#components.patches.guidelines">11.3.4. Patching guidelines</a></span></dt> | | 177 | <dt><span class="sect2"><a href="#components.patches.guidelines">11.3.4. Patching guidelines</a></span></dt> |
178 | <dt><span class="sect2"><a href="#components.patches.feedback">11.3.5. Feedback to the author</a></span></dt> | | 178 | <dt><span class="sect2"><a href="#components.patches.feedback">11.3.5. Feedback to the author</a></span></dt> |
179 | </dl></dd> | | 179 | </dl></dd> |
180 | <dt><span class="sect1"><a href="#other-mandatory-files">11.4. Other mandatory files</a></span></dt> | | 180 | <dt><span class="sect1"><a href="#other-mandatory-files">11.4. Other mandatory files</a></span></dt> |
181 | <dt><span class="sect1"><a href="#components.optional">11.5. Optional files</a></span></dt> | | 181 | <dt><span class="sect1"><a href="#components.optional">11.5. Optional files</a></span></dt> |
182 | <dd><dl> | | 182 | <dd><dl> |
183 | <dt><span class="sect2"><a href="#components.optional.bin">11.5.1. Files affecting the binary package</a></span></dt> | | 183 | <dt><span class="sect2"><a href="#components.optional.bin">11.5.1. Files affecting the binary package</a></span></dt> |
184 | <dt><span class="sect2"><a href="#components.optional.build">11.5.2. Files affecting the build process</a></span></dt> | | 184 | <dt><span class="sect2"><a href="#components.optional.build">11.5.2. Files affecting the build process</a></span></dt> |
185 | <dt><span class="sect2"><a href="#components.optional.none">11.5.3. Files affecting nothing at all</a></span></dt> | | 185 | <dt><span class="sect2"><a href="#components.optional.none">11.5.3. Files affecting nothing at all</a></span></dt> |
186 | </dl></dd> | | 186 | </dl></dd> |
187 | <dt><span class="sect1"><a href="#work-dir">11.6. <code class="filename">work*</code></a></span></dt> | | 187 | <dt><span class="sect1"><a href="#work-dir">11.6. <code class="filename">work*</code></a></span></dt> |
188 | <dt><span class="sect1"><a href="#files-dir">11.7. <code class="filename">files/*</code></a></span></dt> | | 188 | <dt><span class="sect1"><a href="#files-dir">11.7. <code class="filename">files/*</code></a></span></dt> |
189 | </dl></dd> | | 189 | </dl></dd> |
190 | <dt><span class="chapter"><a href="#makefile">12. Programming in <code class="filename">Makefile</code>s</a></span></dt> | | 190 | <dt><span class="chapter"><a href="#makefile">12. Programming in <code class="filename">Makefile</code>s</a></span></dt> |
191 | <dd><dl> | | 191 | <dd><dl> |
192 | <dt><span class="sect1"><a href="#makefile.style">12.1. Caveats</a></span></dt> | | 192 | <dt><span class="sect1"><a href="#makefile.style">12.1. Caveats</a></span></dt> |
193 | <dt><span class="sect1"><a href="#makefile.variables">12.2. <code class="filename">Makefile</code> variables</a></span></dt> | | 193 | <dt><span class="sect1"><a href="#makefile.variables">12.2. <code class="filename">Makefile</code> variables</a></span></dt> |
194 | <dd><dl><dt><span class="sect2"><a href="#makefile.variables.names">12.2.1. Naming conventions</a></span></dt></dl></dd> | | 194 | <dd><dl><dt><span class="sect2"><a href="#makefile.variables.names">12.2.1. Naming conventions</a></span></dt></dl></dd> |
195 | <dt><span class="sect1"><a href="#makefile.code">12.3. Code snippets</a></span></dt> | | 195 | <dt><span class="sect1"><a href="#makefile.code">12.3. Code snippets</a></span></dt> |
196 | <dd><dl> | | 196 | <dd><dl> |
197 | <dt><span class="sect2"><a href="#adding-to-list">12.3.1. Adding things to a list</a></span></dt> | | 197 | <dt><span class="sect2"><a href="#adding-to-list">12.3.1. Adding things to a list</a></span></dt> |
198 | <dt><span class="sect2"><a href="#echo-literal">12.3.2. Echoing a string exactly as-is</a></span></dt> | | 198 | <dt><span class="sect2"><a href="#echo-literal">12.3.2. Echoing a string exactly as-is</a></span></dt> |
199 | <dt><span class="sect2"><a href="#cflags-gnu-configure">12.3.3. Passing <code class="varname">CFLAGS</code> to GNU configure scripts</a></span></dt> | | 199 | <dt><span class="sect2"><a href="#cflags-gnu-configure">12.3.3. Passing <code class="varname">CFLAGS</code> to GNU configure scripts</a></span></dt> |
200 | <dt><span class="sect2"><a href="#empty-variables">12.3.4. Handling possibly empty variables</a></span></dt> | | 200 | <dt><span class="sect2"><a href="#empty-variables">12.3.4. Handling possibly empty variables</a></span></dt> |
201 | </dl></dd> | | 201 | </dl></dd> |
202 | </dl></dd> | | 202 | </dl></dd> |
203 | <dt><span class="chapter"><a href="#plist">13. PLIST issues</a></span></dt> | | 203 | <dt><span class="chapter"><a href="#plist">13. PLIST issues</a></span></dt> |
204 | <dd><dl> | | 204 | <dd><dl> |
205 | <dt><span class="sect1"><a href="#rcs-id">13.1. RCS ID</a></span></dt> | | 205 | <dt><span class="sect1"><a href="#rcs-id">13.1. RCS ID</a></span></dt> |
206 | <dt><span class="sect1"><a href="#automatic-plist-generation">13.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> | | 206 | <dt><span class="sect1"><a href="#automatic-plist-generation">13.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> |
207 | <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> | | 207 | <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> |
208 | <dt><span class="sect1"><a href="#plist.misc">13.4. Variable substitution in PLIST</a></span></dt> | | 208 | <dt><span class="sect1"><a href="#plist.misc">13.4. Variable substitution in PLIST</a></span></dt> |
209 | <dt><span class="sect1"><a href="#manpage-compression">13.5. Man page compression</a></span></dt> | | 209 | <dt><span class="sect1"><a href="#manpage-compression">13.5. Man page compression</a></span></dt> |
210 | <dt><span class="sect1"><a href="#using-PLIST_SRC">13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code></a></span></dt> | | 210 | <dt><span class="sect1"><a href="#using-PLIST_SRC">13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code></a></span></dt> |
211 | <dt><span class="sect1"><a href="#platform-specific-plist">13.7. Platform-specific and differing PLISTs</a></span></dt> | | 211 | <dt><span class="sect1"><a href="#platform-specific-plist">13.7. Platform-specific and differing PLISTs</a></span></dt> |
212 | <dt><span class="sect1"><a href="#build-plist">13.8. Build-specific PLISTs</a></span></dt> | | 212 | <dt><span class="sect1"><a href="#build-plist">13.8. Build-specific PLISTs</a></span></dt> |
213 | <dt><span class="sect1"><a href="#faq.common-dirs">13.9. Sharing directories between packages</a></span></dt> | | 213 | <dt><span class="sect1"><a href="#faq.common-dirs">13.9. Sharing directories between packages</a></span></dt> |
214 | </dl></dd> | | 214 | </dl></dd> |
215 | <dt><span class="chapter"><a href="#buildlink">14. Buildlink methodology</a></span></dt> | | 215 | <dt><span class="chapter"><a href="#buildlink">14. Buildlink methodology</a></span></dt> |
216 | <dd><dl> | | 216 | <dd><dl> |
217 | <dt><span class="sect1"><a href="#converting-to-buildlink3">14.1. Converting packages to use buildlink3</a></span></dt> | | 217 | <dt><span class="sect1"><a href="#converting-to-buildlink3">14.1. Converting packages to use buildlink3</a></span></dt> |
218 | <dt><span class="sect1"><a href="#creating-buildlink3.mk">14.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> | | 218 | <dt><span class="sect1"><a href="#creating-buildlink3.mk">14.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> |
219 | <dd><dl> | | 219 | <dd><dl> |
220 | <dt><span class="sect2"><a href="#anatomy-of-bl3">14.2.1. Anatomy of a buildlink3.mk file</a></span></dt> | | 220 | <dt><span class="sect2"><a href="#anatomy-of-bl3">14.2.1. Anatomy of a buildlink3.mk file</a></span></dt> |
221 | <dt><span class="sect2"><a href="#updating-buildlink-depends">14.2.2. Updating | | 221 | <dt><span class="sect2"><a href="#updating-buildlink-depends">14.2.2. Updating |
222 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 222 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
223 | and | | 223 | and |
224 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 224 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
225 | in <code class="filename">buildlink3.mk</code> files</a></span></dt> | | 225 | in <code class="filename">buildlink3.mk</code> files</a></span></dt> |
226 | </dl></dd> | | 226 | </dl></dd> |
227 | <dt><span class="sect1"><a href="#writing-builtin.mk">14.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> | | 227 | <dt><span class="sect1"><a href="#writing-builtin.mk">14.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> |
228 | <dd><dl> | | 228 | <dd><dl> |
229 | <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> | | 229 | <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> |
230 | <dt><span class="sect2"><a href="#native-or-pkgsrc-preference">14.3.2. Global preferences for native or pkgsrc software</a></span></dt> | | 230 | <dt><span class="sect2"><a href="#native-or-pkgsrc-preference">14.3.2. Global preferences for native or pkgsrc software</a></span></dt> |
231 | </dl></dd> | | 231 | </dl></dd> |
232 | </dl></dd> | | 232 | </dl></dd> |
233 | <dt><span class="chapter"><a href="#pkginstall">15. The pkginstall framework</a></span></dt> | | 233 | <dt><span class="chapter"><a href="#pkginstall">15. The pkginstall framework</a></span></dt> |
234 | <dd><dl> | | 234 | <dd><dl> |
235 | <dt><span class="sect1"><a href="#files-and-dirs-outside-prefix">15.1. Files and directories outside the installation prefix</a></span></dt> | | 235 | <dt><span class="sect1"><a href="#files-and-dirs-outside-prefix">15.1. Files and directories outside the installation prefix</a></span></dt> |
236 | <dd><dl> | | 236 | <dd><dl> |
237 | <dt><span class="sect2"><a href="#dirs-outside-prefix">15.1.1. Directory manipulation</a></span></dt> | | 237 | <dt><span class="sect2"><a href="#dirs-outside-prefix">15.1.1. Directory manipulation</a></span></dt> |
238 | <dt><span class="sect2"><a href="#files-outside-prefix">15.1.2. File manipulation</a></span></dt> | | 238 | <dt><span class="sect2"><a href="#files-outside-prefix">15.1.2. File manipulation</a></span></dt> |
239 | </dl></dd> | | 239 | </dl></dd> |
240 | <dt><span class="sect1"><a href="#conf-files">15.2. Configuration files</a></span></dt> | | 240 | <dt><span class="sect1"><a href="#conf-files">15.2. Configuration files</a></span></dt> |
241 | <dd><dl> | | 241 | <dd><dl> |
242 | <dt><span class="sect2"><a href="#conf-files-sysconfdir">15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</a></span></dt> | | 242 | <dt><span class="sect2"><a href="#conf-files-sysconfdir">15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</a></span></dt> |
243 | <dt><span class="sect2"><a href="#conf-files-configure">15.2.2. Telling the software where configuration files are</a></span></dt> | | 243 | <dt><span class="sect2"><a href="#conf-files-configure">15.2.2. Telling the software where configuration files are</a></span></dt> |
244 | <dt><span class="sect2"><a href="#conf-files-patching">15.2.3. Patching installations</a></span></dt> | | 244 | <dt><span class="sect2"><a href="#conf-files-patching">15.2.3. Patching installations</a></span></dt> |
245 | <dt><span class="sect2"><a href="#conf-files-disable">15.2.4. Disabling handling of configuration files</a></span></dt> | | 245 | <dt><span class="sect2"><a href="#conf-files-disable">15.2.4. Disabling handling of configuration files</a></span></dt> |
246 | </dl></dd> | | 246 | </dl></dd> |
247 | <dt><span class="sect1"><a href="#rcd-scripts">15.3. System startup scripts</a></span></dt> | | 247 | <dt><span class="sect1"><a href="#rcd-scripts">15.3. System startup scripts</a></span></dt> |
248 | <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> | | 248 | <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> |
249 | <dt><span class="sect1"><a href="#users-and-groups">15.4. System users and groups</a></span></dt> | | 249 | <dt><span class="sect1"><a href="#users-and-groups">15.4. System users and groups</a></span></dt> |
250 | <dt><span class="sect1"><a href="#shells">15.5. System shells</a></span></dt> | | 250 | <dt><span class="sect1"><a href="#shells">15.5. System shells</a></span></dt> |
251 | <dd><dl><dt><span class="sect2"><a href="#shells-disable">15.5.1. Disabling shell registration</a></span></dt></dl></dd> | | 251 | <dd><dl><dt><span class="sect2"><a href="#shells-disable">15.5.1. Disabling shell registration</a></span></dt></dl></dd> |
252 | <dt><span class="sect1"><a href="#fonts">15.6. Fonts</a></span></dt> | | 252 | <dt><span class="sect1"><a href="#fonts">15.6. Fonts</a></span></dt> |
253 | <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> | | 253 | <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> |
254 | </dl></dd> | | 254 | </dl></dd> |
255 | <dt><span class="chapter"><a href="#options">16. Options handling</a></span></dt> | | 255 | <dt><span class="chapter"><a href="#options">16. Options handling</a></span></dt> |
256 | <dd><dl> | | 256 | <dd><dl> |
257 | <dt><span class="sect1"><a href="#global-default-options">16.1. Global default options</a></span></dt> | | 257 | <dt><span class="sect1"><a href="#global-default-options">16.1. Global default options</a></span></dt> |
258 | <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> | | 258 | <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> |
259 | <dt><span class="sect1"><a href="#option-names">16.3. Option Names</a></span></dt> | | 259 | <dt><span class="sect1"><a href="#option-names">16.3. Option Names</a></span></dt> |
260 | <dt><span class="sect1"><a href="#option-build">16.4. Determining the options of dependencies</a></span></dt> | | 260 | <dt><span class="sect1"><a href="#option-build">16.4. Determining the options of dependencies</a></span></dt> |
261 | </dl></dd> | | 261 | </dl></dd> |
262 | <dt><span class="chapter"><a href="#build">17. The build process</a></span></dt> | | 262 | <dt><span class="chapter"><a href="#build">17. The build process</a></span></dt> |
263 | <dd><dl> | | 263 | <dd><dl> |
264 | <dt><span class="sect1"><a href="#build.intro">17.1. Introduction</a></span></dt> | | 264 | <dt><span class="sect1"><a href="#build.intro">17.1. Introduction</a></span></dt> |
265 | <dt><span class="sect1"><a href="#build.prefix">17.2. Program location</a></span></dt> | | 265 | <dt><span class="sect1"><a href="#build.prefix">17.2. Program location</a></span></dt> |
266 | <dt><span class="sect1"><a href="#build.builddirs">17.3. Directories used during the build process</a></span></dt> | | 266 | <dt><span class="sect1"><a href="#build.builddirs">17.3. Directories used during the build process</a></span></dt> |
267 | <dt><span class="sect1"><a href="#build.running">17.4. Running a phase</a></span></dt> | | 267 | <dt><span class="sect1"><a href="#build.running">17.4. Running a phase</a></span></dt> |
268 | <dt><span class="sect1"><a href="#build.fetch">17.5. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> | | 268 | <dt><span class="sect1"><a href="#build.fetch">17.5. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> |
269 | <dd><dl> | | 269 | <dd><dl> |
270 | <dt><span class="sect2"><a href="#build.fetch.what">17.5.1. What to fetch and where to get it from</a></span></dt> | | 270 | <dt><span class="sect2"><a href="#build.fetch.what">17.5.1. What to fetch and where to get it from</a></span></dt> |
271 | <dt><span class="sect2"><a href="#build.fetch.how">17.5.2. How are the files fetched?</a></span></dt> | | 271 | <dt><span class="sect2"><a href="#build.fetch.how">17.5.2. How are the files fetched?</a></span></dt> |
272 | </dl></dd> | | 272 | </dl></dd> |
273 | <dt><span class="sect1"><a href="#build.checksum">17.6. The <span class="emphasis"><em>checksum</em></span> phase</a></span></dt> | | 273 | <dt><span class="sect1"><a href="#build.checksum">17.6. The <span class="emphasis"><em>checksum</em></span> phase</a></span></dt> |
274 | <dt><span class="sect1"><a href="#build.extract">17.7. The <span class="emphasis"><em>extract</em></span> phase</a></span></dt> | | 274 | <dt><span class="sect1"><a href="#build.extract">17.7. The <span class="emphasis"><em>extract</em></span> phase</a></span></dt> |
275 | <dt><span class="sect1"><a href="#build.patch">17.8. The <span class="emphasis"><em>patch</em></span> phase</a></span></dt> | | 275 | <dt><span class="sect1"><a href="#build.patch">17.8. The <span class="emphasis"><em>patch</em></span> phase</a></span></dt> |
276 | <dt><span class="sect1"><a href="#build.tools">17.9. The <span class="emphasis"><em>tools</em></span> phase</a></span></dt> | | 276 | <dt><span class="sect1"><a href="#build.tools">17.9. The <span class="emphasis"><em>tools</em></span> phase</a></span></dt> |
277 | <dt><span class="sect1"><a href="#build.wrapper">17.10. The <span class="emphasis"><em>wrapper</em></span> phase</a></span></dt> | | 277 | <dt><span class="sect1"><a href="#build.wrapper">17.10. The <span class="emphasis"><em>wrapper</em></span> phase</a></span></dt> |
278 | <dt><span class="sect1"><a href="#build.configure">17.11. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> | | 278 | <dt><span class="sect1"><a href="#build.configure">17.11. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> |
279 | <dt><span class="sect1"><a href="#build.build">17.12. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> | | 279 | <dt><span class="sect1"><a href="#build.build">17.12. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> |
280 | <dt><span class="sect1"><a href="#build.test">17.13. The <span class="emphasis"><em>test</em></span> phase</a></span></dt> | | 280 | <dt><span class="sect1"><a href="#build.test">17.13. The <span class="emphasis"><em>test</em></span> phase</a></span></dt> |
281 | <dt><span class="sect1"><a href="#build.install">17.14. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> | | 281 | <dt><span class="sect1"><a href="#build.install">17.14. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> |
282 | <dt><span class="sect1"><a href="#build.package">17.15. The <span class="emphasis"><em>package</em></span> phase</a></span></dt> | | 282 | <dt><span class="sect1"><a href="#build.package">17.15. The <span class="emphasis"><em>package</em></span> phase</a></span></dt> |
283 | <dt><span class="sect1"><a href="#build.clean">17.16. Cleaning up</a></span></dt> | | 283 | <dt><span class="sect1"><a href="#build.clean">17.16. Cleaning up</a></span></dt> |
284 | <dt><span class="sect1"><a href="#build.helpful-targets">17.17. Other helpful targets</a></span></dt> | | 284 | <dt><span class="sect1"><a href="#build.helpful-targets">17.17. Other helpful targets</a></span></dt> |
285 | </dl></dd> | | 285 | </dl></dd> |
286 | <dt><span class="chapter"><a href="#tools">18. Tools needed for building or running</a></span></dt> | | 286 | <dt><span class="chapter"><a href="#tools">18. Tools needed for building or running</a></span></dt> |
287 | <dd><dl> | | 287 | <dd><dl> |
288 | <dt><span class="sect1"><a href="#pkgsrc-tools">18.1. Tools for pkgsrc builds</a></span></dt> | | 288 | <dt><span class="sect1"><a href="#pkgsrc-tools">18.1. Tools for pkgsrc builds</a></span></dt> |
289 | <dt><span class="sect1"><a href="#package-tools">18.2. Tools needed by packages</a></span></dt> | | 289 | <dt><span class="sect1"><a href="#package-tools">18.2. Tools needed by packages</a></span></dt> |
290 | <dt><span class="sect1"><a href="#platform-tools">18.3. Tools provided by platforms</a></span></dt> | | 290 | <dt><span class="sect1"><a href="#platform-tools">18.3. Tools provided by platforms</a></span></dt> |
291 | </dl></dd> | | 291 | </dl></dd> |
292 | <dt><span class="chapter"><a href="#fixes">19. Making your package work</a></span></dt> | | 292 | <dt><span class="chapter"><a href="#fixes">19. Making your package work</a></span></dt> |
293 | <dd><dl> | | 293 | <dd><dl> |
294 | <dt><span class="sect1"><a href="#general-operation">19.1. General operation</a></span></dt> | | 294 | <dt><span class="sect1"><a href="#general-operation">19.1. General operation</a></span></dt> |
295 | <dd><dl> | | 295 | <dd><dl> |
296 | <dt><span class="sect2"><a href="#pulling-vars-from-etc-mk.conf">19.1.1. How to pull in user-settable variables from <code class="filename">mk.conf</code></a></span></dt> | | 296 | <dt><span class="sect2"><a href="#pulling-vars-from-etc-mk.conf">19.1.1. How to pull in user-settable variables from <code class="filename">mk.conf</code></a></span></dt> |
297 | <dt><span class="sect2"><a href="#user-interaction">19.1.2. User interaction</a></span></dt> | | 297 | <dt><span class="sect2"><a href="#user-interaction">19.1.2. User interaction</a></span></dt> |
298 | <dt><span class="sect2"><a href="#handling-licenses">19.1.3. Handling licenses</a></span></dt> | | 298 | <dt><span class="sect2"><a href="#handling-licenses">19.1.3. Handling licenses</a></span></dt> |
299 | <dt><span class="sect2"><a href="#restricted-packages">19.1.4. Restricted packages</a></span></dt> | | 299 | <dt><span class="sect2"><a href="#restricted-packages">19.1.4. Restricted packages</a></span></dt> |
300 | <dt><span class="sect2"><a href="#dependencies">19.1.5. Handling dependencies</a></span></dt> | | 300 | <dt><span class="sect2"><a href="#dependencies">19.1.5. Handling dependencies</a></span></dt> |
301 | <dt><span class="sect2"><a href="#conflicts">19.1.6. Handling conflicts with other packages</a></span></dt> | | 301 | <dt><span class="sect2"><a href="#conflicts">19.1.6. Handling conflicts with other packages</a></span></dt> |
302 | <dt><span class="sect2"><a href="#not-building-packages">19.1.7. Packages that cannot or should not be built</a></span></dt> | | 302 | <dt><span class="sect2"><a href="#not-building-packages">19.1.7. Packages that cannot or should not be built</a></span></dt> |
303 | <dt><span class="sect2"><a href="#undeletable-packages">19.1.8. Packages which should not be deleted, once installed</a></span></dt> | | 303 | <dt><span class="sect2"><a href="#undeletable-packages">19.1.8. Packages which should not be deleted, once installed</a></span></dt> |
304 | <dt><span class="sect2"><a href="#security-handling">19.1.9. Handling packages with security problems</a></span></dt> | | 304 | <dt><span class="sect2"><a href="#security-handling">19.1.9. Handling packages with security problems</a></span></dt> |
305 | <dt><span class="sect2"><a href="#bumping-pkgrevision">19.1.10. How to handle incrementing versions when fixing an existing package</a></span></dt> | | 305 | <dt><span class="sect2"><a href="#bumping-pkgrevision">19.1.10. How to handle incrementing versions when fixing an existing package</a></span></dt> |
306 | <dt><span class="sect2"><a href="#fixes.subst">19.1.11. Substituting variable text in the package files (the SUBST framework)</a></span></dt> | | 306 | <dt><span class="sect2"><a href="#fixes.subst">19.1.11. Substituting variable text in the package files (the SUBST framework)</a></span></dt> |
307 | </dl></dd> | | 307 | </dl></dd> |
308 | <dt><span class="sect1"><a href="#fixes.fetch">19.2. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> | | 308 | <dt><span class="sect1"><a href="#fixes.fetch">19.2. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> |
309 | <dd><dl> | | 309 | <dd><dl> |
310 | <dt><span class="sect2"><a href="#no-plain-download">19.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> | | 310 | <dt><span class="sect2"><a href="#no-plain-download">19.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> |
311 | <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> | | 311 | <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> |
312 | <dt><span class="sect2"><a href="#build.fetch.github">19.2.3. Packages hosted on github.com</a></span></dt> | | 312 | <dt><span class="sect2"><a href="#build.fetch.github">19.2.3. Packages hosted on github.com</a></span></dt> |
313 | </dl></dd> | | 313 | </dl></dd> |
314 | <dt><span class="sect1"><a href="#fixes.configure">19.3. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> | | 314 | <dt><span class="sect1"><a href="#fixes.configure">19.3. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> |
315 | <dd><dl> | | 315 | <dd><dl> |
316 | <dt><span class="sect2"><a href="#fixes.libtool">19.3.1. Shared libraries - libtool</a></span></dt> | | 316 | <dt><span class="sect2"><a href="#fixes.libtool">19.3.1. Shared libraries - libtool</a></span></dt> |
317 | <dt><span class="sect2"><a href="#using-libtool">19.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> | | 317 | <dt><span class="sect2"><a href="#using-libtool">19.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> |
318 | <dt><span class="sect2"><a href="#autoconf-automake">19.3.3. GNU Autoconf/Automake</a></span></dt> | | 318 | <dt><span class="sect2"><a href="#autoconf-automake">19.3.3. GNU Autoconf/Automake</a></span></dt> |
319 | </dl></dd> | | 319 | </dl></dd> |
320 | <dt><span class="sect1"><a href="#programming-languages">19.4. Programming languages</a></span></dt> | | 320 | <dt><span class="sect1"><a href="#programming-languages">19.4. Programming languages</a></span></dt> |
321 | <dd><dl> | | 321 | <dd><dl> |
322 | <dt><span class="sect2"><a href="#basic-programming-languages">19.4.1. C, C++, and Fortran</a></span></dt> | | 322 | <dt><span class="sect2"><a href="#basic-programming-languages">19.4.1. C, C++, and Fortran</a></span></dt> |
323 | <dt><span class="sect2"><a href="#java-programming-language">19.4.2. Java</a></span></dt> | | 323 | <dt><span class="sect2"><a href="#java-programming-language">19.4.2. Java</a></span></dt> |
324 | <dt><span class="sect2"><a href="#perl-scripts">19.4.3. Packages containing perl scripts</a></span></dt> | | 324 | <dt><span class="sect2"><a href="#perl-scripts">19.4.3. Packages containing perl scripts</a></span></dt> |
325 | <dt><span class="sect2"><a href="#shell-scripts">19.4.4. Packages containing shell scripts</a></span></dt> | | 325 | <dt><span class="sect2"><a href="#shell-scripts">19.4.4. Packages containing shell scripts</a></span></dt> |
326 | <dt><span class="sect2"><a href="#other-programming-languages">19.4.5. Other programming languages</a></span></dt> | | 326 | <dt><span class="sect2"><a href="#other-programming-languages">19.4.5. Other programming languages</a></span></dt> |
327 | </dl></dd> | | 327 | </dl></dd> |
328 | <dt><span class="sect1"><a href="#fixes.build">19.5. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> | | 328 | <dt><span class="sect1"><a href="#fixes.build">19.5. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> |
329 | <dd><dl> | | 329 | <dd><dl> |
330 | <dt><span class="sect2"><a href="#fixes.build.cpp">19.5.1. Compiling C and C++ code conditionally</a></span></dt> | | 330 | <dt><span class="sect2"><a href="#fixes.build.cpp">19.5.1. Compiling C and C++ code conditionally</a></span></dt> |
331 | <dt><span class="sect2"><a href="#compiler-bugs">19.5.2. How to handle compiler bugs</a></span></dt> | | 331 | <dt><span class="sect2"><a href="#compiler-bugs">19.5.2. How to handle compiler bugs</a></span></dt> |
332 | <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> | | 332 | <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> |
333 | <dt><span class="sect2"><a href="#out-of-memory">19.5.4. Running out of memory</a></span></dt> | | 333 | <dt><span class="sect2"><a href="#out-of-memory">19.5.4. Running out of memory</a></span></dt> |
334 | </dl></dd> | | 334 | </dl></dd> |
335 | <dt><span class="sect1"><a href="#fixes.install">19.6. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> | | 335 | <dt><span class="sect1"><a href="#fixes.install">19.6. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> |
336 | <dd><dl> | | 336 | <dd><dl> |
337 | <dt><span class="sect2"><a href="#install-scripts">19.6.1. Creating needed directories</a></span></dt> | | 337 | <dt><span class="sect2"><a href="#install-scripts">19.6.1. Creating needed directories</a></span></dt> |
338 | <dt><span class="sect2"><a href="#where-to-install-documentation">19.6.2. Where to install documentation</a></span></dt> | | 338 | <dt><span class="sect2"><a href="#where-to-install-documentation">19.6.2. Where to install documentation</a></span></dt> |
339 | <dt><span class="sect2"><a href="#installing-score-files">19.6.3. Installing highscore files</a></span></dt> | | 339 | <dt><span class="sect2"><a href="#installing-score-files">19.6.3. Installing highscore files</a></span></dt> |
340 | <dt><span class="sect2"><a href="#destdir-support">19.6.4. Adding DESTDIR support to packages</a></span></dt> | | 340 | <dt><span class="sect2"><a href="#destdir-support">19.6.4. Adding DESTDIR support to packages</a></span></dt> |
341 | <dt><span class="sect2"><a href="#hardcoded-paths">19.6.5. Packages with hardcoded paths to other interpreters</a></span></dt> | | 341 | <dt><span class="sect2"><a href="#hardcoded-paths">19.6.5. Packages with hardcoded paths to other interpreters</a></span></dt> |
342 | <dt><span class="sect2"><a href="#perl-modules">19.6.6. Packages installing perl modules</a></span></dt> | | 342 | <dt><span class="sect2"><a href="#perl-modules">19.6.6. Packages installing perl modules</a></span></dt> |
343 | <dt><span class="sect2"><a href="#faq.info-files">19.6.7. Packages installing info files</a></span></dt> | | 343 | <dt><span class="sect2"><a href="#faq.info-files">19.6.7. Packages installing info files</a></span></dt> |
344 | <dt><span class="sect2"><a href="#manpages">19.6.8. Packages installing man pages</a></span></dt> | | 344 | <dt><span class="sect2"><a href="#manpages">19.6.8. Packages installing man pages</a></span></dt> |
345 | <dt><span class="sect2"><a href="#gconf-data-files">19.6.9. Packages installing GConf data files</a></span></dt> | | 345 | <dt><span class="sect2"><a href="#gconf-data-files">19.6.9. Packages installing GConf data files</a></span></dt> |
346 | <dt><span class="sect2"><a href="#scrollkeeper-data-files">19.6.10. Packages installing scrollkeeper/rarian data files</a></span></dt> | | 346 | <dt><span class="sect2"><a href="#scrollkeeper-data-files">19.6.10. Packages installing scrollkeeper/rarian data files</a></span></dt> |
347 | <dt><span class="sect2"><a href="#x11-fonts">19.6.11. Packages installing X11 fonts</a></span></dt> | | 347 | <dt><span class="sect2"><a href="#x11-fonts">19.6.11. Packages installing X11 fonts</a></span></dt> |
348 | <dt><span class="sect2"><a href="#gtk2-modules">19.6.12. Packages installing GTK2 modules</a></span></dt> | | 348 | <dt><span class="sect2"><a href="#gtk2-modules">19.6.12. Packages installing GTK2 modules</a></span></dt> |
349 | <dt><span class="sect2"><a href="#sgml-xml-data">19.6.13. Packages installing SGML or XML data</a></span></dt> | | 349 | <dt><span class="sect2"><a href="#sgml-xml-data">19.6.13. Packages installing SGML or XML data</a></span></dt> |
350 | <dt><span class="sect2"><a href="#mime-database">19.6.14. Packages installing extensions to the MIME database</a></span></dt> | | 350 | <dt><span class="sect2"><a href="#mime-database">19.6.14. Packages installing extensions to the MIME database</a></span></dt> |
351 | <dt><span class="sect2"><a href="#intltool">19.6.15. Packages using intltool</a></span></dt> | | 351 | <dt><span class="sect2"><a href="#intltool">19.6.15. Packages using intltool</a></span></dt> |
352 | <dt><span class="sect2"><a href="#startup-scripts">19.6.16. Packages installing startup scripts</a></span></dt> | | 352 | <dt><span class="sect2"><a href="#startup-scripts">19.6.16. Packages installing startup scripts</a></span></dt> |
353 | <dt><span class="sect2"><a href="#tex-packages">19.6.17. Packages installing TeX modules</a></span></dt> | | 353 | <dt><span class="sect2"><a href="#tex-packages">19.6.17. Packages installing TeX modules</a></span></dt> |
354 | <dt><span class="sect2"><a href="#emulation-packages">19.6.18. Packages supporting running binaries in | | 354 | <dt><span class="sect2"><a href="#emulation-packages">19.6.18. Packages supporting running binaries in |
355 | emulation</a></span></dt> | | 355 | emulation</a></span></dt> |
356 | <dt><span class="sect2"><a href="#hicolor-theme">19.6.19. Packages installing hicolor theme icons</a></span></dt> | | 356 | <dt><span class="sect2"><a href="#hicolor-theme">19.6.19. Packages installing hicolor theme icons</a></span></dt> |
357 | <dt><span class="sect2"><a href="#desktop-files">19.6.20. Packages installing desktop files</a></span></dt> | | 357 | <dt><span class="sect2"><a href="#desktop-files">19.6.20. Packages installing desktop files</a></span></dt> |
358 | </dl></dd> | | 358 | </dl></dd> |
359 | <dt><span class="sect1"><a href="#punting">19.7. Marking packages as having problems</a></span></dt> | | 359 | <dt><span class="sect1"><a href="#punting">19.7. Marking packages as having problems</a></span></dt> |
360 | </dl></dd> | | 360 | </dl></dd> |
361 | <dt><span class="chapter"><a href="#debug">20. Debugging</a></span></dt> | | 361 | <dt><span class="chapter"><a href="#debug">20. Debugging</a></span></dt> |
362 | <dt><span class="chapter"><a href="#submit">21. Submitting and Committing</a></span></dt> | | 362 | <dt><span class="chapter"><a href="#submit">21. Submitting and Committing</a></span></dt> |
363 | <dd><dl> | | 363 | <dd><dl> |
364 | <dt><span class="sect1"><a href="#submitting-binary-packages">21.1. Submitting binary packages</a></span></dt> | | 364 | <dt><span class="sect1"><a href="#submitting-binary-packages">21.1. Submitting binary packages</a></span></dt> |
365 | <dt><span class="sect1"><a href="#submitting-your-package">21.2. Submitting source packages (for non-NetBSD-developers)</a></span></dt> | | 365 | <dt><span class="sect1"><a href="#submitting-your-package">21.2. Submitting source packages (for non-NetBSD-developers)</a></span></dt> |
366 | <dt><span class="sect1"><a href="#general-notes-for-changes">21.3. General notes when adding, updating, or removing packages</a></span></dt> | | 366 | <dt><span class="sect1"><a href="#general-notes-for-changes">21.3. General notes when adding, updating, or removing packages</a></span></dt> |
367 | <dt><span class="sect1"><a href="#commit-messages">21.4. Commit Messages</a></span></dt> | | 367 | <dt><span class="sect1"><a href="#commit-messages">21.4. Commit Messages</a></span></dt> |
368 | <dt><span class="sect1"><a href="#committing-importing">21.5. Committing: Adding a package to CVS</a></span></dt> | | 368 | <dt><span class="sect1"><a href="#committing-importing">21.5. Committing: Adding a package to CVS</a></span></dt> |
369 | <dt><span class="sect1"><a href="#updating-package">21.6. Updating a package to a newer version</a></span></dt> | | 369 | <dt><span class="sect1"><a href="#updating-package">21.6. Updating a package to a newer version</a></span></dt> |
370 | <dt><span class="sect1"><a href="#renaming-package">21.7. Renaming a package in pkgsrc</a></span></dt> | | 370 | <dt><span class="sect1"><a href="#renaming-package">21.7. Renaming a package in pkgsrc</a></span></dt> |
371 | <dt><span class="sect1"><a href="#moving-package">21.8. Moving a package in pkgsrc</a></span></dt> | | 371 | <dt><span class="sect1"><a href="#moving-package">21.8. Moving a package in pkgsrc</a></span></dt> |
372 | </dl></dd> | | 372 | </dl></dd> |
373 | <dt><span class="chapter"><a href="#devfaq">22. Frequently Asked Questions</a></span></dt> | | 373 | <dt><span class="chapter"><a href="#devfaq">22. Frequently Asked Questions</a></span></dt> |
374 | <dt><span class="chapter"><a href="#gnome">23. GNOME packaging and porting</a></span></dt> | | 374 | <dt><span class="chapter"><a href="#gnome">23. GNOME packaging and porting</a></span></dt> |
375 | <dd><dl> | | 375 | <dd><dl> |
376 | <dt><span class="sect1"><a href="#meta-packages">23.1. Meta packages</a></span></dt> | | 376 | <dt><span class="sect1"><a href="#meta-packages">23.1. Meta packages</a></span></dt> |
377 | <dt><span class="sect1"><a href="#new-package">23.2. Packaging a GNOME application</a></span></dt> | | 377 | <dt><span class="sect1"><a href="#new-package">23.2. Packaging a GNOME application</a></span></dt> |
378 | <dt><span class="sect1"><a href="#full-update">23.3. Updating GNOME to a newer version</a></span></dt> | | 378 | <dt><span class="sect1"><a href="#full-update">23.3. Updating GNOME to a newer version</a></span></dt> |
379 | <dt><span class="sect1"><a href="#patching">23.4. Patching guidelines</a></span></dt> | | 379 | <dt><span class="sect1"><a href="#patching">23.4. Patching guidelines</a></span></dt> |
380 | </dl></dd> | | 380 | </dl></dd> |
381 | </dl></dd> | | 381 | </dl></dd> |
382 | <dt><span class="part"><a href="#infrastructure">III. The pkgsrc infrastructure internals</a></span></dt> | | 382 | <dt><span class="part"><a href="#infrastructure">III. The pkgsrc infrastructure internals</a></span></dt> |
383 | <dd><dl> | | 383 | <dd><dl> |
384 | <dt><span class="chapter"><a href="#infr.design">24. Design of the pkgsrc infrastructure</a></span></dt> | | 384 | <dt><span class="chapter"><a href="#infr.design">24. Design of the pkgsrc infrastructure</a></span></dt> |
385 | <dd><dl> | | 385 | <dd><dl> |
386 | <dt><span class="sect1"><a href="#infr.vardef">24.1. The meaning of variable definitions</a></span></dt> | | 386 | <dt><span class="sect1"><a href="#infr.vardef">24.1. The meaning of variable definitions</a></span></dt> |
387 | <dt><span class="sect1"><a href="#infr.vardef.problems">24.2. Avoiding problems before they arise</a></span></dt> | | 387 | <dt><span class="sect1"><a href="#infr.vardef.problems">24.2. Avoiding problems before they arise</a></span></dt> |
388 | <dt><span class="sect1"><a href="#infr.var">24.3. Variable evaluation</a></span></dt> | | 388 | <dt><span class="sect1"><a href="#infr.var">24.3. Variable evaluation</a></span></dt> |
389 | <dd><dl> | | 389 | <dd><dl> |
390 | <dt><span class="sect2"><a href="#infr.var.load">24.3.1. At load time</a></span></dt> | | 390 | <dt><span class="sect2"><a href="#infr.var.load">24.3.1. At load time</a></span></dt> |
391 | <dt><span class="sect2"><a href="#infr.var.run">24.3.2. At runtime</a></span></dt> | | 391 | <dt><span class="sect2"><a href="#infr.var.run">24.3.2. At runtime</a></span></dt> |
392 | </dl></dd> | | 392 | </dl></dd> |
393 | <dt><span class="sect1"><a href="#infr.varspec">24.4. How can variables be specified?</a></span></dt> | | 393 | <dt><span class="sect1"><a href="#infr.varspec">24.4. How can variables be specified?</a></span></dt> |
394 | <dt><span class="sect1"><a href="#infr.design.intf">24.5. Designing interfaces for Makefile fragments</a></span></dt> | | 394 | <dt><span class="sect1"><a href="#infr.design.intf">24.5. Designing interfaces for Makefile fragments</a></span></dt> |
395 | <dd><dl> | | 395 | <dd><dl> |
396 | <dt><span class="sect2"><a href="#infr.design.intf.proc">24.5.1. Procedures with parameters</a></span></dt> | | 396 | <dt><span class="sect2"><a href="#infr.design.intf.proc">24.5.1. Procedures with parameters</a></span></dt> |
397 | <dt><span class="sect2"><a href="#infr.design.intf.action">24.5.2. Actions taken on behalf of parameters</a></span></dt> | | 397 | <dt><span class="sect2"><a href="#infr.design.intf.action">24.5.2. Actions taken on behalf of parameters</a></span></dt> |
398 | </dl></dd> | | 398 | </dl></dd> |
399 | <dt><span class="sect1"><a href="#infr.order">24.6. The order in which files are loaded</a></span></dt> | | 399 | <dt><span class="sect1"><a href="#infr.order">24.6. The order in which files are loaded</a></span></dt> |
400 | <dd><dl> | | 400 | <dd><dl> |
401 | <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> | | 401 | <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> |
402 | <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> | | 402 | <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> |
403 | </dl></dd> | | 403 | </dl></dd> |
404 | </dl></dd> | | 404 | </dl></dd> |
405 | <dt><span class="chapter"><a href="#regression">25. Regression tests</a></span></dt> | | 405 | <dt><span class="chapter"><a href="#regression">25. Regression tests</a></span></dt> |
406 | <dd><dl> | | 406 | <dd><dl> |
407 | <dt><span class="sect1"><a href="#regression.run">25.1. Running the regression tests</a></span></dt> | | 407 | <dt><span class="sect1"><a href="#regression.run">25.1. Running the regression tests</a></span></dt> |
408 | <dt><span class="sect1"><a href="#regression.new">25.2. Adding a new regression test</a></span></dt> | | 408 | <dt><span class="sect1"><a href="#regression.new">25.2. Adding a new regression test</a></span></dt> |
409 | <dd><dl> | | 409 | <dd><dl> |
410 | <dt><span class="sect2"><a href="#regression.fun.override">25.2.1. Overridable functions</a></span></dt> | | 410 | <dt><span class="sect2"><a href="#regression.fun.override">25.2.1. Overridable functions</a></span></dt> |
411 | <dt><span class="sect2"><a href="#regression.fun.helper">25.2.2. Helper functions</a></span></dt> | | 411 | <dt><span class="sect2"><a href="#regression.fun.helper">25.2.2. Helper functions</a></span></dt> |
412 | </dl></dd> | | 412 | </dl></dd> |
413 | </dl></dd> | | 413 | </dl></dd> |
414 | <dt><span class="chapter"><a href="#porting">26. Porting pkgsrc</a></span></dt> | | 414 | <dt><span class="chapter"><a href="#porting">26. Porting pkgsrc</a></span></dt> |
415 | <dd><dl><dt><span class="sect1"><a href="#porting.opsys">26.1. Porting pkgsrc to a new operating system</a></span></dt></dl></dd> | | 415 | <dd><dl><dt><span class="sect1"><a href="#porting.opsys">26.1. Porting pkgsrc to a new operating system</a></span></dt></dl></dd> |
416 | </dl></dd> | | 416 | </dl></dd> |
417 | <dt><span class="appendix"><a href="#examples">A. A simple example package: bison</a></span></dt> | | 417 | <dt><span class="appendix"><a href="#examples">A. A simple example package: bison</a></span></dt> |
418 | <dd><dl> | | 418 | <dd><dl> |
419 | <dt><span class="sect1"><a href="#example-files">A.1. files</a></span></dt> | | 419 | <dt><span class="sect1"><a href="#example-files">A.1. files</a></span></dt> |
420 | <dd><dl> | | 420 | <dd><dl> |
421 | <dt><span class="sect2"><a href="#example-Makefile">A.1.1. Makefile</a></span></dt> | | 421 | <dt><span class="sect2"><a href="#example-Makefile">A.1.1. Makefile</a></span></dt> |
422 | <dt><span class="sect2"><a href="#example-descr">A.1.2. DESCR</a></span></dt> | | 422 | <dt><span class="sect2"><a href="#example-descr">A.1.2. DESCR</a></span></dt> |
423 | <dt><span class="sect2"><a href="#example-plist">A.1.3. PLIST</a></span></dt> | | 423 | <dt><span class="sect2"><a href="#example-plist">A.1.3. PLIST</a></span></dt> |
424 | <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> | | 424 | <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> |
425 | </dl></dd> | | 425 | </dl></dd> |
426 | <dt><span class="sect1"><a href="#steps-for-b-i-p">A.2. Steps for building, installing, packaging</a></span></dt> | | 426 | <dt><span class="sect1"><a href="#steps-for-b-i-p">A.2. Steps for building, installing, packaging</a></span></dt> |
427 | </dl></dd> | | 427 | </dl></dd> |
428 | <dt><span class="appendix"><a href="#logs">B. Build logs</a></span></dt> | | 428 | <dt><span class="appendix"><a href="#logs">B. Build logs</a></span></dt> |
429 | <dd><dl> | | 429 | <dd><dl> |
430 | <dt><span class="sect1"><a href="#logs.building">B.1. Building figlet</a></span></dt> | | 430 | <dt><span class="sect1"><a href="#logs.building">B.1. Building figlet</a></span></dt> |
431 | <dt><span class="sect1"><a href="#logs.package">B.2. Packaging figlet</a></span></dt> | | 431 | <dt><span class="sect1"><a href="#logs.package">B.2. Packaging figlet</a></span></dt> |
432 | </dl></dd> | | 432 | </dl></dd> |
433 | <dt><span class="appendix"><a href="#ftp-layout">C. Directory layout of the pkgsrc FTP server</a></span></dt> | | 433 | <dt><span class="appendix"><a href="#ftp-layout">C. Directory layout of the pkgsrc FTP server</a></span></dt> |
434 | <dd><dl> | | 434 | <dd><dl> |
435 | <dt><span class="sect1"><a href="#ftp-distfiles">C.1. <code class="filename">distfiles</code>: The distributed source files</a></span></dt> | | 435 | <dt><span class="sect1"><a href="#ftp-distfiles">C.1. <code class="filename">distfiles</code>: The distributed source files</a></span></dt> |
436 | <dt><span class="sect1"><a href="#ftp-misc">C.2. <code class="filename">misc</code>: Miscellaneous things</a></span></dt> | | 436 | <dt><span class="sect1"><a href="#ftp-misc">C.2. <code class="filename">misc</code>: Miscellaneous things</a></span></dt> |
437 | <dt><span class="sect1"><a href="#ftp-packages">C.3. <code class="filename">packages</code>: Binary packages</a></span></dt> | | 437 | <dt><span class="sect1"><a href="#ftp-packages">C.3. <code class="filename">packages</code>: Binary packages</a></span></dt> |
438 | <dt><span class="sect1"><a href="#ftp-reports">C.4. <code class="filename">reports</code>: Bulk build reports</a></span></dt> | | 438 | <dt><span class="sect1"><a href="#ftp-reports">C.4. <code class="filename">reports</code>: Bulk build reports</a></span></dt> |
439 | <dt><span class="sect1"><a href="#ftp-source">C.5. <code class="filename">current</code>, | | 439 | <dt><span class="sect1"><a href="#ftp-source">C.5. <code class="filename">current</code>, |
440 | <code class="filename">pkgsrc-20<em class="replaceable"><code>xx</code></em>Q<em class="replaceable"><code>y</code></em></code>: | | 440 | <code class="filename">pkgsrc-20<em class="replaceable"><code>xx</code></em>Q<em class="replaceable"><code>y</code></em></code>: |
441 | source packages</a></span></dt> | | 441 | source packages</a></span></dt> |
442 | </dl></dd> | | 442 | </dl></dd> |
443 | <dt><span class="appendix"><a href="#editing">D. Editing guidelines for the pkgsrc guide</a></span></dt> | | 443 | <dt><span class="appendix"><a href="#editing">D. Editing guidelines for the pkgsrc guide</a></span></dt> |
444 | <dd><dl> | | 444 | <dd><dl> |
445 | <dt><span class="sect1"><a href="#targets">D.1. Make targets</a></span></dt> | | 445 | <dt><span class="sect1"><a href="#targets">D.1. Make targets</a></span></dt> |
446 | <dt><span class="sect1"><a href="#procedure">D.2. Procedure</a></span></dt> | | 446 | <dt><span class="sect1"><a href="#procedure">D.2. Procedure</a></span></dt> |
447 | </dl></dd> | | 447 | </dl></dd> |
448 | </dl> | | 448 | </dl> |
449 | </div> | | 449 | </div> |
450 | <div class="list-of-tables"> | | 450 | <div class="list-of-tables"> |
451 | <p><b>List of Tables</b></p> | | 451 | <p><b>List of Tables</b></p> |
452 | <dl> | | 452 | <dl> |
453 | <dt>1.1. <a href="#supported-platforms">Platforms supported by pkgsrc</a> | | 453 | <dt>1.1. <a href="#supported-platforms">Platforms supported by pkgsrc</a> |
454 | </dt> | | 454 | </dt> |
455 | <dt>11.1. <a href="#patch-examples">Patching examples</a> | | 455 | <dt>11.1. <a href="#patch-examples">Patching examples</a> |
456 | </dt> | | 456 | </dt> |
457 | <dt>23.1. <a href="#plist-handling">PLIST handling for GNOME packages</a> | | 457 | <dt>23.1. <a href="#plist-handling">PLIST handling for GNOME packages</a> |
458 | </dt> | | 458 | </dt> |
459 | </dl> | | 459 | </dl> |
460 | </div> | | 460 | </div> |
461 | <div class="chapter"> | | 461 | <div class="chapter"> |
462 | <div class="titlepage"><div><div><h1 class="title"> | | 462 | <div class="titlepage"><div><div><h1 class="title"> |
463 | <a name="introduction"></a>Chapter 1. What is pkgsrc?</h1></div></div></div> | | 463 | <a name="introduction"></a>Chapter 1. What is pkgsrc?</h1></div></div></div> |
464 | <div class="toc"> | | 464 | <div class="toc"> |
465 | <p><b>Table of Contents</b></p> | | 465 | <p><b>Table of Contents</b></p> |
466 | <dl class="toc"> | | 466 | <dl class="toc"> |
467 | <dt><span class="sect1"><a href="#introduction-section">1.1. Introduction</a></span></dt> | | 467 | <dt><span class="sect1"><a href="#introduction-section">1.1. Introduction</a></span></dt> |
468 | <dd><dl> | | 468 | <dd><dl> |
469 | <dt><span class="sect2"><a href="#why-pkgsrc">1.1.1. Why pkgsrc?</a></span></dt> | | 469 | <dt><span class="sect2"><a href="#why-pkgsrc">1.1.1. Why pkgsrc?</a></span></dt> |
470 | <dt><span class="sect2"><a href="#intro.platforms">1.1.2. Supported platforms</a></span></dt> | | 470 | <dt><span class="sect2"><a href="#intro.platforms">1.1.2. Supported platforms</a></span></dt> |
471 | </dl></dd> | | 471 | </dl></dd> |
472 | <dt><span class="sect1"><a href="#overview">1.2. Overview</a></span></dt> | | 472 | <dt><span class="sect1"><a href="#overview">1.2. Overview</a></span></dt> |
473 | <dt><span class="sect1"><a href="#terminology">1.3. Terminology</a></span></dt> | | 473 | <dt><span class="sect1"><a href="#terminology">1.3. Terminology</a></span></dt> |
474 | <dd><dl><dt><span class="sect2"><a href="#term.roles">1.3.1. Roles involved in pkgsrc</a></span></dt></dl></dd> | | 474 | <dd><dl><dt><span class="sect2"><a href="#term.roles">1.3.1. Roles involved in pkgsrc</a></span></dt></dl></dd> |
475 | <dt><span class="sect1"><a href="#typography">1.4. Typography</a></span></dt> | | 475 | <dt><span class="sect1"><a href="#typography">1.4. Typography</a></span></dt> |
476 | </dl> | | 476 | </dl> |
477 | </div> | | 477 | </div> |
478 | <div class="sect1"> | | 478 | <div class="sect1"> |
479 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 479 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
480 | <a name="introduction-section"></a>1.1. Introduction</h2></div></div></div> | | 480 | <a name="introduction-section"></a>1.1. Introduction</h2></div></div></div> |
481 | <p>There is a lot of software freely available for Unix-based | | 481 | <p>There is a lot of software freely available for Unix-based |
482 | systems, which is usually available in form of the source code. Before | | 482 | systems, which is usually available in form of the source code. Before |
483 | such software can be used, it needs to be configured to the local | | 483 | such software can be used, it needs to be configured to the local |
484 | system, compiled and installed, and this is exactly what The NetBSD | | 484 | system, compiled and installed, and this is exactly what The NetBSD |
485 | Packages Collection (pkgsrc) does. pkgsrc also has some basic commands | | 485 | Packages Collection (pkgsrc) does. pkgsrc also has some basic commands |
486 | to handle binary packages, so that not every user has to build the | | 486 | to handle binary packages, so that not every user has to build the |
487 | packages for himself, which is a time-costly task.</p> | | 487 | packages for himself, which is a time-costly task.</p> |
488 | <p>pkgsrc currently contains several thousand packages, | | 488 | <p>pkgsrc currently contains several thousand packages, |
489 | including:</p> | | 489 | including:</p> |
490 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 490 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
491 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/apache24/README.html" target="_top"><code class="filename">www/apache24</code></a> - The Apache | | 491 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/apache24/README.html" target="_top"><code class="filename">www/apache24</code></a> - The Apache |
492 | web server</p></li> | | 492 | web server</p></li> |
493 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/firefox/README.html" target="_top"><code class="filename">www/firefox</code></a> - The Firefox | | 493 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/firefox/README.html" target="_top"><code class="filename">www/firefox</code></a> - The Firefox |
494 | web browser</p></li> | | 494 | web browser</p></li> |
495 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome/README.html" target="_top"><code class="filename">meta-pkgs/gnome</code></a> - The GNOME | | 495 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome/README.html" target="_top"><code class="filename">meta-pkgs/gnome</code></a> - The GNOME |
496 | Desktop Environment</p></li> | | 496 | Desktop Environment</p></li> |
497 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/kde4/README.html" target="_top"><code class="filename">meta-pkgs/kde4</code></a> - The K | | 497 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/kde4/README.html" target="_top"><code class="filename">meta-pkgs/kde4</code></a> - The K |
498 | Desktop Environment</p></li> | | 498 | Desktop Environment</p></li> |
499 | </ul></div> | | 499 | </ul></div> |
500 | <p>… just to name a few.</p> | | 500 | <p>… just to name a few.</p> |
501 | <p>pkgsrc has built-in support for handling varying dependencies, | | 501 | <p>pkgsrc has built-in support for handling varying dependencies, |
502 | such as pthreads and X11, and extended features such as IPv6 support on | | 502 | such as pthreads and X11, and extended features such as IPv6 support on |
503 | a range of platforms.</p> | | 503 | a range of platforms.</p> |
504 | <div class="sect2"> | | 504 | <div class="sect2"> |
505 | <div class="titlepage"><div><div><h3 class="title"> | | 505 | <div class="titlepage"><div><div><h3 class="title"> |
506 | <a name="why-pkgsrc"></a>1.1.1. Why pkgsrc?</h3></div></div></div> | | 506 | <a name="why-pkgsrc"></a>1.1.1. Why pkgsrc?</h3></div></div></div> |
507 | <p> | | 507 | <p> |
508 | pkgsrc provides the following key features: | | 508 | pkgsrc provides the following key features: |
509 | </p> | | 509 | </p> |
510 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 510 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
511 | <li class="listitem"><p>Easy building of software from source as well as the creation | | 511 | <li class="listitem"><p>Easy building of software from source as well as the creation |
512 | and installation of binary packages. The source and latest | | 512 | and installation of binary packages. The source and latest |
513 | patches are retrieved from a master or mirror download site, checksum | | 513 | patches are retrieved from a master or mirror download site, checksum |
514 | verified, then built on your system. Support for binary-only | | 514 | verified, then built on your system. Support for binary-only |
515 | distributions is available for both native platforms and NetBSD | | 515 | distributions is available for both native platforms and NetBSD |
516 | emulated platforms.</p></li> | | 516 | emulated platforms.</p></li> |
517 | <li class="listitem"><p>All packages are installed in a consistent directory tree, | | 517 | <li class="listitem"><p>All packages are installed in a consistent directory tree, |
518 | including binaries, libraries, man pages and other | | 518 | including binaries, libraries, man pages and other |
519 | documentation.</p></li> | | 519 | documentation.</p></li> |
520 | <li class="listitem"><p>Tracking of package dependencies automatically, including when | | 520 | <li class="listitem"><p>Tracking of package dependencies automatically, including when |
521 | performing updates, to ensure required packages are installed. The | | 521 | performing updates, to ensure required packages are installed. The |
522 | configuration files of various packages are handled automatically during | | 522 | configuration files of various packages are handled automatically during |
523 | updates, so local changes are preserved.</p></li> | | 523 | updates, so local changes are preserved.</p></li> |
524 | <li class="listitem"><p>Like NetBSD, pkgsrc is designed with portability in mind and | | 524 | <li class="listitem"><p>Like NetBSD, pkgsrc is designed with portability in mind and |
525 | consists of highly portable code. This allows the greatest speed of | | 525 | consists of highly portable code. This allows the greatest speed of |
526 | development when porting to a new platform. This portability also | | 526 | development when porting to a new platform. This portability also |
527 | ensures that pkgsrc is <span class="emphasis"><em>consistent across all | | 527 | ensures that pkgsrc is <span class="emphasis"><em>consistent across all |
528 | platforms</em></span>.</p></li> | | 528 | platforms</em></span>.</p></li> |
529 | <li class="listitem"><p>The installation prefix, acceptable software licenses, | | 529 | <li class="listitem"><p>The installation prefix, acceptable software licenses, |
530 | international encryption requirements and build-time options for a | | 530 | international encryption requirements and build-time options for a |
531 | large number of packages are all set in a simple, central | | 531 | large number of packages are all set in a simple, central |
532 | configuration file.</p></li> | | 532 | configuration file.</p></li> |
533 | <li class="listitem"><p>The entire source (not including the distribution files) is | | 533 | <li class="listitem"><p>The entire source (not including the distribution files) is |
534 | freely available under a BSD license, so you may extend and adapt | | 534 | freely available under a BSD license, so you may extend and adapt |
535 | pkgsrc to your needs. Support for local packages and patches is | | 535 | pkgsrc to your needs. Support for local packages and patches is |
536 | available right out of the box, so you can configure it specifically | | 536 | available right out of the box, so you can configure it specifically |
537 | for your environment.</p></li> | | 537 | for your environment.</p></li> |
538 | </ul></div> | | 538 | </ul></div> |
539 | <p>The following principles are basic to pkgsrc:</p> | | 539 | <p>The following principles are basic to pkgsrc:</p> |
540 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 540 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
541 | <li class="listitem"><p><span class="quote">“<span class="quote">It should only work if it's right.</span>”</span> | | 541 | <li class="listitem"><p><span class="quote">“<span class="quote">It should only work if it's right.</span>”</span> |
542 | — That means, if a package contains bugs, it's better to find | | 542 | — That means, if a package contains bugs, it's better to find |
543 | them and to complain about them rather than to just install the package | | 543 | them and to complain about them rather than to just install the package |
544 | and hope that it works. There are numerous checks in pkgsrc that try to | | 544 | and hope that it works. There are numerous checks in pkgsrc that try to |
545 | find such bugs: Static analysis tools (<a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>), build-time checks (portability | | 545 | find such bugs: Static analysis tools (<a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>), build-time checks (portability |
546 | of shell scripts), and post-installation checks (installed files, | | 546 | of shell scripts), and post-installation checks (installed files, |
547 | references to shared libraries, script interpreters).</p></li> | | 547 | references to shared libraries, script interpreters).</p></li> |
548 | <li class="listitem"><p><span class="quote">“<span class="quote">If it works, it should work everywhere</span>”</span> | | 548 | <li class="listitem"><p><span class="quote">“<span class="quote">If it works, it should work everywhere</span>”</span> |
549 | — Like NetBSD has been ported to many hardware architectures, | | 549 | — Like NetBSD has been ported to many hardware architectures, |
550 | pkgsrc has been ported to many operating systems. Care is taken that | | 550 | pkgsrc has been ported to many operating systems. Care is taken that |
551 | packages behave the same on all platforms.</p></li> | | 551 | packages behave the same on all platforms.</p></li> |
552 | </ul></div> | | 552 | </ul></div> |
553 | </div> | | 553 | </div> |
554 | <div class="sect2"> | | 554 | <div class="sect2"> |
555 | <div class="titlepage"><div><div><h3 class="title"> | | 555 | <div class="titlepage"><div><div><h3 class="title"> |
556 | <a name="intro.platforms"></a>1.1.2. Supported platforms</h3></div></div></div> | | 556 | <a name="intro.platforms"></a>1.1.2. Supported platforms</h3></div></div></div> |
557 | <p>pkgsrc consists of both a source distribution and a binary | | 557 | <p>pkgsrc consists of both a source distribution and a binary |
558 | distribution for these operating systems. After retrieving the required | | 558 | distribution for these operating systems. After retrieving the required |
559 | source or binaries, you can be up and running with pkgsrc in just | | 559 | source or binaries, you can be up and running with pkgsrc in just |
560 | minutes!</p> | | 560 | minutes!</p> |
561 | <p>pkgsrc was derived from FreeBSD's ports system, and | | 561 | <p>pkgsrc was derived from FreeBSD's ports system, and |
562 | initially developed for NetBSD only. Since then, pkgsrc has | | 562 | initially developed for NetBSD only. Since then, pkgsrc has |
563 | grown a lot, and now supports the following platforms:</p> | | 563 | grown a lot, and now supports the following platforms:</p> |
564 | <div class="table"> | | 564 | <div class="table"> |
565 | <a name="supported-platforms"></a><p class="title"><b>Table 1.1. Platforms supported by pkgsrc</b></p> | | 565 | <a name="supported-platforms"></a><p class="title"><b>Table 1.1. Platforms supported by pkgsrc</b></p> |
566 | <div class="table-contents"><table class="table" summary="Platforms supported by pkgsrc" border="1"> | | 566 | <div class="table-contents"><table class="table" summary="Platforms supported by pkgsrc" border="1"> |
567 | <colgroup> | | 567 | <colgroup> |
568 | <col> | | 568 | <col> |
569 | <col> | | 569 | <col> |
570 | <col> | | 570 | <col> |
571 | </colgroup> | | 571 | </colgroup> |
572 | <thead><tr> | | 572 | <thead><tr> |
573 | <th>Platform</th> | | 573 | <th>Platform</th> |
574 | <th>Date Support Added</th> | | 574 | <th>Date Support Added</th> |
575 | <th>Notes</th> | | 575 | <th>Notes</th> |
576 | </tr></thead> | | 576 | </tr></thead> |
577 | <tbody> | | 577 | <tbody> |
578 | <tr> | | 578 | <tr> |
579 | <td><a class="ulink" href="http://www.NetBSD.org/" target="_top">NetBSD</a></td> | | 579 | <td><a class="ulink" href="http://www.NetBSD.org/" target="_top">NetBSD</a></td> |
580 | <td align="center">Aug 1997</td> | | 580 | <td align="center">Aug 1997</td> |
581 | <td class="auto-generated"> </td> | | 581 | <td class="auto-generated"> </td> |
582 | </tr> | | 582 | </tr> |
583 | <tr> | | 583 | <tr> |
584 | <td><a class="ulink" href="http://wwws.sun.com/software/solaris/" target="_top">Solaris</a></td> | | 584 | <td><a class="ulink" href="http://wwws.sun.com/software/solaris/" target="_top">Solaris</a></td> |
585 | <td align="center">Mar 1999</td> | | 585 | <td align="center">Mar 1999</td> |
586 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.Solaris" target="_top">README.Solaris</a></td> | | 586 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.Solaris" target="_top">README.Solaris</a></td> |
587 | </tr> | | 587 | </tr> |
588 | <tr> | | 588 | <tr> |
589 | <td><a class="ulink" href="http://www.kernel.org/" target="_top">Linux</a></td> | | 589 | <td><a class="ulink" href="http://www.kernel.org/" target="_top">Linux</a></td> |
590 | <td align="center">Jun 1999</td> | | 590 | <td align="center">Jun 1999</td> |
591 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.Linux" target="_top">README.Linux</a></td> | | 591 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.Linux" target="_top">README.Linux</a></td> |
592 | </tr> | | 592 | </tr> |
593 | <tr> | | 593 | <tr> |
594 | <td> | | 594 | <td> |
595 | <a class="ulink" href="https://developer.apple.com/macos/" target="_top">Darwin / Mac OS X / OS X / macOS</a> | | 595 | <a class="ulink" href="https://developer.apple.com/macos/" target="_top">Darwin / Mac OS X / OS X / macOS</a> |
596 | </td> | | 596 | </td> |
597 | <td align="center">Oct 2001</td> | | 597 | <td align="center">Oct 2001</td> |
598 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.MacOSX" target="_top">README.MacOSX</a></td> | | 598 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.MacOSX" target="_top">README.MacOSX</a></td> |
599 | </tr> | | 599 | </tr> |
600 | <tr> | | 600 | <tr> |
601 | <td><a class="ulink" href="http://www.freebsd.org/" target="_top">FreeBSD</a></td> | | 601 | <td><a class="ulink" href="http://www.freebsd.org/" target="_top">FreeBSD</a></td> |
602 | <td align="center">Nov 2002</td> | | 602 | <td align="center">Nov 2002</td> |
603 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.FreeBSD" target="_top">README.FreeBSD</a></td> | | 603 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.FreeBSD" target="_top">README.FreeBSD</a></td> |
604 | </tr> | | 604 | </tr> |
605 | <tr> | | 605 | <tr> |
606 | <td><a class="ulink" href="http://www.openbsd.org/" target="_top">OpenBSD</a></td> | | 606 | <td><a class="ulink" href="http://www.openbsd.org/" target="_top">OpenBSD</a></td> |
607 | <td align="center">Nov 2002</td> | | 607 | <td align="center">Nov 2002</td> |
608 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.OpenBSD" target="_top">README.OpenBSD</a></td> | | 608 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.OpenBSD" target="_top">README.OpenBSD</a></td> |
609 | </tr> | | 609 | </tr> |
610 | <tr> | | 610 | <tr> |
611 | <td><a class="ulink" href="http://www.sgi.com/software/irix/" target="_top">IRIX</a></td> | | 611 | <td><a class="ulink" href="http://www.sgi.com/software/irix/" target="_top">IRIX</a></td> |
612 | <td align="center">Dec 2002</td> | | 612 | <td align="center">Dec 2002</td> |
613 | <td> | | 613 | <td> |
614 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.IRIX" target="_top">README.IRIX</a> | | 614 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.IRIX" target="_top">README.IRIX</a> |
615 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.IRIX5.3" target="_top">README.IRIX5.3</a> | | 615 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.IRIX5.3" target="_top">README.IRIX5.3</a> |
616 | </td> | | 616 | </td> |
617 | </tr> | | 617 | </tr> |
618 | <tr> | | 618 | <tr> |
619 | <td>BSD/OS</td> | | 619 | <td>BSD/OS</td> |
620 | <td align="center">Dec 2003</td> | | 620 | <td align="center">Dec 2003</td> |
621 | <td class="auto-generated"> </td> | | 621 | <td class="auto-generated"> </td> |
622 | </tr> | | 622 | </tr> |
623 | <tr> | | 623 | <tr> |
624 | <td><a class="ulink" href="http://www-1.ibm.com/servers/aix/" target="_top">AIX</a></td> | | 624 | <td><a class="ulink" href="http://www-1.ibm.com/servers/aix/" target="_top">AIX</a></td> |
625 | <td align="center">Dec 2003</td> | | 625 | <td align="center">Dec 2003</td> |
626 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.AIX" target="_top">README.AIX</a></td> | | 626 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.AIX" target="_top">README.AIX</a></td> |
627 | </tr> | | 627 | </tr> |
628 | <tr> | | 628 | <tr> |
629 | <td> | | 629 | <td> |
630 | <a class="ulink" href="http://www.microsoft.com/windows/sfu/" target="_top">Interix</a> | | 630 | <a class="ulink" href="http://www.microsoft.com/windows/sfu/" target="_top">Interix</a> |
631 | (Microsoft Windows Services for Unix) | | 631 | (Microsoft Windows Services for Unix) |
632 | </td> | | 632 | </td> |
633 | <td align="center">Mar 2004</td> | | 633 | <td align="center">Mar 2004</td> |
634 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.Interix" target="_top">README.Interix</a></td> | | 634 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.Interix" target="_top">README.Interix</a></td> |
635 | </tr> | | 635 | </tr> |
636 | <tr> | | 636 | <tr> |
637 | <td><a class="ulink" href="http://www.dragonflybsd.org/" target="_top">DragonFlyBSD</a></td> | | 637 | <td><a class="ulink" href="http://www.dragonflybsd.org/" target="_top">DragonFlyBSD</a></td> |
638 | <td align="center">Oct 2004</td> | | 638 | <td align="center">Oct 2004</td> |
639 | <td class="auto-generated"> </td> | | 639 | <td class="auto-generated"> </td> |
640 | </tr> | | 640 | </tr> |
641 | <tr> | | 641 | <tr> |
642 | <td><a class="ulink" href="http://www.tru64.org/" target="_top">OSF/1</a></td> | | 642 | <td><a class="ulink" href="http://www.tru64.org/" target="_top">OSF/1</a></td> |
643 | <td align="center">Nov 2004</td> | | 643 | <td align="center">Nov 2004</td> |
644 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.OSF1" target="_top">README.OSF1</a></td> | | 644 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.OSF1" target="_top">README.OSF1</a></td> |
645 | </tr> | | 645 | </tr> |
646 | <tr> | | 646 | <tr> |
647 | <td><a class="ulink" href="http://www.hp.com/products1/unix/" target="_top">HP-UX</a></td> | | 647 | <td><a class="ulink" href="http://www.hp.com/products1/unix/" target="_top">HP-UX</a></td> |
648 | <td align="center">Apr 2007</td> | | 648 | <td align="center">Apr 2007</td> |
649 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.HPUX" target="_top">README.HPUX</a></td> | | 649 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.HPUX" target="_top">README.HPUX</a></td> |
650 | </tr> | | 650 | </tr> |
651 | <tr> | | 651 | <tr> |
652 | <td><a class="ulink" href="http://www.haiku-os.org/" target="_top">Haiku</a></td> | | 652 | <td><a class="ulink" href="http://www.haiku-os.org/" target="_top">Haiku</a></td> |
653 | <td align="center">Sep 2010</td> | | 653 | <td align="center">Sep 2010</td> |
654 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.Haiku" target="_top">README.Haiku</a></td> | | 654 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.Haiku" target="_top">README.Haiku</a></td> |
655 | </tr> | | 655 | </tr> |
656 | <tr> | | 656 | <tr> |
657 | <td><a class="ulink" href="http://www.mirbsd.org/" target="_top">MirBSD</a></td> | | 657 | <td><a class="ulink" href="http://www.mirbsd.org/" target="_top">MirBSD</a></td> |
658 | <td align="center">Jan 2011</td> | | 658 | <td align="center">Jan 2011</td> |
659 | <td class="auto-generated"> </td> | | 659 | <td class="auto-generated"> </td> |
660 | </tr> | | 660 | </tr> |
661 | <tr> | | 661 | <tr> |
662 | <td><a class="ulink" href="http://www.minix3.org/" target="_top">Minix3</a></td> | | 662 | <td><a class="ulink" href="http://www.minix3.org/" target="_top">Minix3</a></td> |
663 | <td align="center">Nov 2011</td> | | 663 | <td align="center">Nov 2011</td> |
664 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.Minix3" target="_top">README.Minix3</a></td> | | 664 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.Minix3" target="_top">README.Minix3</a></td> |
665 | </tr> | | 665 | </tr> |
666 | <tr> | | 666 | <tr> |
667 | <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> |
668 | <td align="center">Mar 2013</td> | | 668 | <td align="center">Mar 2013</td> |
669 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.Cygwin" target="_top">README.Cygwin</a></td> | | 669 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.Cygwin" target="_top">README.Cygwin</a></td> |
670 | </tr> | | 670 | </tr> |
671 | <tr> | | 671 | <tr> |
672 | <td><a class="ulink" href="http://www.debian.org/ports/kfreebsd-gnu/" target="_top">GNU/kFreeBSD</a></td> | | 672 | <td><a class="ulink" href="http://www.debian.org/ports/kfreebsd-gnu/" target="_top">GNU/kFreeBSD</a></td> |
673 | <td align="center">Jul 2013</td> | | 673 | <td align="center">Jul 2013</td> |
674 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.GNUkFreeBSD" target="_top">README.GNUkFreeBSD</a></td> | | 674 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.GNUkFreeBSD" target="_top">README.GNUkFreeBSD</a></td> |
675 | </tr> | | 675 | </tr> |
676 | <tr> | | 676 | <tr> |
677 | <td><a class="ulink" href="http://www.bitrig.org/" target="_top">Bitrig</a></td> | | 677 | <td><a class="ulink" href="http://www.bitrig.org/" target="_top">Bitrig</a></td> |
678 | <td align="center">Jun 2014</td> | | 678 | <td align="center">Jun 2014</td> |
679 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.Bitrig" target="_top">README.Bitrig</a></td> | | 679 | <td><a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc/bootstrap/README.Bitrig" target="_top">README.Bitrig</a></td> |
680 | </tr> | | 680 | </tr> |
681 | </tbody> | | 681 | </tbody> |
682 | </table></div> | | 682 | </table></div> |
683 | </div> | | 683 | </div> |
684 | <br class="table-break"> | | 684 | <br class="table-break"> |
685 | </div> | | 685 | </div> |
686 | </div> | | 686 | </div> |
687 | <div class="sect1"> | | 687 | <div class="sect1"> |
688 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 688 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
689 | <a name="overview"></a>1.2. Overview</h2></div></div></div> | | 689 | <a name="overview"></a>1.2. Overview</h2></div></div></div> |
690 | <p>This document is divided into three parts. The first, | | 690 | <p>This document is divided into three parts. The first, |
691 | <a class="link" href="#users-guide" title="Part I. The pkgsrc user's guide">The pkgsrc user's guide</a>, | | 691 | <a class="link" href="#users-guide" title="Part I. The pkgsrc user's guide">The pkgsrc user's guide</a>, |
692 | describes how one can use one of the packages in the Package | | 692 | describes how one can use one of the packages in the Package |
693 | Collection, either by installing a precompiled binary package, | | 693 | Collection, either by installing a precompiled binary package, |
694 | or by building one's own copy using the NetBSD package system. | | 694 | or by building one's own copy using the NetBSD package system. |
695 | 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 | | 695 | 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 |
696 | package so it can be easily built by other NetBSD users without | | 696 | package so it can be easily built by other NetBSD users without |
697 | knowing about the package's building details. The third part, | | 697 | knowing about the package's building details. The third part, |
698 | <a class="link" href="#infrastructure" title="Part III. The pkgsrc infrastructure internals">The pkgsrc infrastructure internals</a> | | 698 | <a class="link" href="#infrastructure" title="Part III. The pkgsrc infrastructure internals">The pkgsrc infrastructure internals</a> |
699 | is intended for those who want to understand how pkgsrc is | | 699 | is intended for those who want to understand how pkgsrc is |
700 | implemented.</p> | | 700 | implemented.</p> |
701 | <p>This document is available in various formats: | | 701 | <p>This document is available in various formats: |
702 | <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> | | 702 | <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> |
703 | </div> | | 703 | </div> |
704 | <div class="sect1"> | | 704 | <div class="sect1"> |
705 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 705 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
706 | <a name="terminology"></a>1.3. Terminology</h2></div></div></div> | | 706 | <a name="terminology"></a>1.3. Terminology</h2></div></div></div> |
707 | <p>There has been a lot of talk about <span class="quote">“<span class="quote">ports</span>”</span>, | | 707 | <p>There has been a lot of talk about <span class="quote">“<span class="quote">ports</span>”</span>, |
708 | <span class="quote">“<span class="quote">packages</span>”</span>, etc. so far. Here is a description of all the | | 708 | <span class="quote">“<span class="quote">packages</span>”</span>, etc. so far. Here is a description of all the |
709 | terminology used within this document.</p> | | 709 | terminology used within this document.</p> |
710 | <div class="variablelist"><dl class="variablelist"> | | 710 | <div class="variablelist"><dl class="variablelist"> |
711 | <dt><span class="term">Package</span></dt> | | 711 | <dt><span class="term">Package</span></dt> |
712 | <dd><p>A set of files and building instructions | | 712 | <dd><p>A set of files and building instructions |
713 | that describe what's necessary | | 713 | that describe what's necessary |
714 | to build a certain piece of software using | | 714 | to build a certain piece of software using |
715 | pkgsrc. Packages are traditionally stored under | | 715 | pkgsrc. Packages are traditionally stored under |
716 | <code class="filename">/usr/pkgsrc</code>, | | 716 | <code class="filename">/usr/pkgsrc</code>, |
717 | but may be stored in any location, | | 717 | but may be stored in any location, |
718 | referred to as <code class="varname">PKGSRCDIR</code>.</p></dd> | | 718 | referred to as <code class="varname">PKGSRCDIR</code>.</p></dd> |
719 | <dt><span class="term">The NetBSD package system</span></dt> | | 719 | <dt><span class="term">The NetBSD package system</span></dt> |
720 | <dd><p>This is the former name of <span class="quote">“<span class="quote">pkgsrc</span>”</span>. It | | 720 | <dd><p>This is the former name of <span class="quote">“<span class="quote">pkgsrc</span>”</span>. It |
721 | is part of the NetBSD operating system and can be bootstrapped | | 721 | is part of the NetBSD operating system and can be bootstrapped |
722 | to run on non-NetBSD operating systems as well. It handles | | 722 | to run on non-NetBSD operating systems as well. It handles |
723 | building (compiling), installing, and removing of | | 723 | building (compiling), installing, and removing of |
724 | packages.</p></dd> | | 724 | packages.</p></dd> |
725 | <dt><span class="term">Distfile</span></dt> | | 725 | <dt><span class="term">Distfile</span></dt> |
726 | <dd><p>This term describes the file or files that are | | 726 | <dd><p>This term describes the file or files that are |
727 | provided by the author of the piece of software to | | 727 | provided by the author of the piece of software to |
728 | distribute his work. All the changes necessary to build on | | 728 | distribute his work. All the changes necessary to build on |
729 | NetBSD are reflected in the corresponding package. Usually | | 729 | NetBSD are reflected in the corresponding package. Usually |
730 | the distfile is in the form of a compressed tar-archive, | | 730 | the distfile is in the form of a compressed tar-archive, |
731 | but other types are possible, too. Distfiles are usually | | 731 | but other types are possible, too. Distfiles are usually |
732 | stored below | | 732 | stored below |
733 | <code class="filename">/usr/pkgsrc/distfiles</code>.</p></dd> | | 733 | <code class="filename">/usr/pkgsrc/distfiles</code>.</p></dd> |
734 | <dt><span class="term">Port</span></dt> | | 734 | <dt><span class="term">Port</span></dt> |
735 | <dd><p>This is the term used by FreeBSD and OpenBSD people | | 735 | <dd><p>This is the term used by FreeBSD and OpenBSD people |
736 | for what we call a package. | | 736 | for what we call a package. |
737 | In NetBSD terminology, <span class="quote">“<span class="quote">port</span>”</span> refers to a different | | 737 | In NetBSD terminology, <span class="quote">“<span class="quote">port</span>”</span> refers to a different |
738 | architecture.</p></dd> | | 738 | architecture.</p></dd> |
739 | <dt><span class="term">Precompiled/binary package</span></dt> | | 739 | <dt><span class="term">Precompiled/binary package</span></dt> |
740 | <dd> | | 740 | <dd> |
741 | <p>A set of binaries built with pkgsrc from a distfile | | 741 | <p>A set of binaries built with pkgsrc from a distfile |
742 | and stuffed together in a single <code class="filename">.tgz</code> | | 742 | and stuffed together in a single <code class="filename">.tgz</code> |
743 | file so it can be installed on machines of the same | | 743 | file so it can be installed on machines of the same |
744 | machine architecture without the need to | | 744 | machine architecture without the need to |
745 | recompile. Packages are usually generated in | | 745 | recompile. Packages are usually generated in |
746 | <code class="filename">/usr/pkgsrc/packages</code>; there is also | | 746 | <code class="filename">/usr/pkgsrc/packages</code>; there is also |
747 | an archive on <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/" target="_top">ftp.NetBSD.org</a>.</p> | | 747 | an archive on <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/" target="_top">ftp.NetBSD.org</a>.</p> |
748 | <p>Sometimes, this is referred to by the term <span class="quote">“<span class="quote">package</span>”</span> too, | | 748 | <p>Sometimes, this is referred to by the term <span class="quote">“<span class="quote">package</span>”</span> too, |
749 | especially in the context of precompiled packages.</p> | | 749 | especially in the context of precompiled packages.</p> |
750 | </dd> | | 750 | </dd> |
751 | <dt><span class="term">Program</span></dt> | | 751 | <dt><span class="term">Program</span></dt> |
752 | <dd><p>The piece of software to be installed which will be | | 752 | <dd><p>The piece of software to be installed which will be |
753 | constructed from all the files in the distfile by the | | 753 | constructed from all the files in the distfile by the |
754 | actions defined in the corresponding package.</p></dd> | | 754 | actions defined in the corresponding package.</p></dd> |
755 | </dl></div> | | 755 | </dl></div> |
756 | <div class="sect2"> | | 756 | <div class="sect2"> |
757 | <div class="titlepage"><div><div><h3 class="title"> | | 757 | <div class="titlepage"><div><div><h3 class="title"> |
758 | <a name="term.roles"></a>1.3.1. Roles involved in pkgsrc</h3></div></div></div> | | 758 | <a name="term.roles"></a>1.3.1. Roles involved in pkgsrc</h3></div></div></div> |
759 | <div class="variablelist"><dl class="variablelist"> | | 759 | <div class="variablelist"><dl class="variablelist"> |
760 | <dt><span class="term">pkgsrc users</span></dt> | | 760 | <dt><span class="term">pkgsrc users</span></dt> |
761 | <dd> | | 761 | <dd> |
762 | <p>The | | 762 | <p>The |
763 | pkgsrc users are people who use the packages provided by pkgsrc. | | 763 | pkgsrc users are people who use the packages provided by pkgsrc. |
764 | Typically they are system administrators. The people using the | | 764 | Typically they are system administrators. The people using the |
765 | software that is inside the packages (maybe called <span class="quote">“<span class="quote">end | | 765 | software that is inside the packages (maybe called <span class="quote">“<span class="quote">end |
766 | users</span>”</span>) are not covered by the pkgsrc guide.</p> | | 766 | users</span>”</span>) are not covered by the pkgsrc guide.</p> |
767 | <p>There are two kinds of pkgsrc users: Some only want to | | 767 | <p>There are two kinds of pkgsrc users: Some only want to |
768 | install pre-built binary packages. Others build the pkgsrc | | 768 | install pre-built binary packages. Others build the pkgsrc |
769 | packages from source, either for installing them directly or for | | 769 | packages from source, either for installing them directly or for |
770 | 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 | | 770 | 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 |
771 | documentation.</p> | | 771 | documentation.</p> |
772 | </dd> | | 772 | </dd> |
773 | <dt><span class="term">package maintainers</span></dt> | | 773 | <dt><span class="term">package maintainers</span></dt> |
774 | <dd><p>A | | 774 | <dd><p>A |
775 | 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> | | 775 | 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> |
776 | <dt><span class="term">infrastructure developers</span></dt> | | 776 | <dt><span class="term">infrastructure developers</span></dt> |
777 | <dd><p>These people are involved in all those files | | 777 | <dd><p>These people are involved in all those files |
778 | that live in the <code class="filename">mk/</code> directory and below. | | 778 | that live in the <code class="filename">mk/</code> directory and below. |
779 | 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, | | 779 | 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, |
780 | too.</p></dd> | | 780 | too.</p></dd> |
781 | </dl></div> | | 781 | </dl></div> |
782 | </div> | | 782 | </div> |
783 | </div> | | 783 | </div> |
784 | <div class="sect1"> | | 784 | <div class="sect1"> |
785 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 785 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
786 | <a name="typography"></a>1.4. Typography</h2></div></div></div> | | 786 | <a name="typography"></a>1.4. Typography</h2></div></div></div> |
787 | <p>When giving examples for commands, shell prompts are used to | | 787 | <p>When giving examples for commands, shell prompts are used to |
788 | show if the command should/can be issued as root, or if | | 788 | show if the command should/can be issued as root, or if |
789 | <span class="quote">“<span class="quote">normal</span>”</span> user privileges are sufficient. We use a | | 789 | <span class="quote">“<span class="quote">normal</span>”</span> user privileges are sufficient. We use a |
790 | <code class="prompt">#</code> for root's shell prompt, a <code class="prompt">%</code> for users' | | 790 | <code class="prompt">#</code> for root's shell prompt, a <code class="prompt">%</code> for users' |
791 | shell prompt, assuming they use the C-shell or tcsh and a <code class="prompt">$</code> for | | 791 | shell prompt, assuming they use the C-shell or tcsh and a <code class="prompt">$</code> for |
792 | bourne shell and derivatives.</p> | | 792 | bourne shell and derivatives.</p> |
793 | </div> | | 793 | </div> |
794 | </div> | | 794 | </div> |
795 | <div class="part"> | | 795 | <div class="part"> |
796 | <div class="titlepage"><div><div><h1 class="title"> | | 796 | <div class="titlepage"><div><div><h1 class="title"> |
797 | <a name="users-guide"></a>Part I. The pkgsrc user's guide</h1></div></div></div> | | 797 | <a name="users-guide"></a>Part I. The pkgsrc user's guide</h1></div></div></div> |
798 | <div class="toc"> | | 798 | <div class="toc"> |
799 | <p><b>Table of Contents</b></p> | | 799 | <p><b>Table of Contents</b></p> |
800 | <dl class="toc"> | | 800 | <dl class="toc"> |
801 | <dt><span class="chapter"><a href="#getting">2. Where to get pkgsrc and how to keep it up-to-date</a></span></dt> | | 801 | <dt><span class="chapter"><a href="#getting">2. Where to get pkgsrc and how to keep it up-to-date</a></span></dt> |
802 | <dd><dl> | | 802 | <dd><dl> |
803 | <dt><span class="sect1"><a href="#getting-first">2.1. Getting pkgsrc for the first time</a></span></dt> | | 803 | <dt><span class="sect1"><a href="#getting-first">2.1. Getting pkgsrc for the first time</a></span></dt> |
804 | <dd><dl> | | 804 | <dd><dl> |
805 | <dt><span class="sect2"><a href="#getting-via-tar">2.1.1. As tar archive</a></span></dt> | | 805 | <dt><span class="sect2"><a href="#getting-via-tar">2.1.1. As tar archive</a></span></dt> |
806 | <dt><span class="sect2"><a href="#getting-via-cvs">2.1.2. Via anonymous CVS</a></span></dt> | | 806 | <dt><span class="sect2"><a href="#getting-via-cvs">2.1.2. Via anonymous CVS</a></span></dt> |
807 | </dl></dd> | | 807 | </dl></dd> |
808 | <dt><span class="sect1"><a href="#uptodate">2.2. Keeping pkgsrc up-to-date</a></span></dt> | | 808 | <dt><span class="sect1"><a href="#uptodate">2.2. Keeping pkgsrc up-to-date</a></span></dt> |
809 | <dd><dl> | | 809 | <dd><dl> |
810 | <dt><span class="sect2"><a href="#uptodate-tar">2.2.1. Via tar files</a></span></dt> | | 810 | <dt><span class="sect2"><a href="#uptodate-tar">2.2.1. Via tar files</a></span></dt> |
811 | <dt><span class="sect2"><a href="#uptodate-cvs">2.2.2. Via CVS</a></span></dt> | | 811 | <dt><span class="sect2"><a href="#uptodate-cvs">2.2.2. Via CVS</a></span></dt> |
812 | </dl></dd> | | 812 | </dl></dd> |
813 | </dl></dd> | | 813 | </dl></dd> |
814 | <dt><span class="chapter"><a href="#platforms">3. Using pkgsrc on systems other than NetBSD</a></span></dt> | | 814 | <dt><span class="chapter"><a href="#platforms">3. Using pkgsrc on systems other than NetBSD</a></span></dt> |
815 | <dd><dl> | | 815 | <dd><dl> |
816 | <dt><span class="sect1"><a href="#binarydist">3.1. Binary distribution</a></span></dt> | | 816 | <dt><span class="sect1"><a href="#binarydist">3.1. Binary distribution</a></span></dt> |
817 | <dt><span class="sect1"><a href="#bootstrapping-pkgsrc">3.2. Bootstrapping pkgsrc</a></span></dt> | | 817 | <dt><span class="sect1"><a href="#bootstrapping-pkgsrc">3.2. Bootstrapping pkgsrc</a></span></dt> |
818 | </dl></dd> | | 818 | </dl></dd> |
819 | <dt><span class="chapter"><a href="#using">4. Using pkgsrc</a></span></dt> | | 819 | <dt><span class="chapter"><a href="#using">4. Using pkgsrc</a></span></dt> |
820 | <dd><dl> | | 820 | <dd><dl> |
821 | <dt><span class="sect1"><a href="#using-pkg">4.1. Using binary packages</a></span></dt> | | 821 | <dt><span class="sect1"><a href="#using-pkg">4.1. Using binary packages</a></span></dt> |
822 | <dd><dl> | | 822 | <dd><dl> |
823 | <dt><span class="sect2"><a href="#finding-binary-packages">4.1.1. Finding binary packages</a></span></dt> | | 823 | <dt><span class="sect2"><a href="#finding-binary-packages">4.1.1. Finding binary packages</a></span></dt> |
824 | <dt><span class="sect2"><a href="#installing-binary-packages">4.1.2. Installing binary packages</a></span></dt> | | 824 | <dt><span class="sect2"><a href="#installing-binary-packages">4.1.2. Installing binary packages</a></span></dt> |
825 | <dt><span class="sect2"><a href="#using.pkg_delete">4.1.3. Deinstalling packages</a></span></dt> | | 825 | <dt><span class="sect2"><a href="#using.pkg_delete">4.1.3. Deinstalling packages</a></span></dt> |
826 | <dt><span class="sect2"><a href="#using.pkg_info">4.1.4. Getting information about installed packages</a></span></dt> | | 826 | <dt><span class="sect2"><a href="#using.pkg_info">4.1.4. Getting information about installed packages</a></span></dt> |
827 | <dt><span class="sect2"><a href="#vulnerabilities">4.1.5. Checking for security vulnerabilities in installed packages</a></span></dt> | | 827 | <dt><span class="sect2"><a href="#vulnerabilities">4.1.5. Checking for security vulnerabilities in installed packages</a></span></dt> |
828 | <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> | | 828 | <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> |
829 | <dt><span class="sect2"><a href="#using.pkg_admin">4.1.7. Other administrative functions</a></span></dt> | | 829 | <dt><span class="sect2"><a href="#using.pkg_admin">4.1.7. Other administrative functions</a></span></dt> |
830 | </dl></dd> | | 830 | </dl></dd> |
831 | <dt><span class="sect1"><a href="#building-packages-from-source">4.2. Building packages from source</a></span></dt> | | 831 | <dt><span class="sect1"><a href="#building-packages-from-source">4.2. Building packages from source</a></span></dt> |
832 | <dd><dl> | | 832 | <dd><dl> |
833 | <dt><span class="sect2"><a href="#requirements">4.2.1. Requirements</a></span></dt> | | 833 | <dt><span class="sect2"><a href="#requirements">4.2.1. Requirements</a></span></dt> |
834 | <dt><span class="sect2"><a href="#fetching-distfiles">4.2.2. Fetching distfiles</a></span></dt> | | 834 | <dt><span class="sect2"><a href="#fetching-distfiles">4.2.2. Fetching distfiles</a></span></dt> |
835 | <dt><span class="sect2"><a href="#how-to-build-and-install">4.2.3. How to build and install</a></span></dt> | | 835 | <dt><span class="sect2"><a href="#how-to-build-and-install">4.2.3. How to build and install</a></span></dt> |
836 | </dl></dd> | | 836 | </dl></dd> |
837 | </dl></dd> | | 837 | </dl></dd> |
838 | <dt><span class="chapter"><a href="#configuring">5. Configuring pkgsrc</a></span></dt> | | 838 | <dt><span class="chapter"><a href="#configuring">5. Configuring pkgsrc</a></span></dt> |
839 | <dd><dl> | | 839 | <dd><dl> |
840 | <dt><span class="sect1"><a href="#general-configuration">5.1. General configuration</a></span></dt> | | 840 | <dt><span class="sect1"><a href="#general-configuration">5.1. General configuration</a></span></dt> |
841 | <dt><span class="sect1"><a href="#variables-affecting-build">5.2. Variables affecting the build process</a></span></dt> | | 841 | <dt><span class="sect1"><a href="#variables-affecting-build">5.2. Variables affecting the build process</a></span></dt> |
842 | <dt><span class="sect1"><a href="#variables-affecting-installation">5.3. Variables affecting the installation process</a></span></dt> | | 842 | <dt><span class="sect1"><a href="#variables-affecting-installation">5.3. Variables affecting the installation process</a></span></dt> |
843 | <dt><span class="sect1"><a href="#conf.compiler">5.4. Selecting and configuring the compiler</a></span></dt> | | 843 | <dt><span class="sect1"><a href="#conf.compiler">5.4. Selecting and configuring the compiler</a></span></dt> |
844 | <dd><dl> | | 844 | <dd><dl> |
845 | <dt><span class="sect2"><a href="#selecting-the-compiler">5.4.1. Selecting the compiler</a></span></dt> | | 845 | <dt><span class="sect2"><a href="#selecting-the-compiler">5.4.1. Selecting the compiler</a></span></dt> |
846 | <dt><span class="sect2"><a href="#conf.cflags">5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</a></span></dt> | | 846 | <dt><span class="sect2"><a href="#conf.cflags">5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</a></span></dt> |
847 | <dt><span class="sect2"><a href="#conf.ldflags">5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</a></span></dt> | | 847 | <dt><span class="sect2"><a href="#conf.ldflags">5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</a></span></dt> |
848 | </dl></dd> | | 848 | </dl></dd> |
849 | <dt><span class="sect1"><a href="#developer-advanced-settings">5.5. Developer/advanced settings</a></span></dt> | | 849 | <dt><span class="sect1"><a href="#developer-advanced-settings">5.5. Developer/advanced settings</a></span></dt> |
850 | <dt><span class="sect1"><a href="#selecting-build-options">5.6. Selecting Build Options</a></span></dt> | | 850 | <dt><span class="sect1"><a href="#selecting-build-options">5.6. Selecting Build Options</a></span></dt> |
851 | </dl></dd> | | 851 | </dl></dd> |
852 | <dt><span class="chapter"><a href="#binary">6. Creating binary packages</a></span></dt> | | 852 | <dt><span class="chapter"><a href="#binary">6. Creating binary packages</a></span></dt> |
853 | <dd><dl> | | 853 | <dd><dl> |
854 | <dt><span class="sect1"><a href="#building-a-single-binary-package">6.1. Building a single binary package</a></span></dt> | | 854 | <dt><span class="sect1"><a href="#building-a-single-binary-package">6.1. Building a single binary package</a></span></dt> |
855 | <dt><span class="sect1"><a href="#settings-for-creationg-of-binary-packages">6.2. Settings for creation of binary packages</a></span></dt> | | 855 | <dt><span class="sect1"><a href="#settings-for-creationg-of-binary-packages">6.2. Settings for creation of binary packages</a></span></dt> |
856 | </dl></dd> | | 856 | </dl></dd> |
857 | <dt><span class="chapter"><a href="#bulk">7. Creating binary packages for everything in pkgsrc (bulk | | 857 | <dt><span class="chapter"><a href="#bulk">7. Creating binary packages for everything in pkgsrc (bulk |
858 | builds)</a></span></dt> | | 858 | builds)</a></span></dt> |
859 | <dd><dl> | | 859 | <dd><dl> |
860 | <dt><span class="sect1"><a href="#bulk.pre">7.1. Preparations</a></span></dt> | | 860 | <dt><span class="sect1"><a href="#bulk.pre">7.1. Preparations</a></span></dt> |
861 | <dt><span class="sect1"><a href="#bulk.pbulk">7.2. Running a pbulk-style bulk build</a></span></dt> | | 861 | <dt><span class="sect1"><a href="#bulk.pbulk">7.2. Running a pbulk-style bulk build</a></span></dt> |
862 | <dd><dl><dt><span class="sect2"><a href="#bulk.pbulk.conf">7.2.1. Configuration</a></span></dt></dl></dd> | | 862 | <dd><dl><dt><span class="sect2"><a href="#bulk.pbulk.conf">7.2.1. Configuration</a></span></dt></dl></dd> |
863 | <dt><span class="sect1"><a href="#bulk.req">7.3. Requirements of a full bulk build</a></span></dt> | | 863 | <dt><span class="sect1"><a href="#bulk.req">7.3. Requirements of a full bulk build</a></span></dt> |
864 | <dt><span class="sect1"><a href="#creating-cdroms">7.4. Creating a multiple CD-ROM packages collection</a></span></dt> | | 864 | <dt><span class="sect1"><a href="#creating-cdroms">7.4. Creating a multiple CD-ROM packages collection</a></span></dt> |
865 | <dd><dl><dt><span class="sect2"><a href="#cdpack-example">7.4.1. Example of cdpack</a></span></dt></dl></dd> | | 865 | <dd><dl><dt><span class="sect2"><a href="#cdpack-example">7.4.1. Example of cdpack</a></span></dt></dl></dd> |
866 | </dl></dd> | | 866 | </dl></dd> |
867 | <dt><span class="chapter"><a href="#files">8. Directory layout of the installed files</a></span></dt> | | 867 | <dt><span class="chapter"><a href="#files">8. Directory layout of the installed files</a></span></dt> |
868 | <dd><dl> | | 868 | <dd><dl> |
869 | <dt><span class="sect1"><a href="#files.localbase">8.1. File system layout in <code class="literal">${LOCALBASE}</code></a></span></dt> | | 869 | <dt><span class="sect1"><a href="#files.localbase">8.1. File system layout in <code class="literal">${LOCALBASE}</code></a></span></dt> |
870 | <dt><span class="sect1"><a href="#files.varbase">8.2. File system layout in <code class="literal">${VARBASE}</code></a></span></dt> | | 870 | <dt><span class="sect1"><a href="#files.varbase">8.2. File system layout in <code class="literal">${VARBASE}</code></a></span></dt> |
871 | </dl></dd> | | 871 | </dl></dd> |
872 | <dt><span class="chapter"><a href="#faq">9. Frequently Asked Questions</a></span></dt> | | 872 | <dt><span class="chapter"><a href="#faq">9. Frequently Asked Questions</a></span></dt> |
873 | <dd><dl> | | 873 | <dd><dl> |
874 | <dt><span class="sect1"><a href="#mailing-list-pointers">9.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> | | 874 | <dt><span class="sect1"><a href="#mailing-list-pointers">9.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> |
875 | <dt><span class="sect1"><a href="#faq-pkgtools">9.2. Utilities for package management (pkgtools)</a></span></dt> | | 875 | <dt><span class="sect1"><a href="#faq-pkgtools">9.2. Utilities for package management (pkgtools)</a></span></dt> |
876 | <dt><span class="sect1"><a href="#non-root-pkgsrc">9.3. How to use pkgsrc as non-root</a></span></dt> | | 876 | <dt><span class="sect1"><a href="#non-root-pkgsrc">9.3. How to use pkgsrc as non-root</a></span></dt> |
877 | <dt><span class="sect1"><a href="#resume-transfers">9.4. How to resume transfers when fetching distfiles?</a></span></dt> | | 877 | <dt><span class="sect1"><a href="#resume-transfers">9.4. How to resume transfers when fetching distfiles?</a></span></dt> |
878 | <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> | | 878 | <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> |
879 | <dt><span class="sect1"><a href="#fetch-behind-firewall">9.6. How to fetch files from behind a firewall</a></span></dt> | | 879 | <dt><span class="sect1"><a href="#fetch-behind-firewall">9.6. How to fetch files from behind a firewall</a></span></dt> |
880 | <dt><span class="sect1"><a href="#fetch-https">9.7. How to fetch files from HTTPS sites</a></span></dt> | | 880 | <dt><span class="sect1"><a href="#fetch-https">9.7. How to fetch files from HTTPS sites</a></span></dt> |
881 | <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> | | 881 | <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> |
882 | <dt><span class="sect1"><a href="#fetching-all-distfiles">9.9. How to fetch all distfiles at once</a></span></dt> | | 882 | <dt><span class="sect1"><a href="#fetching-all-distfiles">9.9. How to fetch all distfiles at once</a></span></dt> |
883 | <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 | | 883 | <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 |
884 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</a></span></dt> | | 884 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</a></span></dt> |
885 | <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> | | 885 | <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> |
886 | <dt><span class="sect1"><a href="#using-sudo-with-pkgsrc">9.12. Using 'sudo' with pkgsrc</a></span></dt> | | 886 | <dt><span class="sect1"><a href="#using-sudo-with-pkgsrc">9.12. Using 'sudo' with pkgsrc</a></span></dt> |
887 | <dt><span class="sect1"><a href="#faq.conf">9.13. How do I change the location of configuration files?</a></span></dt> | | 887 | <dt><span class="sect1"><a href="#faq.conf">9.13. How do I change the location of configuration files?</a></span></dt> |
888 | <dt><span class="sect1"><a href="#audit-packages">9.14. Automated security checks</a></span></dt> | | 888 | <dt><span class="sect1"><a href="#audit-packages">9.14. Automated security checks</a></span></dt> |
889 | <dt><span class="sect1"><a href="#ufaq-cflags">9.15. Why do some packages ignore my <code class="varname">CFLAGS</code>?</a></span></dt> | | 889 | <dt><span class="sect1"><a href="#ufaq-cflags">9.15. Why do some packages ignore my <code class="varname">CFLAGS</code>?</a></span></dt> |
890 | <dt><span class="sect1"><a href="#ufaq-fail">9.16. A package does not build. What shall I do?</a></span></dt> | | 890 | <dt><span class="sect1"><a href="#ufaq-fail">9.16. A package does not build. What shall I do?</a></span></dt> |
891 | <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> | | 891 | <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> |
892 | </dl></dd> | | 892 | </dl></dd> |
893 | </dl> | | 893 | </dl> |
894 | </div> | | 894 | </div> |
895 | <div class="chapter"> | | 895 | <div class="chapter"> |
896 | <div class="titlepage"><div><div><h2 class="title"> | | 896 | <div class="titlepage"><div><div><h2 class="title"> |
897 | <a name="getting"></a>Chapter 2. Where to get pkgsrc and how to keep it up-to-date</h2></div></div></div> | | 897 | <a name="getting"></a>Chapter 2. Where to get pkgsrc and how to keep it up-to-date</h2></div></div></div> |
898 | <div class="toc"> | | 898 | <div class="toc"> |
899 | <p><b>Table of Contents</b></p> | | 899 | <p><b>Table of Contents</b></p> |
900 | <dl class="toc"> | | 900 | <dl class="toc"> |
901 | <dt><span class="sect1"><a href="#getting-first">2.1. Getting pkgsrc for the first time</a></span></dt> | | 901 | <dt><span class="sect1"><a href="#getting-first">2.1. Getting pkgsrc for the first time</a></span></dt> |
902 | <dd><dl> | | 902 | <dd><dl> |
903 | <dt><span class="sect2"><a href="#getting-via-tar">2.1.1. As tar archive</a></span></dt> | | 903 | <dt><span class="sect2"><a href="#getting-via-tar">2.1.1. As tar archive</a></span></dt> |
904 | <dt><span class="sect2"><a href="#getting-via-cvs">2.1.2. Via anonymous CVS</a></span></dt> | | 904 | <dt><span class="sect2"><a href="#getting-via-cvs">2.1.2. Via anonymous CVS</a></span></dt> |
905 | </dl></dd> | | 905 | </dl></dd> |
906 | <dt><span class="sect1"><a href="#uptodate">2.2. Keeping pkgsrc up-to-date</a></span></dt> | | 906 | <dt><span class="sect1"><a href="#uptodate">2.2. Keeping pkgsrc up-to-date</a></span></dt> |
907 | <dd><dl> | | 907 | <dd><dl> |
908 | <dt><span class="sect2"><a href="#uptodate-tar">2.2.1. Via tar files</a></span></dt> | | 908 | <dt><span class="sect2"><a href="#uptodate-tar">2.2.1. Via tar files</a></span></dt> |
909 | <dt><span class="sect2"><a href="#uptodate-cvs">2.2.2. Via CVS</a></span></dt> | | 909 | <dt><span class="sect2"><a href="#uptodate-cvs">2.2.2. Via CVS</a></span></dt> |
910 | </dl></dd> | | 910 | </dl></dd> |
911 | </dl> | | 911 | </dl> |
912 | </div> | | 912 | </div> |
913 | <p>Before you download and extract the files, you need to decide | | 913 | <p>Before you download and extract the files, you need to decide |
914 | where you want to extract them. When using pkgsrc as root user, pkgsrc | | 914 | where you want to extract them. When using pkgsrc as root user, pkgsrc |
915 | is usually installed in <code class="filename">/usr/pkgsrc</code>. You are though | | 915 | is usually installed in <code class="filename">/usr/pkgsrc</code>. You are though |
916 | free to install the sources and binary packages wherever you want in | | 916 | free to install the sources and binary packages wherever you want in |
917 | your filesystem, provided that the pathname does not contain white-space | | 917 | your filesystem, provided that the pathname does not contain white-space |
918 | or other characters that are interpreted specially by the shell and some | | 918 | or other characters that are interpreted specially by the shell and some |
919 | other programs. A safe bet is to use only letters, digits, underscores | | 919 | other programs. A safe bet is to use only letters, digits, underscores |
920 | and dashes.</p> | | 920 | and dashes.</p> |
921 | <div class="sect1"> | | 921 | <div class="sect1"> |
922 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 922 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
923 | <a name="getting-first"></a>2.1. Getting pkgsrc for the first time</h2></div></div></div> | | 923 | <a name="getting-first"></a>2.1. Getting pkgsrc for the first time</h2></div></div></div> |
924 | <p>Before you download any pkgsrc files, you should decide | | 924 | <p>Before you download any pkgsrc files, you should decide |
925 | whether you want the <span class="emphasis"><em>current</em></span> branch or the | | 925 | whether you want the <span class="emphasis"><em>current</em></span> branch or the |
926 | <span class="emphasis"><em>stable</em></span> branch. The latter is forked on a | | 926 | <span class="emphasis"><em>stable</em></span> branch. The latter is forked on a |
927 | quarterly basis from the current branch and only gets modified | | 927 | quarterly basis from the current branch and only gets modified |
928 | for security updates. The names of the stable branches are built | | 928 | for security updates. The names of the stable branches are built |
929 | from the year and the quarter, for example | | 929 | from the year and the quarter, for example |
930 | <code class="literal">2017Q3</code>.</p> | | 930 | <code class="literal">2018Q1</code>.</p> |
931 | <p>The second step is to decide <span class="emphasis"><em>how</em></span> you | | 931 | <p>The second step is to decide <span class="emphasis"><em>how</em></span> you |
932 | want to download pkgsrc. You can get it as a tar file or via CVS. | | 932 | want to download pkgsrc. You can get it as a tar file or via CVS. |
933 | Both ways are described here.</p> | | 933 | Both ways are described here.</p> |
934 | <p>Note that tar archive contains CVS working copy. | | 934 | <p>Note that tar archive contains CVS working copy. |
935 | Thus you can switch to using CVS at any later time.</p> | | 935 | Thus you can switch to using CVS at any later time.</p> |
936 | <div class="sect2"> | | 936 | <div class="sect2"> |
937 | <div class="titlepage"><div><div><h3 class="title"> | | 937 | <div class="titlepage"><div><div><h3 class="title"> |
938 | <a name="getting-via-tar"></a>2.1.1. As tar archive</h3></div></div></div> | | 938 | <a name="getting-via-tar"></a>2.1.1. As tar archive</h3></div></div></div> |
939 | <p>The primary download location for all pkgsrc files is | | 939 | <p>The primary download location for all pkgsrc files is |
940 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/" target="_top">http://ftp.NetBSD.org/pub/pkgsrc/</a> or | | 940 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/" target="_top">http://ftp.NetBSD.org/pub/pkgsrc/</a> or |
941 | <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/" target="_top">ftp://ftp.NetBSD.org/pub/pkgsrc/</a> | | 941 | <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/" target="_top">ftp://ftp.NetBSD.org/pub/pkgsrc/</a> |
942 | (it points to the same location). | | 942 | (it points to the same location). |
943 | There are a number of subdirectories for different purposes, | | 943 | There are a number of subdirectories for different purposes, |
944 | 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> | | 944 | 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> |
945 | <p>The tar archive for the current branch is in the directory | | 945 | <p>The tar archive for the current branch is in the directory |
946 | <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>. | | 946 | <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>. |
947 | It is autogenerated weekly.</p> | | 947 | It is autogenerated weekly.</p> |
948 | <p>To save download time we provide bzip2- and | | 948 | <p>To save download time we provide bzip2- and |
949 | xz-compressed archives which are published at | | 949 | xz-compressed archives which are published at |
950 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.bz2" target="_top"><code class="filename">pkgsrc.tar.bz2</code></a> | | 950 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.bz2" target="_top"><code class="filename">pkgsrc.tar.bz2</code></a> |
951 | and | | 951 | and |
952 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.xz" target="_top"><code class="filename">pkgsrc.tar.xz</code></a> | | 952 | <a class="ulink" href="http://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.xz" target="_top"><code class="filename">pkgsrc.tar.xz</code></a> |
953 | respectively. | | 953 | respectively. |
954 | </p> | | 954 | </p> |
955 | <p>You can fetch the same files using FTP.</p> | | 955 | <p>You can fetch the same files using FTP.</p> |
956 | <p>The tar file for the stable branch 2017Q3 is in the | | 956 | <p>The tar file for the stable branch 2018Q1 is in the |
957 | directory <code class="filename">pkgsrc-2017Q3</code> and is also called <a class="ulink" href="http://cdn.NetBSD.org/pub/pkgsrc/pkgsrc-2017Q3/pkgsrc.tar.gz" target="_top"><code class="filename">pkgsrc.tar.gz</code></a>.</p> | | 957 | directory <code class="filename">pkgsrc-2018Q1</code> and is also called <a class="ulink" href="https://cdn.NetBSD.org/pub/pkgsrc/pkgsrc-2018Q1/pkgsrc.tar.gz" target="_top"><code class="filename">pkgsrc.tar.gz</code></a>.</p> |
958 | <p>To download the latest pkgsrc stable tarball, run:</p> | | 958 | <p>To download the latest pkgsrc stable tarball, run:</p> |
959 | <pre class="screen"> | | 959 | <pre class="screen"> |
960 | <code class="prompt">$</code> <strong class="userinput"><code>ftp ftp://ftp.NetBSD.org/pub/pkgsrc/pkgsrc-2017Q3/pkgsrc.tar.gz</code></strong></pre> | | 960 | <code class="prompt">$</code> <strong class="userinput"><code>ftp ftp://ftp.NetBSD.org/pub/pkgsrc/pkgsrc-2018Q1/pkgsrc.tar.gz</code></strong></pre> |
961 | <p>If you prefer, you can also fetch it using "wget", "curl", | | 961 | <p>If you prefer, you can also fetch it using "wget", "curl", |
962 | or your web browser.</p> | | 962 | or your web browser.</p> |
963 | <p>Then, extract it with:</p> | | 963 | <p>Then, extract it with:</p> |
964 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>tar -xzf pkgsrc.tar.gz -C /usr</code></strong></pre> | | 964 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>tar -xzf pkgsrc.tar.gz -C /usr</code></strong></pre> |
965 | <p>This will create the directory <code class="filename">pkgsrc/</code> | | 965 | <p>This will create the directory <code class="filename">pkgsrc/</code> |
966 | in <code class="filename">/usr/</code> and all the package source will be | | 966 | in <code class="filename">/usr/</code> and all the package source will be |
967 | stored under <code class="filename">/usr/pkgsrc/</code>.</p> | | 967 | stored under <code class="filename">/usr/pkgsrc/</code>.</p> |
968 | <p>To download pkgsrc-current, run:</p> | | 968 | <p>To download pkgsrc-current, run:</p> |
969 | <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> | | 969 | <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> |
970 | </div> | | 970 | </div> |
971 | <div class="sect2"> | | 971 | <div class="sect2"> |
972 | <div class="titlepage"><div><div><h3 class="title"> | | 972 | <div class="titlepage"><div><div><h3 class="title"> |
973 | <a name="getting-via-cvs"></a>2.1.2. Via anonymous CVS</h3></div></div></div> | | 973 | <a name="getting-via-cvs"></a>2.1.2. Via anonymous CVS</h3></div></div></div> |
974 | <p>To fetch a specific pkgsrc stable branch, run:</p> | | 974 | <p>To fetch a specific pkgsrc stable branch, run:</p> |
975 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr && cvs -q -z2 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -r pkgsrc-2017Q3 -P pkgsrc</code></strong> | | 975 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr && cvs -q -z2 -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -r pkgsrc-2018Q1 -P pkgsrc</code></strong> |
976 | </pre> | | 976 | </pre> |
977 | <p>This will create the directory <code class="filename">pkgsrc/</code> | | 977 | <p>This will create the directory <code class="filename">pkgsrc/</code> |
978 | in your <code class="filename">/usr/</code> directory and all the package source | | 978 | in your <code class="filename">/usr/</code> directory and all the package source |
979 | will be stored under <code class="filename">/usr/pkgsrc/</code>.</p> | | 979 | will be stored under <code class="filename">/usr/pkgsrc/</code>.</p> |
980 | <p>To fetch the pkgsrc current branch, run:</p> | | 980 | <p>To fetch the pkgsrc current 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 -P pkgsrc</code></strong> | | 981 | <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> |
982 | </pre> | | 982 | </pre> |
983 | <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> | | 983 | <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> |
984 | <p>If you get error messages from <code class="literal">rsh</code>, you need to set CVS_RSH variable. E.g.:</p> | | 984 | <p>If you get error messages from <code class="literal">rsh</code>, you need to set CVS_RSH variable. E.g.:</p> |
985 | <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> | | 985 | <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> |
986 | </pre> | | 986 | </pre> |
987 | <p>Refer to documentation on your command shell how to set CVS_RSH=ssh permanently. | | 987 | <p>Refer to documentation on your command shell how to set CVS_RSH=ssh permanently. |
988 | For Bourne shells, you can set it in your <code class="filename">.profile</code> | | 988 | For Bourne shells, you can set it in your <code class="filename">.profile</code> |
989 | or better globally in <code class="filename">/etc/profile</code>:</p> | | 989 | or better globally in <code class="filename">/etc/profile</code>:</p> |
990 | <pre class="programlisting"> | | 990 | <pre class="programlisting"> |
991 | # set CVS remote shell command | | 991 | # set CVS remote shell command |
992 | CVS_RSH=ssh | | 992 | CVS_RSH=ssh |
993 | export CVS_RSH | | 993 | export CVS_RSH |
994 | </pre> | | 994 | </pre> |
995 | <p>By default, CVS doesn't do things like most people would expect it to do. | | 995 | <p>By default, CVS doesn't do things like most people would expect it to do. |
996 | But there is a way to convince CVS, by creating a file called <code class="filename">.cvsrc</code> | | 996 | But there is a way to convince CVS, by creating a file called <code class="filename">.cvsrc</code> |
997 | in your home directory and saving the following lines to it. | | 997 | in your home directory and saving the following lines to it. |
998 | This file will save you lots of headache and some bug reports, so we strongly recommend it. | | 998 | This file will save you lots of headache and some bug reports, so we strongly recommend it. |
999 | You can find an explanation of this file in the CVS documentation.</p> | | 999 | You can find an explanation of this file in the CVS documentation.</p> |
1000 | <pre class="programlisting"> | | 1000 | <pre class="programlisting"> |
1001 | # recommended CVS configuration file from the pkgsrc guide | | 1001 | # recommended CVS configuration file from the pkgsrc guide |
1002 | cvs -q -z2 | | 1002 | cvs -q -z2 |
1003 | checkout -P | | 1003 | checkout -P |
1004 | update -dP | | 1004 | update -dP |
1005 | diff -upN | | 1005 | diff -upN |
1006 | rdiff -u | | 1006 | rdiff -u |
1007 | release -d | | 1007 | release -d |
1008 | </pre> | | 1008 | </pre> |
1009 | </div> | | 1009 | </div> |
1010 | </div> | | 1010 | </div> |
1011 | <div class="sect1"> | | 1011 | <div class="sect1"> |
1012 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1012 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1013 | <a name="uptodate"></a>2.2. Keeping pkgsrc up-to-date</h2></div></div></div> | | 1013 | <a name="uptodate"></a>2.2. Keeping pkgsrc up-to-date</h2></div></div></div> |
1014 | <p>The preferred way to keep pkgsrc up-to-date is via CVS | | 1014 | <p>The preferred way to keep pkgsrc up-to-date is via CVS |
1015 | (which also works if you have first installed it via a tar | | 1015 | (which also works if you have first installed it via a tar |
1016 | file). It saves bandwidth and hard disk activity, compared to | | 1016 | file). It saves bandwidth and hard disk activity, compared to |
1017 | downloading the tar file again.</p> | | 1017 | downloading the tar file again.</p> |
1018 | <div class="sect2"> | | 1018 | <div class="sect2"> |
1019 | <div class="titlepage"><div><div><h3 class="title"> | | 1019 | <div class="titlepage"><div><div><h3 class="title"> |
1020 | <a name="uptodate-tar"></a>2.2.1. Via tar files</h3></div></div></div> | | 1020 | <a name="uptodate-tar"></a>2.2.1. Via tar files</h3></div></div></div> |
1021 | <div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 1021 | <div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"> |
1022 | <h3 class="title">Warning</h3> | | 1022 | <h3 class="title">Warning</h3> |
1023 | <p>When updating from a tar file, you first need to | | 1023 | <p>When updating from a tar file, you first need to |
1024 | completely remove the old pkgsrc directory. Otherwise those | | 1024 | completely remove the old pkgsrc directory. Otherwise those |
1025 | files that have been removed from pkgsrc in the mean time will | | 1025 | files that have been removed from pkgsrc in the mean time will |
1026 | not be removed on your local disk, resulting in inconsistencies. | | 1026 | not be removed on your local disk, resulting in inconsistencies. |
1027 | When removing the old files, any changes that you have done to | | 1027 | When removing the old files, any changes that you have done to |
1028 | the pkgsrc files will be lost after updating. Therefore updating | | 1028 | the pkgsrc files will be lost after updating. Therefore updating |
1029 | via CVS is strongly recommended.</p> | | 1029 | via CVS is strongly recommended.</p> |
1030 | </div> | | 1030 | </div> |
1031 | <p>Note that by default the distfiles and the binary packages | | 1031 | <p>Note that by default the distfiles and the binary packages |
1032 | are saved in the pkgsrc tree, so don't forget to rescue them | | 1032 | are saved in the pkgsrc tree, so don't forget to rescue them |
1033 | before updating. You can also configure pkgsrc to store distfiles | | 1033 | before updating. You can also configure pkgsrc to store distfiles |
1034 | and packages in directories outside the pkgsrc tree by setting the | | 1034 | and packages in directories outside the pkgsrc tree by setting the |
1035 | <code class="varname">DISTDIR</code> and <code class="varname">PACKAGES</code> | | 1035 | <code class="varname">DISTDIR</code> and <code class="varname">PACKAGES</code> |
1036 | variables. See <a class="xref" href="#configuring" title="Chapter 5. Configuring pkgsrc">Chapter 5, <i>Configuring pkgsrc</i></a> for the details.</p> | | 1036 | variables. See <a class="xref" href="#configuring" title="Chapter 5. Configuring pkgsrc">Chapter 5, <i>Configuring pkgsrc</i></a> for the details.</p> |
1037 | <p>To update pkgsrc from a tar file, download the tar file as | | 1037 | <p>To update pkgsrc from a tar file, download the tar file as |
1038 | explained above. Then, make sure that you have not made any | | 1038 | explained above. Then, make sure that you have not made any |
1039 | changes to the files in the pkgsrc directory. Remove the pkgsrc | | 1039 | changes to the files in the pkgsrc directory. Remove the pkgsrc |
1040 | directory and extract the new tar file. Done.</p> | | 1040 | directory and extract the new tar file. Done.</p> |
1041 | </div> | | 1041 | </div> |
1042 | <div class="sect2"> | | 1042 | <div class="sect2"> |
1043 | <div class="titlepage"><div><div><h3 class="title"> | | 1043 | <div class="titlepage"><div><div><h3 class="title"> |
1044 | <a name="uptodate-cvs"></a>2.2.2. Via CVS</h3></div></div></div> | | 1044 | <a name="uptodate-cvs"></a>2.2.2. Via CVS</h3></div></div></div> |
1045 | <p>To update pkgsrc via CVS, change to the <code class="filename">pkgsrc</code> directory and run cvs:</p> | | 1045 | <p>To update pkgsrc via CVS, change to the <code class="filename">pkgsrc</code> directory and run cvs:</p> |
1046 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr/pkgsrc && cvs update -dP</code></strong> | | 1046 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr/pkgsrc && cvs update -dP</code></strong> |
1047 | </pre> | | 1047 | </pre> |
1048 | <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> | | 1048 | <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> |
1049 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr/pkgsrc && env CVS_RSH=ssh cvs up -dP</code></strong> | | 1049 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>cd /usr/pkgsrc && env CVS_RSH=ssh cvs up -dP</code></strong> |
1050 | </pre> | | 1050 | </pre> |
1051 | <div class="sect3"> | | 1051 | <div class="sect3"> |
1052 | <div class="titlepage"><div><div><h4 class="title"> | | 1052 | <div class="titlepage"><div><div><h4 class="title"> |
1053 | <a name="uptodate-cvs-switch"></a>2.2.2.1. Switching between different pkgsrc branches</h4></div></div></div> | | 1053 | <a name="uptodate-cvs-switch"></a>2.2.2.1. Switching between different pkgsrc branches</h4></div></div></div> |
1054 | <p>When updating pkgsrc, the CVS program keeps track of the | | 1054 | <p>When updating pkgsrc, the CVS program keeps track of the |
1055 | branch you selected. But if you, for whatever reason, want to | | 1055 | branch you selected. But if you, for whatever reason, want to |
1056 | switch from the stable branch to the current one, you can do it | | 1056 | switch from the stable branch to the current one, you can do it |
1057 | by adding the option <span class="quote">“<span class="quote">-A</span>”</span> after the | | 1057 | by adding the option <span class="quote">“<span class="quote">-A</span>”</span> after the |
1058 | <span class="quote">“<span class="quote">update</span>”</span> keyword. To switch from the current branch | | 1058 | <span class="quote">“<span class="quote">update</span>”</span> keyword. To switch from the current branch |
1059 | back to the stable branch, add the | | 1059 | back to the stable branch, add the |
1060 | <span class="quote">“<span class="quote">-rpkgsrc-2017Q3</span>”</span> option.</p> | | 1060 | <span class="quote">“<span class="quote">-rpkgsrc-2018Q1</span>”</span> option.</p> |
1061 | </div> | | 1061 | </div> |
1062 | <div class="sect3"> | | 1062 | <div class="sect3"> |
1063 | <div class="titlepage"><div><div><h4 class="title"> | | 1063 | <div class="titlepage"><div><div><h4 class="title"> |
1064 | <a name="uptodate-cvs-changes"></a>2.2.2.2. What happens to my changes when updating?</h4></div></div></div> | | 1064 | <a name="uptodate-cvs-changes"></a>2.2.2.2. What happens to my changes when updating?</h4></div></div></div> |
1065 | <p>When you update pkgsrc, the CVS program will only touch | | 1065 | <p>When you update pkgsrc, the CVS program will only touch |
1066 | those files that are registered in the CVS repository. That | | 1066 | those files that are registered in the CVS repository. That |
1067 | means that any packages that you created on your own will stay | | 1067 | means that any packages that you created on your own will stay |
1068 | unmodified. If you change files that are managed by CVS, later | | 1068 | unmodified. If you change files that are managed by CVS, later |
1069 | updates will try to merge your changes with those that have been | | 1069 | updates will try to merge your changes with those that have been |
1070 | done by others. See the CVS manual, chapter | | 1070 | done by others. See the CVS manual, chapter |
1071 | <span class="quote">“<span class="quote">update</span>”</span> for details.</p> | | 1071 | <span class="quote">“<span class="quote">update</span>”</span> for details.</p> |
1072 | </div> | | 1072 | </div> |
1073 | </div> | | 1073 | </div> |
1074 | </div> | | 1074 | </div> |
1075 | </div> | | 1075 | </div> |
1076 | <div class="chapter"> | | 1076 | <div class="chapter"> |
1077 | <div class="titlepage"><div><div><h2 class="title"> | | 1077 | <div class="titlepage"><div><div><h2 class="title"> |
1078 | <a name="platforms"></a>Chapter 3. Using pkgsrc on systems other than NetBSD</h2></div></div></div> | | 1078 | <a name="platforms"></a>Chapter 3. Using pkgsrc on systems other than NetBSD</h2></div></div></div> |
1079 | <div class="toc"> | | 1079 | <div class="toc"> |
1080 | <p><b>Table of Contents</b></p> | | 1080 | <p><b>Table of Contents</b></p> |
1081 | <dl class="toc"> | | 1081 | <dl class="toc"> |
1082 | <dt><span class="sect1"><a href="#binarydist">3.1. Binary distribution</a></span></dt> | | 1082 | <dt><span class="sect1"><a href="#binarydist">3.1. Binary distribution</a></span></dt> |
1083 | <dt><span class="sect1"><a href="#bootstrapping-pkgsrc">3.2. Bootstrapping pkgsrc</a></span></dt> | | 1083 | <dt><span class="sect1"><a href="#bootstrapping-pkgsrc">3.2. Bootstrapping pkgsrc</a></span></dt> |
1084 | </dl> | | 1084 | </dl> |
1085 | </div> | | 1085 | </div> |
1086 | <div class="sect1"> | | 1086 | <div class="sect1"> |
1087 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1087 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1088 | <a name="binarydist"></a>3.1. Binary distribution</h2></div></div></div> | | 1088 | <a name="binarydist"></a>3.1. Binary distribution</h2></div></div></div> |
1089 | <p>See <a class="xref" href="#using-pkg" title="4.1. Using binary packages">Section 4.1, “Using binary packages”</a>.</p> | | 1089 | <p>See <a class="xref" href="#using-pkg" title="4.1. Using binary packages">Section 4.1, “Using binary packages”</a>.</p> |
1090 | </div> | | 1090 | </div> |
1091 | <div class="sect1"> | | 1091 | <div class="sect1"> |
1092 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1092 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1093 | <a name="bootstrapping-pkgsrc"></a>3.2. Bootstrapping pkgsrc</h2></div></div></div> | | 1093 | <a name="bootstrapping-pkgsrc"></a>3.2. Bootstrapping pkgsrc</h2></div></div></div> |
1094 | <p>pkgsrc can be bootstrapped for use in two different modes: | | 1094 | <p>pkgsrc can be bootstrapped for use in two different modes: |
1095 | privileged and unprivileged one. In unprivileged mode in contrast | | 1095 | privileged and unprivileged one. In unprivileged mode in contrast |
1096 | to privileged one all programs are installed under one particular user | | 1096 | to privileged one all programs are installed under one particular user |
1097 | and cannot utilise privileged operations (packages don't create | | 1097 | and cannot utilise privileged operations (packages don't create |
1098 | special users and all special file permissions like setuid are ignored). | | 1098 | special users and all special file permissions like setuid are ignored). |
1099 | </p> | | 1099 | </p> |
1100 | <p>Installing the bootstrap kit from source should be as simple as:</p> | | 1100 | <p>Installing the bootstrap kit from source should be as simple as:</p> |
1101 | <pre class="screen"> | | 1101 | <pre class="screen"> |
1102 | <code class="prompt">#</code> <strong class="userinput"><code>env CVS_RSH=ssh cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P pkgsrc</code></strong> | | 1102 | <code class="prompt">#</code> <strong class="userinput"><code>env CVS_RSH=ssh cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P pkgsrc</code></strong> |
1103 | <code class="prompt">#</code> <strong class="userinput"><code>cd pkgsrc/bootstrap</code></strong> | | 1103 | <code class="prompt">#</code> <strong class="userinput"><code>cd pkgsrc/bootstrap</code></strong> |
1104 | <code class="prompt">#</code> <strong class="userinput"><code>./bootstrap</code></strong> | | 1104 | <code class="prompt">#</code> <strong class="userinput"><code>./bootstrap</code></strong> |
1105 | </pre> | | 1105 | </pre> |
1106 | <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> | | 1106 | <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> |
1107 | <p>By default, in privileged mode pkgsrc uses | | 1107 | <p>By default, in privileged mode pkgsrc uses |
1108 | <code class="filename">/usr/pkg</code> for <span class="emphasis"><em>prefix</em></span> | | 1108 | <code class="filename">/usr/pkg</code> for <span class="emphasis"><em>prefix</em></span> |
1109 | where programs will be installed in, | | 1109 | where programs will be installed in, |
1110 | and <code class="filename">/usr/pkg/pkgdb</code> for the package database | | 1110 | and <code class="filename">/usr/pkg/pkgdb</code> for the package database |
1111 | directory where pkgsrc will do its internal bookkeeping, | | 1111 | directory where pkgsrc will do its internal bookkeeping, |
1112 | <code class="filename">/var</code> is used as <span class="emphasis"><em>varbase</em></span>, | | 1112 | <code class="filename">/var</code> is used as <span class="emphasis"><em>varbase</em></span>, |
1113 | where packages install their persistent data. | | 1113 | where packages install their persistent data. |
1114 | In unprivileged mode pkgsrc uses | | 1114 | In unprivileged mode pkgsrc uses |
1115 | <code class="filename">~/pkg</code> for <span class="emphasis"><em>prefix</em></span>, | | 1115 | <code class="filename">~/pkg</code> for <span class="emphasis"><em>prefix</em></span>, |
1116 | <code class="filename">~/pkg/pkgdb</code> for the package database, | | 1116 | <code class="filename">~/pkg/pkgdb</code> for the package database, |
1117 | and <code class="filename">~/pkg/var</code> for <span class="emphasis"><em>varbase</em></span>. | | 1117 | and <code class="filename">~/pkg/var</code> for <span class="emphasis"><em>varbase</em></span>. |
1118 | </p> | | 1118 | </p> |
1119 | <p>You can change default layout using command-line arguments. | | 1119 | <p>You can change default layout using command-line arguments. |
1120 | Run <span class="quote">“<span class="quote">./bootstrap --help</span>”</span> to get details. | | 1120 | Run <span class="quote">“<span class="quote">./bootstrap --help</span>”</span> to get details. |
1121 | </p> | | 1121 | </p> |
1122 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 1122 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
1123 | <h3 class="title">Note</h3> | | 1123 | <h3 class="title">Note</h3> |
1124 | <p>The bootstrap installs a <span class="command"><strong>bmake</strong></span> tool. | | 1124 | <p>The bootstrap installs a <span class="command"><strong>bmake</strong></span> tool. |
1125 | Use this <span class="command"><strong>bmake</strong></span> when building via pkgsrc. | | 1125 | Use this <span class="command"><strong>bmake</strong></span> when building via pkgsrc. |
1126 | For examples in this guide, use <span class="command"><strong>bmake</strong></span> | | 1126 | For examples in this guide, use <span class="command"><strong>bmake</strong></span> |
1127 | instead of <span class="quote">“<span class="quote">make</span>”</span>.</p> | | 1127 | instead of <span class="quote">“<span class="quote">make</span>”</span>.</p> |
1128 | </div> | | 1128 | </div> |
1129 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 1129 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
1130 | <h3 class="title">Note</h3> | | 1130 | <h3 class="title">Note</h3> |
1131 | <p>It is possible to bootstrap multiple instances of pkgsrc | | 1131 | <p>It is possible to bootstrap multiple instances of pkgsrc |
1132 | using non-intersecting directories. Use <span class="command"><strong>bmake</strong></span> | | 1132 | using non-intersecting directories. Use <span class="command"><strong>bmake</strong></span> |
1133 | corresponding to the installation you're working with to build | | 1133 | corresponding to the installation you're working with to build |
1134 | and install packages. | | 1134 | and install packages. |
1135 | </p> | | 1135 | </p> |
1136 | </div> | | 1136 | </div> |
1137 | </div> | | 1137 | </div> |
1138 | </div> | | 1138 | </div> |
1139 | <div class="chapter"> | | 1139 | <div class="chapter"> |
1140 | <div class="titlepage"><div><div><h2 class="title"> | | 1140 | <div class="titlepage"><div><div><h2 class="title"> |
1141 | <a name="using"></a>Chapter 4. Using pkgsrc</h2></div></div></div> | | 1141 | <a name="using"></a>Chapter 4. Using pkgsrc</h2></div></div></div> |
1142 | <div class="toc"> | | 1142 | <div class="toc"> |
1143 | <p><b>Table of Contents</b></p> | | 1143 | <p><b>Table of Contents</b></p> |
1144 | <dl class="toc"> | | 1144 | <dl class="toc"> |
1145 | <dt><span class="sect1"><a href="#using-pkg">4.1. Using binary packages</a></span></dt> | | 1145 | <dt><span class="sect1"><a href="#using-pkg">4.1. Using binary packages</a></span></dt> |
1146 | <dd><dl> | | 1146 | <dd><dl> |
1147 | <dt><span class="sect2"><a href="#finding-binary-packages">4.1.1. Finding binary packages</a></span></dt> | | 1147 | <dt><span class="sect2"><a href="#finding-binary-packages">4.1.1. Finding binary packages</a></span></dt> |
1148 | <dt><span class="sect2"><a href="#installing-binary-packages">4.1.2. Installing binary packages</a></span></dt> | | 1148 | <dt><span class="sect2"><a href="#installing-binary-packages">4.1.2. Installing binary packages</a></span></dt> |
1149 | <dt><span class="sect2"><a href="#using.pkg_delete">4.1.3. Deinstalling packages</a></span></dt> | | 1149 | <dt><span class="sect2"><a href="#using.pkg_delete">4.1.3. Deinstalling packages</a></span></dt> |
1150 | <dt><span class="sect2"><a href="#using.pkg_info">4.1.4. Getting information about installed packages</a></span></dt> | | 1150 | <dt><span class="sect2"><a href="#using.pkg_info">4.1.4. Getting information about installed packages</a></span></dt> |
1151 | <dt><span class="sect2"><a href="#vulnerabilities">4.1.5. Checking for security vulnerabilities in installed packages</a></span></dt> | | 1151 | <dt><span class="sect2"><a href="#vulnerabilities">4.1.5. Checking for security vulnerabilities in installed packages</a></span></dt> |
1152 | <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> | | 1152 | <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> |
1153 | <dt><span class="sect2"><a href="#using.pkg_admin">4.1.7. Other administrative functions</a></span></dt> | | 1153 | <dt><span class="sect2"><a href="#using.pkg_admin">4.1.7. Other administrative functions</a></span></dt> |
1154 | </dl></dd> | | 1154 | </dl></dd> |
1155 | <dt><span class="sect1"><a href="#building-packages-from-source">4.2. Building packages from source</a></span></dt> | | 1155 | <dt><span class="sect1"><a href="#building-packages-from-source">4.2. Building packages from source</a></span></dt> |
1156 | <dd><dl> | | 1156 | <dd><dl> |
1157 | <dt><span class="sect2"><a href="#requirements">4.2.1. Requirements</a></span></dt> | | 1157 | <dt><span class="sect2"><a href="#requirements">4.2.1. Requirements</a></span></dt> |
1158 | <dt><span class="sect2"><a href="#fetching-distfiles">4.2.2. Fetching distfiles</a></span></dt> | | 1158 | <dt><span class="sect2"><a href="#fetching-distfiles">4.2.2. Fetching distfiles</a></span></dt> |
1159 | <dt><span class="sect2"><a href="#how-to-build-and-install">4.2.3. How to build and install</a></span></dt> | | 1159 | <dt><span class="sect2"><a href="#how-to-build-and-install">4.2.3. How to build and install</a></span></dt> |
1160 | </dl></dd> | | 1160 | </dl></dd> |
1161 | </dl> | | 1161 | </dl> |
1162 | </div> | | 1162 | </div> |
1163 | <p>Basically, there are two ways of using pkgsrc. The first | | 1163 | <p>Basically, there are two ways of using pkgsrc. The first |
1164 | is to only install the package tools and to use binary packages | | 1164 | is to only install the package tools and to use binary packages |
1165 | that someone else has prepared. This is the <span class="quote">“<span class="quote">pkg</span>”</span> | | 1165 | that someone else has prepared. This is the <span class="quote">“<span class="quote">pkg</span>”</span> |
1166 | in pkgsrc. The second way is to install the <span class="quote">“<span class="quote">src</span>”</span> | | 1166 | in pkgsrc. The second way is to install the <span class="quote">“<span class="quote">src</span>”</span> |
1167 | of pkgsrc, too. Then you are able to build your own packages, | | 1167 | of pkgsrc, too. Then you are able to build your own packages, |
1168 | and you can still use binary packages from someone else.</p> | | 1168 | and you can still use binary packages from someone else.</p> |
1169 | <div class="sect1"> | | 1169 | <div class="sect1"> |
1170 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1170 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1171 | <a name="using-pkg"></a>4.1. Using binary packages</h2></div></div></div> | | 1171 | <a name="using-pkg"></a>4.1. Using binary packages</h2></div></div></div> |
1172 | <p>On the <a class="ulink" href="ftp://ftp.NetBSD.org/" target="_top">ftp.NetBSD.org</a> | | 1172 | <p>On the <a class="ulink" href="ftp://ftp.NetBSD.org/" target="_top">ftp.NetBSD.org</a> |
1173 | server and its mirrors, there are collections of binary packages, | | 1173 | server and its mirrors, there are collections of binary packages, |
1174 | ready to be installed. These binary packages have been built using the | | 1174 | ready to be installed. These binary packages have been built using the |
1175 | default settings for the directories, that is:</p> | | 1175 | default settings for the directories, that is:</p> |
1176 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 1176 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
1177 | <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> | | 1177 | <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> |
1178 | <li class="listitem"><p><code class="filename">/usr/pkg/etc</code> for configuration files,</p></li> | | 1178 | <li class="listitem"><p><code class="filename">/usr/pkg/etc</code> for configuration files,</p></li> |
1179 | <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> | | 1179 | <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> |
1180 | </ul></div> | | 1180 | </ul></div> |
1181 | <p>If you cannot use these directories for whatever reasons (maybe | | 1181 | <p>If you cannot use these directories for whatever reasons (maybe |
1182 | because you're not root), you cannot use these binary packages, but | | 1182 | because you're not root), you cannot use these binary packages, but |
1183 | 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> | | 1183 | 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> |
1184 | <div class="sect2"> | | 1184 | <div class="sect2"> |
1185 | <div class="titlepage"><div><div><h3 class="title"> | | 1185 | <div class="titlepage"><div><div><h3 class="title"> |
1186 | <a name="finding-binary-packages"></a>4.1.1. Finding binary packages</h3></div></div></div> | | 1186 | <a name="finding-binary-packages"></a>4.1.1. Finding binary packages</h3></div></div></div> |
1187 | <p>To install binary packages, you first need to know from where | | 1187 | <p>To install binary packages, you first need to know from where |
1188 | to get them. The first place where you should look is on the main | | 1188 | to get them. The first place where you should look is on the main |
1189 | 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> | | 1189 | 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> |
1190 | <p>This directory contains binary packages for multiple | | 1190 | <p>This directory contains binary packages for multiple |
1191 | platforms. First, select your operating system. (Ignore the | | 1191 | platforms. First, select your operating system. (Ignore the |
1192 | directories with version numbers attached to it, they just exist for | | 1192 | directories with version numbers attached to it, they just exist for |
1193 | legacy reasons.) Then, select your hardware architecture, and in the | | 1193 | legacy reasons.) Then, select your hardware architecture, and in the |
1194 | third step, the OS version and the <span class="quote">“<span class="quote">version</span>”</span> of pkgsrc.</p> | | 1194 | third step, the OS version and the <span class="quote">“<span class="quote">version</span>”</span> of pkgsrc.</p> |
1195 | <p>In this directory, you often find a file called | | 1195 | <p>In this directory, you often find a file called |
1196 | <code class="filename">bootstrap.tar.gz</code> which contains the package | | 1196 | <code class="filename">bootstrap.tar.gz</code> which contains the package |
1197 | management tools. If the file is missing, it is likely that your | | 1197 | management tools. If the file is missing, it is likely that your |
1198 | operating system already provides those tools. Download the file and | | 1198 | operating system already provides those tools. Download the file and |
1199 | extract it in the <code class="filename">/</code> directory. It will create | | 1199 | extract it in the <code class="filename">/</code> directory. It will create |
1200 | the directories <code class="filename">/usr/pkg</code> (containing the tools | | 1200 | the directories <code class="filename">/usr/pkg</code> (containing the tools |
1201 | for managing binary packages and the database of installed packages).</p> | | 1201 | for managing binary packages and the database of installed packages).</p> |
1202 | </div> | | 1202 | </div> |
1203 | <div class="sect2"> | | 1203 | <div class="sect2"> |
1204 | <div class="titlepage"><div><div><h3 class="title"> | | 1204 | <div class="titlepage"><div><div><h3 class="title"> |
1205 | <a name="installing-binary-packages"></a>4.1.2. Installing binary packages</h3></div></div></div> | | 1205 | <a name="installing-binary-packages"></a>4.1.2. Installing binary packages</h3></div></div></div> |
1206 | <p>In the directory from the last section, there is a | | 1206 | <p>In the directory from the last section, there is a |
1207 | subdirectory called <code class="filename">All/</code>, which contains all the | | 1207 | subdirectory called <code class="filename">All/</code>, which contains all the |
1208 | binary packages that are available for the platform, excluding those | | 1208 | binary packages that are available for the platform, excluding those |
1209 | that may not be distributed via FTP or CDROM (depending on which | | 1209 | that may not be distributed via FTP or CDROM (depending on which |
1210 | medium you are using).</p> | | 1210 | medium you are using).</p> |
1211 | <p>To install packages directly from an FTP or HTTP server, run | | 1211 | <p>To install packages directly from an FTP or HTTP server, run |
1212 | the following commands in a Bourne-compatible shell (be sure to | | 1212 | the following commands in a Bourne-compatible shell (be sure to |
1213 | <span class="command"><strong>su</strong></span> to root first):</p> | | 1213 | <span class="command"><strong>su</strong></span> to root first):</p> |
1214 | <pre class="screen"> | | 1214 | <pre class="screen"> |
1215 | <code class="prompt">#</code> <strong class="userinput"><code>PATH="/usr/pkg/sbin:$PATH"</code></strong> | | 1215 | <code class="prompt">#</code> <strong class="userinput"><code>PATH="/usr/pkg/sbin:$PATH"</code></strong> |
1216 | <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> | | 1216 | <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> |
1217 | <code class="prompt">#</code> <strong class="userinput"><code>export PATH PKG_PATH</code></strong> | | 1217 | <code class="prompt">#</code> <strong class="userinput"><code>export PATH PKG_PATH</code></strong> |
1218 | </pre> | | 1218 | </pre> |
1219 | <p>Instead of URLs, you can also use local paths, for example if | | 1219 | <p>Instead of URLs, you can also use local paths, for example if |
1220 | you are installing from a set of CDROMs, DVDs or an NFS-mounted | | 1220 | you are installing from a set of CDROMs, DVDs or an NFS-mounted |
1221 | repository. If you want to install packages from multiple sources, | | 1221 | repository. If you want to install packages from multiple sources, |
1222 | you can separate them by a semicolon in | | 1222 | you can separate them by a semicolon in |
1223 | <code class="varname">PKG_PATH</code>.</p> | | 1223 | <code class="varname">PKG_PATH</code>.</p> |
1224 | <p>After these preparations, installing a package is very | | 1224 | <p>After these preparations, installing a package is very |
1225 | easy:</p> | | 1225 | easy:</p> |
1226 | <pre class="screen"> | | 1226 | <pre class="screen"> |
1227 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_add libreoffice</code></strong> | | 1227 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_add libreoffice</code></strong> |
1228 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_add ap24-php71-*</code></strong> | | 1228 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_add ap24-php71-*</code></strong> |
1229 | </pre> | | 1229 | </pre> |
1230 | <p>Note that any prerequisite packages needed to run the | | 1230 | <p>Note that any prerequisite packages needed to run the |
1231 | package in question will be installed, too, assuming they are | | 1231 | package in question will be installed, too, assuming they are |
1232 | present where you install from.</p> | | 1232 | present where you install from.</p> |
1233 | <p>Adding packages might install vulnerable packages. | | 1233 | <p>Adding packages might install vulnerable packages. |
1234 | Thus you should run <span class="command"><strong>pkg_admin audit</strong></span> | | 1234 | Thus you should run <span class="command"><strong>pkg_admin audit</strong></span> |
1235 | regularly, especially after installing new packages, and verify | | 1235 | regularly, especially after installing new packages, and verify |
1236 | that the vulnerabilities are acceptable for your configuration.</p> | | 1236 | that the vulnerabilities are acceptable for your configuration.</p> |
1237 | <p>After you've installed packages, be sure to have | | 1237 | <p>After you've installed packages, be sure to have |
1238 | <code class="filename">/usr/pkg/bin</code> and <code class="filename">/usr/pkg/sbin</code> in your | | 1238 | <code class="filename">/usr/pkg/bin</code> and <code class="filename">/usr/pkg/sbin</code> in your |
1239 | <code class="varname">PATH</code> so you can actually start the just | | 1239 | <code class="varname">PATH</code> so you can actually start the just |
1240 | installed program.</p> | | 1240 | installed program.</p> |
1241 | </div> | | 1241 | </div> |
1242 | <div class="sect2"> | | 1242 | <div class="sect2"> |
1243 | <div class="titlepage"><div><div><h3 class="title"> | | 1243 | <div class="titlepage"><div><div><h3 class="title"> |
1244 | <a name="using.pkg_delete"></a>4.1.3. Deinstalling packages</h3></div></div></div> | | 1244 | <a name="using.pkg_delete"></a>4.1.3. Deinstalling packages</h3></div></div></div> |
1245 | <p>To deinstall a package, it does not matter whether it was | | 1245 | <p>To deinstall a package, it does not matter whether it was |
1246 | installed from source code or from a binary package. The | | 1246 | installed from source code or from a binary package. The |
1247 | <span class="command"><strong>pkg_delete</strong></span> command does not know it anyway. | | 1247 | <span class="command"><strong>pkg_delete</strong></span> command does not know it anyway. |
1248 | To delete a package, you can just run <span class="command"><strong>pkg_delete | | 1248 | To delete a package, you can just run <span class="command"><strong>pkg_delete |
1249 | <em class="replaceable"><code>package-name</code></em></strong></span>. The package | | 1249 | <em class="replaceable"><code>package-name</code></em></strong></span>. The package |
1250 | name can be given with or without version number. Wildcards can | | 1250 | name can be given with or without version number. Wildcards can |
1251 | also be used to deinstall a set of packages, for example | | 1251 | also be used to deinstall a set of packages, for example |
1252 | <code class="literal">*emacs*</code>. Be sure to include them in quotes, | | 1252 | <code class="literal">*emacs*</code>. Be sure to include them in quotes, |
1253 | so that the shell does not expand them before | | 1253 | so that the shell does not expand them before |
1254 | <code class="literal">pkg_delete</code> sees them.</p> | | 1254 | <code class="literal">pkg_delete</code> sees them.</p> |
1255 | <p>The <code class="option">-r</code> option is very powerful: it | | 1255 | <p>The <code class="option">-r</code> option is very powerful: it |
1256 | removes all the packages that require the package in question | | 1256 | removes all the packages that require the package in question |
1257 | and then removes the package itself. For example: | | 1257 | and then removes the package itself. For example: |
1258 | | | 1258 | |
1259 | </p> | | 1259 | </p> |
1260 | <pre class="screen"> | | 1260 | <pre class="screen"> |
1261 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_delete -r jpeg</code></strong> | | 1261 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_delete -r jpeg</code></strong> |
1262 | </pre> | | 1262 | </pre> |
1263 | <p> | | 1263 | <p> |
1264 | | | 1264 | |
1265 | will remove jpeg and all the packages that used it; this allows | | 1265 | will remove jpeg and all the packages that used it; this allows |
1266 | upgrading the jpeg package.</p> | | 1266 | upgrading the jpeg package.</p> |
1267 | </div> | | 1267 | </div> |
1268 | <div class="sect2"> | | 1268 | <div class="sect2"> |
1269 | <div class="titlepage"><div><div><h3 class="title"> | | 1269 | <div class="titlepage"><div><div><h3 class="title"> |
1270 | <a name="using.pkg_info"></a>4.1.4. Getting information about installed packages</h3></div></div></div> | | 1270 | <a name="using.pkg_info"></a>4.1.4. Getting information about installed packages</h3></div></div></div> |
1271 | <p>The <span class="command"><strong>pkg_info</strong></span> shows information about | | 1271 | <p>The <span class="command"><strong>pkg_info</strong></span> shows information about |
1272 | installed packages or binary package files.</p> | | 1272 | installed packages or binary package files.</p> |
1273 | </div> | | 1273 | </div> |
1274 | <div class="sect2"> | | 1274 | <div class="sect2"> |
1275 | <div class="titlepage"><div><div><h3 class="title"> | | 1275 | <div class="titlepage"><div><div><h3 class="title"> |
1276 | <a name="vulnerabilities"></a>4.1.5. Checking for security vulnerabilities in installed packages</h3></div></div></div> | | 1276 | <a name="vulnerabilities"></a>4.1.5. Checking for security vulnerabilities in installed packages</h3></div></div></div> |
1277 | <p> | | 1277 | <p> |
1278 | The NetBSD Security-Officer and Packages Groups maintain a list of | | 1278 | The NetBSD Security-Officer and Packages Groups maintain a list of |
1279 | known security vulnerabilities to packages which are (or have been) | | 1279 | known security vulnerabilities to packages which are (or have been) |
1280 | included in pkgsrc. The list is available from the NetBSD | | 1280 | included in pkgsrc. The list is available from the NetBSD |
1281 | 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>. | | 1281 | 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>. |
1282 | </p> | | 1282 | </p> |
1283 | <p> | | 1283 | <p> |
1284 | Through <span class="command"><strong>pkg_admin fetch-pkg-vulnerabilities</strong></span>, | | 1284 | Through <span class="command"><strong>pkg_admin fetch-pkg-vulnerabilities</strong></span>, |
1285 | this list can be downloaded | | 1285 | this list can be downloaded |
1286 | automatically, and a security audit of all packages installed on a system | | 1286 | automatically, and a security audit of all packages installed on a system |
1287 | can take place. | | 1287 | can take place. |
1288 | </p> | | 1288 | </p> |
1289 | <p> | | 1289 | <p> |
1290 | There are two components to auditing. The first | | 1290 | There are two components to auditing. The first |
1291 | step, <span class="command"><strong>pkg_admin fetch-pkg-vulnerabilities</strong></span>, | | 1291 | step, <span class="command"><strong>pkg_admin fetch-pkg-vulnerabilities</strong></span>, |
1292 | is for downloading | | 1292 | is for downloading |
1293 | the list of vulnerabilities from the NetBSD FTP site. The second | | 1293 | the list of vulnerabilities from the NetBSD FTP site. The second |
1294 | step, <span class="command"><strong>pkg_admin audit</strong></span>, checks to see if any of your | | 1294 | step, <span class="command"><strong>pkg_admin audit</strong></span>, checks to see if any of your |
1295 | installed packages are vulnerable. If a package is vulnerable, you | | 1295 | installed packages are vulnerable. If a package is vulnerable, you |
1296 | will see output similar to the following: | | 1296 | will see output similar to the following: |
1297 | </p> | | 1297 | </p> |
1298 | <pre class="screen">Package samba-2.0.9 has a local-root-shell vulnerability, see | | 1298 | <pre class="screen">Package samba-2.0.9 has a local-root-shell vulnerability, see |
1299 | http://www.samba.org/samba/whatsnew/macroexploit.html</pre> | | 1299 | http://www.samba.org/samba/whatsnew/macroexploit.html</pre> |
1300 | <p> | | 1300 | <p> |
1301 | You may wish to have the | | 1301 | You may wish to have the |
1302 | <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/vulnerabilities" target="_top">vulnerabilities</a> | | 1302 | <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/vulnerabilities" target="_top">vulnerabilities</a> |
1303 | file downloaded daily so that | | 1303 | file downloaded daily so that |
1304 | it remains current. This may be done by adding an appropriate entry | | 1304 | it remains current. This may be done by adding an appropriate entry |
1305 | to the root users <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?crontab+5.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">crontab</span>(5)</span></a> entry. For example the entry | | 1305 | to the root users <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?crontab+5.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">crontab</span>(5)</span></a> entry. For example the entry |
1306 | </p> | | 1306 | </p> |
1307 | <pre class="screen"> | | 1307 | <pre class="screen"> |
1308 | # Download vulnerabilities file | | 1308 | # Download vulnerabilities file |
1309 | 0 3 * * * /usr/pkg/sbin/pkg_admin fetch-pkg-vulnerabilities >/dev/null 2>&1 | | 1309 | 0 3 * * * /usr/pkg/sbin/pkg_admin fetch-pkg-vulnerabilities >/dev/null 2>&1 |
1310 | # Audit the installed packages and email results to root | | 1310 | # Audit the installed packages and email results to root |
1311 | 9 3 * * * /usr/pkg/sbin/pkg_admin audit |mail -s "Installed package audit result" \ | | 1311 | 9 3 * * * /usr/pkg/sbin/pkg_admin audit |mail -s "Installed package audit result" \ |
1312 | root >/dev/null 2>&1 | | 1312 | root >/dev/null 2>&1 |
1313 | </pre> | | 1313 | </pre> |
1314 | <p> | | 1314 | <p> |
1315 | will update the vulnerability list every day at 3AM, followed by an audit | | 1315 | will update the vulnerability list every day at 3AM, followed by an audit |
1316 | at 3:09AM. The result of the audit are then emailed to root. | | 1316 | at 3:09AM. The result of the audit are then emailed to root. |
1317 | | | 1317 | |
1318 | On NetBSD this may be accomplished instead by adding the following | | 1318 | On NetBSD this may be accomplished instead by adding the following |
1319 | line to <code class="filename">/etc/daily.conf</code>: | | 1319 | line to <code class="filename">/etc/daily.conf</code>: |
1320 | </p> | | 1320 | </p> |
1321 | <pre class="screen"> | | 1321 | <pre class="screen"> |
1322 | fetch_pkg_vulnerabilities=YES | | 1322 | fetch_pkg_vulnerabilities=YES |
1323 | </pre> | | 1323 | </pre> |
1324 | <p> | | 1324 | <p> |
1325 | to fetch the vulnerability list from the daily security script. The system | | 1325 | to fetch the vulnerability list from the daily security script. The system |
1326 | is set to audit the packages by default but can be set explicitly, if | | 1326 | is set to audit the packages by default but can be set explicitly, if |
1327 | desired (not required), by adding the following line to | | 1327 | desired (not required), by adding the following line to |
1328 | <code class="filename">/etc/security.conf</code>: | | 1328 | <code class="filename">/etc/security.conf</code>: |
1329 | </p> | | 1329 | </p> |
1330 | <pre class="screen"> | | 1330 | <pre class="screen"> |
1331 | check_pkg_vulnerabilities=YES | | 1331 | check_pkg_vulnerabilities=YES |
1332 | </pre> | | 1332 | </pre> |
1333 | <p> | | 1333 | <p> |
1334 | see <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?daily.conf+5.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">daily.conf</span>(5)</span></a> and <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?security.conf+5.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">security.conf</span>(5)</span></a> for more details. | | 1334 | see <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?daily.conf+5.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">daily.conf</span>(5)</span></a> and <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?security.conf+5.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">security.conf</span>(5)</span></a> for more details. |
1335 | </p> | | 1335 | </p> |
1336 | </div> | | 1336 | </div> |
1337 | <div class="sect2"> | | 1337 | <div class="sect2"> |
1338 | <div class="titlepage"><div><div><h3 class="title"> | | 1338 | <div class="titlepage"><div><div><h3 class="title"> |
1339 | <a name="pkg_versions"></a>4.1.6. Finding if newer versions of your installed packages are in pkgsrc</h3></div></div></div> | | 1339 | <a name="pkg_versions"></a>4.1.6. Finding if newer versions of your installed packages are in pkgsrc</h3></div></div></div> |
1340 | <p> | | 1340 | <p> |
1341 | Install <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/lintpkgsrc/README.html" target="_top"><code class="filename">pkgtools/lintpkgsrc</code></a> and run | | 1341 | Install <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/lintpkgsrc/README.html" target="_top"><code class="filename">pkgtools/lintpkgsrc</code></a> and run |
1342 | <span class="command"><strong>lintpkgsrc</strong></span> with the <span class="quote">“<span class="quote">-i</span>”</span> | | 1342 | <span class="command"><strong>lintpkgsrc</strong></span> with the <span class="quote">“<span class="quote">-i</span>”</span> |
1343 | argument to check if your packages are up-to-date, e.g. | | 1343 | argument to check if your packages are up-to-date, e.g. |
1344 | </p> | | 1344 | </p> |
1345 | <pre class="screen"> | | 1345 | <pre class="screen"> |
1346 | <code class="prompt">%</code> <strong class="userinput"><code>lintpkgsrc -i</code></strong> | | 1346 | <code class="prompt">%</code> <strong class="userinput"><code>lintpkgsrc -i</code></strong> |
1347 | ... | | 1347 | ... |
1348 | Version mismatch: 'tcsh' 6.09.00 vs 6.10.00 | | 1348 | Version mismatch: 'tcsh' 6.09.00 vs 6.10.00 |
1349 | </pre> | | 1349 | </pre> |
1350 | <p>You can then use <span class="command"><strong>make update</strong></span> to update the | | 1350 | <p>You can then use <span class="command"><strong>make update</strong></span> to update the |
1351 | package on your system and rebuild any dependencies. | | 1351 | package on your system and rebuild any dependencies. |
1352 | </p> | | 1352 | </p> |
1353 | </div> | | 1353 | </div> |
1354 | <div class="sect2"> | | 1354 | <div class="sect2"> |
1355 | <div class="titlepage"><div><div><h3 class="title"> | | 1355 | <div class="titlepage"><div><div><h3 class="title"> |
1356 | <a name="using.pkg_admin"></a>4.1.7. Other administrative functions</h3></div></div></div> | | 1356 | <a name="using.pkg_admin"></a>4.1.7. Other administrative functions</h3></div></div></div> |
1357 | <p>The <span class="command"><strong>pkg_admin</strong></span> executes various | | 1357 | <p>The <span class="command"><strong>pkg_admin</strong></span> executes various |
1358 | administrative functions on the package system.</p> | | 1358 | administrative functions on the package system.</p> |
1359 | </div> | | 1359 | </div> |
1360 | </div> | | 1360 | </div> |
1361 | <div class="sect1"> | | 1361 | <div class="sect1"> |
1362 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1362 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1363 | <a name="building-packages-from-source"></a>4.2. Building packages from source</h2></div></div></div> | | 1363 | <a name="building-packages-from-source"></a>4.2. Building packages from source</h2></div></div></div> |
1364 | <p>After obtaining pkgsrc, the <code class="filename">pkgsrc</code> | | 1364 | <p>After obtaining pkgsrc, the <code class="filename">pkgsrc</code> |
1365 | directory now contains a set of packages, organized into | | 1365 | directory now contains a set of packages, organized into |
1366 | categories. You can browse the online index of packages, or run | | 1366 | categories. You can browse the online index of packages, or run |
1367 | <span class="command"><strong>make readme</strong></span> from the <code class="filename">pkgsrc</code> | | 1367 | <span class="command"><strong>make readme</strong></span> from the <code class="filename">pkgsrc</code> |
1368 | directory to build local <code class="filename">README.html</code> files for | | 1368 | directory to build local <code class="filename">README.html</code> files for |
1369 | all packages, viewable with any web browser such as <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/lynx/README.html" target="_top"><code class="filename">www/lynx</code></a> or <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/firefox/README.html" target="_top"><code class="filename">www/firefox</code></a>.</p> | | 1369 | all packages, viewable with any web browser such as <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/lynx/README.html" target="_top"><code class="filename">www/lynx</code></a> or <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/firefox/README.html" target="_top"><code class="filename">www/firefox</code></a>.</p> |
1370 | <p>The default <span class="emphasis"><em>prefix</em></span> for installed packages | | 1370 | <p>The default <span class="emphasis"><em>prefix</em></span> for installed packages |
1371 | is <code class="filename">/usr/pkg</code>. If you wish to change this, you | | 1371 | is <code class="filename">/usr/pkg</code>. If you wish to change this, you |
1372 | should do so by setting <code class="varname">LOCALBASE</code> in | | 1372 | should do so by setting <code class="varname">LOCALBASE</code> in |
1373 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. You should not try to use multiple | | 1373 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. You should not try to use multiple |
1374 | different <code class="varname">LOCALBASE</code> definitions on the same | | 1374 | different <code class="varname">LOCALBASE</code> definitions on the same |
1375 | system (inside a chroot is an exception). </p> | | 1375 | system (inside a chroot is an exception). </p> |
1376 | <p>The rest of this chapter assumes that the package is already | | 1376 | <p>The rest of this chapter assumes that the package is already |
1377 | 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 | | 1377 | 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 |
1378 | instructions how to create your own packages.</p> | | 1378 | instructions how to create your own packages.</p> |
1379 | <div class="sect2"> | | 1379 | <div class="sect2"> |
1380 | <div class="titlepage"><div><div><h3 class="title"> | | 1380 | <div class="titlepage"><div><div><h3 class="title"> |
1381 | <a name="requirements"></a>4.2.1. Requirements</h3></div></div></div> | | 1381 | <a name="requirements"></a>4.2.1. Requirements</h3></div></div></div> |
1382 | <p>To build packages from source, you need a working C | | 1382 | <p>To build packages from source, you need a working C |
1383 | compiler. On NetBSD, you need to install the | | 1383 | compiler. On NetBSD, you need to install the |
1384 | <span class="quote">“<span class="quote">comp</span>”</span> and the <span class="quote">“<span class="quote">text</span>”</span> distribution | | 1384 | <span class="quote">“<span class="quote">comp</span>”</span> and the <span class="quote">“<span class="quote">text</span>”</span> distribution |
1385 | sets. If you want to build X11-related packages, the | | 1385 | sets. If you want to build X11-related packages, the |
1386 | <span class="quote">“<span class="quote">xbase</span>”</span> and <span class="quote">“<span class="quote">xcomp</span>”</span> distribution | | 1386 | <span class="quote">“<span class="quote">xbase</span>”</span> and <span class="quote">“<span class="quote">xcomp</span>”</span> distribution |
1387 | sets are required, too.</p> | | 1387 | sets are required, too.</p> |
1388 | </div> | | 1388 | </div> |
1389 | <div class="sect2"> | | 1389 | <div class="sect2"> |
1390 | <div class="titlepage"><div><div><h3 class="title"> | | 1390 | <div class="titlepage"><div><div><h3 class="title"> |
1391 | <a name="fetching-distfiles"></a>4.2.2. Fetching distfiles</h3></div></div></div> | | 1391 | <a name="fetching-distfiles"></a>4.2.2. Fetching distfiles</h3></div></div></div> |
1392 | <p>The first step for building a package is downloading the | | 1392 | <p>The first step for building a package is downloading the |
1393 | distfiles (i.e. the unmodified source). If they have not yet been | | 1393 | distfiles (i.e. the unmodified source). If they have not yet been |
1394 | downloaded, pkgsrc will fetch them automatically.</p> | | 1394 | downloaded, pkgsrc will fetch them automatically.</p> |
1395 | <p>If you have all files that you need in the | | 1395 | <p>If you have all files that you need in the |
1396 | <code class="filename">distfiles</code> directory, | | 1396 | <code class="filename">distfiles</code> directory, |
1397 | you don't need to connect. If the distfiles are on CD-ROM, you can | | 1397 | you don't need to connect. If the distfiles are on CD-ROM, you can |
1398 | mount the CD-ROM on <code class="filename">/cdrom</code> and add: | | 1398 | mount the CD-ROM on <code class="filename">/cdrom</code> and add: |
1399 | </p> | | 1399 | </p> |
1400 | <pre class="screen">DISTDIR=/cdrom/pkgsrc/distfiles</pre> | | 1400 | <pre class="screen">DISTDIR=/cdrom/pkgsrc/distfiles</pre> |
1401 | <p> | | 1401 | <p> |
1402 | to your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p> | | 1402 | to your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p> |
1403 | <p>By default a list of distribution sites will be randomly | | 1403 | <p>By default a list of distribution sites will be randomly |
1404 | intermixed to prevent huge load on servers which holding popular | | 1404 | intermixed to prevent huge load on servers which holding popular |
1405 | packages (for example, SourceForge.net mirrors). Thus, every | | 1405 | packages (for example, SourceForge.net mirrors). Thus, every |
1406 | time when you need to fetch yet another distfile all the mirrors | | 1406 | time when you need to fetch yet another distfile all the mirrors |
1407 | will be tried in new (random) order. You can turn this feature | | 1407 | will be tried in new (random) order. You can turn this feature |
1408 | off by setting <code class="varname">MASTER_SORT_RANDOM=NO</code> (for | | 1408 | off by setting <code class="varname">MASTER_SORT_RANDOM=NO</code> (for |
1409 | <code class="varname">PKG_DEVELOPER</code>s it's already disabled).</p> | | 1409 | <code class="varname">PKG_DEVELOPER</code>s it's already disabled).</p> |
1410 | <p>You can overwrite some of the major distribution sites to | | 1410 | <p>You can overwrite some of the major distribution sites to |
1411 | fit to sites that are close to your own. By setting one or two | | 1411 | fit to sites that are close to your own. By setting one or two |
1412 | variables you can modify the order in which the master sites are | | 1412 | variables you can modify the order in which the master sites are |
1413 | accessed. <code class="varname">MASTER_SORT</code> contains a whitespace | | 1413 | accessed. <code class="varname">MASTER_SORT</code> contains a whitespace |
1414 | delimited list of domain suffixes. | | 1414 | delimited list of domain suffixes. |
1415 | <code class="varname">MASTER_SORT_REGEX</code> is even more flexible, it | | 1415 | <code class="varname">MASTER_SORT_REGEX</code> is even more flexible, it |
1416 | contains a whitespace delimited list of regular expressions. It | | 1416 | contains a whitespace delimited list of regular expressions. It |
1417 | has higher priority than <code class="varname">MASTER_SORT</code>. Have a | | 1417 | has higher priority than <code class="varname">MASTER_SORT</code>. Have a |
1418 | look at <code class="filename">pkgsrc/mk/defaults/mk.conf</code> to find | | 1418 | look at <code class="filename">pkgsrc/mk/defaults/mk.conf</code> to find |
1419 | some examples. This may save some of your bandwidth and | | 1419 | some examples. This may save some of your bandwidth and |
1420 | time.</p> | | 1420 | time.</p> |
1421 | <p>You can change these settings either in your shell's environment, or, | | 1421 | <p>You can change these settings either in your shell's environment, or, |
1422 | if you want to keep the settings, by editing the | | 1422 | if you want to keep the settings, by editing the |
1423 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file, | | 1423 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file, |
1424 | and adding the definitions there.</p> | | 1424 | and adding the definitions there.</p> |
1425 | <p> | | 1425 | <p> |
1426 | If a package depends on many other packages (such as | | 1426 | If a package depends on many other packages (such as |
1427 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/kde4/README.html" target="_top"><code class="filename">meta-pkgs/kde4</code></a>), the build process may | | 1427 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/kde4/README.html" target="_top"><code class="filename">meta-pkgs/kde4</code></a>), the build process may |
1428 | alternate between periods of | | 1428 | alternate between periods of |
1429 | downloading source, and compiling. To ensure you have all the source | | 1429 | downloading source, and compiling. To ensure you have all the source |
1430 | downloaded initially you can run the command: | | 1430 | downloaded initially you can run the command: |
1431 | </p> | | 1431 | </p> |
1432 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make fetch-list | sh</code></strong></pre> | | 1432 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make fetch-list | sh</code></strong></pre> |
1433 | <p> | | 1433 | <p> |
1434 | which will output and run a set of shell commands to fetch the | | 1434 | which will output and run a set of shell commands to fetch the |
1435 | necessary files into the <code class="filename">distfiles</code> directory. You can | | 1435 | necessary files into the <code class="filename">distfiles</code> directory. You can |
1436 | also choose to download the files manually. | | 1436 | also choose to download the files manually. |
1437 | </p> | | 1437 | </p> |
1438 | </div> | | 1438 | </div> |
1439 | <div class="sect2"> | | 1439 | <div class="sect2"> |
1440 | <div class="titlepage"><div><div><h3 class="title"> | | 1440 | <div class="titlepage"><div><div><h3 class="title"> |
1441 | <a name="how-to-build-and-install"></a>4.2.3. How to build and install</h3></div></div></div> | | 1441 | <a name="how-to-build-and-install"></a>4.2.3. How to build and install</h3></div></div></div> |
1442 | <p> | | 1442 | <p> |
1443 | Once the software has downloaded, any patches will be applied, then it | | 1443 | Once the software has downloaded, any patches will be applied, then it |
1444 | will be compiled for you. This may take some time depending on your | | 1444 | will be compiled for you. This may take some time depending on your |
1445 | computer, and how many other packages the software depends on and their | | 1445 | computer, and how many other packages the software depends on and their |
1446 | compile time. | | 1446 | compile time. |
1447 | </p> | | 1447 | </p> |
1448 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 1448 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
1449 | <h3 class="title">Note</h3> | | 1449 | <h3 class="title">Note</h3> |
1450 | <p>If using bootstrap or pkgsrc on a non-NetBSD system, | | 1450 | <p>If using bootstrap or pkgsrc on a non-NetBSD system, |
1451 | use the pkgsrc <span class="command"><strong>bmake</strong></span> command instead of | | 1451 | use the pkgsrc <span class="command"><strong>bmake</strong></span> command instead of |
1452 | <span class="quote">“<span class="quote">make</span>”</span> in the examples in this guide.</p> | | 1452 | <span class="quote">“<span class="quote">make</span>”</span> in the examples in this guide.</p> |
1453 | </div> | | 1453 | </div> |
1454 | <p>For example, type</p> | | 1454 | <p>For example, type</p> |
1455 | <pre class="screen"> | | 1455 | <pre class="screen"> |
1456 | <code class="prompt">%</code> <strong class="userinput"><code>cd misc/figlet</code></strong> | | 1456 | <code class="prompt">%</code> <strong class="userinput"><code>cd misc/figlet</code></strong> |
1457 | <code class="prompt">%</code> <strong class="userinput"><code>make</code></strong> | | 1457 | <code class="prompt">%</code> <strong class="userinput"><code>make</code></strong> |
1458 | </pre> | | 1458 | </pre> |
1459 | <p>at the shell prompt to build the various components of the | | 1459 | <p>at the shell prompt to build the various components of the |
1460 | package.</p> | | 1460 | package.</p> |
1461 | <p>The next stage is to actually install the newly compiled | | 1461 | <p>The next stage is to actually install the newly compiled |
1462 | program onto your system. Do this by entering: | | 1462 | program onto your system. Do this by entering: |
1463 | | | 1463 | |
1464 | </p> | | 1464 | </p> |
1465 | <pre class="screen"> | | 1465 | <pre class="screen"> |
1466 | <code class="prompt">%</code> <strong class="userinput"><code>make install</code></strong> | | 1466 | <code class="prompt">%</code> <strong class="userinput"><code>make install</code></strong> |
1467 | </pre> | | 1467 | </pre> |
1468 | <p> | | 1468 | <p> |
1469 | | | 1469 | |
1470 | while you are still in the directory for whatever package you | | 1470 | while you are still in the directory for whatever package you |
1471 | are installing.</p> | | 1471 | are installing.</p> |
1472 | <p>Installing the package on your system may require you to | | 1472 | <p>Installing the package on your system may require you to |
1473 | be root. However, pkgsrc has a | | 1473 | be root. However, pkgsrc has a |
1474 | <span class="emphasis"><em>just-in-time-su</em></span> feature, which allows you | | 1474 | <span class="emphasis"><em>just-in-time-su</em></span> feature, which allows you |
1475 | to only become root for the actual installation step.</p> | | 1475 | to only become root for the actual installation step.</p> |
1476 | <p>That's it, the software should now be installed and setup for use. | | 1476 | <p>That's it, the software should now be installed and setup for use. |
1477 | You can now enter: | | 1477 | You can now enter: |
1478 | | | 1478 | |
1479 | </p> | | 1479 | </p> |
1480 | <pre class="screen"> | | 1480 | <pre class="screen"> |
1481 | <code class="prompt">%</code> <strong class="userinput"><code>make clean</code></strong> | | 1481 | <code class="prompt">%</code> <strong class="userinput"><code>make clean</code></strong> |
1482 | </pre> | | 1482 | </pre> |
1483 | <p> | | 1483 | <p> |
1484 | | | 1484 | |
1485 | to remove the compiled files in the work directory, as you shouldn't need | | 1485 | to remove the compiled files in the work directory, as you shouldn't need |
1486 | them any more. If other packages were also added to your system | | 1486 | them any more. If other packages were also added to your system |
1487 | (dependencies) to allow your program to compile, you can tidy these up | | 1487 | (dependencies) to allow your program to compile, you can tidy these up |
1488 | also with the command:</p> | | 1488 | also with the command:</p> |
1489 | <pre class="screen"> | | 1489 | <pre class="screen"> |
1490 | <code class="prompt">%</code> <strong class="userinput"><code>make clean-depends</code></strong> | | 1490 | <code class="prompt">%</code> <strong class="userinput"><code>make clean-depends</code></strong> |
1491 | </pre> | | 1491 | </pre> |
1492 | <p>Taking the figlet utility as an example, we can install it on our | | 1492 | <p>Taking the figlet utility as an example, we can install it on our |
1493 | system by building as shown in <a class="xref" href="#logs" title="Appendix B. Build logs">Appendix B, <i>Build logs</i></a>.</p> | | 1493 | system by building as shown in <a class="xref" href="#logs" title="Appendix B. Build logs">Appendix B, <i>Build logs</i></a>.</p> |
1494 | <p>The program is installed under the default root of the | | 1494 | <p>The program is installed under the default root of the |
1495 | packages tree - <code class="filename">/usr/pkg</code>. Should this not | | 1495 | packages tree - <code class="filename">/usr/pkg</code>. Should this not |
1496 | conform to your tastes, set the <code class="varname">LOCALBASE</code> | | 1496 | conform to your tastes, set the <code class="varname">LOCALBASE</code> |
1497 | variable in your environment, and it will use that value as the | | 1497 | variable in your environment, and it will use that value as the |
1498 | root of your packages tree. So, to use | | 1498 | root of your packages tree. So, to use |
1499 | <code class="filename">/usr/local</code>, set | | 1499 | <code class="filename">/usr/local</code>, set |
1500 | <code class="varname">LOCALBASE=/usr/local</code> in your environment. | | 1500 | <code class="varname">LOCALBASE=/usr/local</code> in your environment. |
1501 | Please note that you should use a directory which is dedicated to | | 1501 | Please note that you should use a directory which is dedicated to |
1502 | packages and not shared with other programs (i.e., do not try and | | 1502 | packages and not shared with other programs (i.e., do not try and |
1503 | use <code class="varname">LOCALBASE=/usr</code>). Also, you should not try | | 1503 | use <code class="varname">LOCALBASE=/usr</code>). Also, you should not try |
1504 | to add any of your own files or directories (such as | | 1504 | to add any of your own files or directories (such as |
1505 | <code class="filename">src/</code>, <code class="filename">obj/</code>, or | | 1505 | <code class="filename">src/</code>, <code class="filename">obj/</code>, or |
1506 | <code class="filename">pkgsrc/</code>) below the | | 1506 | <code class="filename">pkgsrc/</code>) below the |
1507 | <code class="varname">LOCALBASE</code> tree. This is to prevent possible | | 1507 | <code class="varname">LOCALBASE</code> tree. This is to prevent possible |
1508 | conflicts between programs and other files installed by the | | 1508 | conflicts between programs and other files installed by the |
1509 | package system and whatever else may have been installed | | 1509 | package system and whatever else may have been installed |
1510 | there.</p> | | 1510 | there.</p> |
1511 | <p>Some packages look in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to | | 1511 | <p>Some packages look in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to |
1512 | alter some configuration options at build time. Have a look at | | 1512 | alter some configuration options at build time. Have a look at |
1513 | <code class="filename">pkgsrc/mk/defaults/mk.conf</code> to get an overview | | 1513 | <code class="filename">pkgsrc/mk/defaults/mk.conf</code> to get an overview |
1514 | of what will be set there by default. Environment variables such | | 1514 | of what will be set there by default. Environment variables such |
1515 | as <code class="varname">LOCALBASE</code> can be set in | | 1515 | as <code class="varname">LOCALBASE</code> can be set in |
1516 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to save having to remember to | | 1516 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to save having to remember to |
1517 | set them each time you want to use pkgsrc.</p> | | 1517 | set them each time you want to use pkgsrc.</p> |
1518 | <p>Occasionally, people want to <span class="quote">“<span class="quote">look under the | | 1518 | <p>Occasionally, people want to <span class="quote">“<span class="quote">look under the |
1519 | covers</span>”</span> to see what is going on when a package is building | | 1519 | covers</span>”</span> to see what is going on when a package is building |
1520 | or being installed. This may be for debugging purposes, or out of | | 1520 | or being installed. This may be for debugging purposes, or out of |
1521 | simple curiosity. A number of utility values have been added to | | 1521 | simple curiosity. A number of utility values have been added to |
1522 | help with this.</p> | | 1522 | help with this.</p> |
1523 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 1523 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
1524 | <li class="listitem"> | | 1524 | <li class="listitem"> |
1525 | <p>If you invoke the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> command with | | 1525 | <p>If you invoke the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> command with |
1526 | <code class="varname">PKG_DEBUG_LEVEL=2</code>, then a huge amount of | | 1526 | <code class="varname">PKG_DEBUG_LEVEL=2</code>, then a huge amount of |
1527 | information will be displayed. For example,</p> | | 1527 | information will be displayed. For example,</p> |
1528 | <pre class="screen"><strong class="userinput"><code>make patch PKG_DEBUG_LEVEL=2</code></strong></pre> | | 1528 | <pre class="screen"><strong class="userinput"><code>make patch PKG_DEBUG_LEVEL=2</code></strong></pre> |
1529 | <p>will show all the commands that are invoked, up to and | | 1529 | <p>will show all the commands that are invoked, up to and |
1530 | including the <span class="quote">“<span class="quote">patch</span>”</span> stage.</p> | | 1530 | including the <span class="quote">“<span class="quote">patch</span>”</span> stage.</p> |
1531 | </li> | | 1531 | </li> |
1532 | <li class="listitem"> | | 1532 | <li class="listitem"> |
1533 | <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.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> | | 1533 | <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.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> |
1534 | definition, then the <code class="varname">VARNAME</code> definition | | 1534 | definition, then the <code class="varname">VARNAME</code> definition |
1535 | should be used, in conjunction with the show-var | | 1535 | should be used, in conjunction with the show-var |
1536 | target. e.g. to show the expansion of the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> | | 1536 | target. e.g. to show the expansion of the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> |
1537 | variable <code class="varname">LOCALBASE</code>:</p> | | 1537 | variable <code class="varname">LOCALBASE</code>:</p> |
1538 | <pre class="screen"> | | 1538 | <pre class="screen"> |
1539 | <code class="prompt">%</code> <strong class="userinput"><code>make show-var VARNAME=LOCALBASE</code></strong> | | 1539 | <code class="prompt">%</code> <strong class="userinput"><code>make show-var VARNAME=LOCALBASE</code></strong> |
1540 | /usr/pkg | | 1540 | /usr/pkg |
1541 | <code class="prompt">%</code> | | 1541 | <code class="prompt">%</code> |
1542 | </pre> | | 1542 | </pre> |
1543 | </li> | | 1543 | </li> |
1544 | </ol></div> | | 1544 | </ol></div> |
1545 | <p>If you want to install a binary package that you've either | | 1545 | <p>If you want to install a binary package that you've either |
1546 | created yourself (see next section), that you put into | | 1546 | created yourself (see next section), that you put into |
1547 | pkgsrc/packages manually or that is located on a remote FTP | | 1547 | pkgsrc/packages manually or that is located on a remote FTP |
1548 | server, you can use the "bin-install" target. This target will | | 1548 | server, you can use the "bin-install" target. This target will |
1549 | install a binary package - if available - via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>, | | 1549 | install a binary package - if available - via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>, |
1550 | else do a <span class="command"><strong>make package</strong></span>. The list of remote FTP | | 1550 | else do a <span class="command"><strong>make package</strong></span>. The list of remote FTP |
1551 | sites searched is kept in the variable | | 1551 | sites searched is kept in the variable |
1552 | <code class="varname">BINPKG_SITES</code>, which defaults to | | 1552 | <code class="varname">BINPKG_SITES</code>, which defaults to |
1553 | 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.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a> | | 1553 | 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.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a> |
1554 | can be put into <code class="varname">BIN_INSTALL_FLAGS</code>. See | | 1554 | can be put into <code class="varname">BIN_INSTALL_FLAGS</code>. See |
1555 | <code class="filename">pkgsrc/mk/defaults/mk.conf</code> for more | | 1555 | <code class="filename">pkgsrc/mk/defaults/mk.conf</code> for more |
1556 | details.</p> | | 1556 | details.</p> |
1557 | <p>A final word of warning: If you set up a system that has a | | 1557 | <p>A final word of warning: If you set up a system that has a |
1558 | non-standard setting for <code class="varname">LOCALBASE</code>, be sure to | | 1558 | non-standard setting for <code class="varname">LOCALBASE</code>, be sure to |
1559 | set that before any packages are installed, as you cannot use | | 1559 | set that before any packages are installed, as you cannot use |
1560 | several directories for the same purpose. Doing so will result in | | 1560 | several directories for the same purpose. Doing so will result in |
1561 | pkgsrc not being able to properly detect your installed packages, | | 1561 | pkgsrc not being able to properly detect your installed packages, |
1562 | and fail miserably. Note also that precompiled binary packages are | | 1562 | and fail miserably. Note also that precompiled binary packages are |
1563 | usually built with the default <code class="varname">LOCALBASE</code> of | | 1563 | usually built with the default <code class="varname">LOCALBASE</code> of |
1564 | <code class="filename">/usr/pkg</code>, and that you should | | 1564 | <code class="filename">/usr/pkg</code>, and that you should |
1565 | <span class="emphasis"><em>not</em></span> install any if you use a non-standard | | 1565 | <span class="emphasis"><em>not</em></span> install any if you use a non-standard |
1566 | <code class="varname">LOCALBASE</code>.</p> | | 1566 | <code class="varname">LOCALBASE</code>.</p> |
1567 | </div> | | 1567 | </div> |
1568 | </div> | | 1568 | </div> |
1569 | </div> | | 1569 | </div> |
1570 | <div class="chapter"> | | 1570 | <div class="chapter"> |
1571 | <div class="titlepage"><div><div><h2 class="title"> | | 1571 | <div class="titlepage"><div><div><h2 class="title"> |
1572 | <a name="configuring"></a>Chapter 5. Configuring pkgsrc</h2></div></div></div> | | 1572 | <a name="configuring"></a>Chapter 5. Configuring pkgsrc</h2></div></div></div> |
1573 | <div class="toc"> | | 1573 | <div class="toc"> |
1574 | <p><b>Table of Contents</b></p> | | 1574 | <p><b>Table of Contents</b></p> |
1575 | <dl class="toc"> | | 1575 | <dl class="toc"> |
1576 | <dt><span class="sect1"><a href="#general-configuration">5.1. General configuration</a></span></dt> | | 1576 | <dt><span class="sect1"><a href="#general-configuration">5.1. General configuration</a></span></dt> |
1577 | <dt><span class="sect1"><a href="#variables-affecting-build">5.2. Variables affecting the build process</a></span></dt> | | 1577 | <dt><span class="sect1"><a href="#variables-affecting-build">5.2. Variables affecting the build process</a></span></dt> |
1578 | <dt><span class="sect1"><a href="#variables-affecting-installation">5.3. Variables affecting the installation process</a></span></dt> | | 1578 | <dt><span class="sect1"><a href="#variables-affecting-installation">5.3. Variables affecting the installation process</a></span></dt> |
1579 | <dt><span class="sect1"><a href="#conf.compiler">5.4. Selecting and configuring the compiler</a></span></dt> | | 1579 | <dt><span class="sect1"><a href="#conf.compiler">5.4. Selecting and configuring the compiler</a></span></dt> |
1580 | <dd><dl> | | 1580 | <dd><dl> |
1581 | <dt><span class="sect2"><a href="#selecting-the-compiler">5.4.1. Selecting the compiler</a></span></dt> | | 1581 | <dt><span class="sect2"><a href="#selecting-the-compiler">5.4.1. Selecting the compiler</a></span></dt> |
1582 | <dt><span class="sect2"><a href="#conf.cflags">5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</a></span></dt> | | 1582 | <dt><span class="sect2"><a href="#conf.cflags">5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</a></span></dt> |
1583 | <dt><span class="sect2"><a href="#conf.ldflags">5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</a></span></dt> | | 1583 | <dt><span class="sect2"><a href="#conf.ldflags">5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</a></span></dt> |
1584 | </dl></dd> | | 1584 | </dl></dd> |
1585 | <dt><span class="sect1"><a href="#developer-advanced-settings">5.5. Developer/advanced settings</a></span></dt> | | 1585 | <dt><span class="sect1"><a href="#developer-advanced-settings">5.5. Developer/advanced settings</a></span></dt> |
1586 | <dt><span class="sect1"><a href="#selecting-build-options">5.6. Selecting Build Options</a></span></dt> | | 1586 | <dt><span class="sect1"><a href="#selecting-build-options">5.6. Selecting Build Options</a></span></dt> |
1587 | </dl> | | 1587 | </dl> |
1588 | </div> | | 1588 | </div> |
1589 | <a name="mk.conf"></a><p>The whole pkgsrc system is configured in a single file, usually | | 1589 | <a name="mk.conf"></a><p>The whole pkgsrc system is configured in a single file, usually |
1590 | called <code class="filename">mk.conf</code>. In which directory pkgsrc looks for | | 1590 | called <code class="filename">mk.conf</code>. In which directory pkgsrc looks for |
1591 | that file depends on the installation. On NetBSD, when you use | | 1591 | that file depends on the installation. On NetBSD, when you use |
1592 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> from the base system, it is in the directory | | 1592 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> from the base system, it is in the directory |
1593 | <code class="filename">/etc/</code>. In all other cases the default location is | | 1593 | <code class="filename">/etc/</code>. In all other cases the default location is |
1594 | <code class="literal">${PREFIX}/etc/</code>, depending on where you told the | | 1594 | <code class="literal">${PREFIX}/etc/</code>, depending on where you told the |
1595 | bootstrap program to install the binary packages.</p> | | 1595 | bootstrap program to install the binary packages.</p> |
1596 | <p>The format of the configuration file is that of the usual | | 1596 | <p>The format of the configuration file is that of the usual |
1597 | BSD-style <code class="filename">Makefile</code>s. The whole pkgsrc configuration | | 1597 | BSD-style <code class="filename">Makefile</code>s. The whole pkgsrc configuration |
1598 | is done by setting variables in this file. Note that you can define all | | 1598 | is done by setting variables in this file. Note that you can define all |
1599 | kinds of variables, and no special error checking (for example for | | 1599 | kinds of variables, and no special error checking (for example for |
1600 | spelling mistakes) takes place.</p> | | 1600 | spelling mistakes) takes place.</p> |
1601 | <div class="sect1"> | | 1601 | <div class="sect1"> |
1602 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1602 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1603 | <a name="general-configuration"></a>5.1. General configuration</h2></div></div></div> | | 1603 | <a name="general-configuration"></a>5.1. General configuration</h2></div></div></div> |
1604 | <p>The following variables apply to all | | 1604 | <p>The following variables apply to all |
1605 | pkgsrc packages. A complete list of the variables that can be | | 1605 | pkgsrc packages. A complete list of the variables that can be |
1606 | configured by the user is available in | | 1606 | configured by the user is available in |
1607 | <code class="filename">mk/defaults/mk.conf</code>, together with some | | 1607 | <code class="filename">mk/defaults/mk.conf</code>, together with some |
1608 | comments that describe each variable's intent.</p> | | 1608 | comments that describe each variable's intent.</p> |
1609 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 1609 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
1610 | <li class="listitem"><p><code class="varname">LOCALBASE</code>: Where | | 1610 | <li class="listitem"><p><code class="varname">LOCALBASE</code>: Where |
1611 | packages will be installed. The default is | | 1611 | packages will be installed. The default is |
1612 | <code class="filename">/usr/pkg</code>. Do not mix binary packages | | 1612 | <code class="filename">/usr/pkg</code>. Do not mix binary packages |
1613 | with different <code class="varname">LOCALBASE</code>s!</p></li> | | 1613 | with different <code class="varname">LOCALBASE</code>s!</p></li> |
1614 | <li class="listitem"><p><code class="varname">CROSSBASE</code>: Where | | 1614 | <li class="listitem"><p><code class="varname">CROSSBASE</code>: Where |
1615 | <span class="quote">“<span class="quote">cross</span>”</span> category packages will be | | 1615 | <span class="quote">“<span class="quote">cross</span>”</span> category packages will be |
1616 | installed. The default is | | 1616 | installed. The default is |
1617 | <code class="filename">${LOCALBASE}/cross</code>.</p></li> | | 1617 | <code class="filename">${LOCALBASE}/cross</code>.</p></li> |
1618 | <li class="listitem"><p><code class="varname">X11BASE</code>: Where | | 1618 | <li class="listitem"><p><code class="varname">X11BASE</code>: Where |
1619 | X11 is installed on the system. The default is | | 1619 | X11 is installed on the system. The default is |
1620 | <code class="filename">/usr/X11R7</code>.</p></li> | | 1620 | <code class="filename">/usr/X11R7</code>.</p></li> |
1621 | <li class="listitem"><p><code class="varname">DISTDIR</code>: Where to store the | | 1621 | <li class="listitem"><p><code class="varname">DISTDIR</code>: Where to store the |
1622 | downloaded copies of the original source distributions used | | 1622 | downloaded copies of the original source distributions used |
1623 | for building pkgsrc packages. The default is | | 1623 | for building pkgsrc packages. The default is |
1624 | <code class="filename">${PKGSRCDIR}/distfiles</code>.</p></li> | | 1624 | <code class="filename">${PKGSRCDIR}/distfiles</code>.</p></li> |
1625 | <li class="listitem"><p><code class="varname">PKG_DBDIR</code>: Where the | | 1625 | <li class="listitem"><p><code class="varname">PKG_DBDIR</code>: Where the |
1626 | database about installed packages is stored. The default is | | 1626 | database about installed packages is stored. The default is |
1627 | <code class="filename">/usr/pkg/pkgdb</code>.</p></li> | | 1627 | <code class="filename">/usr/pkg/pkgdb</code>.</p></li> |
1628 | <li class="listitem"><p><code class="varname">MASTER_SITE_OVERRIDE</code>: | | 1628 | <li class="listitem"><p><code class="varname">MASTER_SITE_OVERRIDE</code>: |
1629 | If set, override the packages' | | 1629 | If set, override the packages' |
1630 | <code class="varname">MASTER_SITES</code> with this value.</p></li> | | 1630 | <code class="varname">MASTER_SITES</code> with this value.</p></li> |
1631 | <li class="listitem"><p><code class="varname">MASTER_SITE_BACKUP</code>: | | 1631 | <li class="listitem"><p><code class="varname">MASTER_SITE_BACKUP</code>: |
1632 | Backup location(s) for distribution files and patch files | | 1632 | Backup location(s) for distribution files and patch files |
1633 | if not found locally or in | | 1633 | if not found locally or in |
1634 | <code class="filename">${MASTER_SITES}</code> or | | 1634 | <code class="filename">${MASTER_SITES}</code> or |
1635 | <code class="filename">${PATCH_SITES}</code> respectively. | | 1635 | <code class="filename">${PATCH_SITES}</code> respectively. |
1636 | The defaults is | | 1636 | The defaults is |
1637 | <code class="filename">ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/${DIST_SUBDIR}/</code>.</p></li> | | 1637 | <code class="filename">ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/${DIST_SUBDIR}/</code>.</p></li> |
1638 | <li class="listitem"><p><code class="varname">BINPKG_SITES</code>: | | 1638 | <li class="listitem"><p><code class="varname">BINPKG_SITES</code>: |
1639 | List of sites carrying binary pkgs. <em class="replaceable"><code>rel</code></em> and | | 1639 | List of sites carrying binary pkgs. <em class="replaceable"><code>rel</code></em> and |
1640 | <em class="replaceable"><code>arch</code></em> are replaced with OS | | 1640 | <em class="replaceable"><code>arch</code></em> are replaced with OS |
1641 | release (<span class="quote">“<span class="quote">2.0</span>”</span>, etc.) and architecture | | 1641 | release (<span class="quote">“<span class="quote">2.0</span>”</span>, etc.) and architecture |
1642 | (<span class="quote">“<span class="quote">mipsel</span>”</span>, etc.).</p></li> | | 1642 | (<span class="quote">“<span class="quote">mipsel</span>”</span>, etc.).</p></li> |
1643 | <li class="listitem"><p><code class="varname">ACCEPTABLE_LICENSES</code>: | | 1643 | <li class="listitem"><p><code class="varname">ACCEPTABLE_LICENSES</code>: |
1644 | List of acceptable licenses. License names are case-sensitive. | | 1644 | List of acceptable licenses. License names are case-sensitive. |
1645 | Whenever you try to build a package whose license is not in this | | 1645 | Whenever you try to build a package whose license is not in this |
1646 | list, you will get an error message. If the license condition is | | 1646 | list, you will get an error message. If the license condition is |
1647 | simple enough, the error message will include specific | | 1647 | simple enough, the error message will include specific |
1648 | instructions on how to change this variable.</p></li> | | 1648 | instructions on how to change this variable.</p></li> |
1649 | </ul></div> | | 1649 | </ul></div> |
1650 | </div> | | 1650 | </div> |
1651 | <div class="sect1"> | | 1651 | <div class="sect1"> |
1652 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1652 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1653 | <a name="variables-affecting-build"></a>5.2. Variables affecting the build process</h2></div></div></div> | | 1653 | <a name="variables-affecting-build"></a>5.2. Variables affecting the build process</h2></div></div></div> |
1654 | <p> | | 1654 | <p> |
1655 | </p> | | 1655 | </p> |
1656 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 1656 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
1657 | <li class="listitem"><p><code class="varname">PACKAGES</code>: The top level | | 1657 | <li class="listitem"><p><code class="varname">PACKAGES</code>: The top level |
1658 | directory for the binary packages. The default is | | 1658 | directory for the binary packages. The default is |
1659 | <code class="filename">${PKGSRCDIR}/packages</code>.</p></li> | | 1659 | <code class="filename">${PKGSRCDIR}/packages</code>.</p></li> |
1660 | <li class="listitem"><p><code class="varname">WRKOBJDIR</code>: | | 1660 | <li class="listitem"><p><code class="varname">WRKOBJDIR</code>: |
1661 | The top level directory where, if defined, the separate | | 1661 | The top level directory where, if defined, the separate |
1662 | working directories will get created, and symbolically | | 1662 | working directories will get created, and symbolically |
1663 | linked to from <code class="filename">${WRKDIR}</code> (see below). | | 1663 | linked to from <code class="filename">${WRKDIR}</code> (see below). |
1664 | This is useful for building packages on several | | 1664 | This is useful for building packages on several |
1665 | architectures, then <code class="filename">${PKGSRCDIR}</code> | | 1665 | architectures, then <code class="filename">${PKGSRCDIR}</code> |
1666 | can be NFS-mounted while <code class="filename">${WRKOBJDIR}</code> | | 1666 | can be NFS-mounted while <code class="filename">${WRKOBJDIR}</code> |
1667 | is local to every architecture. (It should be noted that | | 1667 | is local to every architecture. (It should be noted that |
1668 | <code class="varname">PKGSRCDIR</code> should not be set by the user | | 1668 | <code class="varname">PKGSRCDIR</code> should not be set by the user |
1669 | — it is an internal definition which refers to the | | 1669 | — it is an internal definition which refers to the |
1670 | root of the pkgsrc tree. It is possible to have many | | 1670 | root of the pkgsrc tree. It is possible to have many |
1671 | pkgsrc tree instances.)</p></li> | | 1671 | pkgsrc tree instances.)</p></li> |
1672 | <li class="listitem"><p><code class="varname">LOCALPATCHES</code>: | | 1672 | <li class="listitem"><p><code class="varname">LOCALPATCHES</code>: |
1673 | Directory for local patches that aren't part of pkgsrc. | | 1673 | Directory for local patches that aren't part of pkgsrc. |
1674 | See <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “<code class="filename">patches/*</code>”</a> for more | | 1674 | See <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “<code class="filename">patches/*</code>”</a> for more |
1675 | information.</p></li> | | 1675 | information.</p></li> |
1676 | <li class="listitem"><p><code class="varname">PKGMAKECONF</code>: Location of | | 1676 | <li class="listitem"><p><code class="varname">PKGMAKECONF</code>: Location of |
1677 | the <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file used by a package's | | 1677 | the <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file used by a package's |
1678 | BSD-style Makefile. If this is not set, | | 1678 | BSD-style Makefile. If this is not set, |
1679 | <code class="varname">MAKECONF</code> is set to | | 1679 | <code class="varname">MAKECONF</code> is set to |
1680 | <code class="filename">/dev/null</code> to avoid picking up | | 1680 | <code class="filename">/dev/null</code> to avoid picking up |
1681 | settings used by builds in <code class="filename">/usr/src</code>.</p></li> | | 1681 | settings used by builds in <code class="filename">/usr/src</code>.</p></li> |
1682 | <li class="listitem"><p><code class="varname">DEPENDS_TARGET</code>: | | 1682 | <li class="listitem"><p><code class="varname">DEPENDS_TARGET</code>: |
1683 | By default, dependencies are only installed, and no binary | | 1683 | By default, dependencies are only installed, and no binary |
1684 | package is created for them. You can set this variable to | | 1684 | package is created for them. You can set this variable to |
1685 | <code class="literal">package-install</code> to automatically create binary | | 1685 | <code class="literal">package-install</code> to automatically create binary |
1686 | packages after installing dependencies. Please note that the | | 1686 | packages after installing dependencies. Please note that the |
1687 | <code class="varname">PKGSRC_KEEP_BIN_PKGS</code> can be set to | | 1687 | <code class="varname">PKGSRC_KEEP_BIN_PKGS</code> can be set to |
1688 | <code class="literal">yes</code> to preserve binary packages when | | 1688 | <code class="literal">yes</code> to preserve binary packages when |
1689 | using the <code class="literal">install</code> as well.</p></li> | | 1689 | using the <code class="literal">install</code> as well.</p></li> |
1690 | </ul></div> | | 1690 | </ul></div> |
1691 | </div> | | 1691 | </div> |
1692 | <div class="sect1"> | | 1692 | <div class="sect1"> |
1693 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1693 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1694 | <a name="variables-affecting-installation"></a>5.3. Variables affecting the installation process</h2></div></div></div> | | 1694 | <a name="variables-affecting-installation"></a>5.3. Variables affecting the installation process</h2></div></div></div> |
1695 | <p>Packages have to support installation into a | | 1695 | <p>Packages have to support installation into a |
1696 | subdirectory of <code class="varname">WRKDIR</code>. This allows a package | | 1696 | subdirectory of <code class="varname">WRKDIR</code>. This allows a package |
1697 | to be built, before the actual filesystem is touched. DESTDIR | | 1697 | to be built, before the actual filesystem is touched. DESTDIR |
1698 | support exists in two variations:</p> | | 1698 | support exists in two variations:</p> |
1699 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 1699 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
1700 | <li class="listitem"><p>Basic DESTDIR support means that the package | | 1700 | <li class="listitem"><p>Basic DESTDIR support means that the package |
1701 | installation and packaging is still run as root.</p></li> | | 1701 | installation and packaging is still run as root.</p></li> |
1702 | <li class="listitem"><p>Full DESTDIR support can run the complete | | 1702 | <li class="listitem"><p>Full DESTDIR support can run the complete |
1703 | build, installation and packaging as normal user. Root | | 1703 | build, installation and packaging as normal user. Root |
1704 | privileges are only needed to add packages.</p></li> | | 1704 | privileges are only needed to add packages.</p></li> |
1705 | </ul></div> | | 1705 | </ul></div> |
1706 | <p>With basic DESTDIR support, <strong class="userinput"><code>make | | 1706 | <p>With basic DESTDIR support, <strong class="userinput"><code>make |
1707 | clean</code></strong> needs to be run as root.</p> | | 1707 | clean</code></strong> needs to be run as root.</p> |
1708 | <p>Considering the <code class="filename">foo/bar</code> package, | | 1708 | <p>Considering the <code class="filename">foo/bar</code> package, |
1709 | DESTDIR full support can be tested using the following commands | | 1709 | DESTDIR full support can be tested using the following commands |
1710 | | | 1710 | |
1711 | </p> | | 1711 | </p> |
1712 | <pre class="programlisting"> | | 1712 | <pre class="programlisting"> |
1713 | <code class="prompt">$</code> id | | 1713 | <code class="prompt">$</code> id |
1714 | uid=1000(myusername) gid=100(users) groups=100(users),0(wheel) | | 1714 | uid=1000(myusername) gid=100(users) groups=100(users),0(wheel) |
1715 | <code class="prompt">$</code> mkdir $HOME/packages | | 1715 | <code class="prompt">$</code> mkdir $HOME/packages |
1716 | <code class="prompt">$</code> cd $PKGSRCDIR/foo/bar | | 1716 | <code class="prompt">$</code> cd $PKGSRCDIR/foo/bar |
1717 | </pre> | | 1717 | </pre> |
1718 | <p> | | 1718 | <p> |
1719 | | | 1719 | |
1720 | Verify <code class="varname">DESTDIR</code> full support, no root privileges | | 1720 | Verify <code class="varname">DESTDIR</code> full support, no root privileges |
1721 | should be needed | | 1721 | should be needed |
1722 | | | 1722 | |
1723 | </p> | | 1723 | </p> |
1724 | <pre class="programlisting"> | | 1724 | <pre class="programlisting"> |
1725 | <code class="prompt">$</code> make stage-install | | 1725 | <code class="prompt">$</code> make stage-install |
1726 | </pre> | | 1726 | </pre> |
1727 | <p> | | 1727 | <p> |
1728 | | | 1728 | |
1729 | Create a package without root privileges | | 1729 | Create a package without root privileges |
1730 | | | 1730 | |
1731 | </p> | | 1731 | </p> |
1732 | <pre class="programlisting"> | | 1732 | <pre class="programlisting"> |
1733 | <code class="prompt">$</code> make PACKAGES=$HOME/packages package | | 1733 | <code class="prompt">$</code> make PACKAGES=$HOME/packages package |
1734 | </pre> | | 1734 | </pre> |
1735 | <p> | | 1735 | <p> |
1736 | | | 1736 | |
1737 | For the following command, you must be able to gain root | | 1737 | For the following command, you must be able to gain root |
1738 | privileges using <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?su+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">su</span>(1)</span></a> | | 1738 | privileges using <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?su+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">su</span>(1)</span></a> |
1739 | | | 1739 | |
1740 | </p> | | 1740 | </p> |
1741 | <pre class="programlisting"> | | 1741 | <pre class="programlisting"> |
1742 | <code class="prompt">$</code> make PACKAGES=$HOME/packages install | | 1742 | <code class="prompt">$</code> make PACKAGES=$HOME/packages install |
1743 | </pre> | | 1743 | </pre> |
1744 | <p> | | 1744 | <p> |
1745 | | | 1745 | |
1746 | Then, as a simple user | | 1746 | Then, as a simple user |
1747 | | | 1747 | |
1748 | </p> | | 1748 | </p> |
1749 | <pre class="programlisting"> | | 1749 | <pre class="programlisting"> |
1750 | <code class="prompt">$</code> make clean | | 1750 | <code class="prompt">$</code> make clean |
1751 | </pre> | | 1751 | </pre> |
1752 | <p> | | 1752 | <p> |
1753 | | | 1753 | |
1754 | </p> | | 1754 | </p> |
1755 | </div> | | 1755 | </div> |
1756 | <div class="sect1"> | | 1756 | <div class="sect1"> |
1757 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1757 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1758 | <a name="conf.compiler"></a>5.4. Selecting and configuring the compiler</h2></div></div></div> | | 1758 | <a name="conf.compiler"></a>5.4. Selecting and configuring the compiler</h2></div></div></div> |
1759 | <div class="sect2"> | | 1759 | <div class="sect2"> |
1760 | <div class="titlepage"><div><div><h3 class="title"> | | 1760 | <div class="titlepage"><div><div><h3 class="title"> |
1761 | <a name="selecting-the-compiler"></a>5.4.1. Selecting the compiler</h3></div></div></div> | | 1761 | <a name="selecting-the-compiler"></a>5.4.1. Selecting the compiler</h3></div></div></div> |
1762 | <p>By default, pkgsrc will use GCC to build packages. This may be | | 1762 | <p>By default, pkgsrc will use GCC to build packages. This may be |
1763 | overridden by setting the following variables in /etc/mk.conf:</p> | | 1763 | overridden by setting the following variables in /etc/mk.conf:</p> |
1764 | <div class="variablelist"><dl class="variablelist"> | | 1764 | <div class="variablelist"><dl class="variablelist"> |
1765 | <dt><span class="term"><code class="varname">PKGSRC_COMPILER</code>:</span></dt> | | 1765 | <dt><span class="term"><code class="varname">PKGSRC_COMPILER</code>:</span></dt> |
1766 | <dd> | | 1766 | <dd> |
1767 | <p>This is a list of values specifying the chain of | | 1767 | <p>This is a list of values specifying the chain of |
1768 | compilers to invoke when building packages. Valid values | | 1768 | compilers to invoke when building packages. Valid values |
1769 | are:</p> | | 1769 | are:</p> |
1770 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 1770 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
1771 | <li class="listitem"><p><code class="varname">ccc</code>: | | 1771 | <li class="listitem"><p><code class="varname">ccc</code>: |
1772 | Compaq C Compilers (Tru64)</p></li> | | 1772 | Compaq C Compilers (Tru64)</p></li> |
1773 | <li class="listitem"><p><code class="varname">ccache</code>: | | 1773 | <li class="listitem"><p><code class="varname">ccache</code>: |
1774 | compiler cache (chainable)</p></li> | | 1774 | compiler cache (chainable)</p></li> |
1775 | <li class="listitem"><p><code class="varname">clang</code>: | | 1775 | <li class="listitem"><p><code class="varname">clang</code>: |
1776 | Clang C and Objective-C compiler</p></li> | | 1776 | Clang C and Objective-C compiler</p></li> |
1777 | <li class="listitem"><p><code class="varname">distcc</code>: | | 1777 | <li class="listitem"><p><code class="varname">distcc</code>: |
1778 | distributed C/C++ (chainable)</p></li> | | 1778 | distributed C/C++ (chainable)</p></li> |
1779 | <li class="listitem"><p><code class="varname">f2c</code>: | | 1779 | <li class="listitem"><p><code class="varname">f2c</code>: |
1780 | Fortran 77 to C compiler (chainable)</p></li> | | 1780 | Fortran 77 to C compiler (chainable)</p></li> |
1781 | <li class="listitem"><p><code class="varname">icc</code>: | | 1781 | <li class="listitem"><p><code class="varname">icc</code>: |
1782 | Intel C++ Compiler (Linux)</p></li> | | 1782 | Intel C++ Compiler (Linux)</p></li> |
1783 | <li class="listitem"><p><code class="varname">ido</code>: | | 1783 | <li class="listitem"><p><code class="varname">ido</code>: |
1784 | SGI IRIS Development Option cc (IRIX 5)</p></li> | | 1784 | SGI IRIS Development Option cc (IRIX 5)</p></li> |
1785 | <li class="listitem"><p><code class="varname">gcc</code>: | | 1785 | <li class="listitem"><p><code class="varname">gcc</code>: |
1786 | GNU C/C++ Compiler</p></li> | | 1786 | GNU C/C++ Compiler</p></li> |
1787 | <li class="listitem"><p><code class="varname">hp</code>: | | 1787 | <li class="listitem"><p><code class="varname">hp</code>: |
1788 | HP-UX C/aC++ compilers</p></li> | | 1788 | HP-UX C/aC++ compilers</p></li> |
1789 | <li class="listitem"><p><code class="varname">mipspro</code>: | | 1789 | <li class="listitem"><p><code class="varname">mipspro</code>: |
1790 | Silicon Graphics, Inc. MIPSpro (n32/n64)</p></li> | | 1790 | Silicon Graphics, Inc. MIPSpro (n32/n64)</p></li> |
1791 | <li class="listitem"><p><code class="varname">mipspro-ucode</code>: | | 1791 | <li class="listitem"><p><code class="varname">mipspro-ucode</code>: |
1792 | Silicon Graphics, Inc. MIPSpro (o32)</p></li> | | 1792 | Silicon Graphics, Inc. MIPSpro (o32)</p></li> |
1793 | <li class="listitem"><p><code class="varname">sunpro</code>: | | 1793 | <li class="listitem"><p><code class="varname">sunpro</code>: |
1794 | Sun Microsystems, Inc. WorkShip/Forte/Sun ONE Studio</p></li> | | 1794 | Sun Microsystems, Inc. WorkShip/Forte/Sun ONE Studio</p></li> |
1795 | <li class="listitem"><p><code class="varname">xlc</code>: | | 1795 | <li class="listitem"><p><code class="varname">xlc</code>: |
1796 | IBM's XL C/C++ compiler suite</p></li> | | 1796 | IBM's XL C/C++ compiler suite</p></li> |
1797 | </ul></div> | | 1797 | </ul></div> |
1798 | <p>The default is | | 1798 | <p>The default is |
1799 | <span class="quote">“<span class="quote"><code class="varname">gcc</code></span>”</span>. You can use | | 1799 | <span class="quote">“<span class="quote"><code class="varname">gcc</code></span>”</span>. You can use |
1800 | <code class="varname">ccache</code> and/or | | 1800 | <code class="varname">ccache</code> and/or |
1801 | <code class="varname">distcc</code> with an appropriate | | 1801 | <code class="varname">distcc</code> with an appropriate |
1802 | <code class="varname">PKGSRC_COMPILER</code> setting, | | 1802 | <code class="varname">PKGSRC_COMPILER</code> setting, |
1803 | e.g. <span class="quote">“<span class="quote"><code class="varname">ccache gcc</code></span>”</span>. This | | 1803 | e.g. <span class="quote">“<span class="quote"><code class="varname">ccache gcc</code></span>”</span>. This |
1804 | variable should always be terminated with a value for | | 1804 | variable should always be terminated with a value for |
1805 | a real compiler. Note that only one real compiler | | 1805 | a real compiler. Note that only one real compiler |
1806 | should be listed (e.g. <span class="quote">“<span class="quote"><code class="varname">sunpro gcc</code></span>”</span> | | 1806 | should be listed (e.g. <span class="quote">“<span class="quote"><code class="varname">sunpro gcc</code></span>”</span> |
1807 | is not allowed).</p> | | 1807 | is not allowed).</p> |
1808 | </dd> | | 1808 | </dd> |
1809 | <dt><span class="term"><code class="varname">GCC_REQD</code>:</span></dt> | | 1809 | <dt><span class="term"><code class="varname">GCC_REQD</code>:</span></dt> |
1810 | <dd><p>This specifies the minimum version of GCC to use | | 1810 | <dd><p>This specifies the minimum version of GCC to use |
1811 | when building packages. If the system GCC doesn't | | 1811 | when building packages. If the system GCC doesn't |
1812 | satisfy this requirement, then pkgsrc will build and | | 1812 | satisfy this requirement, then pkgsrc will build and |
1813 | install one of the GCC packages to use instead.</p></dd> | | 1813 | install one of the GCC packages to use instead.</p></dd> |
1814 | <dt><span class="term"><code class="varname">PYTHON_DEFAULT_VERSION</code>:</span></dt> | | 1814 | <dt><span class="term"><code class="varname">PYTHON_DEFAULT_VERSION</code>:</span></dt> |
1815 | <dd><p>Specifies which version of python to use when several | | 1815 | <dd><p>Specifies which version of python to use when several |
1816 | options are available.</p></dd> | | 1816 | options are available.</p></dd> |
1817 | <dt><span class="term"><code class="varname">PKGSRC_FORTRAN</code>:</span></dt> | | 1817 | <dt><span class="term"><code class="varname">PKGSRC_FORTRAN</code>:</span></dt> |
1818 | <dd><p>Specifies the fortran compiler to use. | | 1818 | <dd><p>Specifies the fortran compiler to use. |
1819 | The default is <code class="varname">g95</code>, and | | 1819 | The default is <code class="varname">g95</code>, and |
1820 | <code class="varname">gfortran</code> is an alternative.</p></dd> | | 1820 | <code class="varname">gfortran</code> is an alternative.</p></dd> |
1821 | <dt><span class="term"><code class="varname">GFORTRAN_VERSION</code>:</span></dt> | | 1821 | <dt><span class="term"><code class="varname">GFORTRAN_VERSION</code>:</span></dt> |
1822 | <dd><p>If <code class="varname">PKGSRC_FORTRAN</code><code class="literal">=</code> | | 1822 | <dd><p>If <code class="varname">PKGSRC_FORTRAN</code><code class="literal">=</code> |
1823 | <code class="varname">gfortran</code> is used, this option specifies which | | 1823 | <code class="varname">gfortran</code> is used, this option specifies which |
1824 | version to use.</p></dd> | | 1824 | version to use.</p></dd> |
1825 | </dl></div> | | 1825 | </dl></div> |
1826 | </div> | | 1826 | </div> |
1827 | <div class="sect2"> | | 1827 | <div class="sect2"> |
1828 | <div class="titlepage"><div><div><h3 class="title"> | | 1828 | <div class="titlepage"><div><div><h3 class="title"> |
1829 | <a name="conf.cflags"></a>5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</h3></div></div></div> | | 1829 | <a name="conf.cflags"></a>5.4.2. Additional flags to the compiler (<code class="varname">CFLAGS</code>)</h3></div></div></div> |
1830 | <p>If you wish to set the <code class="varname">CFLAGS</code> variable, | | 1830 | <p>If you wish to set the <code class="varname">CFLAGS</code> variable, |
1831 | please make sure to use the <code class="literal">+=</code> operator | | 1831 | please make sure to use the <code class="literal">+=</code> operator |
1832 | instead of the <code class="literal">=</code> operator:</p> | | 1832 | instead of the <code class="literal">=</code> operator:</p> |
1833 | <pre class="programlisting"> | | 1833 | <pre class="programlisting"> |
1834 | CFLAGS+= -your -flags | | 1834 | CFLAGS+= -your -flags |
1835 | </pre> | | 1835 | </pre> |
1836 | <p>Using <code class="varname">CFLAGS=</code> (i.e. without the | | 1836 | <p>Using <code class="varname">CFLAGS=</code> (i.e. without the |
1837 | <span class="quote">“<span class="quote">+</span>”</span>) may lead to problems with packages that | | 1837 | <span class="quote">“<span class="quote">+</span>”</span>) may lead to problems with packages that |
1838 | need to add their own flags. You may want to take a look | | 1838 | need to add their own flags. You may want to take a look |
1839 | at the <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/cpuflags/README.html" target="_top"><code class="filename">devel/cpuflags</code></a> | | 1839 | at the <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/cpuflags/README.html" target="_top"><code class="filename">devel/cpuflags</code></a> |
1840 | package if you're interested in optimization specifically | | 1840 | package if you're interested in optimization specifically |
1841 | for the current CPU. </p> | | 1841 | for the current CPU. </p> |
1842 | </div> | | 1842 | </div> |
1843 | <div class="sect2"> | | 1843 | <div class="sect2"> |
1844 | <div class="titlepage"><div><div><h3 class="title"> | | 1844 | <div class="titlepage"><div><div><h3 class="title"> |
1845 | <a name="conf.ldflags"></a>5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</h3></div></div></div> | | 1845 | <a name="conf.ldflags"></a>5.4.3. Additional flags to the linker (<code class="varname">LDFLAGS</code>)</h3></div></div></div> |
1846 | <p>If you want to pass flags to the linker, both in the configure | | 1846 | <p>If you want to pass flags to the linker, both in the configure |
1847 | step and the build step, you can do this in two ways. Either set | | 1847 | step and the build step, you can do this in two ways. Either set |
1848 | <code class="varname">LDFLAGS</code> or <code class="varname">LIBS</code>. The difference | | 1848 | <code class="varname">LDFLAGS</code> or <code class="varname">LIBS</code>. The difference |
1849 | between the two is that <code class="varname">LIBS</code> will be appended to | | 1849 | between the two is that <code class="varname">LIBS</code> will be appended to |
1850 | the command line, while <code class="varname">LDFLAGS</code> come earlier. | | 1850 | the command line, while <code class="varname">LDFLAGS</code> come earlier. |
1851 | <code class="varname">LDFLAGS</code> is pre-loaded with rpath settings for ELF | | 1851 | <code class="varname">LDFLAGS</code> is pre-loaded with rpath settings for ELF |
1852 | machines depending on the setting of <code class="varname">USE_IMAKE</code> or | | 1852 | machines depending on the setting of <code class="varname">USE_IMAKE</code> or |
1853 | the inclusion of <code class="filename">mk/x11.buildlink3.mk</code>. As with | | 1853 | the inclusion of <code class="filename">mk/x11.buildlink3.mk</code>. As with |
1854 | <code class="varname">CFLAGS</code>, if you do not wish to override these | | 1854 | <code class="varname">CFLAGS</code>, if you do not wish to override these |
1855 | settings, use the <code class="literal">+=</code> operator:</p> | | 1855 | settings, use the <code class="literal">+=</code> operator:</p> |
1856 | <pre class="programlisting"> | | 1856 | <pre class="programlisting"> |
1857 | LDFLAGS+= -your -linkerflags | | 1857 | LDFLAGS+= -your -linkerflags |
1858 | </pre> | | 1858 | </pre> |
1859 | </div> | | 1859 | </div> |
1860 | </div> | | 1860 | </div> |
1861 | <div class="sect1"> | | 1861 | <div class="sect1"> |
1862 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1862 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1863 | <a name="developer-advanced-settings"></a>5.5. Developer/advanced settings</h2></div></div></div> | | 1863 | <a name="developer-advanced-settings"></a>5.5. Developer/advanced settings</h2></div></div></div> |
1864 | <p> | | 1864 | <p> |
1865 | </p> | | 1865 | </p> |
1866 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 1866 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
1867 | <li class="listitem"> | | 1867 | <li class="listitem"> |
1868 | <p><code class="varname">PKG_DEVELOPER</code>: | | 1868 | <p><code class="varname">PKG_DEVELOPER</code>: |
1869 | Run some sanity checks that package developers want: | | 1869 | Run some sanity checks that package developers want: |
1870 | </p> | | 1870 | </p> |
1871 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "> | | 1871 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "> |
1872 | <li class="listitem"><p>make sure patches apply with zero | | 1872 | <li class="listitem"><p>make sure patches apply with zero |
1873 | fuzz</p></li> | | 1873 | fuzz</p></li> |
1874 | <li class="listitem"><p>run check-shlibs to see that all | | 1874 | <li class="listitem"><p>run check-shlibs to see that all |
1875 | binaries will find their shared libs.</p></li> | | 1875 | binaries will find their shared libs.</p></li> |
1876 | </ul></div> | | 1876 | </ul></div> |
1877 | <p> | | 1877 | <p> |
1878 | </p> | | 1878 | </p> |
1879 | </li> | | 1879 | </li> |
1880 | <li class="listitem"><p><code class="varname">PKG_DEBUG_LEVEL</code>: The level | | 1880 | <li class="listitem"><p><code class="varname">PKG_DEBUG_LEVEL</code>: The level |
1881 | of debugging output which is displayed whilst making and | | 1881 | of debugging output which is displayed whilst making and |
1882 | installing the package. The default value for this is 0, | | 1882 | installing the package. The default value for this is 0, |
1883 | which will not display the commands as they are executed | | 1883 | which will not display the commands as they are executed |
1884 | (normal, default, quiet operation); the value 1 will display | | 1884 | (normal, default, quiet operation); the value 1 will display |
1885 | all shell commands before their invocation, and the value 2 | | 1885 | all shell commands before their invocation, and the value 2 |
1886 | will display both the shell commands before their invocation, | | 1886 | will display both the shell commands before their invocation, |
1887 | as well as their actual execution progress with <span class="command"><strong>set | | 1887 | as well as their actual execution progress with <span class="command"><strong>set |
1888 | -x</strong></span>.</p></li> | | 1888 | -x</strong></span>.</p></li> |
1889 | </ul></div> | | 1889 | </ul></div> |
1890 | <p> | | 1890 | <p> |
1891 | </p> | | 1891 | </p> |
1892 | </div> | | 1892 | </div> |
1893 | <div class="sect1"> | | 1893 | <div class="sect1"> |
1894 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1894 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1895 | <a name="selecting-build-options"></a>5.6. Selecting Build Options</h2></div></div></div> | | 1895 | <a name="selecting-build-options"></a>5.6. Selecting Build Options</h2></div></div></div> |
1896 | <p>Some packages have build time options, usually to select | | 1896 | <p>Some packages have build time options, usually to select |
1897 | between different dependencies, enable optional support for big | | 1897 | between different dependencies, enable optional support for big |
1898 | dependencies or enable experimental features.</p> | | 1898 | dependencies or enable experimental features.</p> |
1899 | <p>To see which options, if any, a package supports, and which | | 1899 | <p>To see which options, if any, a package supports, and which |
1900 | options are mutually exclusive, run <span class="command"><strong>make | | 1900 | options are mutually exclusive, run <span class="command"><strong>make |
1901 | show-options</strong></span>, for example:</p> | | 1901 | show-options</strong></span>, for example:</p> |
1902 | <pre class="programlisting"> | | 1902 | <pre class="programlisting"> |
1903 | The following options are supported by this package: | | 1903 | The following options are supported by this package: |
1904 | ssl Enable SSL support. | | 1904 | ssl Enable SSL support. |
1905 | Exactly one of the following gecko options is required: | | 1905 | Exactly one of the following gecko options is required: |
1906 | firefox Use firefox as gecko rendering engine. | | 1906 | firefox Use firefox as gecko rendering engine. |
1907 | mozilla Use mozilla as gecko rendering engine. | | 1907 | mozilla Use mozilla as gecko rendering engine. |
1908 | At most one of the following database options may be selected: | | 1908 | At most one of the following database options may be selected: |
1909 | mysql Enable support for MySQL database. | | 1909 | mysql Enable support for MySQL database. |
1910 | pgsql Enable support for PostgreSQL database. | | 1910 | pgsql Enable support for PostgreSQL database. |
1911 | | | 1911 | |
1912 | These options are enabled by default: firefox | | 1912 | These options are enabled by default: firefox |
1913 | These options are currently enabled: mozilla ssl | | 1913 | These options are currently enabled: mozilla ssl |
1914 | </pre> | | 1914 | </pre> |
1915 | <p>The following variables can be defined in | | 1915 | <p>The following variables can be defined in |
1916 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to select which options to | | 1916 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to select which options to |
1917 | enable for a package: <code class="varname">PKG_DEFAULT_OPTIONS</code>, | | 1917 | enable for a package: <code class="varname">PKG_DEFAULT_OPTIONS</code>, |
1918 | which can be used to select or disable options for all packages | | 1918 | which can be used to select or disable options for all packages |
1919 | that support them, and | | 1919 | that support them, and |
1920 | <code class="varname">PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em></code>, | | 1920 | <code class="varname">PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em></code>, |
1921 | which can be used to select or disable options specifically for | | 1921 | which can be used to select or disable options specifically for |
1922 | package <em class="replaceable"><code>pkgbase</code></em>. Options listed in | | 1922 | package <em class="replaceable"><code>pkgbase</code></em>. Options listed in |
1923 | these variables are selected, options preceded by <span class="quote">“<span class="quote">-</span>”</span> | | 1923 | these variables are selected, options preceded by <span class="quote">“<span class="quote">-</span>”</span> |
1924 | are disabled. A few examples:</p> | | 1924 | are disabled. A few examples:</p> |
1925 | <pre class="screen"> | | 1925 | <pre class="screen"> |
1926 | <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> | | 1926 | <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> |
1927 | PKG_DEFAULT_OPTIONS= -arts -dvdread -esound | | 1927 | PKG_DEFAULT_OPTIONS= -arts -dvdread -esound |
1928 | PKG_OPTIONS.kdebase= debug -sasl | | 1928 | PKG_OPTIONS.kdebase= debug -sasl |
1929 | PKG_OPTIONS.apache= suexec </pre> | | 1929 | PKG_OPTIONS.apache= suexec </pre> |
1930 | <p>It is important to note that options that were specifically | | 1930 | <p>It is important to note that options that were specifically |
1931 | suggested by the package maintainer must be explicitly removed if | | 1931 | suggested by the package maintainer must be explicitly removed if |
1932 | you do not wish to include the option. If you are unsure you can view | | 1932 | you do not wish to include the option. If you are unsure you can view |
1933 | the current state with <span class="command"><strong>make show-options</strong></span>.</p> | | 1933 | the current state with <span class="command"><strong>make show-options</strong></span>.</p> |
1934 | <p>The following settings are consulted in the order given, and | | 1934 | <p>The following settings are consulted in the order given, and |
1935 | the last setting that selects or disables an option is | | 1935 | the last setting that selects or disables an option is |
1936 | used:</p> | | 1936 | used:</p> |
1937 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 1937 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
1938 | <li class="listitem"><p>the default options as suggested by the package | | 1938 | <li class="listitem"><p>the default options as suggested by the package |
1939 | maintainer</p></li> | | 1939 | maintainer</p></li> |
1940 | <li class="listitem"><p>the options implied by the settings of legacy | | 1940 | <li class="listitem"><p>the options implied by the settings of legacy |
1941 | variables (see below)</p></li> | | 1941 | variables (see below)</p></li> |
1942 | <li class="listitem"><p><code class="varname">PKG_DEFAULT_OPTIONS</code></p></li> | | 1942 | <li class="listitem"><p><code class="varname">PKG_DEFAULT_OPTIONS</code></p></li> |
1943 | <li class="listitem"><p><code class="varname">PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em></code></p></li> | | 1943 | <li class="listitem"><p><code class="varname">PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em></code></p></li> |
1944 | </ol></div> | | 1944 | </ol></div> |
1945 | <p>For groups of mutually exclusive options, the last option | | 1945 | <p>For groups of mutually exclusive options, the last option |
1946 | selected is used, all others are automatically disabled. If an | | 1946 | selected is used, all others are automatically disabled. If an |
1947 | option of the group is explicitly disabled, the previously | | 1947 | option of the group is explicitly disabled, the previously |
1948 | selected option, if any, is used. It is an error if no option | | 1948 | selected option, if any, is used. It is an error if no option |
1949 | from a required group of options is selected, and building the | | 1949 | from a required group of options is selected, and building the |
1950 | package will fail.</p> | | 1950 | package will fail.</p> |
1951 | <p>Before the options framework was introduced, build options | | 1951 | <p>Before the options framework was introduced, build options |
1952 | were selected by setting a variable (often named | | 1952 | were selected by setting a variable (often named |
1953 | <code class="varname">USE_<em class="replaceable"><code>FOO</code></em></code>) in | | 1953 | <code class="varname">USE_<em class="replaceable"><code>FOO</code></em></code>) in |
1954 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> for each option. To ease | | 1954 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> for each option. To ease |
1955 | transition to the options framework for the user, these legacy | | 1955 | transition to the options framework for the user, these legacy |
1956 | variables are converted to the appropriate options setting | | 1956 | variables are converted to the appropriate options setting |
1957 | (<code class="varname">PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em></code>) | | 1957 | (<code class="varname">PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em></code>) |
1958 | automatically. A warning is issued to prompt the user to update | | 1958 | automatically. A warning is issued to prompt the user to update |
1959 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to use the options framework | | 1959 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to use the options framework |
1960 | directly. Support for the legacy variables will be removed | | 1960 | directly. Support for the legacy variables will be removed |
1961 | eventually.</p> | | 1961 | eventually.</p> |
1962 | </div> | | 1962 | </div> |
1963 | </div> | | 1963 | </div> |
1964 | <div class="chapter"> | | 1964 | <div class="chapter"> |
1965 | <div class="titlepage"><div><div><h2 class="title"> | | 1965 | <div class="titlepage"><div><div><h2 class="title"> |
1966 | <a name="binary"></a>Chapter 6. Creating binary packages</h2></div></div></div> | | 1966 | <a name="binary"></a>Chapter 6. Creating binary packages</h2></div></div></div> |
1967 | <div class="toc"> | | 1967 | <div class="toc"> |
1968 | <p><b>Table of Contents</b></p> | | 1968 | <p><b>Table of Contents</b></p> |
1969 | <dl class="toc"> | | 1969 | <dl class="toc"> |
1970 | <dt><span class="sect1"><a href="#building-a-single-binary-package">6.1. Building a single binary package</a></span></dt> | | 1970 | <dt><span class="sect1"><a href="#building-a-single-binary-package">6.1. Building a single binary package</a></span></dt> |
1971 | <dt><span class="sect1"><a href="#settings-for-creationg-of-binary-packages">6.2. Settings for creation of binary packages</a></span></dt> | | 1971 | <dt><span class="sect1"><a href="#settings-for-creationg-of-binary-packages">6.2. Settings for creation of binary packages</a></span></dt> |
1972 | </dl> | | 1972 | </dl> |
1973 | </div> | | 1973 | </div> |
1974 | <div class="sect1"> | | 1974 | <div class="sect1"> |
1975 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 1975 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
1976 | <a name="building-a-single-binary-package"></a>6.1. Building a single binary package</h2></div></div></div> | | 1976 | <a name="building-a-single-binary-package"></a>6.1. Building a single binary package</h2></div></div></div> |
1977 | <p>Once you have built and installed a package, you can create | | 1977 | <p>Once you have built and installed a package, you can create |
1978 | a <span class="emphasis"><em>binary package</em></span> which can be installed on | | 1978 | a <span class="emphasis"><em>binary package</em></span> which can be installed on |
1979 | another system with <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>. This saves having to build | | 1979 | another system with <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>. This saves having to build |
1980 | the same package on a group of hosts and wasting CPU time. It also | | 1980 | the same package on a group of hosts and wasting CPU time. It also |
1981 | provides a simple means for others to install your package, should | | 1981 | provides a simple means for others to install your package, should |
1982 | you distribute it.</p> | | 1982 | you distribute it.</p> |
1983 | <p>To create a binary package, change into the appropriate | | 1983 | <p>To create a binary package, change into the appropriate |
1984 | directory in pkgsrc, and run <span class="command"><strong>make | | 1984 | directory in pkgsrc, and run <span class="command"><strong>make |
1985 | package</strong></span>:</p> | | 1985 | package</strong></span>:</p> |
1986 | <pre class="screen"> | | 1986 | <pre class="screen"> |
1987 | <code class="prompt">$</code> <strong class="userinput"><code>cd misc/figlet</code></strong> | | 1987 | <code class="prompt">$</code> <strong class="userinput"><code>cd misc/figlet</code></strong> |
1988 | <code class="prompt">$</code> <strong class="userinput"><code>make package</code></strong> | | 1988 | <code class="prompt">$</code> <strong class="userinput"><code>make package</code></strong> |
1989 | </pre> | | 1989 | </pre> |
1990 | <p>This will build and install your package (if not already done), | | 1990 | <p>This will build and install your package (if not already done), |
1991 | and then build a binary package from what was installed. You can | | 1991 | and then build a binary package from what was installed. You can |
1992 | then use the <span class="command"><strong>pkg_*</strong></span> tools to manipulate | | 1992 | then use the <span class="command"><strong>pkg_*</strong></span> tools to manipulate |
1993 | it. Binary packages are created by default in | | 1993 | it. Binary packages are created by default in |
1994 | <code class="filename">/usr/pkgsrc/packages</code>, in the form of a | | 1994 | <code class="filename">/usr/pkgsrc/packages</code>, in the form of a |
1995 | gzipped tar file. See <a class="xref" href="#logs.package" title="B.2. Packaging figlet">Section B.2, “Packaging figlet”</a> for a | | 1995 | gzipped tar file. See <a class="xref" href="#logs.package" title="B.2. Packaging figlet">Section B.2, “Packaging figlet”</a> for a |
1996 | continuation of the above <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/misc/figlet/README.html" target="_top"><code class="filename">misc/figlet</code></a> example.</p> | | 1996 | continuation of the above <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/misc/figlet/README.html" target="_top"><code class="filename">misc/figlet</code></a> example.</p> |
1997 | <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 | | 1997 | <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 |
1998 | such a binary package.</p> | | 1998 | such a binary package.</p> |
1999 | </div> | | 1999 | </div> |
2000 | <div class="sect1"> | | 2000 | <div class="sect1"> |
2001 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2001 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2002 | <a name="settings-for-creationg-of-binary-packages"></a>6.2. Settings for creation of binary packages</h2></div></div></div> | | 2002 | <a name="settings-for-creationg-of-binary-packages"></a>6.2. Settings for creation of binary packages</h2></div></div></div> |
2003 | <p>See <a class="xref" href="#build.helpful-targets" title="17.17. Other helpful targets">Section 17.17, “Other helpful targets”</a>.</p> | | 2003 | <p>See <a class="xref" href="#build.helpful-targets" title="17.17. Other helpful targets">Section 17.17, “Other helpful targets”</a>.</p> |
2004 | </div> | | 2004 | </div> |
2005 | </div> | | 2005 | </div> |
2006 | <div class="chapter"> | | 2006 | <div class="chapter"> |
2007 | <div class="titlepage"><div><div><h2 class="title"> | | 2007 | <div class="titlepage"><div><div><h2 class="title"> |
2008 | <a name="bulk"></a>Chapter 7. Creating binary packages for everything in pkgsrc (bulk | | 2008 | <a name="bulk"></a>Chapter 7. Creating binary packages for everything in pkgsrc (bulk |
2009 | builds)</h2></div></div></div> | | 2009 | builds)</h2></div></div></div> |
2010 | <div class="toc"> | | 2010 | <div class="toc"> |
2011 | <p><b>Table of Contents</b></p> | | 2011 | <p><b>Table of Contents</b></p> |
2012 | <dl class="toc"> | | 2012 | <dl class="toc"> |
2013 | <dt><span class="sect1"><a href="#bulk.pre">7.1. Preparations</a></span></dt> | | 2013 | <dt><span class="sect1"><a href="#bulk.pre">7.1. Preparations</a></span></dt> |
2014 | <dt><span class="sect1"><a href="#bulk.pbulk">7.2. Running a pbulk-style bulk build</a></span></dt> | | 2014 | <dt><span class="sect1"><a href="#bulk.pbulk">7.2. Running a pbulk-style bulk build</a></span></dt> |
2015 | <dd><dl><dt><span class="sect2"><a href="#bulk.pbulk.conf">7.2.1. Configuration</a></span></dt></dl></dd> | | 2015 | <dd><dl><dt><span class="sect2"><a href="#bulk.pbulk.conf">7.2.1. Configuration</a></span></dt></dl></dd> |
2016 | <dt><span class="sect1"><a href="#bulk.req">7.3. Requirements of a full bulk build</a></span></dt> | | 2016 | <dt><span class="sect1"><a href="#bulk.req">7.3. Requirements of a full bulk build</a></span></dt> |
2017 | <dt><span class="sect1"><a href="#creating-cdroms">7.4. Creating a multiple CD-ROM packages collection</a></span></dt> | | 2017 | <dt><span class="sect1"><a href="#creating-cdroms">7.4. Creating a multiple CD-ROM packages collection</a></span></dt> |
2018 | <dd><dl><dt><span class="sect2"><a href="#cdpack-example">7.4.1. Example of cdpack</a></span></dt></dl></dd> | | 2018 | <dd><dl><dt><span class="sect2"><a href="#cdpack-example">7.4.1. Example of cdpack</a></span></dt></dl></dd> |
2019 | </dl> | | 2019 | </dl> |
2020 | </div> | | 2020 | </div> |
2021 | <p>For a number of reasons you may want to build binary packages | | 2021 | <p>For a number of reasons you may want to build binary packages |
2022 | for a large selected set of packages in pkgsrc or even for all pkgsrc packages. | | 2022 | for a large selected set of packages in pkgsrc or even for all pkgsrc packages. |
2023 | For instance, when you have multiple machines that should run the same software, | | 2023 | For instance, when you have multiple machines that should run the same software, |
2024 | it is wasted time if they all build their packages themselves from source. | | 2024 | it is wasted time if they all build their packages themselves from source. |
2025 | Or you may want to build a list of packages you want and check them before | | 2025 | Or you may want to build a list of packages you want and check them before |
2026 | deploying onto production system. | | 2026 | deploying onto production system. |
2027 | There is a way of getting a set of binary packages: | | 2027 | There is a way of getting a set of binary packages: |
2028 | The bulk build system, or pbulk ("p" stands for "parallel"). | | 2028 | The bulk build system, or pbulk ("p" stands for "parallel"). |
2029 | This chapter describes how to set it up.</p> | | 2029 | This chapter describes how to set it up.</p> |
2030 | <div class="sect1"> | | 2030 | <div class="sect1"> |
2031 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2031 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2032 | <a name="bulk.pre"></a>7.1. Preparations</h2></div></div></div> | | 2032 | <a name="bulk.pre"></a>7.1. Preparations</h2></div></div></div> |
2033 | <p>First of all, you have to decide whether you build all packages | | 2033 | <p>First of all, you have to decide whether you build all packages |
2034 | or a limited set of them. Full bulk builds usually consume a lot more resources, | | 2034 | or a limited set of them. Full bulk builds usually consume a lot more resources, |
2035 | both space and time, than builds for some practical sets of packages. | | 2035 | both space and time, than builds for some practical sets of packages. |
2036 | There exists a number of particularly heavy packages that are not actually | | 2036 | There exists a number of particularly heavy packages that are not actually |
2037 | interesting to a wide audience. | | 2037 | interesting to a wide audience. |
2038 | | | 2038 | |
2039 | For a limited bulk builds you need to make a list of packages you want to build. | | 2039 | For a limited bulk builds you need to make a list of packages you want to build. |
2040 | Note that all their dependencies will be built, so you don't need to track them manually. | | 2040 | Note that all their dependencies will be built, so you don't need to track them manually. |
2041 | </p> | | 2041 | </p> |
2042 | <p>During bulk builds various packages are installed and deinstalled | | 2042 | <p>During bulk builds various packages are installed and deinstalled |
2043 | in <code class="filename">/usr/pkg</code> (or whatever <code class="filename">LOCALBASE</code> is), | | 2043 | in <code class="filename">/usr/pkg</code> (or whatever <code class="filename">LOCALBASE</code> is), |
2044 | so make sure that you don't need any package during the builds. | | 2044 | so make sure that you don't need any package during the builds. |
2045 | Essentially, you should provide a fresh system, either a chroot environment | | 2045 | Essentially, you should provide a fresh system, either a chroot environment |
2046 | or something even more restrictive, depending on what the operating system provides, | | 2046 | or something even more restrictive, depending on what the operating system provides, |
2047 | or dedicate the whole physical machine. | | 2047 | or dedicate the whole physical machine. |
2048 | As a useful side effect this makes sure that bulk builds cannot | | 2048 | As a useful side effect this makes sure that bulk builds cannot |
2049 | break anything in your system. There have been numerous cases where | | 2049 | break anything in your system. There have been numerous cases where |
2050 | certain packages tried to install files outside the | | 2050 | certain packages tried to install files outside the |
2051 | <code class="filename">LOCALBASE</code> or wanted to edit some files in | | 2051 | <code class="filename">LOCALBASE</code> or wanted to edit some files in |
2052 | <code class="filename">/etc</code>. | | 2052 | <code class="filename">/etc</code>. |
2053 | </p> | | 2053 | </p> |
2054 | </div> | | 2054 | </div> |
2055 | <div class="sect1"> | | 2055 | <div class="sect1"> |
2056 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2056 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2057 | <a name="bulk.pbulk"></a>7.2. Running a pbulk-style bulk build</h2></div></div></div> | | 2057 | <a name="bulk.pbulk"></a>7.2. Running a pbulk-style bulk build</h2></div></div></div> |
2058 | <p>Running a pbulk-style bulk build works roughly as follows:</p> | | 2058 | <p>Running a pbulk-style bulk build works roughly as follows:</p> |
2059 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2059 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2060 | <li class="listitem"><p>First, build the pbulk infrastructure in a fresh pkgsrc location.</p></li> | | 2060 | <li class="listitem"><p>First, build the pbulk infrastructure in a fresh pkgsrc location.</p></li> |
2061 | <li class="listitem"><p>Then, build each of the packages from a clean installation directory using the infrastructure.</p></li> | | 2061 | <li class="listitem"><p>Then, build each of the packages from a clean installation directory using the infrastructure.</p></li> |
2062 | </ul></div> | | 2062 | </ul></div> |
2063 | <div class="sect2"> | | 2063 | <div class="sect2"> |
2064 | <div class="titlepage"><div><div><h3 class="title"> | | 2064 | <div class="titlepage"><div><div><h3 class="title"> |
2065 | <a name="bulk.pbulk.conf"></a>7.2.1. Configuration</h3></div></div></div> | | 2065 | <a name="bulk.pbulk.conf"></a>7.2.1. Configuration</h3></div></div></div> |
2066 | <p>To simplify configuration, we provide the helper script <code class="filename">mk/pbulk/pbulk.sh</code>.</p> | | 2066 | <p>To simplify configuration, we provide the helper script <code class="filename">mk/pbulk/pbulk.sh</code>.</p> |
2067 | <p>In order to use it, prepare a clear system (real one, chroot environment, jail, zone, virtual machine). | | 2067 | <p>In order to use it, prepare a clear system (real one, chroot environment, jail, zone, virtual machine). |
2068 | Configure network access to fetch distribution files. | | 2068 | Configure network access to fetch distribution files. |
2069 | Create a user with name "pbulk".</p> | | 2069 | Create a user with name "pbulk".</p> |
2070 | <p>Fetch and extract pkgsrc. Use a command like one of these:</p> | | 2070 | <p>Fetch and extract pkgsrc. Use a command like one of these:</p> |
2071 | <pre class="screen"> | | 2071 | <pre class="screen"> |
2072 | <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> | | 2072 | <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> |
2073 | <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> | | 2073 | <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> |
2074 | <code class="prompt">#</code> <strong class="userinput"><code>(cd /usr && cvs -Q -z3 -d anoncvs@anoncvs.NetBSD.org:/cvsroot get -P pkgsrc)</code></strong> | | 2074 | <code class="prompt">#</code> <strong class="userinput"><code>(cd /usr && cvs -Q -z3 -d anoncvs@anoncvs.NetBSD.org:/cvsroot get -P pkgsrc)</code></strong> |
2075 | </pre> | | 2075 | </pre> |
2076 | <p>Or any other way that fits (e.g., curl, wget).</p> | | 2076 | <p>Or any other way that fits (e.g., curl, wget).</p> |
2077 | <p>Deploy and configure pbulk tools, e.g.:</p> | | 2077 | <p>Deploy and configure pbulk tools, e.g.:</p> |
2078 | <pre class="screen"> | | 2078 | <pre class="screen"> |
2079 | <code class="prompt">#</code> <strong class="userinput"><code>sh pbulk.sh -n # use native make, no bootstrap kit needed (for use on NetBSD)</code></strong> | | 2079 | <code class="prompt">#</code> <strong class="userinput"><code>sh pbulk.sh -n # use native make, no bootstrap kit needed (for use on NetBSD)</code></strong> |
2080 | <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> | | 2080 | <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> |
2081 | <code class="prompt">#</code> <strong class="userinput"><code>sh pbulk.sh -nlc mk.conf.frag # native, apply settings, configure for limited build</code></strong> | | 2081 | <code class="prompt">#</code> <strong class="userinput"><code>sh pbulk.sh -nlc mk.conf.frag # native, apply settings, configure for limited build</code></strong> |
2082 | </pre> | | 2082 | </pre> |
2083 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 2083 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
2084 | <h3 class="title">Note</h3> | | 2084 | <h3 class="title">Note</h3> |
2085 | <p><code class="filename">mk.conf.frag</code> is a fragment of | | 2085 | <p><code class="filename">mk.conf.frag</code> is a fragment of |
2086 | <code class="filename">mk.conf</code> that contains settings you want to | | 2086 | <code class="filename">mk.conf</code> that contains settings you want to |
2087 | apply to packages you build. For instance,</p> | | 2087 | apply to packages you build. For instance,</p> |
2088 | <pre class="programlisting"> | | 2088 | <pre class="programlisting"> |
2089 | PKG_DEVELOPER= yes # perform more checks | | 2089 | PKG_DEVELOPER= yes # perform more checks |
2090 | X11_TYPE= modular # use pkgsrc X11 | | 2090 | X11_TYPE= modular # use pkgsrc X11 |
2091 | SKIP_LICENSE_CHECK= yes # accept all licences (useful | | 2091 | SKIP_LICENSE_CHECK= yes # accept all licences (useful |
2092 | # when building all packages) | | 2092 | # when building all packages) |
2093 | </pre> | | 2093 | </pre> |
2094 | </div> | | 2094 | </div> |
2095 | <p>If configured for limited list, replace the list in <code class="filename">/usr/pbulk/etc/pbulk.list</code> | | 2095 | <p>If configured for limited list, replace the list in <code class="filename">/usr/pbulk/etc/pbulk.list</code> |
2096 | with your list of packages, one per line without empty lines or comments. E.g.:</p> | | 2096 | with your list of packages, one per line without empty lines or comments. E.g.:</p> |
2097 | <pre class="programlisting"> | | 2097 | <pre class="programlisting"> |
2098 | www/firefox | | 2098 | www/firefox |
2099 | mail/thunderbird | | 2099 | mail/thunderbird |
2100 | misc/libreoffice4 | | 2100 | misc/libreoffice4 |
2101 | </pre> | | 2101 | </pre> |
2102 | <p>At this point you can also review configuration in <code class="filename">/usr/pbulk/etc</code> | | 2102 | <p>At this point you can also review configuration in <code class="filename">/usr/pbulk/etc</code> |
2103 | and make final amendments, if wanted.</p> | | 2103 | and make final amendments, if wanted.</p> |
2104 | <p>Start it:</p> | | 2104 | <p>Start it:</p> |
2105 | <pre class="screen"> | | 2105 | <pre class="screen"> |
2106 | <code class="prompt">#</code> <strong class="userinput"><code>/usr/pbulk/bin/bulkbuild</code></strong> | | 2106 | <code class="prompt">#</code> <strong class="userinput"><code>/usr/pbulk/bin/bulkbuild</code></strong> |
2107 | </pre> | | 2107 | </pre> |
2108 | <p>After it finishes, you'll have <code class="filename">/mnt</code> filled with distribution files, binary packages, and reports, | | 2108 | <p>After it finishes, you'll have <code class="filename">/mnt</code> filled with distribution files, binary packages, and reports, |
2109 | plain text summary in <code class="filename">/mnt/bulklog/meta/report.txt</code> | | 2109 | plain text summary in <code class="filename">/mnt/bulklog/meta/report.txt</code> |
2110 | </p> | | 2110 | </p> |
2111 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 2111 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
2112 | <h3 class="title">Note</h3> | | 2112 | <h3 class="title">Note</h3> |
2113 | <p>The <code class="filename">pbulk.sh</code> script does not cover all possible use cases. | | 2113 | <p>The <code class="filename">pbulk.sh</code> script does not cover all possible use cases. |
2114 | While being ready to run, it serves as a good starting point to understand and build more complex setups. | | 2114 | While being ready to run, it serves as a good starting point to understand and build more complex setups. |
2115 | The script is kept small enough for better understanding.</p> | | 2115 | The script is kept small enough for better understanding.</p> |
2116 | </div> | | 2116 | </div> |
2117 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 2117 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
2118 | <h3 class="title">Note</h3> | | 2118 | <h3 class="title">Note</h3> |
2119 | <p>The <code class="filename">pbulk.sh</code> script supports running | | 2119 | <p>The <code class="filename">pbulk.sh</code> script supports running |
2120 | unprivileged bulk build and helps configuring distributed bulk builds.</p> | | 2120 | unprivileged bulk build and helps configuring distributed bulk builds.</p> |
2121 | </div> | | 2121 | </div> |
2122 | </div> | | 2122 | </div> |
2123 | </div> | | 2123 | </div> |
2124 | <div class="sect1"> | | 2124 | <div class="sect1"> |
2125 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2125 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2126 | <a name="bulk.req"></a>7.3. Requirements of a full bulk build</h2></div></div></div> | | 2126 | <a name="bulk.req"></a>7.3. Requirements of a full bulk build</h2></div></div></div> |
2127 | <p>A complete bulk build requires lots of disk space. Some of the | | 2127 | <p>A complete bulk build requires lots of disk space. Some of the |
2128 | disk space can be read-only, some other must be writable. Some can be on | | 2128 | disk space can be read-only, some other must be writable. Some can be on |
2129 | remote filesystems (such as NFS) and some should be local. Some can be | | 2129 | remote filesystems (such as NFS) and some should be local. Some can be |
2130 | temporary filesystems, others must survive a sudden reboot.</p> | | 2130 | temporary filesystems, others must survive a sudden reboot.</p> |
2131 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2131 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2132 | <li class="listitem"><p>40 GB for the distfiles (read-write, remote, temporary)</p></li> | | 2132 | <li class="listitem"><p>40 GB for the distfiles (read-write, remote, temporary)</p></li> |
2133 | <li class="listitem"><p>30 GB for the binary packages (read-write, remote, permanent)</p></li> | | 2133 | <li class="listitem"><p>30 GB for the binary packages (read-write, remote, permanent)</p></li> |
2134 | <li class="listitem"><p>1 GB for the pkgsrc tree (read-only, remote, permanent)</p></li> | | 2134 | <li class="listitem"><p>1 GB for the pkgsrc tree (read-only, remote, permanent)</p></li> |
2135 | <li class="listitem"><p>5 GB for <code class="filename">LOCALBASE</code> (read-write, local, temporary)</p></li> | | 2135 | <li class="listitem"><p>5 GB for <code class="filename">LOCALBASE</code> (read-write, local, temporary)</p></li> |
2136 | <li class="listitem"><p>10 GB for the log files (read-write, remote, permanent)</p></li> | | 2136 | <li class="listitem"><p>10 GB for the log files (read-write, remote, permanent)</p></li> |
2137 | <li class="listitem"><p>5 GB for temporary files (read-write, local, temporary)</p></li> | | 2137 | <li class="listitem"><p>5 GB for temporary files (read-write, local, temporary)</p></li> |
2138 | </ul></div> | | 2138 | </ul></div> |
2139 | </div> | | 2139 | </div> |
2140 | <div class="sect1"> | | 2140 | <div class="sect1"> |
2141 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2141 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2142 | <a name="creating-cdroms"></a>7.4. Creating a multiple CD-ROM packages collection</h2></div></div></div> | | 2142 | <a name="creating-cdroms"></a>7.4. Creating a multiple CD-ROM packages collection</h2></div></div></div> |
2143 | <p>After your pkgsrc bulk-build has completed, you may wish to | | 2143 | <p>After your pkgsrc bulk-build has completed, you may wish to |
2144 | create a CD-ROM set of the resulting binary packages to assist | | 2144 | create a CD-ROM set of the resulting binary packages to assist |
2145 | in installing packages on other machines. The | | 2145 | in installing packages on other machines. The |
2146 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/cdpack/README.html" target="_top"><code class="filename">pkgtools/cdpack</code></a> package provides | | 2146 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/cdpack/README.html" target="_top"><code class="filename">pkgtools/cdpack</code></a> package provides |
2147 | a simple tool for creating the ISO 9660 images. | | 2147 | a simple tool for creating the ISO 9660 images. |
2148 | <span class="command"><strong>cdpack</strong></span> arranges the packages on the CD-ROMs in a | | 2148 | <span class="command"><strong>cdpack</strong></span> arranges the packages on the CD-ROMs in a |
2149 | way that keeps all the dependencies for a given package on the same | | 2149 | way that keeps all the dependencies for a given package on the same |
2150 | CD as that package.</p> | | 2150 | CD as that package.</p> |
2151 | <div class="sect2"> | | 2151 | <div class="sect2"> |
2152 | <div class="titlepage"><div><div><h3 class="title"> | | 2152 | <div class="titlepage"><div><div><h3 class="title"> |
2153 | <a name="cdpack-example"></a>7.4.1. Example of cdpack</h3></div></div></div> | | 2153 | <a name="cdpack-example"></a>7.4.1. Example of cdpack</h3></div></div></div> |
2154 | <p>Complete documentation for cdpack is found in the cdpack(1) | | 2154 | <p>Complete documentation for cdpack is found in the cdpack(1) |
2155 | man page. The following short example assumes that the binary | | 2155 | man page. The following short example assumes that the binary |
2156 | packages are left in | | 2156 | packages are left in |
2157 | <code class="filename">/usr/pkgsrc/packages/All</code> and that | | 2157 | <code class="filename">/usr/pkgsrc/packages/All</code> and that |
2158 | sufficient disk space exists in <code class="filename">/u2</code> to | | 2158 | sufficient disk space exists in <code class="filename">/u2</code> to |
2159 | hold the ISO 9660 images.</p> | | 2159 | hold the ISO 9660 images.</p> |
2160 | <pre class="screen"> | | 2160 | <pre class="screen"> |
2161 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir /u2/images</code></strong> | | 2161 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir /u2/images</code></strong> |
2162 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_add /usr/pkgsrc/packages/All/cdpack</code></strong> | | 2162 | <code class="prompt">#</code> <strong class="userinput"><code>pkg_add /usr/pkgsrc/packages/All/cdpack</code></strong> |
2163 | <code class="prompt">#</code> <strong class="userinput"><code>cdpack /usr/pkgsrc/packages/All /u2/images</code></strong> | | 2163 | <code class="prompt">#</code> <strong class="userinput"><code>cdpack /usr/pkgsrc/packages/All /u2/images</code></strong> |
2164 | </pre> | | 2164 | </pre> |
2165 | <p>If you wish to include a common set of files | | 2165 | <p>If you wish to include a common set of files |
2166 | (<code class="filename">COPYRIGHT</code>, <code class="filename">README</code>, | | 2166 | (<code class="filename">COPYRIGHT</code>, <code class="filename">README</code>, |
2167 | etc.) on each CD in the collection, then you need to create a | | 2167 | etc.) on each CD in the collection, then you need to create a |
2168 | directory which contains these files. e.g.</p> | | 2168 | directory which contains these files. e.g.</p> |
2169 | <pre class="screen"> | | 2169 | <pre class="screen"> |
2170 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir /tmp/common</code></strong> | | 2170 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir /tmp/common</code></strong> |
2171 | <code class="prompt">#</code> <strong class="userinput"><code>echo "This is a README" > /tmp/common/README</code></strong> | | 2171 | <code class="prompt">#</code> <strong class="userinput"><code>echo "This is a README" > /tmp/common/README</code></strong> |
2172 | <code class="prompt">#</code> <strong class="userinput"><code>echo "Another file" > /tmp/common/COPYING</code></strong> | | 2172 | <code class="prompt">#</code> <strong class="userinput"><code>echo "Another file" > /tmp/common/COPYING</code></strong> |
2173 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir /tmp/common/bin</code></strong> | | 2173 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir /tmp/common/bin</code></strong> |
2174 | <code class="prompt">#</code> <strong class="userinput"><code>echo "#!/bin/sh" > /tmp/common/bin/myscript</code></strong> | | 2174 | <code class="prompt">#</code> <strong class="userinput"><code>echo "#!/bin/sh" > /tmp/common/bin/myscript</code></strong> |
2175 | <code class="prompt">#</code> <strong class="userinput"><code>echo "echo Hello world" >> /tmp/common/bin/myscript</code></strong> | | 2175 | <code class="prompt">#</code> <strong class="userinput"><code>echo "echo Hello world" >> /tmp/common/bin/myscript</code></strong> |
2176 | <code class="prompt">#</code> <strong class="userinput"><code>chmod 755 /tmp/common/bin/myscript</code></strong> | | 2176 | <code class="prompt">#</code> <strong class="userinput"><code>chmod 755 /tmp/common/bin/myscript</code></strong> |
2177 | </pre> | | 2177 | </pre> |
2178 | <p>Now create the images:</p> | | 2178 | <p>Now create the images:</p> |
2179 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>cdpack -x /tmp/common /usr/pkgsrc/packages/All /u2/images</code></strong></pre> | | 2179 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>cdpack -x /tmp/common /usr/pkgsrc/packages/All /u2/images</code></strong></pre> |
2180 | <p>Each image will contain <code class="filename">README</code>, | | 2180 | <p>Each image will contain <code class="filename">README</code>, |
2181 | <code class="filename">COPYING</code>, and <code class="filename">bin/myscript</code> | | 2181 | <code class="filename">COPYING</code>, and <code class="filename">bin/myscript</code> |
2182 | in their root directories.</p> | | 2182 | in their root directories.</p> |
2183 | </div> | | 2183 | </div> |
2184 | </div> | | 2184 | </div> |
2185 | </div> | | 2185 | </div> |
2186 | <div class="chapter"> | | 2186 | <div class="chapter"> |
2187 | <div class="titlepage"><div><div><h2 class="title"> | | 2187 | <div class="titlepage"><div><div><h2 class="title"> |
2188 | <a name="files"></a>Chapter 8. Directory layout of the installed files</h2></div></div></div> | | 2188 | <a name="files"></a>Chapter 8. Directory layout of the installed files</h2></div></div></div> |
2189 | <div class="toc"> | | 2189 | <div class="toc"> |
2190 | <p><b>Table of Contents</b></p> | | 2190 | <p><b>Table of Contents</b></p> |
2191 | <dl class="toc"> | | 2191 | <dl class="toc"> |
2192 | <dt><span class="sect1"><a href="#files.localbase">8.1. File system layout in <code class="literal">${LOCALBASE}</code></a></span></dt> | | 2192 | <dt><span class="sect1"><a href="#files.localbase">8.1. File system layout in <code class="literal">${LOCALBASE}</code></a></span></dt> |
2193 | <dt><span class="sect1"><a href="#files.varbase">8.2. File system layout in <code class="literal">${VARBASE}</code></a></span></dt> | | 2193 | <dt><span class="sect1"><a href="#files.varbase">8.2. File system layout in <code class="literal">${VARBASE}</code></a></span></dt> |
2194 | </dl> | | 2194 | </dl> |
2195 | </div> | | 2195 | </div> |
2196 | <p>The files that are installed by pkgsrc are organized in a way that | | 2196 | <p>The files that are installed by pkgsrc are organized in a way that |
2197 | is similar to what you find in the <code class="filename">/usr</code> directory | | 2197 | is similar to what you find in the <code class="filename">/usr</code> directory |
2198 | of the base system. But some details are different. This is because | | 2198 | of the base system. But some details are different. This is because |
2199 | pkgsrc initially came from FreeBSD and had adopted its file system | | 2199 | pkgsrc initially came from FreeBSD and had adopted its file system |
2200 | hierarchy. Later it was largely influenced by NetBSD. But no matter | | 2200 | hierarchy. Later it was largely influenced by NetBSD. But no matter |
2201 | which operating system you are using pkgsrc with, you can expect the | | 2201 | which operating system you are using pkgsrc with, you can expect the |
2202 | same layout for pkgsrc.</p> | | 2202 | same layout for pkgsrc.</p> |
2203 | <p>There are mainly four root directories for pkgsrc, which are all | | 2203 | <p>There are mainly four root directories for pkgsrc, which are all |
2204 | configurable in the <code class="filename">bootstrap/bootstrap</code> script. | | 2204 | configurable in the <code class="filename">bootstrap/bootstrap</code> script. |
2205 | When pkgsrc has been installed as root, the default locations | | 2205 | When pkgsrc has been installed as root, the default locations |
2206 | are:</p> | | 2206 | are:</p> |
2207 | <pre class="programlisting"> | | 2207 | <pre class="programlisting"> |
2208 | LOCALBASE= /usr/pkg | | 2208 | LOCALBASE= /usr/pkg |
2209 | PKG_SYSCONFBASE= /usr/pkg/etc | | 2209 | PKG_SYSCONFBASE= /usr/pkg/etc |
2210 | VARBASE= /var | | 2210 | VARBASE= /var |
2211 | PKG_DBDIR= /usr/pkg/pkgdb | | 2211 | PKG_DBDIR= /usr/pkg/pkgdb |
2212 | </pre> | | 2212 | </pre> |
2213 | <p>In unprivileged mode (when pkgsrc has been installed as any other | | 2213 | <p>In unprivileged mode (when pkgsrc has been installed as any other |
2214 | user), the default locations are:</p> | | 2214 | user), the default locations are:</p> |
2215 | <pre class="programlisting"> | | 2215 | <pre class="programlisting"> |
2216 | LOCALBASE= ${HOME}/pkg | | 2216 | LOCALBASE= ${HOME}/pkg |
2217 | PKG_SYSCONFBASE= ${HOME}/pkg/etc | | 2217 | PKG_SYSCONFBASE= ${HOME}/pkg/etc |
2218 | VARBASE= ${HOME}/pkg/var | | 2218 | VARBASE= ${HOME}/pkg/var |
2219 | PKG_DBDIR= ${HOME}/pkg/pkgdb | | 2219 | PKG_DBDIR= ${HOME}/pkg/pkgdb |
2220 | </pre> | | 2220 | </pre> |
2221 | <p>What these four directories are for, and what they look like is | | 2221 | <p>What these four directories are for, and what they look like is |
2222 | explained below.</p> | | 2222 | explained below.</p> |
2223 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2223 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2224 | <li class="listitem"><p><code class="varname">LOCALBASE</code> corresponds to the | | 2224 | <li class="listitem"><p><code class="varname">LOCALBASE</code> corresponds to the |
2225 | <code class="filename">/usr</code> directory in the base system. It is the | | 2225 | <code class="filename">/usr</code> directory in the base system. It is the |
2226 | <span class="quote">“<span class="quote">main</span>”</span> directory where the files are installed and contains | | 2226 | <span class="quote">“<span class="quote">main</span>”</span> directory where the files are installed and contains |
2227 | the well-known subdirectories like <code class="filename">bin</code>, | | 2227 | the well-known subdirectories like <code class="filename">bin</code>, |
2228 | <code class="filename">include</code>, <code class="filename">lib</code>, | | 2228 | <code class="filename">include</code>, <code class="filename">lib</code>, |
2229 | <code class="filename">share</code> and | | 2229 | <code class="filename">share</code> and |
2230 | <code class="filename">sbin</code>.</p></li> | | 2230 | <code class="filename">sbin</code>.</p></li> |
2231 | <li class="listitem"><p><code class="varname">VARBASE</code> corresponds to | | 2231 | <li class="listitem"><p><code class="varname">VARBASE</code> corresponds to |
2232 | <code class="filename">/var</code> in the base system. Some programs (especially | | 2232 | <code class="filename">/var</code> in the base system. Some programs (especially |
2233 | games, network daemons) need write access to it during normal | | 2233 | games, network daemons) need write access to it during normal |
2234 | operation.</p></li> | | 2234 | operation.</p></li> |
2235 | <li class="listitem"><p><code class="varname">PKG_SYSCONFDIR</code> corresponds to | | 2235 | <li class="listitem"><p><code class="varname">PKG_SYSCONFDIR</code> corresponds to |
2236 | <code class="filename">/etc</code> in the base system. It contains configuration | | 2236 | <code class="filename">/etc</code> in the base system. It contains configuration |
2237 | files of the packages, as well as pkgsrc's <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> | | 2237 | files of the packages, as well as pkgsrc's <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> |
2238 | itself.</p></li> | | 2238 | itself.</p></li> |
2239 | </ul></div> | | 2239 | </ul></div> |
2240 | <div class="sect1"> | | 2240 | <div class="sect1"> |
2241 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2241 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2242 | <a name="files.localbase"></a>8.1. File system layout in <code class="literal">${LOCALBASE}</code> | | 2242 | <a name="files.localbase"></a>8.1. File system layout in <code class="literal">${LOCALBASE}</code> |
2243 | </h2></div></div></div> | | 2243 | </h2></div></div></div> |
2244 | <p>The following directories exist in a typical pkgsrc installation | | 2244 | <p>The following directories exist in a typical pkgsrc installation |
2245 | in <code class="filename">${LOCALBASE}</code>.</p> | | 2245 | in <code class="filename">${LOCALBASE}</code>.</p> |
2246 | <div class="variablelist"><dl class="variablelist"> | | 2246 | <div class="variablelist"><dl class="variablelist"> |
2247 | <dt><span class="term"><code class="filename">bin</code></span></dt> | | 2247 | <dt><span class="term"><code class="filename">bin</code></span></dt> |
2248 | <dd><p>Contains executable programs that are intended to be | | 2248 | <dd><p>Contains executable programs that are intended to be |
2249 | directly used by the end user.</p></dd> | | 2249 | directly used by the end user.</p></dd> |
2250 | <dt><span class="term"><code class="filename">emul</code></span></dt> | | 2250 | <dt><span class="term"><code class="filename">emul</code></span></dt> |
2251 | <dd><p>Contains files for the emulation layers of various other | | 2251 | <dd><p>Contains files for the emulation layers of various other |
2252 | operating systems, especially for | | 2252 | operating systems, especially for |
2253 | NetBSD.</p></dd> | | 2253 | NetBSD.</p></dd> |
2254 | <dt><span class="term"><code class="filename">etc</code> (the usual location of | | 2254 | <dt><span class="term"><code class="filename">etc</code> (the usual location of |
2255 | <code class="filename">${PKG_SYSCONFDIR}</code>)</span></dt> | | 2255 | <code class="filename">${PKG_SYSCONFDIR}</code>)</span></dt> |
2256 | <dd><p>Contains | | 2256 | <dd><p>Contains |
2257 | the configuration files.</p></dd> | | 2257 | the configuration files.</p></dd> |
2258 | <dt><span class="term"><code class="filename">include</code></span></dt> | | 2258 | <dt><span class="term"><code class="filename">include</code></span></dt> |
2259 | <dd><p>Contains headers for the C and C++ programming | | 2259 | <dd><p>Contains headers for the C and C++ programming |
2260 | languages.</p></dd> | | 2260 | languages.</p></dd> |
2261 | <dt><span class="term"><code class="filename">info</code></span></dt> | | 2261 | <dt><span class="term"><code class="filename">info</code></span></dt> |
2262 | <dd><p>Contains GNU info files of various | | 2262 | <dd><p>Contains GNU info files of various |
2263 | packages.</p></dd> | | 2263 | packages.</p></dd> |
2264 | <dt><span class="term"><code class="filename">lib</code></span></dt> | | 2264 | <dt><span class="term"><code class="filename">lib</code></span></dt> |
2265 | <dd><p>Contains shared and static | | 2265 | <dd><p>Contains shared and static |
2266 | libraries.</p></dd> | | 2266 | libraries.</p></dd> |
2267 | <dt><span class="term"><code class="filename">libdata</code></span></dt> | | 2267 | <dt><span class="term"><code class="filename">libdata</code></span></dt> |
2268 | <dd><p>Contains data files that don't change after | | 2268 | <dd><p>Contains data files that don't change after |
2269 | installation. Other data files belong into | | 2269 | installation. Other data files belong into |
2270 | <code class="filename">${VARBASE}</code>.</p></dd> | | 2270 | <code class="filename">${VARBASE}</code>.</p></dd> |
2271 | <dt><span class="term"><code class="filename">libexec</code></span></dt> | | 2271 | <dt><span class="term"><code class="filename">libexec</code></span></dt> |
2272 | <dd><p>Contains programs that are not intended to be used by | | 2272 | <dd><p>Contains programs that are not intended to be used by |
2273 | end users, such as helper programs or network | | 2273 | end users, such as helper programs or network |
2274 | daemons.</p></dd> | | 2274 | daemons.</p></dd> |
2275 | <dt><span class="term"><code class="filename">libexec/cgi-bin</code></span></dt> | | 2275 | <dt><span class="term"><code class="filename">libexec/cgi-bin</code></span></dt> |
2276 | <dd><p>Contains programs that are intended to be executed as | | 2276 | <dd><p>Contains programs that are intended to be executed as |
2277 | CGI scripts by a web server.</p></dd> | | 2277 | CGI scripts by a web server.</p></dd> |
2278 | <dt><span class="term"><code class="filename">man</code> (the usual value of | | 2278 | <dt><span class="term"><code class="filename">man</code> (the usual value of |
2279 | <code class="filename">${PKGMANDIR}</code>)</span></dt> | | 2279 | <code class="filename">${PKGMANDIR}</code>)</span></dt> |
2280 | <dd><p>Contains brief | | 2280 | <dd><p>Contains brief |
2281 | documentation in form of manual pages.</p></dd> | | 2281 | documentation in form of manual pages.</p></dd> |
2282 | <dt><span class="term"><code class="filename">sbin</code></span></dt> | | 2282 | <dt><span class="term"><code class="filename">sbin</code></span></dt> |
2283 | <dd><p>Contains programs that are intended to be used only by | | 2283 | <dd><p>Contains programs that are intended to be used only by |
2284 | the super-user.</p></dd> | | 2284 | the super-user.</p></dd> |
2285 | <dt><span class="term"><code class="filename">share</code></span></dt> | | 2285 | <dt><span class="term"><code class="filename">share</code></span></dt> |
2286 | <dd><p>Contains platform-independent data files that don't | | 2286 | <dd><p>Contains platform-independent data files that don't |
2287 | change after installation.</p></dd> | | 2287 | change after installation.</p></dd> |
2288 | <dt><span class="term"><code class="filename">share/doc</code></span></dt> | | 2288 | <dt><span class="term"><code class="filename">share/doc</code></span></dt> |
2289 | <dd><p>Contains documentation files provided by the | | 2289 | <dd><p>Contains documentation files provided by the |
2290 | packages.</p></dd> | | 2290 | packages.</p></dd> |
2291 | <dt><span class="term"><code class="filename">share/examples</code></span></dt> | | 2291 | <dt><span class="term"><code class="filename">share/examples</code></span></dt> |
2292 | <dd><p>Contains example files provided by the packages. Among | | 2292 | <dd><p>Contains example files provided by the packages. Among |
2293 | others, the original configuration files are saved here and copied to | | 2293 | others, the original configuration files are saved here and copied to |
2294 | <code class="filename">${PKG_SYSCONFDIR}</code> during | | 2294 | <code class="filename">${PKG_SYSCONFDIR}</code> during |
2295 | installation.</p></dd> | | 2295 | installation.</p></dd> |
2296 | <dt><span class="term"><code class="filename">share/examples/rc.d</code></span></dt> | | 2296 | <dt><span class="term"><code class="filename">share/examples/rc.d</code></span></dt> |
2297 | <dd><p>Contains the original files for rc.d | | 2297 | <dd><p>Contains the original files for rc.d |
2298 | scripts.</p></dd> | | 2298 | scripts.</p></dd> |
2299 | <dt><span class="term"><code class="filename">var</code> (the usual location of | | 2299 | <dt><span class="term"><code class="filename">var</code> (the usual location of |
2300 | <code class="filename">${VARBASE}</code>)</span></dt> | | 2300 | <code class="filename">${VARBASE}</code>)</span></dt> |
2301 | <dd><p>Contains files | | 2301 | <dd><p>Contains files |
2302 | that may be modified after | | 2302 | that may be modified after |
2303 | installation.</p></dd> | | 2303 | installation.</p></dd> |
2304 | </dl></div> | | 2304 | </dl></div> |
2305 | </div> | | 2305 | </div> |
2306 | <div class="sect1"> | | 2306 | <div class="sect1"> |
2307 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2307 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2308 | <a name="files.varbase"></a>8.2. File system layout in <code class="literal">${VARBASE}</code> | | 2308 | <a name="files.varbase"></a>8.2. File system layout in <code class="literal">${VARBASE}</code> |
2309 | </h2></div></div></div> | | 2309 | </h2></div></div></div> |
2310 | <div class="variablelist"><dl class="variablelist"> | | 2310 | <div class="variablelist"><dl class="variablelist"> |
2311 | <dt><span class="term"><code class="filename">db/pkg</code> (the usual location of | | 2311 | <dt><span class="term"><code class="filename">db/pkg</code> (the usual location of |
2312 | <code class="filename">${PKG_DBDIR}</code>)</span></dt> | | 2312 | <code class="filename">${PKG_DBDIR}</code>)</span></dt> |
2313 | <dd><p>Contains | | 2313 | <dd><p>Contains |
2314 | information about the currently installed | | 2314 | information about the currently installed |
2315 | packages.</p></dd> | | 2315 | packages.</p></dd> |
2316 | <dt><span class="term"><code class="filename">games</code></span></dt> | | 2316 | <dt><span class="term"><code class="filename">games</code></span></dt> |
2317 | <dd><p>Contains highscore | | 2317 | <dd><p>Contains highscore |
2318 | files.</p></dd> | | 2318 | files.</p></dd> |
2319 | <dt><span class="term"><code class="filename">log</code></span></dt> | | 2319 | <dt><span class="term"><code class="filename">log</code></span></dt> |
2320 | <dd><p>Contains log files.</p></dd> | | 2320 | <dd><p>Contains log files.</p></dd> |
2321 | <dt><span class="term"><code class="filename">run</code></span></dt> | | 2321 | <dt><span class="term"><code class="filename">run</code></span></dt> |
2322 | <dd><p>Contains informational files about daemons that are | | 2322 | <dd><p>Contains informational files about daemons that are |
2323 | currently running.</p></dd> | | 2323 | currently running.</p></dd> |
2324 | </dl></div> | | 2324 | </dl></div> |
2325 | </div> | | 2325 | </div> |
2326 | </div> | | 2326 | </div> |
2327 | <div class="chapter"> | | 2327 | <div class="chapter"> |
2328 | <div class="titlepage"><div><div><h2 class="title"> | | 2328 | <div class="titlepage"><div><div><h2 class="title"> |
2329 | <a name="faq"></a>Chapter 9. Frequently Asked Questions</h2></div></div></div> | | 2329 | <a name="faq"></a>Chapter 9. Frequently Asked Questions</h2></div></div></div> |
2330 | <div class="toc"> | | 2330 | <div class="toc"> |
2331 | <p><b>Table of Contents</b></p> | | 2331 | <p><b>Table of Contents</b></p> |
2332 | <dl class="toc"> | | 2332 | <dl class="toc"> |
2333 | <dt><span class="sect1"><a href="#mailing-list-pointers">9.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> | | 2333 | <dt><span class="sect1"><a href="#mailing-list-pointers">9.1. Are there any mailing lists for pkg-related discussion?</a></span></dt> |
2334 | <dt><span class="sect1"><a href="#faq-pkgtools">9.2. Utilities for package management (pkgtools)</a></span></dt> | | 2334 | <dt><span class="sect1"><a href="#faq-pkgtools">9.2. Utilities for package management (pkgtools)</a></span></dt> |
2335 | <dt><span class="sect1"><a href="#non-root-pkgsrc">9.3. How to use pkgsrc as non-root</a></span></dt> | | 2335 | <dt><span class="sect1"><a href="#non-root-pkgsrc">9.3. How to use pkgsrc as non-root</a></span></dt> |
2336 | <dt><span class="sect1"><a href="#resume-transfers">9.4. How to resume transfers when fetching distfiles?</a></span></dt> | | 2336 | <dt><span class="sect1"><a href="#resume-transfers">9.4. How to resume transfers when fetching distfiles?</a></span></dt> |
2337 | <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> | | 2337 | <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> |
2338 | <dt><span class="sect1"><a href="#fetch-behind-firewall">9.6. How to fetch files from behind a firewall</a></span></dt> | | 2338 | <dt><span class="sect1"><a href="#fetch-behind-firewall">9.6. How to fetch files from behind a firewall</a></span></dt> |
2339 | <dt><span class="sect1"><a href="#fetch-https">9.7. How to fetch files from HTTPS sites</a></span></dt> | | 2339 | <dt><span class="sect1"><a href="#fetch-https">9.7. How to fetch files from HTTPS sites</a></span></dt> |
2340 | <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> | | 2340 | <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> |
2341 | <dt><span class="sect1"><a href="#fetching-all-distfiles">9.9. How to fetch all distfiles at once</a></span></dt> | | 2341 | <dt><span class="sect1"><a href="#fetching-all-distfiles">9.9. How to fetch all distfiles at once</a></span></dt> |
2342 | <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 | | 2342 | <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 |
2343 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</a></span></dt> | | 2343 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</a></span></dt> |
2344 | <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> | | 2344 | <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> |
2345 | <dt><span class="sect1"><a href="#using-sudo-with-pkgsrc">9.12. Using 'sudo' with pkgsrc</a></span></dt> | | 2345 | <dt><span class="sect1"><a href="#using-sudo-with-pkgsrc">9.12. Using 'sudo' with pkgsrc</a></span></dt> |
2346 | <dt><span class="sect1"><a href="#faq.conf">9.13. How do I change the location of configuration files?</a></span></dt> | | 2346 | <dt><span class="sect1"><a href="#faq.conf">9.13. How do I change the location of configuration files?</a></span></dt> |
2347 | <dt><span class="sect1"><a href="#audit-packages">9.14. Automated security checks</a></span></dt> | | 2347 | <dt><span class="sect1"><a href="#audit-packages">9.14. Automated security checks</a></span></dt> |
2348 | <dt><span class="sect1"><a href="#ufaq-cflags">9.15. Why do some packages ignore my <code class="varname">CFLAGS</code>?</a></span></dt> | | 2348 | <dt><span class="sect1"><a href="#ufaq-cflags">9.15. Why do some packages ignore my <code class="varname">CFLAGS</code>?</a></span></dt> |
2349 | <dt><span class="sect1"><a href="#ufaq-fail">9.16. A package does not build. What shall I do?</a></span></dt> | | 2349 | <dt><span class="sect1"><a href="#ufaq-fail">9.16. A package does not build. What shall I do?</a></span></dt> |
2350 | <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> | | 2350 | <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> |
2351 | </dl> | | 2351 | </dl> |
2352 | </div> | | 2352 | </div> |
2353 | <p>This section contains hints, tips & tricks on special things in | | 2353 | <p>This section contains hints, tips & tricks on special things in |
2354 | pkgsrc that we didn't find a better place for in the previous chapters, and | | 2354 | pkgsrc that we didn't find a better place for in the previous chapters, and |
2355 | it contains items for both pkgsrc users and developers.</p> | | 2355 | it contains items for both pkgsrc users and developers.</p> |
2356 | <div class="sect1"> | | 2356 | <div class="sect1"> |
2357 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2357 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2358 | <a name="mailing-list-pointers"></a>9.1. Are there any mailing lists for pkg-related discussion?</h2></div></div></div> | | 2358 | <a name="mailing-list-pointers"></a>9.1. Are there any mailing lists for pkg-related discussion?</h2></div></div></div> |
2359 | <p>The following mailing lists may be of interest to pkgsrc users:</p> | | 2359 | <p>The following mailing lists may be of interest to pkgsrc users:</p> |
2360 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2360 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2361 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-users" target="_top">pkgsrc-users</a>: | | 2361 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-users" target="_top">pkgsrc-users</a>: |
2362 | This is a general purpose list for most issues regarding | | 2362 | This is a general purpose list for most issues regarding |
2363 | pkgsrc, regardless of platform, e.g. soliciting user help | | 2363 | pkgsrc, regardless of platform, e.g. soliciting user help |
2364 | for pkgsrc configuration, unexpected build failures, using | | 2364 | for pkgsrc configuration, unexpected build failures, using |
2365 | particular packages, upgrading pkgsrc installations, | | 2365 | particular packages, upgrading pkgsrc installations, |
2366 | questions regarding the pkgsrc release branches, etc. General announcements or | | 2366 | questions regarding the pkgsrc release branches, etc. General announcements or |
2367 | proposals for changes that impact the pkgsrc user community, | | 2367 | proposals for changes that impact the pkgsrc user community, |
2368 | e.g. major infrastructure changes, new features, package | | 2368 | e.g. major infrastructure changes, new features, package |
2369 | removals, etc., may also be posted.</p></li> | | 2369 | removals, etc., may also be posted.</p></li> |
2370 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-bulk" target="_top">pkgsrc-bulk</a>: | | 2370 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-bulk" target="_top">pkgsrc-bulk</a>: |
2371 | A list where the results of pkgsrc bulk builds are sent and | | 2371 | A list where the results of pkgsrc bulk builds are sent and |
2372 | discussed.</p></li> | | 2372 | discussed.</p></li> |
2373 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-changes" target="_top">pkgsrc-changes</a>: | | 2373 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-changes" target="_top">pkgsrc-changes</a>: |
2374 | This list is for those who are interested in getting a | | 2374 | This list is for those who are interested in getting a |
2375 | commit message for every change committed to pkgsrc. It is | | 2375 | commit message for every change committed to pkgsrc. It is |
2376 | also available in digest form, meaning one daily message | | 2376 | also available in digest form, meaning one daily message |
2377 | containing all commit messages for changes to the package | | 2377 | containing all commit messages for changes to the package |
2378 | source tree in that 24 hour period.</p></li> | | 2378 | source tree in that 24 hour period.</p></li> |
2379 | </ul></div> | | 2379 | </ul></div> |
2380 | <p>To subscribe, do:</p> | | 2380 | <p>To subscribe, do:</p> |
2381 | <pre class="programlisting"> | | 2381 | <pre class="programlisting"> |
2382 | <code class="prompt">%</code> echo subscribe <em class="replaceable"><code>listname</code></em> | mail majordomo@NetBSD.org | | 2382 | <code class="prompt">%</code> echo subscribe <em class="replaceable"><code>listname</code></em> | mail majordomo@NetBSD.org |
2383 | </pre> | | 2383 | </pre> |
2384 | <p>Archives for all these mailing lists are available from | | 2384 | <p>Archives for all these mailing lists are available from |
2385 | <a class="ulink" href="http://mail-index.NetBSD.org/" target="_top">http://mail-index.NetBSD.org/</a>.</p> | | 2385 | <a class="ulink" href="http://mail-index.NetBSD.org/" target="_top">http://mail-index.NetBSD.org/</a>.</p> |
2386 | </div> | | 2386 | </div> |
2387 | <div class="sect1"> | | 2387 | <div class="sect1"> |
2388 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2388 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2389 | <a name="faq-pkgtools"></a>9.2. Utilities for package management (pkgtools)</h2></div></div></div> | | 2389 | <a name="faq-pkgtools"></a>9.2. Utilities for package management (pkgtools)</h2></div></div></div> |
2390 | <p>The directory <code class="filename">pkgsrc/pkgtools</code> contains | | 2390 | <p>The directory <code class="filename">pkgsrc/pkgtools</code> contains |
2391 | a number of useful utilities for both users and developers of pkgsrc. This | | 2391 | a number of useful utilities for both users and developers of pkgsrc. This |
2392 | section attempts only to make the reader aware of some of the utilities and when | | 2392 | section attempts only to make the reader aware of some of the utilities and when |
2393 | they might be useful, and not to duplicate the documentation that comes | | 2393 | they might be useful, and not to duplicate the documentation that comes |
2394 | with each package.</p> | | 2394 | with each package.</p> |
2395 | <p>Utilities used by pkgsrc (automatically installed when needed):</p> | | 2395 | <p>Utilities used by pkgsrc (automatically installed when needed):</p> |
2396 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/x11-links/README.html" target="_top"><code class="filename">pkgtools/x11-links</code></a>: | | 2396 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/x11-links/README.html" target="_top"><code class="filename">pkgtools/x11-links</code></a>: |
2397 | Symlinks for use by buildlink.</p></li></ul></div> | | 2397 | Symlinks for use by buildlink.</p></li></ul></div> |
2398 | <p>OS tool augmentation (automatically installed when needed):</p> | | 2398 | <p>OS tool augmentation (automatically installed when needed):</p> |
2399 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2399 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2400 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/digest/README.html" target="_top"><code class="filename">pkgtools/digest</code></a>: | | 2400 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/digest/README.html" target="_top"><code class="filename">pkgtools/digest</code></a>: |
2401 | Calculates various kinds of checksums (including SHA3).</p></li> | | 2401 | Calculates various kinds of checksums (including SHA3).</p></li> |
2402 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/libnbcompat/README.html" target="_top"><code class="filename">pkgtools/libnbcompat</code></a>: | | 2402 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/libnbcompat/README.html" target="_top"><code class="filename">pkgtools/libnbcompat</code></a>: |
2403 | Compatibility library for pkgsrc tools.</p></li> | | 2403 | Compatibility library for pkgsrc tools.</p></li> |
2404 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/mtree/README.html" target="_top"><code class="filename">pkgtools/mtree</code></a>: Installed on | | 2404 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/mtree/README.html" target="_top"><code class="filename">pkgtools/mtree</code></a>: Installed on |
2405 | non-BSD systems due to lack of native mtree.</p></li> | | 2405 | non-BSD systems due to lack of native mtree.</p></li> |
2406 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a>: | | 2406 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a>: |
2407 | Up-to-date replacement for | | 2407 | Up-to-date replacement for |
2408 | <code class="filename">/usr/sbin/pkg_install</code>, or for use on operating | | 2408 | <code class="filename">/usr/sbin/pkg_install</code>, or for use on operating |
2409 | systems where pkg_install is not present.</p></li> | | 2409 | systems where pkg_install is not present.</p></li> |
2410 | </ul></div> | | 2410 | </ul></div> |
2411 | <p>Utilities used by pkgsrc (not automatically installed):</p> | | 2411 | <p>Utilities used by pkgsrc (not automatically installed):</p> |
2412 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2412 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2413 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_tarup/README.html" target="_top"><code class="filename">pkgtools/pkg_tarup</code></a>: | | 2413 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_tarup/README.html" target="_top"><code class="filename">pkgtools/pkg_tarup</code></a>: |
2414 | Create a binary package from an | | 2414 | Create a binary package from an |
2415 | already-installed package. Used by <span class="command"><strong>make replace</strong></span> to | | 2415 | already-installed package. Used by <span class="command"><strong>make replace</strong></span> to |
2416 | save the old package.</p></li> | | 2416 | save the old package.</p></li> |
2417 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/dfdisk/README.html" target="_top"><code class="filename">pkgtools/dfdisk</code></a>: | | 2417 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/dfdisk/README.html" target="_top"><code class="filename">pkgtools/dfdisk</code></a>: |
2418 | Adds extra functionality to pkgsrc, allowing it to fetch distfiles | | 2418 | Adds extra functionality to pkgsrc, allowing it to fetch distfiles |
2419 | from multiple locations. It currently supports the following | | 2419 | from multiple locations. It currently supports the following |
2420 | methods: multiple CD-ROMs and network FTP/HTTP connections.</p></li> | | 2420 | methods: multiple CD-ROMs and network FTP/HTTP connections.</p></li> |
2421 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/cpuflags/README.html" target="_top"><code class="filename">devel/cpuflags</code></a>: Determine | | 2421 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/cpuflags/README.html" target="_top"><code class="filename">devel/cpuflags</code></a>: Determine |
2422 | the best compiler flags to optimise code for your current | | 2422 | the best compiler flags to optimise code for your current |
2423 | CPU and compiler. </p></li> | | 2423 | CPU and compiler. </p></li> |
2424 | </ul></div> | | 2424 | </ul></div> |
2425 | <p>Utilities for keeping track of installed packages, being up to date, | | 2425 | <p>Utilities for keeping track of installed packages, being up to date, |
2426 | etc:</p> | | 2426 | etc:</p> |
2427 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2427 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2428 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgin/README.html" target="_top"><code class="filename">pkgtools/pkgin</code></a>: A package | | 2428 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgin/README.html" target="_top"><code class="filename">pkgtools/pkgin</code></a>: A package |
2429 | update tool similar to apt(1). Download, install, and upgrade | | 2429 | update tool similar to apt(1). Download, install, and upgrade |
2430 | binary packages easily.</p></li> | | 2430 | binary packages easily.</p></li> |
2431 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_chk/README.html" target="_top"><code class="filename">pkgtools/pkg_chk</code></a>: Reports on | | 2431 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_chk/README.html" target="_top"><code class="filename">pkgtools/pkg_chk</code></a>: Reports on |
2432 | packages whose installed versions do not match the latest pkgsrc | | 2432 | packages whose installed versions do not match the latest pkgsrc |
2433 | entries.</p></li> | | 2433 | entries.</p></li> |
2434 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdep/README.html" target="_top"><code class="filename">pkgtools/pkgdep</code></a>: Makes | | 2434 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdep/README.html" target="_top"><code class="filename">pkgtools/pkgdep</code></a>: Makes |
2435 | dependency graphs of packages, to aid in choosing a strategy for | | 2435 | dependency graphs of packages, to aid in choosing a strategy for |
2436 | updating.</p></li> | | 2436 | updating.</p></li> |
2437 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdepgraph/README.html" target="_top"><code class="filename">pkgtools/pkgdepgraph</code></a>: Makes | | 2437 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdepgraph/README.html" target="_top"><code class="filename">pkgtools/pkgdepgraph</code></a>: Makes |
2438 | graphs from the output of <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdep/README.html" target="_top"><code class="filename">pkgtools/pkgdep</code></a> (uses graphviz).</p></li> | | 2438 | graphs from the output of <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdep/README.html" target="_top"><code class="filename">pkgtools/pkgdep</code></a> (uses graphviz).</p></li> |
2439 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>: The | | 2439 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>: The |
2440 | pkglint(1) program checks a pkgsrc entry for errors.</p></li> | | 2440 | pkglint(1) program checks a pkgsrc entry for errors.</p></li> |
2441 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/lintpkgsrc/README.html" target="_top"><code class="filename">pkgtools/lintpkgsrc</code></a>: The lintpkgsrc(1) program | | 2441 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/lintpkgsrc/README.html" target="_top"><code class="filename">pkgtools/lintpkgsrc</code></a>: The lintpkgsrc(1) program |
2442 | does various checks on the complete pkgsrc system.</p></li> | | 2442 | does various checks on the complete pkgsrc system.</p></li> |
2443 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgsurvey/README.html" target="_top"><code class="filename">pkgtools/pkgsurvey</code></a>: Report what | | 2443 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgsurvey/README.html" target="_top"><code class="filename">pkgtools/pkgsurvey</code></a>: Report what |
2444 | packages you have installed.</p></li> | | 2444 | packages you have installed.</p></li> |
2445 | </ul></div> | | 2445 | </ul></div> |
2446 | <p>Utilities for people maintaining or creating individual packages:</p> | | 2446 | <p>Utilities for people maintaining or creating individual packages:</p> |
2447 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2447 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2448 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a>: Automate | | 2448 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a>: Automate |
2449 | making and maintaining patches for a package (includes pkgdiff, | | 2449 | making and maintaining patches for a package (includes pkgdiff, |
2450 | pkgvi, mkpatches, etc.).</p></li> | | 2450 | pkgvi, mkpatches, etc.).</p></li> |
2451 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/url2pkg/README.html" target="_top"><code class="filename">pkgtools/url2pkg</code></a>: Aids in | | 2451 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/url2pkg/README.html" target="_top"><code class="filename">pkgtools/url2pkg</code></a>: Aids in |
2452 | converting to pkgsrc.</p></li> | | 2452 | converting to pkgsrc.</p></li> |
2453 | </ul></div> | | 2453 | </ul></div> |
2454 | <p>Utilities for people maintaining pkgsrc (or: more obscure pkg | | 2454 | <p>Utilities for people maintaining pkgsrc (or: more obscure pkg |
2455 | utilities)</p> | | 2455 | utilities)</p> |
2456 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2456 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2457 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_comp/README.html" target="_top"><code class="filename">pkgtools/pkg_comp</code></a>: Build | | 2457 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_comp/README.html" target="_top"><code class="filename">pkgtools/pkg_comp</code></a>: Build |
2458 | packages in a chrooted area.</p></li> | | 2458 | packages in a chrooted area.</p></li> |
2459 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/libkver/README.html" target="_top"><code class="filename">pkgtools/libkver</code></a>: Spoof | | 2459 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/libkver/README.html" target="_top"><code class="filename">pkgtools/libkver</code></a>: Spoof |
2460 | kernel version for chrooted cross builds.</p></li> | | 2460 | kernel version for chrooted cross builds.</p></li> |
2461 | </ul></div> | | 2461 | </ul></div> |
2462 | </div> | | 2462 | </div> |
2463 | <div class="sect1"> | | 2463 | <div class="sect1"> |
2464 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2464 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2465 | <a name="non-root-pkgsrc"></a>9.3. How to use pkgsrc as non-root</h2></div></div></div> | | 2465 | <a name="non-root-pkgsrc"></a>9.3. How to use pkgsrc as non-root</h2></div></div></div> |
2466 | <p>To install packages from source as a non-root user, download | | 2466 | <p>To install packages from source as a non-root user, download |
2467 | pkgsrc as described in <a class="xref" href="#getting" title="Chapter 2. Where to get pkgsrc and how to keep it up-to-date">Chapter 2, <i>Where to get pkgsrc and how to keep it up-to-date</i></a>, cd into that | | 2467 | pkgsrc as described in <a class="xref" href="#getting" title="Chapter 2. Where to get pkgsrc and how to keep it up-to-date">Chapter 2, <i>Where to get pkgsrc and how to keep it up-to-date</i></a>, cd into that |
2468 | directory and run the command <span class="command"><strong>./bootstrap/bootstrap | | 2468 | directory and run the command <span class="command"><strong>./bootstrap/bootstrap |
2469 | --unprivileged</strong></span>.</p> | | 2469 | --unprivileged</strong></span>.</p> |
2470 | <p>This will install the binary part of pkgsrc to | | 2470 | <p>This will install the binary part of pkgsrc to |
2471 | <code class="filename">~/pkg</code> and put the pkgsrc configuration <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> | | 2471 | <code class="filename">~/pkg</code> and put the pkgsrc configuration <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> |
2472 | into <code class="filename">~/pkg/etc</code>.</p> | | 2472 | into <code class="filename">~/pkg/etc</code>.</p> |
2473 | <p>For more details, see <code class="filename">mk/unprivileged.mk</code>.</p> | | 2473 | <p>For more details, see <code class="filename">mk/unprivileged.mk</code>.</p> |
2474 | </div> | | 2474 | </div> |
2475 | <div class="sect1"> | | 2475 | <div class="sect1"> |
2476 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2476 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2477 | <a name="resume-transfers"></a>9.4. How to resume transfers when fetching distfiles?</h2></div></div></div> | | 2477 | <a name="resume-transfers"></a>9.4. How to resume transfers when fetching distfiles?</h2></div></div></div> |
2478 | <p>By default, resuming transfers in pkgsrc is disabled, but you can | | 2478 | <p>By default, resuming transfers in pkgsrc is disabled, but you can |
2479 | enable this feature by adding the option | | 2479 | enable this feature by adding the option |
2480 | <code class="varname">PKG_RESUME_TRANSFERS=YES</code> into | | 2480 | <code class="varname">PKG_RESUME_TRANSFERS=YES</code> into |
2481 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. If, during a fetch step, an incomplete | | 2481 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. If, during a fetch step, an incomplete |
2482 | distfile is found, pkgsrc will try to resume it.</p> | | 2482 | distfile is found, pkgsrc will try to resume it.</p> |
2483 | <p>You can also | | 2483 | <p>You can also |
2484 | use a different program than the platform default program by changing the | | 2484 | use a different program than the platform default program by changing the |
2485 | <code class="varname">FETCH_USING</code> variable. You can specify the program by | | 2485 | <code class="varname">FETCH_USING</code> variable. You can specify the program by |
2486 | using of ftp, fetch, wget or curl. Alternatively, fetching can be disabled | | 2486 | using of ftp, fetch, wget or curl. Alternatively, fetching can be disabled |
2487 | by using the value manual. A value of custom disables the system defaults | | 2487 | by using the value manual. A value of custom disables the system defaults |
2488 | and dependency tracking for the fetch program. In that case you have to | | 2488 | and dependency tracking for the fetch program. In that case you have to |
2489 | provide <code class="varname">FETCH_CMD</code>, <code class="varname">FETCH_BEFORE_ARGS</code>, | | 2489 | provide <code class="varname">FETCH_CMD</code>, <code class="varname">FETCH_BEFORE_ARGS</code>, |
2490 | <code class="varname">FETCH_RESUME_ARGS</code>, <code class="varname">FETCH_OUTPUT_ARGS</code>, | | 2490 | <code class="varname">FETCH_RESUME_ARGS</code>, <code class="varname">FETCH_OUTPUT_ARGS</code>, |
2491 | <code class="varname">FETCH_AFTER_ARGS</code>.</p> | | 2491 | <code class="varname">FETCH_AFTER_ARGS</code>.</p> |
2492 | <p>For example, if you want to use | | 2492 | <p>For example, if you want to use |
2493 | <code class="filename">wget</code> to download, you'll have to use something | | 2493 | <code class="filename">wget</code> to download, you'll have to use something |
2494 | like:</p> | | 2494 | like:</p> |
2495 | <pre class="programlisting"> | | 2495 | <pre class="programlisting"> |
2496 | FETCH_USING= wget | | 2496 | FETCH_USING= wget |
2497 | </pre> | | 2497 | </pre> |
2498 | </div> | | 2498 | </div> |
2499 | <div class="sect1"> | | 2499 | <div class="sect1"> |
2500 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2500 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2501 | <a name="x.org-from-pkgsrc"></a>9.5. How can I install/use modular X.org from pkgsrc?</h2></div></div></div> | | 2501 | <a name="x.org-from-pkgsrc"></a>9.5. How can I install/use modular X.org from pkgsrc?</h2></div></div></div> |
2502 | <p>If you want to use modular X.org from pkgsrc instead of your system's own X11 | | 2502 | <p>If you want to use modular X.org from pkgsrc instead of your system's own X11 |
2503 | (<code class="filename">/usr/X11R6</code>, <code class="filename">/usr/openwin</code>, ...) | | 2503 | (<code class="filename">/usr/X11R6</code>, <code class="filename">/usr/openwin</code>, ...) |
2504 | you will have to add the following line into | | 2504 | you will have to add the following line into |
2505 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>:</p> | | 2505 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>:</p> |
2506 | <pre class="programlisting"> | | 2506 | <pre class="programlisting"> |
2507 | X11_TYPE=modular | | 2507 | X11_TYPE=modular |
2508 | </pre> | | 2508 | </pre> |
2509 | </div> | | 2509 | </div> |
2510 | <div class="sect1"> | | 2510 | <div class="sect1"> |
2511 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2511 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2512 | <a name="fetch-behind-firewall"></a>9.6. How to fetch files from behind a firewall</h2></div></div></div> | | 2512 | <a name="fetch-behind-firewall"></a>9.6. How to fetch files from behind a firewall</h2></div></div></div> |
2513 | <p>If you are sitting behind a firewall which does not allow direct | | 2513 | <p>If you are sitting behind a firewall which does not allow direct |
2514 | connections to Internet hosts (i.e. non-NAT), you may specify the | | 2514 | connections to Internet hosts (i.e. non-NAT), you may specify the |
2515 | relevant proxy hosts. This is done using an environment variable in the | | 2515 | relevant proxy hosts. This is done using an environment variable in the |
2516 | form of a URL, e.g. in Amdahl, the machine | | 2516 | form of a URL, e.g. in Amdahl, the machine |
2517 | <span class="quote">“<span class="quote">orpheus.amdahl.com</span>”</span> is one of the firewalls, and it uses | | 2517 | <span class="quote">“<span class="quote">orpheus.amdahl.com</span>”</span> is one of the firewalls, and it uses |
2518 | port 80 as the proxy port number. So the proxy environment variables | | 2518 | port 80 as the proxy port number. So the proxy environment variables |
2519 | are:</p> | | 2519 | are:</p> |
2520 | <pre class="programlisting"> | | 2520 | <pre class="programlisting"> |
2521 | ftp_proxy=ftp://orpheus.amdahl.com:80/ | | 2521 | ftp_proxy=ftp://orpheus.amdahl.com:80/ |
2522 | http_proxy=http://orpheus.amdahl.com:80/ | | 2522 | http_proxy=http://orpheus.amdahl.com:80/ |
2523 | </pre> | | 2523 | </pre> |
2524 | </div> | | 2524 | </div> |
2525 | <div class="sect1"> | | 2525 | <div class="sect1"> |
2526 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2526 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2527 | <a name="fetch-https"></a>9.7. How to fetch files from HTTPS sites</h2></div></div></div> | | 2527 | <a name="fetch-https"></a>9.7. How to fetch files from HTTPS sites</h2></div></div></div> |
2528 | <p>Some fetch tools are not prepared to support HTTPS by default | | 2528 | <p>Some fetch tools are not prepared to support HTTPS by default |
2529 | (for example, the one in NetBSD 6.0), or the one installed by the | | 2529 | (for example, the one in NetBSD 6.0), or the one installed by the |
2530 | pkgsrc bootstrap (to avoid an openssl dependency that low in the | | 2530 | pkgsrc bootstrap (to avoid an openssl dependency that low in the |
2531 | dependency graph).</p> | | 2531 | dependency graph).</p> |
2532 | <p>Usually you won't notice, because distribution files are | | 2532 | <p>Usually you won't notice, because distribution files are |
2533 | mirrored weekly to <span class="quote">“<span class="quote">ftp.NetBSD.org</span>”</span>, but that might not | | 2533 | mirrored weekly to <span class="quote">“<span class="quote">ftp.NetBSD.org</span>”</span>, but that might not |
2534 | be often enough if you are following pkgsrc-current. In that case, set | | 2534 | be often enough if you are following pkgsrc-current. In that case, set |
2535 | <code class="varname">FETCH_USING</code> in your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file to | | 2535 | <code class="varname">FETCH_USING</code> in your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file to |
2536 | <span class="quote">“<span class="quote">curl</span>”</span> or <span class="quote">“<span class="quote">wget</span>”</span>, which are both compiled | | 2536 | <span class="quote">“<span class="quote">curl</span>”</span> or <span class="quote">“<span class="quote">wget</span>”</span>, which are both compiled |
2537 | with HTTPS support by default. Of course, these tools need to be | | 2537 | with HTTPS support by default. Of course, these tools need to be |
2538 | installed before you can use them this way.</p> | | 2538 | installed before you can use them this way.</p> |
2539 | </div> | | 2539 | </div> |
2540 | <div class="sect1"> | | 2540 | <div class="sect1"> |
2541 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2541 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2542 | <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> | | 2542 | <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> |
2543 | <p>This depends on which utility is used to retrieve distfiles. From | | 2543 | <p>This depends on which utility is used to retrieve distfiles. From |
2544 | <code class="filename">bsd.pkg.mk</code>, <code class="varname">FETCH_CMD</code> is assigned | | 2544 | <code class="filename">bsd.pkg.mk</code>, <code class="varname">FETCH_CMD</code> is assigned |
2545 | the first available command from the following list:</p> | | 2545 | the first available command from the following list:</p> |
2546 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 2546 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
2547 | <li class="listitem"><p><code class="filename">${LOCALBASE}/bin/ftp</code></p></li> | | 2547 | <li class="listitem"><p><code class="filename">${LOCALBASE}/bin/ftp</code></p></li> |
2548 | <li class="listitem"><p><code class="filename">/usr/bin/ftp</code></p></li> | | 2548 | <li class="listitem"><p><code class="filename">/usr/bin/ftp</code></p></li> |
2549 | </ul></div> | | 2549 | </ul></div> |
2550 | <p>On a default NetBSD installation, this will be | | 2550 | <p>On a default NetBSD installation, this will be |
2551 | <code class="filename">/usr/bin/ftp</code>, which automatically tries passive | | 2551 | <code class="filename">/usr/bin/ftp</code>, which automatically tries passive |
2552 | connections first, and falls back to active connections if the server | | 2552 | connections first, and falls back to active connections if the server |
2553 | refuses to do passive. For the other tools, add the following to your | | 2553 | refuses to do passive. For the other tools, add the following to your |
2554 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file: | | 2554 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> file: |
2555 | <code class="varname">PASSIVE_FETCH=1</code>.</p> | | 2555 | <code class="varname">PASSIVE_FETCH=1</code>.</p> |
2556 | <p>Having that option present will prevent | | 2556 | <p>Having that option present will prevent |
2557 | <code class="filename">/usr/bin/ftp</code> from falling back to active | | 2557 | <code class="filename">/usr/bin/ftp</code> from falling back to active |
2558 | transfers.</p> | | 2558 | transfers.</p> |
2559 | </div> | | 2559 | </div> |
2560 | <div class="sect1"> | | 2560 | <div class="sect1"> |
2561 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2561 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2562 | <a name="fetching-all-distfiles"></a>9.9. How to fetch all distfiles at once</h2></div></div></div> | | 2562 | <a name="fetching-all-distfiles"></a>9.9. How to fetch all distfiles at once</h2></div></div></div> |
2563 | <p>You would like to download all the distfiles in a single batch | | 2563 | <p>You would like to download all the distfiles in a single batch |
2564 | from work or university, where you can't run a <span class="command"><strong>make | | 2564 | from work or university, where you can't run a <span class="command"><strong>make |
2565 | 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>, | | 2565 | 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>, |
2566 | but downloading the entire directory may not be appropriate.</p> | | 2566 | but downloading the entire directory may not be appropriate.</p> |
2567 | <p>The answer here is to do a <span class="command"><strong>make fetch-list</strong></span> in | | 2567 | <p>The answer here is to do a <span class="command"><strong>make fetch-list</strong></span> in |
2568 | <code class="filename">/usr/pkgsrc</code> or one of its subdirectories, carry the | | 2568 | <code class="filename">/usr/pkgsrc</code> or one of its subdirectories, carry the |
2569 | resulting list to your machine at work/school and use it there. If you | | 2569 | resulting list to your machine at work/school and use it there. If you |
2570 | don't have a NetBSD-compatible <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?ftp+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">ftp</span>(1)</span></a> (like tnftp) at work, don't | | 2570 | don't have a NetBSD-compatible <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?ftp+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">ftp</span>(1)</span></a> (like tnftp) at work, don't |
2571 | forget to set <code class="varname">FETCH_CMD</code> to something that fetches a | | 2571 | forget to set <code class="varname">FETCH_CMD</code> to something that fetches a |
2572 | URL:</p> | | 2572 | URL:</p> |
2573 | <p>At home:</p> | | 2573 | <p>At home:</p> |
2574 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cd /usr/pkgsrc</code></strong> | | 2574 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cd /usr/pkgsrc</code></strong> |
2575 | <code class="prompt">%</code> <strong class="userinput"><code>make fetch-list FETCH_CMD=wget DISTDIR=/tmp/distfiles >/tmp/fetch.sh</code></strong> | | 2575 | <code class="prompt">%</code> <strong class="userinput"><code>make fetch-list FETCH_CMD=wget DISTDIR=/tmp/distfiles >/tmp/fetch.sh</code></strong> |
2576 | <code class="prompt">%</code> <strong class="userinput"><code>scp /tmp/fetch.sh work:/tmp</code></strong></pre> | | 2576 | <code class="prompt">%</code> <strong class="userinput"><code>scp /tmp/fetch.sh work:/tmp</code></strong></pre> |
2577 | <p>At work:</p> | | 2577 | <p>At work:</p> |
2578 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>sh /tmp/fetch.sh</code></strong></pre> | | 2578 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>sh /tmp/fetch.sh</code></strong></pre> |
2579 | <p>then tar up <code class="filename">/tmp/distfiles</code> and take it | | 2579 | <p>then tar up <code class="filename">/tmp/distfiles</code> and take it |
2580 | home.</p> | | 2580 | home.</p> |
2581 | <p>If you have a machine running NetBSD, and you want to get | | 2581 | <p>If you have a machine running NetBSD, and you want to get |
2582 | <span class="emphasis"><em>all</em></span> distfiles (even ones that aren't for your | | 2582 | <span class="emphasis"><em>all</em></span> distfiles (even ones that aren't for your |
2583 | machine architecture), you can do so by using the above-mentioned | | 2583 | machine architecture), you can do so by using the above-mentioned |
2584 | <span class="command"><strong>make fetch-list</strong></span> approach, or fetch the distfiles | | 2584 | <span class="command"><strong>make fetch-list</strong></span> approach, or fetch the distfiles |
2585 | directly by running:</p> | | 2585 | directly by running:</p> |
2586 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make mirror-distfiles</code></strong></pre> | | 2586 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make mirror-distfiles</code></strong></pre> |
2587 | <p>If you even decide to ignore | | 2587 | <p>If you even decide to ignore |
2588 | <code class="varname">NO_{SRC,BIN}_ON_{FTP,CDROM}</code>, then you can get everything | | 2588 | <code class="varname">NO_{SRC,BIN}_ON_{FTP,CDROM}</code>, then you can get everything |
2589 | by running:</p> | | 2589 | by running:</p> |
2590 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make fetch NO_SKIP=yes</code></strong></pre> | | 2590 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make fetch NO_SKIP=yes</code></strong></pre> |
2591 | </div> | | 2591 | </div> |
2592 | <div class="sect1"> | | 2592 | <div class="sect1"> |
2593 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2593 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2594 | <a name="tmac.andoc-missing"></a>9.10. What does <span class="quote">“<span class="quote">Don't know how to make | | 2594 | <a name="tmac.andoc-missing"></a>9.10. What does <span class="quote">“<span class="quote">Don't know how to make |
2595 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</h2></div></div></div> | | 2595 | /usr/share/tmac/tmac.andoc</span>”</span> mean?</h2></div></div></div> |
2596 | <p>When compiling the <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a> | | 2596 | <p>When compiling the <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a> |
2597 | package, you get the error from make that it doesn't know how to make | | 2597 | package, you get the error from make that it doesn't know how to make |
2598 | <code class="filename">/usr/share/tmac/tmac.andoc</code>? This indicates that | | 2598 | <code class="filename">/usr/share/tmac/tmac.andoc</code>? This indicates that |
2599 | you don't have installed the <span class="quote">“<span class="quote">text</span>”</span> set (nroff, ...) from | | 2599 | you don't have installed the <span class="quote">“<span class="quote">text</span>”</span> set (nroff, ...) from |
2600 | the NetBSD base distribution on your machine. It is recommended to do | | 2600 | the NetBSD base distribution on your machine. It is recommended to do |
2601 | that to format man pages.</p> | | 2601 | that to format man pages.</p> |
2602 | <p>In the case of the <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a> package, you | | 2602 | <p>In the case of the <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a> package, you |
2603 | can get away with setting <code class="varname">NOMAN=YES</code> either in the | | 2603 | can get away with setting <code class="varname">NOMAN=YES</code> either in the |
2604 | environment or in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p> | | 2604 | environment or in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p> |
2605 | </div> | | 2605 | </div> |
2606 | <div class="sect1"> | | 2606 | <div class="sect1"> |
2607 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2607 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2608 | <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> | | 2608 | <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> |
2609 | <p>You didn't install the compiler set, <code class="filename">comp.tgz</code>, | | 2609 | <p>You didn't install the compiler set, <code class="filename">comp.tgz</code>, |
2610 | when you installed your NetBSD machine. Please get and install it, by | | 2610 | when you installed your NetBSD machine. Please get and install it, by |
2611 | extracting it in <code class="filename">/</code>:</p> | | 2611 | extracting it in <code class="filename">/</code>:</p> |
2612 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>cd /</code></strong> | | 2612 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>cd /</code></strong> |
2613 | <code class="prompt">#</code> <strong class="userinput"><code>tar --unlink -zxvpf .../comp.tgz</code></strong></pre> | | 2613 | <code class="prompt">#</code> <strong class="userinput"><code>tar --unlink -zxvpf .../comp.tgz</code></strong></pre> |
2614 | <p><code class="filename">comp.tgz</code> is part of every NetBSD release. Get | | 2614 | <p><code class="filename">comp.tgz</code> is part of every NetBSD release. Get |
2615 | the one that corresponds to your release (determine via <span class="command"><strong>uname | | 2615 | the one that corresponds to your release (determine via <span class="command"><strong>uname |
2616 | -r</strong></span>).</p> | | 2616 | -r</strong></span>).</p> |
2617 | </div> | | 2617 | </div> |
2618 | <div class="sect1"> | | 2618 | <div class="sect1"> |
2619 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2619 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2620 | <a name="using-sudo-with-pkgsrc"></a>9.12. Using 'sudo' with pkgsrc</h2></div></div></div> | | 2620 | <a name="using-sudo-with-pkgsrc"></a>9.12. Using 'sudo' with pkgsrc</h2></div></div></div> |
2621 | <p>When installing packages as non-root user and using the just-in-time | | 2621 | <p>When installing packages as non-root user and using the just-in-time |
2622 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?su+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">su</span>(1)</span></a> feature of pkgsrc, it can become annoying to type in the root | | 2622 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?su+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">su</span>(1)</span></a> feature of pkgsrc, it can become annoying to type in the root |
2623 | password for each required package installed. To avoid this, the sudo | | 2623 | password for each required package installed. To avoid this, the sudo |
2624 | package can be used, which does password caching over a limited time. To | | 2624 | package can be used, which does password caching over a limited time. To |
2625 | use it, install sudo (either as binary package or from | | 2625 | use it, install sudo (either as binary package or from |
2626 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/security/sudo/README.html" target="_top"><code class="filename">security/sudo</code></a>) and then put the | | 2626 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/security/sudo/README.html" target="_top"><code class="filename">security/sudo</code></a>) and then put the |
2627 | following into your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>, somewhere | | 2627 | following into your <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>, somewhere |
2628 | <span class="emphasis"><em>after</em></span> the definition of the | | 2628 | <span class="emphasis"><em>after</em></span> the definition of the |
2629 | <code class="varname">LOCALBASE</code> variable:</p> | | 2629 | <code class="varname">LOCALBASE</code> variable:</p> |
2630 | <pre class="programlisting"> | | 2630 | <pre class="programlisting"> |
2631 | .if exists(${LOCALBASE}/bin/sudo) | | 2631 | .if exists(${LOCALBASE}/bin/sudo) |
2632 | SU_CMD= ${LOCALBASE}/bin/sudo /bin/sh -c | | 2632 | SU_CMD= ${LOCALBASE}/bin/sudo /bin/sh -c |
2633 | .endif | | 2633 | .endif |
2634 | </pre> | | 2634 | </pre> |
2635 | </div> | | 2635 | </div> |
2636 | <div class="sect1"> | | 2636 | <div class="sect1"> |
2637 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2637 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2638 | <a name="faq.conf"></a>9.13. How do I change the location of configuration files?</h2></div></div></div> | | 2638 | <a name="faq.conf"></a>9.13. How do I change the location of configuration files?</h2></div></div></div> |
2639 | <p>As the system administrator, you can choose where configuration files | | 2639 | <p>As the system administrator, you can choose where configuration files |
2640 | are installed. The default settings make all these files go into | | 2640 | are installed. The default settings make all these files go into |
2641 | <code class="filename">${PREFIX}/etc</code> or some of its subdirectories; this may | | 2641 | <code class="filename">${PREFIX}/etc</code> or some of its subdirectories; this may |
2642 | be suboptimal depending on your expectations (e.g., a read-only, | | 2642 | be suboptimal depending on your expectations (e.g., a read-only, |
2643 | NFS-exported <code class="varname">PREFIX</code> with a need of per-machine | | 2643 | NFS-exported <code class="varname">PREFIX</code> with a need of per-machine |
2644 | configuration of the provided packages).</p> | | 2644 | configuration of the provided packages).</p> |
2645 | <p>In order to change the defaults, you can modify the | | 2645 | <p>In order to change the defaults, you can modify the |
2646 | <code class="varname">PKG_SYSCONFBASE</code> variable (in | | 2646 | <code class="varname">PKG_SYSCONFBASE</code> variable (in |
2647 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>) to point to your preferred configuration | | 2647 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>) to point to your preferred configuration |
2648 | directory; some common examples include <code class="filename">/etc</code> or | | 2648 | directory; some common examples include <code class="filename">/etc</code> or |
2649 | <code class="filename">/etc/pkg</code>.</p> | | 2649 | <code class="filename">/etc/pkg</code>.</p> |
2650 | <p>Furthermore, you can change this value on a per-package basis by | | 2650 | <p>Furthermore, you can change this value on a per-package basis by |
2651 | setting the <code class="varname">PKG_SYSCONFDIR.${PKG_SYSCONFVAR}</code> variable. | | 2651 | setting the <code class="varname">PKG_SYSCONFDIR.${PKG_SYSCONFVAR}</code> variable. |
2652 | <code class="varname">PKG_SYSCONFVAR</code>'s value usually matches the name of the | | 2652 | <code class="varname">PKG_SYSCONFVAR</code>'s value usually matches the name of the |
2653 | package you would like to modify, that is, the contents of | | 2653 | package you would like to modify, that is, the contents of |
2654 | <code class="varname">PKGBASE</code>.</p> | | 2654 | <code class="varname">PKGBASE</code>.</p> |
2655 | <p>Note that after changing these settings, you must rebuild and | | 2655 | <p>Note that after changing these settings, you must rebuild and |
2656 | reinstall any affected packages.</p> | | 2656 | reinstall any affected packages.</p> |
2657 | </div> | | 2657 | </div> |
2658 | <div class="sect1"> | | 2658 | <div class="sect1"> |
2659 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2659 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2660 | <a name="audit-packages"></a>9.14. Automated security checks</h2></div></div></div> | | 2660 | <a name="audit-packages"></a>9.14. Automated security checks</h2></div></div></div> |
2661 | <p>Please be aware that there can often be bugs in third-party software, | | 2661 | <p>Please be aware that there can often be bugs in third-party software, |
2662 | and some of these bugs can leave a machine vulnerable to exploitation by | | 2662 | and some of these bugs can leave a machine vulnerable to exploitation by |
2663 | attackers. In an effort to lessen the exposure, the NetBSD packages team | | 2663 | attackers. In an effort to lessen the exposure, the NetBSD packages team |
2664 | maintains a database of known-exploits to packages which have at one time | | 2664 | maintains a database of known-exploits to packages which have at one time |
2665 | been included in pkgsrc. The database can be downloaded automatically, and | | 2665 | been included in pkgsrc. The database can be downloaded automatically, and |
2666 | a security audit of all packages installed on a system can take place. To | | 2666 | a security audit of all packages installed on a system can take place. To |
2667 | do this, refer to the following two tools (installed as part of the | | 2667 | do this, refer to the following two tools (installed as part of the |
2668 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a> package):</p> | | 2668 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_install/README.html" target="_top"><code class="filename">pkgtools/pkg_install</code></a> package):</p> |
2669 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 2669 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
2670 | <li class="listitem"> | | 2670 | <li class="listitem"> |
2671 | <p><span class="command"><strong>pkg_admin fetch-pkg-vulnerabilities</strong></span>, an easy way to | | 2671 | <p><span class="command"><strong>pkg_admin fetch-pkg-vulnerabilities</strong></span>, an easy way to |
2672 | download a list of the security vulnerabilities information. This list | | 2672 | download a list of the security vulnerabilities information. This list |
2673 | is kept up to date by the pkgsrc security team, and is distributed | | 2673 | is kept up to date by the pkgsrc security team, and is distributed |
2674 | from the NetBSD ftp server:</p> | | 2674 | from the NetBSD ftp server:</p> |
2675 | <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> | | 2675 | <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> |
2676 | </li> | | 2676 | </li> |
2677 | <li class="listitem"><p><span class="command"><strong>pkg_admin audit</strong></span>, an easy way to audit the | | 2677 | <li class="listitem"><p><span class="command"><strong>pkg_admin audit</strong></span>, an easy way to audit the |
2678 | current machine, checking each known vulnerability. If a | | 2678 | current machine, checking each known vulnerability. If a |
2679 | vulnerable package is installed, it will be shown by output to stdout, | | 2679 | vulnerable package is installed, it will be shown by output to stdout, |
2680 | including a description of the type of vulnerability, and a URL | | 2680 | including a description of the type of vulnerability, and a URL |
2681 | containing more information.</p></li> | | 2681 | containing more information.</p></li> |
2682 | </ol></div> | | 2682 | </ol></div> |
2683 | <p>Use of these tools is strongly recommended! | | 2683 | <p>Use of these tools is strongly recommended! |
2684 | See <a class="xref" href="#vulnerabilities" title="4.1.5. Checking for security vulnerabilities in installed packages">Section 4.1.5, “Checking for security vulnerabilities in installed packages”</a> for instructions on how to automate checking and | | 2684 | See <a class="xref" href="#vulnerabilities" title="4.1.5. Checking for security vulnerabilities in installed packages">Section 4.1.5, “Checking for security vulnerabilities in installed packages”</a> for instructions on how to automate checking and |
2685 | reporting.</p> | | 2685 | reporting.</p> |
2686 | <p>If this database is installed, pkgsrc builds will use it to | | 2686 | <p>If this database is installed, pkgsrc builds will use it to |
2687 | perform a security check before building any package.</p> | | 2687 | perform a security check before building any package.</p> |
2688 | </div> | | 2688 | </div> |
2689 | <div class="sect1"> | | 2689 | <div class="sect1"> |
2690 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2690 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2691 | <a name="ufaq-cflags"></a>9.15. Why do some packages ignore my <code class="varname">CFLAGS</code>?</h2></div></div></div> | | 2691 | <a name="ufaq-cflags"></a>9.15. Why do some packages ignore my <code class="varname">CFLAGS</code>?</h2></div></div></div> |
2692 | <p>When you add your own preferences to the | | 2692 | <p>When you add your own preferences to the |
2693 | <code class="varname">CFLAGS</code> variable in your | | 2693 | <code class="varname">CFLAGS</code> variable in your |
2694 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>, these flags are passed in | | 2694 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>, these flags are passed in |
2695 | environment variables to the <code class="filename">./configure</code> | | 2695 | environment variables to the <code class="filename">./configure</code> |
2696 | scripts and to <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a>. Some package authors ignore the | | 2696 | scripts and to <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a>. Some package authors ignore the |
2697 | <code class="varname">CFLAGS</code> from the environment variable by | | 2697 | <code class="varname">CFLAGS</code> from the environment variable by |
2698 | overriding them in the <code class="filename">Makefile</code>s of their | | 2698 | overriding them in the <code class="filename">Makefile</code>s of their |
2699 | package.</p> | | 2699 | package.</p> |
2700 | <p>Currently there is no solution to this problem. If you | | 2700 | <p>Currently there is no solution to this problem. If you |
2701 | really need the package to use your <code class="varname">CFLAGS</code> | | 2701 | really need the package to use your <code class="varname">CFLAGS</code> |
2702 | you should run <span class="command"><strong>make patch</strong></span> in the package | | 2702 | you should run <span class="command"><strong>make patch</strong></span> in the package |
2703 | directory and then inspect any <code class="filename">Makefile</code> and | | 2703 | directory and then inspect any <code class="filename">Makefile</code> and |
2704 | <code class="filename">Makefile.in</code> for whether they define | | 2704 | <code class="filename">Makefile.in</code> for whether they define |
2705 | <code class="varname">CFLAGS</code> explicitly. Usually you can remove | | 2705 | <code class="varname">CFLAGS</code> explicitly. Usually you can remove |
2706 | these lines. But be aware that some <span class="quote">“<span class="quote">smart</span>”</span> | | 2706 | these lines. But be aware that some <span class="quote">“<span class="quote">smart</span>”</span> |
2707 | programmers write so bad code that it only works for the | | 2707 | programmers write so bad code that it only works for the |
2708 | specific combination of <code class="varname">CFLAGS</code> they have | | 2708 | specific combination of <code class="varname">CFLAGS</code> they have |
2709 | chosen.</p> | | 2709 | chosen.</p> |
2710 | </div> | | 2710 | </div> |
2711 | <div class="sect1"> | | 2711 | <div class="sect1"> |
2712 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2712 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2713 | <a name="ufaq-fail"></a>9.16. A package does not build. What shall I do?</h2></div></div></div> | | 2713 | <a name="ufaq-fail"></a>9.16. A package does not build. What shall I do?</h2></div></div></div> |
2714 | <div class="procedure"><ol class="procedure" type="1"> | | 2714 | <div class="procedure"><ol class="procedure" type="1"> |
2715 | <li class="step"><p>Make sure that your copy of pkgsrc is consistent. A | | 2715 | <li class="step"><p>Make sure that your copy of pkgsrc is consistent. A |
2716 | case that occurs often is that people only update pkgsrc in | | 2716 | case that occurs often is that people only update pkgsrc in |
2717 | parts, because of performance reasons. Since pkgsrc is one large | | 2717 | parts, because of performance reasons. Since pkgsrc is one large |
2718 | system, not a collection of many small systems, there are | | 2718 | system, not a collection of many small systems, there are |
2719 | sometimes changes that only work when the whole pkgsrc tree is | | 2719 | sometimes changes that only work when the whole pkgsrc tree is |
2720 | updated.</p></li> | | 2720 | updated.</p></li> |
2721 | <li class="step"><p>Make sure that you don't have any CVS conflicts. | | 2721 | <li class="step"><p>Make sure that you don't have any CVS conflicts. |
2722 | Search for <span class="quote">“<span class="quote"><<<<<<</span>”</span> or | | 2722 | Search for <span class="quote">“<span class="quote"><<<<<<</span>”</span> or |
2723 | <span class="quote">“<span class="quote">>>>>>></span>”</span> in all your pkgsrc | | 2723 | <span class="quote">“<span class="quote">>>>>>></span>”</span> in all your pkgsrc |
2724 | files.</p></li> | | 2724 | files.</p></li> |
2725 | <li class="step"><p>Make sure that you don't have old copies of the packages | | 2725 | <li class="step"><p>Make sure that you don't have old copies of the packages |
2726 | extracted. Run <span class="command"><strong>make clean clean-depends</strong></span> to | | 2726 | extracted. Run <span class="command"><strong>make clean clean-depends</strong></span> to |
2727 | verify this.</p></li> | | 2727 | verify this.</p></li> |
2728 | <li class="step"><p>If you are a package developer who wants to invest | | 2728 | <li class="step"><p>If you are a package developer who wants to invest |
2729 | some work, have a look at <a class="xref" href="#fixes" title="Chapter 19. Making your package work">Chapter 19, <i>Making your package work</i></a>.</p></li> | | 2729 | some work, have a look at <a class="xref" href="#fixes" title="Chapter 19. Making your package work">Chapter 19, <i>Making your package work</i></a>.</p></li> |
2730 | <li class="step"><p>If the problem still exists, write a mail to the | | 2730 | <li class="step"><p>If the problem still exists, write a mail to the |
2731 | <code class="literal">pkgsrc-users</code> mailing list.</p></li> | | 2731 | <code class="literal">pkgsrc-users</code> mailing list.</p></li> |
2732 | </ol></div> | | 2732 | </ol></div> |
2733 | </div> | | 2733 | </div> |
2734 | <div class="sect1"> | | 2734 | <div class="sect1"> |
2735 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 2735 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
2736 | <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> | | 2736 | <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> |
2737 | <p>You have modified a file from pkgsrc, and someone else has | | 2737 | <p>You have modified a file from pkgsrc, and someone else has |
2738 | modified that same file afterwards in the CVS repository. Both changes | | 2738 | modified that same file afterwards in the CVS repository. Both changes |
2739 | are in the same region of the file, so when you updated pkgsrc, the | | 2739 | are in the same region of the file, so when you updated pkgsrc, the |
2740 | <code class="literal">cvs</code> command marked the conflicting changes in the | | 2740 | <code class="literal">cvs</code> command marked the conflicting changes in the |
2741 | file. Because of these markers, the file is no longer a valid | | 2741 | file. Because of these markers, the file is no longer a valid |
2742 | <code class="filename">Makefile</code>.</p> | | 2742 | <code class="filename">Makefile</code>.</p> |
2743 | <p>Have a look at that file, and if you don't need your local changes | | 2743 | <p>Have a look at that file, and if you don't need your local changes |
2744 | anymore, you can remove that file and run <span class="command"><strong>cvs -q update | | 2744 | anymore, you can remove that file and run <span class="command"><strong>cvs -q update |
2745 | -dP</strong></span> in that directory to download the current version.</p> | | 2745 | -dP</strong></span> in that directory to download the current version.</p> |
2746 | </div> | | 2746 | </div> |
2747 | </div> | | 2747 | </div> |
2748 | </div> | | 2748 | </div> |
2749 | <div class="part"> | | 2749 | <div class="part"> |
2750 | <div class="titlepage"><div><div><h1 class="title"> | | 2750 | <div class="titlepage"><div><div><h1 class="title"> |
2751 | <a name="developers-guide"></a>Part II. The pkgsrc developer's guide</h1></div></div></div> | | 2751 | <a name="developers-guide"></a>Part II. The pkgsrc developer's guide</h1></div></div></div> |
2752 | <div class="partintro"> | | 2752 | <div class="partintro"> |
2753 | <div></div> | | 2753 | <div></div> |
2754 | <p>This part of the book deals with creating and | | 2754 | <p>This part of the book deals with creating and |
2755 | modifying packages. It starts with a <span class="quote">“<span class="quote">HOWTO</span>”</span>-like | | 2755 | modifying packages. It starts with a <span class="quote">“<span class="quote">HOWTO</span>”</span>-like |
2756 | guide on creating a new package. The remaining chapters are more | | 2756 | guide on creating a new package. The remaining chapters are more |
2757 | like a reference manual for pkgsrc.</p> | | 2757 | like a reference manual for pkgsrc.</p> |
2758 | <div class="toc"> | | 2758 | <div class="toc"> |
2759 | <p><b>Table of Contents</b></p> | | 2759 | <p><b>Table of Contents</b></p> |
2760 | <dl class="toc"> | | 2760 | <dl class="toc"> |
2761 | <dt><span class="chapter"><a href="#creating">10. Creating a new pkgsrc package from scratch</a></span></dt> | | 2761 | <dt><span class="chapter"><a href="#creating">10. Creating a new pkgsrc package from scratch</a></span></dt> |
2762 | <dd><dl> | | 2762 | <dd><dl> |
2763 | <dt><span class="sect1"><a href="#creating.common">10.1. Common types of packages</a></span></dt> | | 2763 | <dt><span class="sect1"><a href="#creating.common">10.1. Common types of packages</a></span></dt> |
2764 | <dd><dl> | | 2764 | <dd><dl> |
2765 | <dt><span class="sect2"><a href="#creating.perl-module">10.1.1. Perl modules</a></span></dt> | | 2765 | <dt><span class="sect2"><a href="#creating.perl-module">10.1.1. Perl modules</a></span></dt> |
2766 | <dt><span class="sect2"><a href="#creating.python-module">10.1.2. Python modules and programs</a></span></dt> | | 2766 | <dt><span class="sect2"><a href="#creating.python-module">10.1.2. Python modules and programs</a></span></dt> |
2767 | </dl></dd> | | 2767 | </dl></dd> |
2768 | <dt><span class="sect1"><a href="#creating.examples">10.2. Examples</a></span></dt> | | 2768 | <dt><span class="sect1"><a href="#creating.examples">10.2. Examples</a></span></dt> |
2769 | <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> | | 2769 | <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> |
2770 | </dl></dd> | | 2770 | </dl></dd> |
2771 | <dt><span class="chapter"><a href="#components">11. Package components - files, directories and contents</a></span></dt> | | 2771 | <dt><span class="chapter"><a href="#components">11. Package components - files, directories and contents</a></span></dt> |
2772 | <dd><dl> | | 2772 | <dd><dl> |
2773 | <dt><span class="sect1"><a href="#components.Makefile">11.1. <code class="filename">Makefile</code></a></span></dt> | | 2773 | <dt><span class="sect1"><a href="#components.Makefile">11.1. <code class="filename">Makefile</code></a></span></dt> |
2774 | <dt><span class="sect1"><a href="#components.distinfo">11.2. <code class="filename">distinfo</code></a></span></dt> | | 2774 | <dt><span class="sect1"><a href="#components.distinfo">11.2. <code class="filename">distinfo</code></a></span></dt> |
2775 | <dt><span class="sect1"><a href="#components.patches">11.3. <code class="filename">patches/*</code></a></span></dt> | | 2775 | <dt><span class="sect1"><a href="#components.patches">11.3. <code class="filename">patches/*</code></a></span></dt> |
2776 | <dd><dl> | | 2776 | <dd><dl> |
2777 | <dt><span class="sect2"><a href="#components.patch.structure">11.3.1. Structure of a single patch file</a></span></dt> | | 2777 | <dt><span class="sect2"><a href="#components.patch.structure">11.3.1. Structure of a single patch file</a></span></dt> |
2778 | <dt><span class="sect2"><a href="#components.patches.caveats">11.3.2. Creating patch files</a></span></dt> | | 2778 | <dt><span class="sect2"><a href="#components.patches.caveats">11.3.2. Creating patch files</a></span></dt> |
2779 | <dt><span class="sect2"><a href="#components.patches.sources">11.3.3. Sources where the patch files come from</a></span></dt> | | 2779 | <dt><span class="sect2"><a href="#components.patches.sources">11.3.3. Sources where the patch files come from</a></span></dt> |
2780 | <dt><span class="sect2"><a href="#components.patches.guidelines">11.3.4. Patching guidelines</a></span></dt> | | 2780 | <dt><span class="sect2"><a href="#components.patches.guidelines">11.3.4. Patching guidelines</a></span></dt> |
2781 | <dt><span class="sect2"><a href="#components.patches.feedback">11.3.5. Feedback to the author</a></span></dt> | | 2781 | <dt><span class="sect2"><a href="#components.patches.feedback">11.3.5. Feedback to the author</a></span></dt> |
2782 | </dl></dd> | | 2782 | </dl></dd> |
2783 | <dt><span class="sect1"><a href="#other-mandatory-files">11.4. Other mandatory files</a></span></dt> | | 2783 | <dt><span class="sect1"><a href="#other-mandatory-files">11.4. Other mandatory files</a></span></dt> |
2784 | <dt><span class="sect1"><a href="#components.optional">11.5. Optional files</a></span></dt> | | 2784 | <dt><span class="sect1"><a href="#components.optional">11.5. Optional files</a></span></dt> |
2785 | <dd><dl> | | 2785 | <dd><dl> |
2786 | <dt><span class="sect2"><a href="#components.optional.bin">11.5.1. Files affecting the binary package</a></span></dt> | | 2786 | <dt><span class="sect2"><a href="#components.optional.bin">11.5.1. Files affecting the binary package</a></span></dt> |
2787 | <dt><span class="sect2"><a href="#components.optional.build">11.5.2. Files affecting the build process</a></span></dt> | | 2787 | <dt><span class="sect2"><a href="#components.optional.build">11.5.2. Files affecting the build process</a></span></dt> |
2788 | <dt><span class="sect2"><a href="#components.optional.none">11.5.3. Files affecting nothing at all</a></span></dt> | | 2788 | <dt><span class="sect2"><a href="#components.optional.none">11.5.3. Files affecting nothing at all</a></span></dt> |
2789 | </dl></dd> | | 2789 | </dl></dd> |
2790 | <dt><span class="sect1"><a href="#work-dir">11.6. <code class="filename">work*</code></a></span></dt> | | 2790 | <dt><span class="sect1"><a href="#work-dir">11.6. <code class="filename">work*</code></a></span></dt> |
2791 | <dt><span class="sect1"><a href="#files-dir">11.7. <code class="filename">files/*</code></a></span></dt> | | 2791 | <dt><span class="sect1"><a href="#files-dir">11.7. <code class="filename">files/*</code></a></span></dt> |
2792 | </dl></dd> | | 2792 | </dl></dd> |
2793 | <dt><span class="chapter"><a href="#makefile">12. Programming in <code class="filename">Makefile</code>s</a></span></dt> | | 2793 | <dt><span class="chapter"><a href="#makefile">12. Programming in <code class="filename">Makefile</code>s</a></span></dt> |
2794 | <dd><dl> | | 2794 | <dd><dl> |
2795 | <dt><span class="sect1"><a href="#makefile.style">12.1. Caveats</a></span></dt> | | 2795 | <dt><span class="sect1"><a href="#makefile.style">12.1. Caveats</a></span></dt> |
2796 | <dt><span class="sect1"><a href="#makefile.variables">12.2. <code class="filename">Makefile</code> variables</a></span></dt> | | 2796 | <dt><span class="sect1"><a href="#makefile.variables">12.2. <code class="filename">Makefile</code> variables</a></span></dt> |
2797 | <dd><dl><dt><span class="sect2"><a href="#makefile.variables.names">12.2.1. Naming conventions</a></span></dt></dl></dd> | | 2797 | <dd><dl><dt><span class="sect2"><a href="#makefile.variables.names">12.2.1. Naming conventions</a></span></dt></dl></dd> |
2798 | <dt><span class="sect1"><a href="#makefile.code">12.3. Code snippets</a></span></dt> | | 2798 | <dt><span class="sect1"><a href="#makefile.code">12.3. Code snippets</a></span></dt> |
2799 | <dd><dl> | | 2799 | <dd><dl> |
2800 | <dt><span class="sect2"><a href="#adding-to-list">12.3.1. Adding things to a list</a></span></dt> | | 2800 | <dt><span class="sect2"><a href="#adding-to-list">12.3.1. Adding things to a list</a></span></dt> |
2801 | <dt><span class="sect2"><a href="#echo-literal">12.3.2. Echoing a string exactly as-is</a></span></dt> | | 2801 | <dt><span class="sect2"><a href="#echo-literal">12.3.2. Echoing a string exactly as-is</a></span></dt> |
2802 | <dt><span class="sect2"><a href="#cflags-gnu-configure">12.3.3. Passing <code class="varname">CFLAGS</code> to GNU configure scripts</a></span></dt> | | 2802 | <dt><span class="sect2"><a href="#cflags-gnu-configure">12.3.3. Passing <code class="varname">CFLAGS</code> to GNU configure scripts</a></span></dt> |
2803 | <dt><span class="sect2"><a href="#empty-variables">12.3.4. Handling possibly empty variables</a></span></dt> | | 2803 | <dt><span class="sect2"><a href="#empty-variables">12.3.4. Handling possibly empty variables</a></span></dt> |
2804 | </dl></dd> | | 2804 | </dl></dd> |
2805 | </dl></dd> | | 2805 | </dl></dd> |
2806 | <dt><span class="chapter"><a href="#plist">13. PLIST issues</a></span></dt> | | 2806 | <dt><span class="chapter"><a href="#plist">13. PLIST issues</a></span></dt> |
2807 | <dd><dl> | | 2807 | <dd><dl> |
2808 | <dt><span class="sect1"><a href="#rcs-id">13.1. RCS ID</a></span></dt> | | 2808 | <dt><span class="sect1"><a href="#rcs-id">13.1. RCS ID</a></span></dt> |
2809 | <dt><span class="sect1"><a href="#automatic-plist-generation">13.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> | | 2809 | <dt><span class="sect1"><a href="#automatic-plist-generation">13.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> |
2810 | <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> | | 2810 | <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> |
2811 | <dt><span class="sect1"><a href="#plist.misc">13.4. Variable substitution in PLIST</a></span></dt> | | 2811 | <dt><span class="sect1"><a href="#plist.misc">13.4. Variable substitution in PLIST</a></span></dt> |
2812 | <dt><span class="sect1"><a href="#manpage-compression">13.5. Man page compression</a></span></dt> | | 2812 | <dt><span class="sect1"><a href="#manpage-compression">13.5. Man page compression</a></span></dt> |
2813 | <dt><span class="sect1"><a href="#using-PLIST_SRC">13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code></a></span></dt> | | 2813 | <dt><span class="sect1"><a href="#using-PLIST_SRC">13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code></a></span></dt> |
2814 | <dt><span class="sect1"><a href="#platform-specific-plist">13.7. Platform-specific and differing PLISTs</a></span></dt> | | 2814 | <dt><span class="sect1"><a href="#platform-specific-plist">13.7. Platform-specific and differing PLISTs</a></span></dt> |
2815 | <dt><span class="sect1"><a href="#build-plist">13.8. Build-specific PLISTs</a></span></dt> | | 2815 | <dt><span class="sect1"><a href="#build-plist">13.8. Build-specific PLISTs</a></span></dt> |
2816 | <dt><span class="sect1"><a href="#faq.common-dirs">13.9. Sharing directories between packages</a></span></dt> | | 2816 | <dt><span class="sect1"><a href="#faq.common-dirs">13.9. Sharing directories between packages</a></span></dt> |
2817 | </dl></dd> | | 2817 | </dl></dd> |
2818 | <dt><span class="chapter"><a href="#buildlink">14. Buildlink methodology</a></span></dt> | | 2818 | <dt><span class="chapter"><a href="#buildlink">14. Buildlink methodology</a></span></dt> |
2819 | <dd><dl> | | 2819 | <dd><dl> |
2820 | <dt><span class="sect1"><a href="#converting-to-buildlink3">14.1. Converting packages to use buildlink3</a></span></dt> | | 2820 | <dt><span class="sect1"><a href="#converting-to-buildlink3">14.1. Converting packages to use buildlink3</a></span></dt> |
2821 | <dt><span class="sect1"><a href="#creating-buildlink3.mk">14.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> | | 2821 | <dt><span class="sect1"><a href="#creating-buildlink3.mk">14.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> |
2822 | <dd><dl> | | 2822 | <dd><dl> |
2823 | <dt><span class="sect2"><a href="#anatomy-of-bl3">14.2.1. Anatomy of a buildlink3.mk file</a></span></dt> | | 2823 | <dt><span class="sect2"><a href="#anatomy-of-bl3">14.2.1. Anatomy of a buildlink3.mk file</a></span></dt> |
2824 | <dt><span class="sect2"><a href="#updating-buildlink-depends">14.2.2. Updating | | 2824 | <dt><span class="sect2"><a href="#updating-buildlink-depends">14.2.2. Updating |
2825 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 2825 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
2826 | and | | 2826 | and |
2827 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 2827 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
2828 | in <code class="filename">buildlink3.mk</code> files</a></span></dt> | | 2828 | in <code class="filename">buildlink3.mk</code> files</a></span></dt> |
2829 | </dl></dd> | | 2829 | </dl></dd> |
2830 | <dt><span class="sect1"><a href="#writing-builtin.mk">14.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> | | 2830 | <dt><span class="sect1"><a href="#writing-builtin.mk">14.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> |
2831 | <dd><dl> | | 2831 | <dd><dl> |
2832 | <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> | | 2832 | <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> |
2833 | <dt><span class="sect2"><a href="#native-or-pkgsrc-preference">14.3.2. Global preferences for native or pkgsrc software</a></span></dt> | | 2833 | <dt><span class="sect2"><a href="#native-or-pkgsrc-preference">14.3.2. Global preferences for native or pkgsrc software</a></span></dt> |
2834 | </dl></dd> | | 2834 | </dl></dd> |
2835 | </dl></dd> | | 2835 | </dl></dd> |
2836 | <dt><span class="chapter"><a href="#pkginstall">15. The pkginstall framework</a></span></dt> | | 2836 | <dt><span class="chapter"><a href="#pkginstall">15. The pkginstall framework</a></span></dt> |
2837 | <dd><dl> | | 2837 | <dd><dl> |
2838 | <dt><span class="sect1"><a href="#files-and-dirs-outside-prefix">15.1. Files and directories outside the installation prefix</a></span></dt> | | 2838 | <dt><span class="sect1"><a href="#files-and-dirs-outside-prefix">15.1. Files and directories outside the installation prefix</a></span></dt> |
2839 | <dd><dl> | | 2839 | <dd><dl> |
2840 | <dt><span class="sect2"><a href="#dirs-outside-prefix">15.1.1. Directory manipulation</a></span></dt> | | 2840 | <dt><span class="sect2"><a href="#dirs-outside-prefix">15.1.1. Directory manipulation</a></span></dt> |
2841 | <dt><span class="sect2"><a href="#files-outside-prefix">15.1.2. File manipulation</a></span></dt> | | 2841 | <dt><span class="sect2"><a href="#files-outside-prefix">15.1.2. File manipulation</a></span></dt> |
2842 | </dl></dd> | | 2842 | </dl></dd> |
2843 | <dt><span class="sect1"><a href="#conf-files">15.2. Configuration files</a></span></dt> | | 2843 | <dt><span class="sect1"><a href="#conf-files">15.2. Configuration files</a></span></dt> |
2844 | <dd><dl> | | 2844 | <dd><dl> |
2845 | <dt><span class="sect2"><a href="#conf-files-sysconfdir">15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</a></span></dt> | | 2845 | <dt><span class="sect2"><a href="#conf-files-sysconfdir">15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</a></span></dt> |
2846 | <dt><span class="sect2"><a href="#conf-files-configure">15.2.2. Telling the software where configuration files are</a></span></dt> | | 2846 | <dt><span class="sect2"><a href="#conf-files-configure">15.2.2. Telling the software where configuration files are</a></span></dt> |
2847 | <dt><span class="sect2"><a href="#conf-files-patching">15.2.3. Patching installations</a></span></dt> | | 2847 | <dt><span class="sect2"><a href="#conf-files-patching">15.2.3. Patching installations</a></span></dt> |
2848 | <dt><span class="sect2"><a href="#conf-files-disable">15.2.4. Disabling handling of configuration files</a></span></dt> | | 2848 | <dt><span class="sect2"><a href="#conf-files-disable">15.2.4. Disabling handling of configuration files</a></span></dt> |
2849 | </dl></dd> | | 2849 | </dl></dd> |
2850 | <dt><span class="sect1"><a href="#rcd-scripts">15.3. System startup scripts</a></span></dt> | | 2850 | <dt><span class="sect1"><a href="#rcd-scripts">15.3. System startup scripts</a></span></dt> |
2851 | <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> | | 2851 | <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> |
2852 | <dt><span class="sect1"><a href="#users-and-groups">15.4. System users and groups</a></span></dt> | | 2852 | <dt><span class="sect1"><a href="#users-and-groups">15.4. System users and groups</a></span></dt> |
2853 | <dt><span class="sect1"><a href="#shells">15.5. System shells</a></span></dt> | | 2853 | <dt><span class="sect1"><a href="#shells">15.5. System shells</a></span></dt> |
2854 | <dd><dl><dt><span class="sect2"><a href="#shells-disable">15.5.1. Disabling shell registration</a></span></dt></dl></dd> | | 2854 | <dd><dl><dt><span class="sect2"><a href="#shells-disable">15.5.1. Disabling shell registration</a></span></dt></dl></dd> |
2855 | <dt><span class="sect1"><a href="#fonts">15.6. Fonts</a></span></dt> | | 2855 | <dt><span class="sect1"><a href="#fonts">15.6. Fonts</a></span></dt> |
2856 | <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> | | 2856 | <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> |
2857 | </dl></dd> | | 2857 | </dl></dd> |
2858 | <dt><span class="chapter"><a href="#options">16. Options handling</a></span></dt> | | 2858 | <dt><span class="chapter"><a href="#options">16. Options handling</a></span></dt> |
2859 | <dd><dl> | | 2859 | <dd><dl> |
2860 | <dt><span class="sect1"><a href="#global-default-options">16.1. Global default options</a></span></dt> | | 2860 | <dt><span class="sect1"><a href="#global-default-options">16.1. Global default options</a></span></dt> |
2861 | <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> | | 2861 | <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> |
2862 | <dt><span class="sect1"><a href="#option-names">16.3. Option Names</a></span></dt> | | 2862 | <dt><span class="sect1"><a href="#option-names">16.3. Option Names</a></span></dt> |
2863 | <dt><span class="sect1"><a href="#option-build">16.4. Determining the options of dependencies</a></span></dt> | | 2863 | <dt><span class="sect1"><a href="#option-build">16.4. Determining the options of dependencies</a></span></dt> |
2864 | </dl></dd> | | 2864 | </dl></dd> |
2865 | <dt><span class="chapter"><a href="#build">17. The build process</a></span></dt> | | 2865 | <dt><span class="chapter"><a href="#build">17. The build process</a></span></dt> |
2866 | <dd><dl> | | 2866 | <dd><dl> |
2867 | <dt><span class="sect1"><a href="#build.intro">17.1. Introduction</a></span></dt> | | 2867 | <dt><span class="sect1"><a href="#build.intro">17.1. Introduction</a></span></dt> |
2868 | <dt><span class="sect1"><a href="#build.prefix">17.2. Program location</a></span></dt> | | 2868 | <dt><span class="sect1"><a href="#build.prefix">17.2. Program location</a></span></dt> |
2869 | <dt><span class="sect1"><a href="#build.builddirs">17.3. Directories used during the build process</a></span></dt> | | 2869 | <dt><span class="sect1"><a href="#build.builddirs">17.3. Directories used during the build process</a></span></dt> |
2870 | <dt><span class="sect1"><a href="#build.running">17.4. Running a phase</a></span></dt> | | 2870 | <dt><span class="sect1"><a href="#build.running">17.4. Running a phase</a></span></dt> |
2871 | <dt><span class="sect1"><a href="#build.fetch">17.5. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> | | 2871 | <dt><span class="sect1"><a href="#build.fetch">17.5. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> |
2872 | <dd><dl> | | 2872 | <dd><dl> |
2873 | <dt><span class="sect2"><a href="#build.fetch.what">17.5.1. What to fetch and where to get it from</a></span></dt> | | 2873 | <dt><span class="sect2"><a href="#build.fetch.what">17.5.1. What to fetch and where to get it from</a></span></dt> |
2874 | <dt><span class="sect2"><a href="#build.fetch.how">17.5.2. How are the files fetched?</a></span></dt> | | 2874 | <dt><span class="sect2"><a href="#build.fetch.how">17.5.2. How are the files fetched?</a></span></dt> |
2875 | </dl></dd> | | 2875 | </dl></dd> |
2876 | <dt><span class="sect1"><a href="#build.checksum">17.6. The <span class="emphasis"><em>checksum</em></span> phase</a></span></dt> | | 2876 | <dt><span class="sect1"><a href="#build.checksum">17.6. The <span class="emphasis"><em>checksum</em></span> phase</a></span></dt> |
2877 | <dt><span class="sect1"><a href="#build.extract">17.7. The <span class="emphasis"><em>extract</em></span> phase</a></span></dt> | | 2877 | <dt><span class="sect1"><a href="#build.extract">17.7. The <span class="emphasis"><em>extract</em></span> phase</a></span></dt> |
2878 | <dt><span class="sect1"><a href="#build.patch">17.8. The <span class="emphasis"><em>patch</em></span> phase</a></span></dt> | | 2878 | <dt><span class="sect1"><a href="#build.patch">17.8. The <span class="emphasis"><em>patch</em></span> phase</a></span></dt> |
2879 | <dt><span class="sect1"><a href="#build.tools">17.9. The <span class="emphasis"><em>tools</em></span> phase</a></span></dt> | | 2879 | <dt><span class="sect1"><a href="#build.tools">17.9. The <span class="emphasis"><em>tools</em></span> phase</a></span></dt> |
2880 | <dt><span class="sect1"><a href="#build.wrapper">17.10. The <span class="emphasis"><em>wrapper</em></span> phase</a></span></dt> | | 2880 | <dt><span class="sect1"><a href="#build.wrapper">17.10. The <span class="emphasis"><em>wrapper</em></span> phase</a></span></dt> |
2881 | <dt><span class="sect1"><a href="#build.configure">17.11. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> | | 2881 | <dt><span class="sect1"><a href="#build.configure">17.11. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> |
2882 | <dt><span class="sect1"><a href="#build.build">17.12. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> | | 2882 | <dt><span class="sect1"><a href="#build.build">17.12. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> |
2883 | <dt><span class="sect1"><a href="#build.test">17.13. The <span class="emphasis"><em>test</em></span> phase</a></span></dt> | | 2883 | <dt><span class="sect1"><a href="#build.test">17.13. The <span class="emphasis"><em>test</em></span> phase</a></span></dt> |
2884 | <dt><span class="sect1"><a href="#build.install">17.14. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> | | 2884 | <dt><span class="sect1"><a href="#build.install">17.14. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> |
2885 | <dt><span class="sect1"><a href="#build.package">17.15. The <span class="emphasis"><em>package</em></span> phase</a></span></dt> | | 2885 | <dt><span class="sect1"><a href="#build.package">17.15. The <span class="emphasis"><em>package</em></span> phase</a></span></dt> |
2886 | <dt><span class="sect1"><a href="#build.clean">17.16. Cleaning up</a></span></dt> | | 2886 | <dt><span class="sect1"><a href="#build.clean">17.16. Cleaning up</a></span></dt> |
2887 | <dt><span class="sect1"><a href="#build.helpful-targets">17.17. Other helpful targets</a></span></dt> | | 2887 | <dt><span class="sect1"><a href="#build.helpful-targets">17.17. Other helpful targets</a></span></dt> |
2888 | </dl></dd> | | 2888 | </dl></dd> |
2889 | <dt><span class="chapter"><a href="#tools">18. Tools needed for building or running</a></span></dt> | | 2889 | <dt><span class="chapter"><a href="#tools">18. Tools needed for building or running</a></span></dt> |
2890 | <dd><dl> | | 2890 | <dd><dl> |
2891 | <dt><span class="sect1"><a href="#pkgsrc-tools">18.1. Tools for pkgsrc builds</a></span></dt> | | 2891 | <dt><span class="sect1"><a href="#pkgsrc-tools">18.1. Tools for pkgsrc builds</a></span></dt> |
2892 | <dt><span class="sect1"><a href="#package-tools">18.2. Tools needed by packages</a></span></dt> | | 2892 | <dt><span class="sect1"><a href="#package-tools">18.2. Tools needed by packages</a></span></dt> |
2893 | <dt><span class="sect1"><a href="#platform-tools">18.3. Tools provided by platforms</a></span></dt> | | 2893 | <dt><span class="sect1"><a href="#platform-tools">18.3. Tools provided by platforms</a></span></dt> |
2894 | </dl></dd> | | 2894 | </dl></dd> |
2895 | <dt><span class="chapter"><a href="#fixes">19. Making your package work</a></span></dt> | | 2895 | <dt><span class="chapter"><a href="#fixes">19. Making your package work</a></span></dt> |
2896 | <dd><dl> | | 2896 | <dd><dl> |
2897 | <dt><span class="sect1"><a href="#general-operation">19.1. General operation</a></span></dt> | | 2897 | <dt><span class="sect1"><a href="#general-operation">19.1. General operation</a></span></dt> |
2898 | <dd><dl> | | 2898 | <dd><dl> |
2899 | <dt><span class="sect2"><a href="#pulling-vars-from-etc-mk.conf">19.1.1. How to pull in user-settable variables from <code class="filename">mk.conf</code></a></span></dt> | | 2899 | <dt><span class="sect2"><a href="#pulling-vars-from-etc-mk.conf">19.1.1. How to pull in user-settable variables from <code class="filename">mk.conf</code></a></span></dt> |
2900 | <dt><span class="sect2"><a href="#user-interaction">19.1.2. User interaction</a></span></dt> | | 2900 | <dt><span class="sect2"><a href="#user-interaction">19.1.2. User interaction</a></span></dt> |
2901 | <dt><span class="sect2"><a href="#handling-licenses">19.1.3. Handling licenses</a></span></dt> | | 2901 | <dt><span class="sect2"><a href="#handling-licenses">19.1.3. Handling licenses</a></span></dt> |
2902 | <dt><span class="sect2"><a href="#restricted-packages">19.1.4. Restricted packages</a></span></dt> | | 2902 | <dt><span class="sect2"><a href="#restricted-packages">19.1.4. Restricted packages</a></span></dt> |
2903 | <dt><span class="sect2"><a href="#dependencies">19.1.5. Handling dependencies</a></span></dt> | | 2903 | <dt><span class="sect2"><a href="#dependencies">19.1.5. Handling dependencies</a></span></dt> |
2904 | <dt><span class="sect2"><a href="#conflicts">19.1.6. Handling conflicts with other packages</a></span></dt> | | 2904 | <dt><span class="sect2"><a href="#conflicts">19.1.6. Handling conflicts with other packages</a></span></dt> |
2905 | <dt><span class="sect2"><a href="#not-building-packages">19.1.7. Packages that cannot or should not be built</a></span></dt> | | 2905 | <dt><span class="sect2"><a href="#not-building-packages">19.1.7. Packages that cannot or should not be built</a></span></dt> |
2906 | <dt><span class="sect2"><a href="#undeletable-packages">19.1.8. Packages which should not be deleted, once installed</a></span></dt> | | 2906 | <dt><span class="sect2"><a href="#undeletable-packages">19.1.8. Packages which should not be deleted, once installed</a></span></dt> |
2907 | <dt><span class="sect2"><a href="#security-handling">19.1.9. Handling packages with security problems</a></span></dt> | | 2907 | <dt><span class="sect2"><a href="#security-handling">19.1.9. Handling packages with security problems</a></span></dt> |
2908 | <dt><span class="sect2"><a href="#bumping-pkgrevision">19.1.10. How to handle incrementing versions when fixing an existing package</a></span></dt> | | 2908 | <dt><span class="sect2"><a href="#bumping-pkgrevision">19.1.10. How to handle incrementing versions when fixing an existing package</a></span></dt> |
2909 | <dt><span class="sect2"><a href="#fixes.subst">19.1.11. Substituting variable text in the package files (the SUBST framework)</a></span></dt> | | 2909 | <dt><span class="sect2"><a href="#fixes.subst">19.1.11. Substituting variable text in the package files (the SUBST framework)</a></span></dt> |
2910 | </dl></dd> | | 2910 | </dl></dd> |
2911 | <dt><span class="sect1"><a href="#fixes.fetch">19.2. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> | | 2911 | <dt><span class="sect1"><a href="#fixes.fetch">19.2. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> |
2912 | <dd><dl> | | 2912 | <dd><dl> |
2913 | <dt><span class="sect2"><a href="#no-plain-download">19.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> | | 2913 | <dt><span class="sect2"><a href="#no-plain-download">19.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> |
2914 | <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> | | 2914 | <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> |
2915 | <dt><span class="sect2"><a href="#build.fetch.github">19.2.3. Packages hosted on github.com</a></span></dt> | | 2915 | <dt><span class="sect2"><a href="#build.fetch.github">19.2.3. Packages hosted on github.com</a></span></dt> |
2916 | </dl></dd> | | 2916 | </dl></dd> |
2917 | <dt><span class="sect1"><a href="#fixes.configure">19.3. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> | | 2917 | <dt><span class="sect1"><a href="#fixes.configure">19.3. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> |
2918 | <dd><dl> | | 2918 | <dd><dl> |
2919 | <dt><span class="sect2"><a href="#fixes.libtool">19.3.1. Shared libraries - libtool</a></span></dt> | | 2919 | <dt><span class="sect2"><a href="#fixes.libtool">19.3.1. Shared libraries - libtool</a></span></dt> |
2920 | <dt><span class="sect2"><a href="#using-libtool">19.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> | | 2920 | <dt><span class="sect2"><a href="#using-libtool">19.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> |
2921 | <dt><span class="sect2"><a href="#autoconf-automake">19.3.3. GNU Autoconf/Automake</a></span></dt> | | 2921 | <dt><span class="sect2"><a href="#autoconf-automake">19.3.3. GNU Autoconf/Automake</a></span></dt> |
2922 | </dl></dd> | | 2922 | </dl></dd> |
2923 | <dt><span class="sect1"><a href="#programming-languages">19.4. Programming languages</a></span></dt> | | 2923 | <dt><span class="sect1"><a href="#programming-languages">19.4. Programming languages</a></span></dt> |
2924 | <dd><dl> | | 2924 | <dd><dl> |
2925 | <dt><span class="sect2"><a href="#basic-programming-languages">19.4.1. C, C++, and Fortran</a></span></dt> | | 2925 | <dt><span class="sect2"><a href="#basic-programming-languages">19.4.1. C, C++, and Fortran</a></span></dt> |
2926 | <dt><span class="sect2"><a href="#java-programming-language">19.4.2. Java</a></span></dt> | | 2926 | <dt><span class="sect2"><a href="#java-programming-language">19.4.2. Java</a></span></dt> |
2927 | <dt><span class="sect2"><a href="#perl-scripts">19.4.3. Packages containing perl scripts</a></span></dt> | | 2927 | <dt><span class="sect2"><a href="#perl-scripts">19.4.3. Packages containing perl scripts</a></span></dt> |
2928 | <dt><span class="sect2"><a href="#shell-scripts">19.4.4. Packages containing shell scripts</a></span></dt> | | 2928 | <dt><span class="sect2"><a href="#shell-scripts">19.4.4. Packages containing shell scripts</a></span></dt> |
2929 | <dt><span class="sect2"><a href="#other-programming-languages">19.4.5. Other programming languages</a></span></dt> | | 2929 | <dt><span class="sect2"><a href="#other-programming-languages">19.4.5. Other programming languages</a></span></dt> |
2930 | </dl></dd> | | 2930 | </dl></dd> |
2931 | <dt><span class="sect1"><a href="#fixes.build">19.5. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> | | 2931 | <dt><span class="sect1"><a href="#fixes.build">19.5. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> |
2932 | <dd><dl> | | 2932 | <dd><dl> |
2933 | <dt><span class="sect2"><a href="#fixes.build.cpp">19.5.1. Compiling C and C++ code conditionally</a></span></dt> | | 2933 | <dt><span class="sect2"><a href="#fixes.build.cpp">19.5.1. Compiling C and C++ code conditionally</a></span></dt> |
2934 | <dt><span class="sect2"><a href="#compiler-bugs">19.5.2. How to handle compiler bugs</a></span></dt> | | 2934 | <dt><span class="sect2"><a href="#compiler-bugs">19.5.2. How to handle compiler bugs</a></span></dt> |
2935 | <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> | | 2935 | <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> |
2936 | <dt><span class="sect2"><a href="#out-of-memory">19.5.4. Running out of memory</a></span></dt> | | 2936 | <dt><span class="sect2"><a href="#out-of-memory">19.5.4. Running out of memory</a></span></dt> |
2937 | </dl></dd> | | 2937 | </dl></dd> |
2938 | <dt><span class="sect1"><a href="#fixes.install">19.6. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> | | 2938 | <dt><span class="sect1"><a href="#fixes.install">19.6. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> |
2939 | <dd><dl> | | 2939 | <dd><dl> |
2940 | <dt><span class="sect2"><a href="#install-scripts">19.6.1. Creating needed directories</a></span></dt> | | 2940 | <dt><span class="sect2"><a href="#install-scripts">19.6.1. Creating needed directories</a></span></dt> |
2941 | <dt><span class="sect2"><a href="#where-to-install-documentation">19.6.2. Where to install documentation</a></span></dt> | | 2941 | <dt><span class="sect2"><a href="#where-to-install-documentation">19.6.2. Where to install documentation</a></span></dt> |
2942 | <dt><span class="sect2"><a href="#installing-score-files">19.6.3. Installing highscore files</a></span></dt> | | 2942 | <dt><span class="sect2"><a href="#installing-score-files">19.6.3. Installing highscore files</a></span></dt> |
2943 | <dt><span class="sect2"><a href="#destdir-support">19.6.4. Adding DESTDIR support to packages</a></span></dt> | | 2943 | <dt><span class="sect2"><a href="#destdir-support">19.6.4. Adding DESTDIR support to packages</a></span></dt> |
2944 | <dt><span class="sect2"><a href="#hardcoded-paths">19.6.5. Packages with hardcoded paths to other interpreters</a></span></dt> | | 2944 | <dt><span class="sect2"><a href="#hardcoded-paths">19.6.5. Packages with hardcoded paths to other interpreters</a></span></dt> |
2945 | <dt><span class="sect2"><a href="#perl-modules">19.6.6. Packages installing perl modules</a></span></dt> | | 2945 | <dt><span class="sect2"><a href="#perl-modules">19.6.6. Packages installing perl modules</a></span></dt> |
2946 | <dt><span class="sect2"><a href="#faq.info-files">19.6.7. Packages installing info files</a></span></dt> | | 2946 | <dt><span class="sect2"><a href="#faq.info-files">19.6.7. Packages installing info files</a></span></dt> |
2947 | <dt><span class="sect2"><a href="#manpages">19.6.8. Packages installing man pages</a></span></dt> | | 2947 | <dt><span class="sect2"><a href="#manpages">19.6.8. Packages installing man pages</a></span></dt> |
2948 | <dt><span class="sect2"><a href="#gconf-data-files">19.6.9. Packages installing GConf data files</a></span></dt> | | 2948 | <dt><span class="sect2"><a href="#gconf-data-files">19.6.9. Packages installing GConf data files</a></span></dt> |
2949 | <dt><span class="sect2"><a href="#scrollkeeper-data-files">19.6.10. Packages installing scrollkeeper/rarian data files</a></span></dt> | | 2949 | <dt><span class="sect2"><a href="#scrollkeeper-data-files">19.6.10. Packages installing scrollkeeper/rarian data files</a></span></dt> |
2950 | <dt><span class="sect2"><a href="#x11-fonts">19.6.11. Packages installing X11 fonts</a></span></dt> | | 2950 | <dt><span class="sect2"><a href="#x11-fonts">19.6.11. Packages installing X11 fonts</a></span></dt> |
2951 | <dt><span class="sect2"><a href="#gtk2-modules">19.6.12. Packages installing GTK2 modules</a></span></dt> | | 2951 | <dt><span class="sect2"><a href="#gtk2-modules">19.6.12. Packages installing GTK2 modules</a></span></dt> |
2952 | <dt><span class="sect2"><a href="#sgml-xml-data">19.6.13. Packages installing SGML or XML data</a></span></dt> | | 2952 | <dt><span class="sect2"><a href="#sgml-xml-data">19.6.13. Packages installing SGML or XML data</a></span></dt> |
2953 | <dt><span class="sect2"><a href="#mime-database">19.6.14. Packages installing extensions to the MIME database</a></span></dt> | | 2953 | <dt><span class="sect2"><a href="#mime-database">19.6.14. Packages installing extensions to the MIME database</a></span></dt> |
2954 | <dt><span class="sect2"><a href="#intltool">19.6.15. Packages using intltool</a></span></dt> | | 2954 | <dt><span class="sect2"><a href="#intltool">19.6.15. Packages using intltool</a></span></dt> |
2955 | <dt><span class="sect2"><a href="#startup-scripts">19.6.16. Packages installing startup scripts</a></span></dt> | | 2955 | <dt><span class="sect2"><a href="#startup-scripts">19.6.16. Packages installing startup scripts</a></span></dt> |
2956 | <dt><span class="sect2"><a href="#tex-packages">19.6.17. Packages installing TeX modules</a></span></dt> | | 2956 | <dt><span class="sect2"><a href="#tex-packages">19.6.17. Packages installing TeX modules</a></span></dt> |
2957 | <dt><span class="sect2"><a href="#emulation-packages">19.6.18. Packages supporting running binaries in | | 2957 | <dt><span class="sect2"><a href="#emulation-packages">19.6.18. Packages supporting running binaries in |
2958 | emulation</a></span></dt> | | 2958 | emulation</a></span></dt> |
2959 | <dt><span class="sect2"><a href="#hicolor-theme">19.6.19. Packages installing hicolor theme icons</a></span></dt> | | 2959 | <dt><span class="sect2"><a href="#hicolor-theme">19.6.19. Packages installing hicolor theme icons</a></span></dt> |
2960 | <dt><span class="sect2"><a href="#desktop-files">19.6.20. Packages installing desktop files</a></span></dt> | | 2960 | <dt><span class="sect2"><a href="#desktop-files">19.6.20. Packages installing desktop files</a></span></dt> |
2961 | </dl></dd> | | 2961 | </dl></dd> |
2962 | <dt><span class="sect1"><a href="#punting">19.7. Marking packages as having problems</a></span></dt> | | 2962 | <dt><span class="sect1"><a href="#punting">19.7. Marking packages as having problems</a></span></dt> |
2963 | </dl></dd> | | 2963 | </dl></dd> |
2964 | <dt><span class="chapter"><a href="#debug">20. Debugging</a></span></dt> | | 2964 | <dt><span class="chapter"><a href="#debug">20. Debugging</a></span></dt> |
2965 | <dt><span class="chapter"><a href="#submit">21. Submitting and Committing</a></span></dt> | | 2965 | <dt><span class="chapter"><a href="#submit">21. Submitting and Committing</a></span></dt> |
2966 | <dd><dl> | | 2966 | <dd><dl> |
2967 | <dt><span class="sect1"><a href="#submitting-binary-packages">21.1. Submitting binary packages</a></span></dt> | | 2967 | <dt><span class="sect1"><a href="#submitting-binary-packages">21.1. Submitting binary packages</a></span></dt> |
2968 | <dt><span class="sect1"><a href="#submitting-your-package">21.2. Submitting source packages (for non-NetBSD-developers)</a></span></dt> | | 2968 | <dt><span class="sect1"><a href="#submitting-your-package">21.2. Submitting source packages (for non-NetBSD-developers)</a></span></dt> |
2969 | <dt><span class="sect1"><a href="#general-notes-for-changes">21.3. General notes when adding, updating, or removing packages</a></span></dt> | | 2969 | <dt><span class="sect1"><a href="#general-notes-for-changes">21.3. General notes when adding, updating, or removing packages</a></span></dt> |
2970 | <dt><span class="sect1"><a href="#commit-messages">21.4. Commit Messages</a></span></dt> | | 2970 | <dt><span class="sect1"><a href="#commit-messages">21.4. Commit Messages</a></span></dt> |
2971 | <dt><span class="sect1"><a href="#committing-importing">21.5. Committing: Adding a package to CVS</a></span></dt> | | 2971 | <dt><span class="sect1"><a href="#committing-importing">21.5. Committing: Adding a package to CVS</a></span></dt> |
2972 | <dt><span class="sect1"><a href="#updating-package">21.6. Updating a package to a newer version</a></span></dt> | | 2972 | <dt><span class="sect1"><a href="#updating-package">21.6. Updating a package to a newer version</a></span></dt> |
2973 | <dt><span class="sect1"><a href="#renaming-package">21.7. Renaming a package in pkgsrc</a></span></dt> | | 2973 | <dt><span class="sect1"><a href="#renaming-package">21.7. Renaming a package in pkgsrc</a></span></dt> |
2974 | <dt><span class="sect1"><a href="#moving-package">21.8. Moving a package in pkgsrc</a></span></dt> | | 2974 | <dt><span class="sect1"><a href="#moving-package">21.8. Moving a package in pkgsrc</a></span></dt> |
2975 | </dl></dd> | | 2975 | </dl></dd> |
2976 | <dt><span class="chapter"><a href="#devfaq">22. Frequently Asked Questions</a></span></dt> | | 2976 | <dt><span class="chapter"><a href="#devfaq">22. Frequently Asked Questions</a></span></dt> |
2977 | <dt><span class="chapter"><a href="#gnome">23. GNOME packaging and porting</a></span></dt> | | 2977 | <dt><span class="chapter"><a href="#gnome">23. GNOME packaging and porting</a></span></dt> |
2978 | <dd><dl> | | 2978 | <dd><dl> |
2979 | <dt><span class="sect1"><a href="#meta-packages">23.1. Meta packages</a></span></dt> | | 2979 | <dt><span class="sect1"><a href="#meta-packages">23.1. Meta packages</a></span></dt> |
2980 | <dt><span class="sect1"><a href="#new-package">23.2. Packaging a GNOME application</a></span></dt> | | 2980 | <dt><span class="sect1"><a href="#new-package">23.2. Packaging a GNOME application</a></span></dt> |
2981 | <dt><span class="sect1"><a href="#full-update">23.3. Updating GNOME to a newer version</a></span></dt> | | 2981 | <dt><span class="sect1"><a href="#full-update">23.3. Updating GNOME to a newer version</a></span></dt> |
2982 | <dt><span class="sect1"><a href="#patching">23.4. Patching guidelines</a></span></dt> | | 2982 | <dt><span class="sect1"><a href="#patching">23.4. Patching guidelines</a></span></dt> |
2983 | </dl></dd> | | 2983 | </dl></dd> |
2984 | </dl> | | 2984 | </dl> |
2985 | </div> | | 2985 | </div> |
2986 | </div> | | 2986 | </div> |
2987 | <div class="chapter"> | | 2987 | <div class="chapter"> |
2988 | <div class="titlepage"><div><div><h2 class="title"> | | 2988 | <div class="titlepage"><div><div><h2 class="title"> |
2989 | <a name="creating"></a>Chapter 10. Creating a new pkgsrc package from scratch</h2></div></div></div> | | 2989 | <a name="creating"></a>Chapter 10. Creating a new pkgsrc package from scratch</h2></div></div></div> |
2990 | <div class="toc"> | | 2990 | <div class="toc"> |
2991 | <p><b>Table of Contents</b></p> | | 2991 | <p><b>Table of Contents</b></p> |
2992 | <dl class="toc"> | | 2992 | <dl class="toc"> |
2993 | <dt><span class="sect1"><a href="#creating.common">10.1. Common types of packages</a></span></dt> | | 2993 | <dt><span class="sect1"><a href="#creating.common">10.1. Common types of packages</a></span></dt> |
2994 | <dd><dl> | | 2994 | <dd><dl> |
2995 | <dt><span class="sect2"><a href="#creating.perl-module">10.1.1. Perl modules</a></span></dt> | | 2995 | <dt><span class="sect2"><a href="#creating.perl-module">10.1.1. Perl modules</a></span></dt> |
2996 | <dt><span class="sect2"><a href="#creating.python-module">10.1.2. Python modules and programs</a></span></dt> | | 2996 | <dt><span class="sect2"><a href="#creating.python-module">10.1.2. Python modules and programs</a></span></dt> |
2997 | </dl></dd> | | 2997 | </dl></dd> |
2998 | <dt><span class="sect1"><a href="#creating.examples">10.2. Examples</a></span></dt> | | 2998 | <dt><span class="sect1"><a href="#creating.examples">10.2. Examples</a></span></dt> |
2999 | <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> | | 2999 | <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> |
3000 | </dl> | | 3000 | </dl> |
3001 | </div> | | 3001 | </div> |
3002 | <p>When you find a package that is not yet in pkgsrc, you | | 3002 | <p>When you find a package that is not yet in pkgsrc, you |
3003 | most likely have a URL from where you can download the source | | 3003 | most likely have a URL from where you can download the source |
3004 | code. Starting with this URL, creating a package involves only a | | 3004 | code. Starting with this URL, creating a package involves only a |
3005 | few steps.</p> | | 3005 | few steps.</p> |
3006 | <div class="procedure"><ol class="procedure" type="1"> | | 3006 | <div class="procedure"><ol class="procedure" type="1"> |
3007 | <li class="step"><p>First, install the packages <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/url2pkg/README.html" target="_top"><code class="filename">pkgtools/url2pkg</code></a> and <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>.</p></li> | | 3007 | <li class="step"><p>First, install the packages <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/url2pkg/README.html" target="_top"><code class="filename">pkgtools/url2pkg</code></a> and <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>.</p></li> |
3008 | <li class="step"><p>Then, choose one of the top-level directories as the | | 3008 | <li class="step"><p>Then, choose one of the top-level directories as the |
3009 | category in which you want to place your package. You can also create a | | 3009 | category in which you want to place your package. You can also create a |
3010 | directory of your own (maybe called <code class="filename">local</code>). In that | | 3010 | directory of your own (maybe called <code class="filename">local</code>). In that |
3011 | category directory, create another directory for your package and change | | 3011 | category directory, create another directory for your package and change |
3012 | into it.</p></li> | | 3012 | into it.</p></li> |
3013 | <li class="step"><p>Run the program <span class="command"><strong>url2pkg</strong></span>, which will ask | | 3013 | <li class="step"><p>Run the program <span class="command"><strong>url2pkg</strong></span>, which will ask |
3014 | you for a URL. Enter the URL of the distribution file (in most cases a | | 3014 | you for a URL. Enter the URL of the distribution file (in most cases a |
3015 | <code class="filename">.tar.gz</code> file) and watch how the basic ingredients | | 3015 | <code class="filename">.tar.gz</code> file) and watch how the basic ingredients |
3016 | of your package are created automatically. The distribution file is | | 3016 | of your package are created automatically. The distribution file is |
3017 | extracted automatically to fill in some details in the | | 3017 | extracted automatically to fill in some details in the |
3018 | <code class="filename">Makefile</code> that would otherwise have to be done | | 3018 | <code class="filename">Makefile</code> that would otherwise have to be done |
3019 | manually.</p></li> | | 3019 | manually.</p></li> |
3020 | <li class="step"> | | 3020 | <li class="step"> |
3021 | <p>Examine the extracted files to determine the dependencies of | | 3021 | <p>Examine the extracted files to determine the dependencies of |
3022 | your package. Ideally, this is mentioned in some | | 3022 | your package. Ideally, this is mentioned in some |
3023 | <code class="filename">README</code> file, but things may differ. For each of | | 3023 | <code class="filename">README</code> file, but things may differ. For each of |
3024 | these dependencies, look where it exists in pkgsrc, and if there is a | | 3024 | these dependencies, look where it exists in pkgsrc, and if there is a |
3025 | file called <code class="filename">buildlink3.mk</code> in that directory, add a | | 3025 | file called <code class="filename">buildlink3.mk</code> in that directory, add a |
3026 | line to your package <code class="filename">Makefile</code> which includes that | | 3026 | line to your package <code class="filename">Makefile</code> which includes that |
3027 | file just before the last line. If the | | 3027 | file just before the last line. If the |
3028 | <code class="filename">buildlink3.mk</code> file does not exist, it must be | | 3028 | <code class="filename">buildlink3.mk</code> file does not exist, it must be |
3029 | created first. The <code class="filename">buildlink3.mk</code> file makes sure that the package's include files and libraries are provided.</p> | | 3029 | created first. The <code class="filename">buildlink3.mk</code> file makes sure that the package's include files and libraries are provided.</p> |
3030 | <p>If you just need binaries from a package, add a | | 3030 | <p>If you just need binaries from a package, add a |
3031 | <code class="varname">DEPENDS</code> line to the Makefile, which specifies the | | 3031 | <code class="varname">DEPENDS</code> line to the Makefile, which specifies the |
3032 | version of the dependency and where it can be found in pkgsrc. This line | | 3032 | version of the dependency and where it can be found in pkgsrc. This line |
3033 | should be placed in the third paragraph. If the dependency is only | | 3033 | should be placed in the third paragraph. If the dependency is only |
3034 | needed for building the package, but not when using it, use | | 3034 | needed for building the package, but not when using it, use |
3035 | <code class="varname">BUILD_DEPENDS</code> instead of <code class="varname">DEPENDS</code>. | | 3035 | <code class="varname">BUILD_DEPENDS</code> instead of <code class="varname">DEPENDS</code>. |
3036 | Your package may then look like this:</p> | | 3036 | Your package may then look like this:</p> |
3037 | <pre class="programlisting"> | | 3037 | <pre class="programlisting"> |
3038 | [...] | | 3038 | [...] |
3039 | | | 3039 | |
3040 | BUILD_DEPENDS+= libxslt-[0-9]*:../../textproc/libxslt | | 3040 | BUILD_DEPENDS+= libxslt-[0-9]*:../../textproc/libxslt |
3041 | DEPENDS+= screen-[0-9]*:../../misc/screen | | 3041 | DEPENDS+= screen-[0-9]*:../../misc/screen |
3042 | DEPENDS+= screen>=4.0:../../misc/screen | | 3042 | DEPENDS+= screen>=4.0:../../misc/screen |
3043 | | | 3043 | |
3044 | [...] | | 3044 | [...] |
3045 | | | 3045 | |
3046 | .include "../../<em class="replaceable"><code>category</code></em>/<em class="replaceable"><code>package</code></em>/buildlink3.mk" | | 3046 | .include "../../<em class="replaceable"><code>category</code></em>/<em class="replaceable"><code>package</code></em>/buildlink3.mk" |
3047 | .include "../../devel/glib2/buildlink3.mk" | | 3047 | .include "../../devel/glib2/buildlink3.mk" |
3048 | .include "../../mk/bsd.pkg.mk" | | 3048 | .include "../../mk/bsd.pkg.mk" |
3049 | </pre> | | 3049 | </pre> |
3050 | </li> | | 3050 | </li> |
3051 | <li class="step"><p>Run <span class="command"><strong>pkglint</strong></span> to see what things still need | | 3051 | <li class="step"><p>Run <span class="command"><strong>pkglint</strong></span> to see what things still need |
3052 | to be done to make your package a <span class="quote">“<span class="quote">good</span>”</span> one. If you don't | | 3052 | to be done to make your package a <span class="quote">“<span class="quote">good</span>”</span> one. If you don't |
3053 | know what pkglint's warnings want to tell you, try <span class="command"><strong>pkglint | | 3053 | know what pkglint's warnings want to tell you, try <span class="command"><strong>pkglint |
3054 | --explain</strong></span> or <span class="command"><strong>pkglint | | 3054 | --explain</strong></span> or <span class="command"><strong>pkglint |
3055 | -e</strong></span>, which outputs additional | | 3055 | -e</strong></span>, which outputs additional |
3056 | explanations.</p></li> | | 3056 | explanations.</p></li> |
3057 | <li class="step"><p>In many cases the package is not yet ready to build. You can | | 3057 | <li class="step"><p>In many cases the package is not yet ready to build. You can |
3058 | 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 | | 3058 | 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 |
3059 | over there, you can hopefully continue here.</p></li> | | 3059 | over there, you can hopefully continue here.</p></li> |
3060 | <li class="step"><p>Run <span class="command"><strong>bmake clean</strong></span> to clean the working | | 3060 | <li class="step"><p>Run <span class="command"><strong>bmake clean</strong></span> to clean the working |
3061 | directory from the extracted files. Besides these files, a lot of cache | | 3061 | directory from the extracted files. Besides these files, a lot of cache |
3062 | files and other system information has been saved in the working | | 3062 | files and other system information has been saved in the working |
3063 | directory, which may become wrong after you edited the | | 3063 | directory, which may become wrong after you edited the |
3064 | <code class="filename">Makefile</code>.</p></li> | | 3064 | <code class="filename">Makefile</code>.</p></li> |
3065 | <li class="step"><p>Now, run <span class="command"><strong>bmake</strong></span> to build the package. For | | 3065 | <li class="step"><p>Now, run <span class="command"><strong>bmake</strong></span> to build the package. For |
3066 | 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> | | 3066 | 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> |
3067 | <li class="step"><p>When the package builds fine, the next step is to install | | 3067 | <li class="step"><p>When the package builds fine, the next step is to install |
3068 | the package. Run <span class="command"><strong>bmake install</strong></span> and hope that | | 3068 | the package. Run <span class="command"><strong>bmake install</strong></span> and hope that |
3069 | everything works.</p></li> | | 3069 | everything works.</p></li> |
3070 | <li class="step"><p>Up to now, the file <code class="filename">PLIST</code>, which | | 3070 | <li class="step"><p>Up to now, the file <code class="filename">PLIST</code>, which |
3071 | contains a list of the files that are installed by the package, is | | 3071 | contains a list of the files that are installed by the package, is |
3072 | nearly empty. Run <span class="command"><strong>bmake print-PLIST | | 3072 | nearly empty. Run <span class="command"><strong>bmake print-PLIST |
3073 | >PLIST</strong></span> to generate a probably correct list. Check | | 3073 | >PLIST</strong></span> to generate a probably correct list. Check |
3074 | the file using your preferred text editor to see if the list of | | 3074 | the file using your preferred text editor to see if the list of |
3075 | files looks plausible.</p></li> | | 3075 | files looks plausible.</p></li> |
3076 | <li class="step"><p>Run <span class="command"><strong>pkglint</strong></span> again to see if the generated | | 3076 | <li class="step"><p>Run <span class="command"><strong>pkglint</strong></span> again to see if the generated |
3077 | <code class="filename">PLIST</code> contains garbage or not.</p></li> | | 3077 | <code class="filename">PLIST</code> contains garbage or not.</p></li> |
3078 | <li class="step"><p>When you ran <span class="command"><strong>bmake install</strong></span>, the package | | 3078 | <li class="step"><p>When you ran <span class="command"><strong>bmake install</strong></span>, the package |
3079 | has been registered in the database of installed files, but with an | | 3079 | has been registered in the database of installed files, but with an |
3080 | empty list of files. To fix this, run <span class="command"><strong>bmake deinstall</strong></span> | | 3080 | empty list of files. To fix this, run <span class="command"><strong>bmake deinstall</strong></span> |
3081 | and <span class="command"><strong>bmake install</strong></span> again. Now the package is | | 3081 | and <span class="command"><strong>bmake install</strong></span> again. Now the package is |
3082 | registered with the list of files from | | 3082 | registered with the list of files from |
3083 | <code class="filename">PLIST</code>.</p></li> | | 3083 | <code class="filename">PLIST</code>.</p></li> |
3084 | <li class="step"><p>Run <span class="command"><strong>bmake package</strong></span> to create a binary | | 3084 | <li class="step"><p>Run <span class="command"><strong>bmake package</strong></span> to create a binary |
3085 | package from the set of installed files.</p></li> | | 3085 | package from the set of installed files.</p></li> |
3086 | </ol></div> | | 3086 | </ol></div> |
3087 | <div class="sect1"> | | 3087 | <div class="sect1"> |
3088 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3088 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3089 | <a name="creating.common"></a>10.1. Common types of packages</h2></div></div></div> | | 3089 | <a name="creating.common"></a>10.1. Common types of packages</h2></div></div></div> |
3090 | <div class="sect2"> | | 3090 | <div class="sect2"> |
3091 | <div class="titlepage"><div><div><h3 class="title"> | | 3091 | <div class="titlepage"><div><div><h3 class="title"> |
3092 | <a name="creating.perl-module"></a>10.1.1. Perl modules</h3></div></div></div> | | 3092 | <a name="creating.perl-module"></a>10.1.1. Perl modules</h3></div></div></div> |
3093 | <p>Simple Perl modules are handled automatically by | | 3093 | <p>Simple Perl modules are handled automatically by |
3094 | <span class="command"><strong>url2pkg</strong></span>, including dependencies.</p> | | 3094 | <span class="command"><strong>url2pkg</strong></span>, including dependencies.</p> |
3095 | </div> | | 3095 | </div> |
3096 | <div class="sect2"> | | 3096 | <div class="sect2"> |
3097 | <div class="titlepage"><div><div><h3 class="title"> | | 3097 | <div class="titlepage"><div><div><h3 class="title"> |
3098 | <a name="creating.python-module"></a>10.1.2. Python modules and programs</h3></div></div></div> | | 3098 | <a name="creating.python-module"></a>10.1.2. Python modules and programs</h3></div></div></div> |
3099 | <p>Python modules and programs packages are easily created using a | | 3099 | <p>Python modules and programs packages are easily created using a |
3100 | set of predefined variables.</p> | | 3100 | set of predefined variables.</p> |
3101 | <p> | | 3101 | <p> |
3102 | If some Python versions are not supported by the software, set the | | 3102 | If some Python versions are not supported by the software, set the |
3103 | <code class="varname">PYTHON_VERSIONS_INCOMPATIBLE</code> variable to the Python versions | | 3103 | <code class="varname">PYTHON_VERSIONS_INCOMPATIBLE</code> variable to the Python versions |
3104 | that are not supported, e.g. | | 3104 | that are not supported, e.g. |
3105 | </p> | | 3105 | </p> |
3106 | <pre class="programlisting"> | | 3106 | <pre class="programlisting"> |
3107 | PYTHON_VERSIONS_INCOMPATIBLE= 27 | | 3107 | PYTHON_VERSIONS_INCOMPATIBLE= 27 |
3108 | </pre> | | 3108 | </pre> |
3109 | <p> | | 3109 | <p> |
3110 | If the packaged software is a Python module, include one of | | 3110 | If the packaged software is a Python module, include one of |
3111 | <code class="filename">../../lang/python/egg.mk</code>, | | 3111 | <code class="filename">../../lang/python/egg.mk</code>, |
3112 | <code class="filename">../../lang/python/distutils.mk</code>, or | | 3112 | <code class="filename">../../lang/python/distutils.mk</code>, or |
3113 | <code class="filename">../../lang/python/extension.mk</code>.</p> | | 3113 | <code class="filename">../../lang/python/extension.mk</code>.</p> |
3114 | <p>Most Python packages use either <span class="quote">“<span class="quote">distutils</span>”</span> or | | 3114 | <p>Most Python packages use either <span class="quote">“<span class="quote">distutils</span>”</span> or |
3115 | easy-setup/setuptools (<span class="quote">“<span class="quote">eggs</span>”</span>). | | 3115 | easy-setup/setuptools (<span class="quote">“<span class="quote">eggs</span>”</span>). |
3116 | if the packaged software is using setuptools, you only need | | 3116 | if the packaged software is using setuptools, you only need |
3117 | to include <span class="quote">“<span class="quote"><code class="filename">../../lang/python/egg.mk</code></span>”</span>. | | 3117 | to include <span class="quote">“<span class="quote"><code class="filename">../../lang/python/egg.mk</code></span>”</span>. |
3118 | Otherwise, if the software uses <span class="quote">“<span class="quote">distutils</span>”</span>, include | | 3118 | Otherwise, if the software uses <span class="quote">“<span class="quote">distutils</span>”</span>, include |
3119 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/distutils.mk</code></span>”</span>. | | 3119 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/distutils.mk</code></span>”</span>. |
3120 | so pkgsrc will use this framework. | | 3120 | so pkgsrc will use this framework. |
3121 | <span class="quote">“<span class="quote">distutils</span>”</span> uses a script called <code class="filename">setup.py</code>, | | 3121 | <span class="quote">“<span class="quote">distutils</span>”</span> uses a script called <code class="filename">setup.py</code>, |
3122 | if the <span class="quote">“<span class="quote">distutils</span>”</span> driver is not called | | 3122 | if the <span class="quote">“<span class="quote">distutils</span>”</span> driver is not called |
3123 | <code class="filename">setup.py</code>, set the <code class="varname">PYSETUP</code> variable | | 3123 | <code class="filename">setup.py</code>, set the <code class="varname">PYSETUP</code> variable |
3124 | to the name of the script.</p> | | 3124 | to the name of the script.</p> |
3125 | <p>Either way, the package directory should be called | | 3125 | <p>Either way, the package directory should be called |
3126 | <span class="quote">“<span class="quote">py-software</span>”</span> and <code class="varname">PKGNAME</code> should be set to | | 3126 | <span class="quote">“<span class="quote">py-software</span>”</span> and <code class="varname">PKGNAME</code> should be set to |
3127 | <span class="quote">“<span class="quote">${PYPKGPREFIX}-${DISTNAME}</span>”</span>, e.g. | | 3127 | <span class="quote">“<span class="quote">${PYPKGPREFIX}-${DISTNAME}</span>”</span>, e.g. |
3128 | </p> | | 3128 | </p> |
3129 | <pre class="programlisting"> | | 3129 | <pre class="programlisting"> |
3130 | DISTNAME= foopymodule-1.2.10 | | 3130 | DISTNAME= foopymodule-1.2.10 |
3131 | PKGNAME= ${PYPKGPREFIX}-${DISTNAME} | | 3131 | PKGNAME= ${PYPKGPREFIX}-${DISTNAME} |
3132 | </pre> | | 3132 | </pre> |
3133 | <p>If it is an application, include | | 3133 | <p>If it is an application, include |
3134 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/application.mk</code></span>”</span>. | | 3134 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/application.mk</code></span>”</span>. |
3135 | In order to correctly set the path to the Python interpreter, use the | | 3135 | In order to correctly set the path to the Python interpreter, use the |
3136 | <code class="varname">REPLACE_PYTHON</code> variable and set it to the list of files | | 3136 | <code class="varname">REPLACE_PYTHON</code> variable and set it to the list of files |
3137 | (paths relative to <code class="varname">WRKSRC</code>) that must be corrected. | | 3137 | (paths relative to <code class="varname">WRKSRC</code>) that must be corrected. |
3138 | For example: | | 3138 | For example: |
3139 | </p> | | 3139 | </p> |
3140 | <pre class="programlisting"> | | 3140 | <pre class="programlisting"> |
3141 | REPLACE_PYTHON= *.py | | 3141 | REPLACE_PYTHON= *.py |
3142 | </pre> | | 3142 | </pre> |
3143 | <p>Some Python modules have separate distributions for Python-2.x | | 3143 | <p>Some Python modules have separate distributions for Python-2.x |
3144 | and Python-3.x support. In pkgsrc this is handled by the | | 3144 | and Python-3.x support. In pkgsrc this is handled by the |
3145 | <code class="filename">versioned_dependencies.mk</code> file. Set | | 3145 | <code class="filename">versioned_dependencies.mk</code> file. Set |
3146 | <code class="varname">PYTHON_VERSIONED_DEPENDENCIES</code> to the list of | | 3146 | <code class="varname">PYTHON_VERSIONED_DEPENDENCIES</code> to the list of |
3147 | packages that should be depended upon and include | | 3147 | packages that should be depended upon and include |
3148 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/versioned_dependencies.mk</code></span>”</span>, | | 3148 | <span class="quote">“<span class="quote"><code class="filename">../../lang/python/versioned_dependencies.mk</code></span>”</span>, |
3149 | then the pkgsrc infrastructure will depend on the appropriate package | | 3149 | then the pkgsrc infrastructure will depend on the appropriate package |
3150 | version. For example: | | 3150 | version. For example: |
3151 | </p> | | 3151 | </p> |
3152 | <pre class="programlisting"> | | 3152 | <pre class="programlisting"> |
3153 | PYTHON_VERSIONED_DEPENDENCIES=dialog | | 3153 | PYTHON_VERSIONED_DEPENDENCIES=dialog |
3154 | </pre> | | 3154 | </pre> |
3155 | <p> | | 3155 | <p> |
3156 | Look inside <code class="filename">versioned_dependencies.mk</code> for a list | | 3156 | Look inside <code class="filename">versioned_dependencies.mk</code> for a list |
3157 | of supported packages.</p> | | 3157 | of supported packages.</p> |
3158 | </div> | | 3158 | </div> |
3159 | </div> | | 3159 | </div> |
3160 | <div class="sect1"> | | 3160 | <div class="sect1"> |
3161 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3161 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3162 | <a name="creating.examples"></a>10.2. Examples</h2></div></div></div> | | 3162 | <a name="creating.examples"></a>10.2. Examples</h2></div></div></div> |
3163 | <div class="sect2"> | | 3163 | <div class="sect2"> |
3164 | <div class="titlepage"><div><div><h3 class="title"> | | 3164 | <div class="titlepage"><div><div><h3 class="title"> |
3165 | <a name="creating.nvu"></a>10.2.1. How the www/nvu package came into pkgsrc</h3></div></div></div> | | 3165 | <a name="creating.nvu"></a>10.2.1. How the www/nvu package came into pkgsrc</h3></div></div></div> |
3166 | <div class="sect3"> | | 3166 | <div class="sect3"> |
3167 | <div class="titlepage"><div><div><h4 class="title"> | | 3167 | <div class="titlepage"><div><div><h4 class="title"> |
3168 | <a name="creating.nvu.init"></a>10.2.1.1. The initial package</h4></div></div></div> | | 3168 | <a name="creating.nvu.init"></a>10.2.1.1. The initial package</h4></div></div></div> |
3169 | <p>Looking at the file <code class="filename">pkgsrc/doc/TODO</code>, I saw | | 3169 | <p>Looking at the file <code class="filename">pkgsrc/doc/TODO</code>, I saw |
3170 | that the <span class="quote">“<span class="quote">nvu</span>”</span> package has not yet been imported into | | 3170 | that the <span class="quote">“<span class="quote">nvu</span>”</span> package has not yet been imported into |
3171 | pkgsrc. As the description says it has to do with the web, the obvious | | 3171 | pkgsrc. As the description says it has to do with the web, the obvious |
3172 | choice for the category is <span class="quote">“<span class="quote">www</span>”</span>.</p> | | 3172 | choice for the category is <span class="quote">“<span class="quote">www</span>”</span>.</p> |
3173 | <pre class="programlisting"> | | 3173 | <pre class="programlisting"> |
3174 | <code class="prompt">$</code> mkdir www/nvu | | 3174 | <code class="prompt">$</code> mkdir www/nvu |
3175 | <code class="prompt">$</code> cd www/nvu | | 3175 | <code class="prompt">$</code> cd www/nvu |
3176 | </pre> | | 3176 | </pre> |
3177 | <p>The web site says that the sources are available as a tar file, so | | 3177 | <p>The web site says that the sources are available as a tar file, so |
3178 | I fed that URL to the <span class="command"><strong>url2pkg</strong></span> program:</p> | | 3178 | I fed that URL to the <span class="command"><strong>url2pkg</strong></span> program:</p> |
3179 | <pre class="programlisting"> | | 3179 | <pre class="programlisting"> |
3180 | <code class="prompt">$</code> url2pkg http://cvs.nvu.com/download/nvu-1.0-sources.tar.bz2 | | 3180 | <code class="prompt">$</code> url2pkg http://cvs.nvu.com/download/nvu-1.0-sources.tar.bz2 |
3181 | </pre> | | 3181 | </pre> |
3182 | <p>My editor popped up, and I added a <code class="varname">PKGNAME</code> line | | 3182 | <p>My editor popped up, and I added a <code class="varname">PKGNAME</code> line |
3183 | below the <code class="varname">DISTNAME</code> line, as the package name should | | 3183 | below the <code class="varname">DISTNAME</code> line, as the package name should |
3184 | not have the word <span class="quote">“<span class="quote">sources</span>”</span> in it. I also filled in the | | 3184 | not have the word <span class="quote">“<span class="quote">sources</span>”</span> in it. I also filled in the |
3185 | <code class="varname">MAINTAINER</code>, <code class="varname">HOMEPAGE</code> and | | 3185 | <code class="varname">MAINTAINER</code>, <code class="varname">HOMEPAGE</code> and |
3186 | <code class="varname">COMMENT</code> fields. Then the package | | 3186 | <code class="varname">COMMENT</code> fields. Then the package |
3187 | <code class="filename">Makefile</code> looked like that:</p> | | 3187 | <code class="filename">Makefile</code> looked like that:</p> |
3188 | <pre class="programlisting"> | | 3188 | <pre class="programlisting"> |
3189 | # $NetBSD $ | | 3189 | # $NetBSD $ |
3190 | # | | 3190 | # |
3191 | | | 3191 | |
3192 | DISTNAME= nvu-1.0-sources | | 3192 | DISTNAME= nvu-1.0-sources |
3193 | PKGNAME= nvu-1.0 | | 3193 | PKGNAME= nvu-1.0 |
3194 | CATEGORIES= www | | 3194 | CATEGORIES= www |
3195 | MASTER_SITES= http://cvs.nvu.com/download/ | | 3195 | MASTER_SITES= http://cvs.nvu.com/download/ |
3196 | EXTRACT_SUFX= .tar.bz2 | | 3196 | EXTRACT_SUFX= .tar.bz2 |
3197 | | | 3197 | |
3198 | MAINTAINER= rillig@NetBSD.org | | 3198 | MAINTAINER= rillig@NetBSD.org |
3199 | HOMEPAGE= http://cvs.nvu.com/ | | 3199 | HOMEPAGE= http://cvs.nvu.com/ |
3200 | COMMENT= Web Authoring System | | 3200 | COMMENT= Web Authoring System |
3201 | | | 3201 | |
3202 | # url2pkg-marker (please do not remove this line.) | | 3202 | # url2pkg-marker (please do not remove this line.) |
3203 | .include "../../mk/bsd.pkg.mk" | | 3203 | .include "../../mk/bsd.pkg.mk" |
3204 | </pre> | | 3204 | </pre> |
3205 | <p>On the first line of output above, an artificial space has been added between NetBSD and $, | | 3205 | <p>On the first line of output above, an artificial space has been added between NetBSD and $, |
3206 | this is a workaround to prevent CVS expanding to the filename of the | | 3206 | this is a workaround to prevent CVS expanding to the filename of the |
3207 | guide.</p> | | 3207 | guide.</p> |
3208 | <p>Then, I quit the editor and watched pkgsrc downloading a large | | 3208 | <p>Then, I quit the editor and watched pkgsrc downloading a large |
3209 | source archive:</p> | | 3209 | source archive:</p> |
3210 | <pre class="programlisting"> | | 3210 | <pre class="programlisting"> |
3211 | url2pkg> Running "make makesum" ... | | 3211 | url2pkg> Running "make makesum" ... |
3212 | => Required installed package digest>=20010302: digest-20060826 found | | 3212 | => Required installed package digest>=20010302: digest-20060826 found |
3213 | => Fetching nvu-1.0-sources.tar.bz2 | | 3213 | => Fetching nvu-1.0-sources.tar.bz2 |
3214 | Requesting http://cvs.nvu.com/download/nvu-1.0-sources.tar.bz2 | | 3214 | Requesting http://cvs.nvu.com/download/nvu-1.0-sources.tar.bz2 |
3215 | 100% |*************************************| 28992 KB 150.77 KB/s00:00 ETA | | 3215 | 100% |*************************************| 28992 KB 150.77 KB/s00:00 ETA |
3216 | 29687976 bytes retrieved in 03:12 (150.77 KB/s) | | 3216 | 29687976 bytes retrieved in 03:12 (150.77 KB/s) |
3217 | url2pkg> Running "make extract" ... | | 3217 | url2pkg> Running "make extract" ... |
3218 | => Required installed package digest>=20010302: digest-20060826 found | | 3218 | => Required installed package digest>=20010302: digest-20060826 found |
3219 | => Checksum SHA1 OK for nvu-1.0-sources.tar.bz2 | | 3219 | => Checksum SHA1 OK for nvu-1.0-sources.tar.bz2 |
3220 | => Checksum RMD160 OK for nvu-1.0-sources.tar.bz2 | | 3220 | => Checksum RMD160 OK for nvu-1.0-sources.tar.bz2 |
3221 | work.bacc -> /tmp/roland/pkgsrc/www/nvu/work.bacc | | 3221 | work.bacc -> /tmp/roland/pkgsrc/www/nvu/work.bacc |
3222 | ===> Installing dependencies for nvu-1.0 | | 3222 | ===> Installing dependencies for nvu-1.0 |
3223 | ===> Overriding tools for nvu-1.0 | | 3223 | ===> Overriding tools for nvu-1.0 |
3224 | ===> Extracting for nvu-1.0 | | 3224 | ===> Extracting for nvu-1.0 |
3225 | url2pkg> Adjusting the Makefile. | | 3225 | url2pkg> Adjusting the Makefile. |
3226 | | | 3226 | |
3227 | Remember to correct CATEGORIES, HOMEPAGE, COMMENT, and DESCR when you're done! | | 3227 | Remember to correct CATEGORIES, HOMEPAGE, COMMENT, and DESCR when you're done! |
3228 | | | 3228 | |
3229 | Good luck! (See pkgsrc/doc/pkgsrc.txt for some more help :-) | | 3229 | Good luck! (See pkgsrc/doc/pkgsrc.txt for some more help :-) |
3230 | </pre> | | 3230 | </pre> |
3231 | </div> | | 3231 | </div> |
3232 | <div class="sect3"> | | 3232 | <div class="sect3"> |
3233 | <div class="titlepage"><div><div><h4 class="title"> | | 3233 | <div class="titlepage"><div><div><h4 class="title"> |
3234 | <a name="creating.nvu.problems"></a>10.2.1.2. Fixing all kinds of problems to make the package work</h4></div></div></div> | | 3234 | <a name="creating.nvu.problems"></a>10.2.1.2. Fixing all kinds of problems to make the package work</h4></div></div></div> |
3235 | <p>Now that the package has been extracted, let's see what's inside | | 3235 | <p>Now that the package has been extracted, let's see what's inside |
3236 | it. The package has a <code class="filename">README.txt</code>, but that only | | 3236 | it. The package has a <code class="filename">README.txt</code>, but that only |
3237 | says something about mozilla, so it's probably useless for seeing what | | 3237 | says something about mozilla, so it's probably useless for seeing what |
3238 | dependencies this package has. But since there is a GNU configure script | | 3238 | dependencies this package has. But since there is a GNU configure script |
3239 | in the package, let's hope that it will complain about everything it | | 3239 | in the package, let's hope that it will complain about everything it |
3240 | needs.</p> | | 3240 | needs.</p> |
3241 | <pre class="programlisting"> | | 3241 | <pre class="programlisting"> |
3242 | <code class="prompt">$</code> bmake | | 3242 | <code class="prompt">$</code> bmake |
3243 | => Required installed package digest>=20010302: digest-20060826 found | | 3243 | => Required installed package digest>=20010302: digest-20060826 found |
3244 | => Checksum SHA1 OK for nvu-1.0-sources.tar.bz2 | | 3244 | => Checksum SHA1 OK for nvu-1.0-sources.tar.bz2 |
3245 | => Checksum RMD160 OK for nvu-1.0-sources.tar.bz2 | | 3245 | => Checksum RMD160 OK for nvu-1.0-sources.tar.bz2 |
3246 | ===> Patching for nvu-1.0 | | 3246 | ===> Patching for nvu-1.0 |
3247 | ===> Creating toolchain wrappers for nvu-1.0 | | 3247 | ===> Creating toolchain wrappers for nvu-1.0 |
3248 | ===> Configuring for nvu-1.0 | | 3248 | ===> Configuring for nvu-1.0 |
3249 | [...] | | 3249 | [...] |
3250 | configure: error: Perl 5.004 or higher is required. | | 3250 | configure: error: Perl 5.004 or higher is required. |
3251 | [...] | | 3251 | [...] |
3252 | WARNING: Please add USE_TOOLS+=perl to the package Makefile. | | 3252 | WARNING: Please add USE_TOOLS+=perl to the package Makefile. |
3253 | [...] | | 3253 | [...] |
3254 | </pre> | | 3254 | </pre> |
3255 | <p>That worked quite well. So I opened the package Makefile in my | | 3255 | <p>That worked quite well. So I opened the package Makefile in my |
3256 | editor, and since it already has a <code class="varname">USE_TOOLS</code> line, I | | 3256 | editor, and since it already has a <code class="varname">USE_TOOLS</code> line, I |
3257 | just appended <span class="quote">“<span class="quote">perl</span>”</span> to it. Since the dependencies of the | | 3257 | just appended <span class="quote">“<span class="quote">perl</span>”</span> to it. Since the dependencies of the |
3258 | package have changed now, and since a perl wrapper is automatically | | 3258 | package have changed now, and since a perl wrapper is automatically |
3259 | installed in the <span class="quote">“<span class="quote">tools</span>”</span> phase, I need to build the package | | 3259 | installed in the <span class="quote">“<span class="quote">tools</span>”</span> phase, I need to build the package |
3260 | from scratch.</p> | | 3260 | from scratch.</p> |
3261 | <pre class="programlisting"> | | 3261 | <pre class="programlisting"> |
3262 | <code class="prompt">$</code> bmake clean | | 3262 | <code class="prompt">$</code> bmake clean |
3263 | ===> Cleaning for nvu-1.0 | | 3263 | ===> Cleaning for nvu-1.0 |
3264 | <code class="prompt">$</code> bmake | | 3264 | <code class="prompt">$</code> bmake |
3265 | [...] | | 3265 | [...] |
3266 | *** /tmp/roland/pkgsrc/www/nvu/work.bacc/.tools/bin/make is not \ | | 3266 | *** /tmp/roland/pkgsrc/www/nvu/work.bacc/.tools/bin/make is not \ |
3267 | GNU Make. You will not be able to build Mozilla without GNU Make. | | 3267 | GNU Make. You will not be able to build Mozilla without GNU Make. |
3268 | [...] | | 3268 | [...] |
3269 | </pre> | | 3269 | </pre> |
3270 | <p>So I added <span class="quote">“<span class="quote">gmake</span>”</span> to the | | 3270 | <p>So I added <span class="quote">“<span class="quote">gmake</span>”</span> to the |
3271 | <code class="varname">USE_TOOLS</code> line and tried again (from scratch).</p> | | 3271 | <code class="varname">USE_TOOLS</code> line and tried again (from scratch).</p> |
3272 | <pre class="programlisting"> | | 3272 | <pre class="programlisting"> |
3273 | [...] | | 3273 | [...] |
3274 | checking for GTK - version >= 1.2.0... no | | 3274 | checking for GTK - version >= 1.2.0... no |
3275 | *** Could not run GTK test program, checking why... | | 3275 | *** Could not run GTK test program, checking why... |
3276 | [...] | | 3276 | [...] |
3277 | </pre> | | 3277 | </pre> |
3278 | <p>Now to the other dependencies. The first question is: Where is the | | 3278 | <p>Now to the other dependencies. The first question is: Where is the |
3279 | GTK package hidden in pkgsrc?</p> | | 3279 | GTK package hidden in pkgsrc?</p> |
3280 | <pre class="programlisting"> | | 3280 | <pre class="programlisting"> |
3281 | <code class="prompt">$</code> echo ../../*/gtk* | | 3281 | <code class="prompt">$</code> echo ../../*/gtk* |
3282 | [many packages ...] | | 3282 | [many packages ...] |
3283 | <code class="prompt">$</code> echo ../../*/gtk | | 3283 | <code class="prompt">$</code> echo ../../*/gtk |
3284 | ../../x11/gtk | | 3284 | ../../x11/gtk |
3285 | <code class="prompt">$</code> echo ../../*/gtk2 | | 3285 | <code class="prompt">$</code> echo ../../*/gtk2 |
3286 | ../../x11/gtk2 | | 3286 | ../../x11/gtk2 |
3287 | <code class="prompt">$</code> echo ../../*/gtk2/bui* | | 3287 | <code class="prompt">$</code> echo ../../*/gtk2/bui* |
3288 | ../../x11/gtk2/buildlink3.mk | | 3288 | ../../x11/gtk2/buildlink3.mk |
3289 | </pre> | | 3289 | </pre> |
3290 | <p>The first try was definitely too broad. The second one had exactly | | 3290 | <p>The first try was definitely too broad. The second one had exactly |
3291 | one result, which is very good. But there is one pitfall with GNOME | | 3291 | one result, which is very good. But there is one pitfall with GNOME |
3292 | packages. Before GNOME 2 had been released, there were already many | | 3292 | packages. Before GNOME 2 had been released, there were already many |
3293 | GNOME 1 packages in pkgsrc. To be able to continue to use these | | 3293 | GNOME 1 packages in pkgsrc. To be able to continue to use these |
3294 | packages, the GNOME 2 packages were imported as separate packages, and | | 3294 | packages, the GNOME 2 packages were imported as separate packages, and |
3295 | their names usually have a <span class="quote">“<span class="quote">2</span>”</span> appended. So I checked | | 3295 | their names usually have a <span class="quote">“<span class="quote">2</span>”</span> appended. So I checked |
3296 | whether this was the case here, and indeed it was.</p> | | 3296 | whether this was the case here, and indeed it was.</p> |
3297 | <p>Since the GTK2 package has a <code class="filename">buildlink3.mk</code> | | 3297 | <p>Since the GTK2 package has a <code class="filename">buildlink3.mk</code> |
3298 | file, adding the dependency is very easy. I just inserted an | | 3298 | file, adding the dependency is very easy. I just inserted an |
3299 | <code class="literal">.include</code> line before the last line of the package | | 3299 | <code class="literal">.include</code> line before the last line of the package |
3300 | <code class="filename">Makefile</code>, so that it now looks like this:</p> | | 3300 | <code class="filename">Makefile</code>, so that it now looks like this:</p> |
3301 | <pre class="programlisting"> | | 3301 | <pre class="programlisting"> |
3302 | [...] | | 3302 | [...] |
3303 | .include "../../x11/gtk2/buildlink3.mk" | | 3303 | .include "../../x11/gtk2/buildlink3.mk" |
3304 | .include "../../mk/bsd.pkg.mk | | 3304 | .include "../../mk/bsd.pkg.mk |
3305 | </pre> | | 3305 | </pre> |
3306 | <p>After another <span class="command"><strong>bmake clean && bmake</strong></span>, the answer | | 3306 | <p>After another <span class="command"><strong>bmake clean && bmake</strong></span>, the answer |
3307 | was:</p> | | 3307 | was:</p> |
3308 | <pre class="programlisting"> | | 3308 | <pre class="programlisting"> |
3309 | [...] | | 3309 | [...] |
3310 | checking for gtk-config... /home/roland/pkg/bin/gtk-config | | 3310 | checking for gtk-config... /home/roland/pkg/bin/gtk-config |
3311 | checking for GTK - version >= 1.2.0... no | | 3311 | checking for GTK - version >= 1.2.0... no |
3312 | *** Could not run GTK test program, checking why... | | 3312 | *** Could not run GTK test program, checking why... |
3313 | *** The test program failed to compile or link. See the file config.log for the | | 3313 | *** The test program failed to compile or link. See the file config.log for the |
3314 | *** exact error that occured. This usually means GTK was incorrectly installed | | 3314 | *** exact error that occured. This usually means GTK was incorrectly installed |
3315 | *** or that you have moved GTK since it was installed. In the latter case, you | | 3315 | *** or that you have moved GTK since it was installed. In the latter case, you |
3316 | *** may want to edit the gtk-config script: /home/roland/pkg/bin/gtk-config | | 3316 | *** may want to edit the gtk-config script: /home/roland/pkg/bin/gtk-config |
3317 | configure: error: Test for GTK failed. | | 3317 | configure: error: Test for GTK failed. |
3318 | [...] | | 3318 | [...] |
3319 | </pre> | | 3319 | </pre> |
3320 | <p>In this particular case, the assumption that <span class="quote">“<span class="quote">every package | | 3320 | <p>In this particular case, the assumption that <span class="quote">“<span class="quote">every package |
3321 | prefers GNOME 2</span>”</span> had been wrong. The first of the lines above | | 3321 | prefers GNOME 2</span>”</span> had been wrong. The first of the lines above |
3322 | told me that this package really wanted to have the GNOME 1 version of | | 3322 | told me that this package really wanted to have the GNOME 1 version of |
3323 | GTK. If the package had looked for GTK2, it would have looked for | | 3323 | GTK. If the package had looked for GTK2, it would have looked for |
3324 | <span class="command"><strong>pkg-config</strong></span> instead of <span class="command"><strong>gtk-config</strong></span>. | | 3324 | <span class="command"><strong>pkg-config</strong></span> instead of <span class="command"><strong>gtk-config</strong></span>. |
3325 | So I changed the <code class="literal">x11/gtk2</code> to | | 3325 | So I changed the <code class="literal">x11/gtk2</code> to |
3326 | <code class="literal">x11/gtk</code> in the package <code class="filename">Makefile</code>, | | 3326 | <code class="literal">x11/gtk</code> in the package <code class="filename">Makefile</code>, |
3327 | and tried again.</p> | | 3327 | and tried again.</p> |
3328 | <pre class="programlisting"> | | 3328 | <pre class="programlisting"> |
3329 | [...] | | 3329 | [...] |
3330 | cc -o xpidl.o -c -DOSTYPE=\"NetBSD3\" -DOSARCH=\"NetBSD\" [...] | | 3330 | cc -o xpidl.o -c -DOSTYPE=\"NetBSD3\" -DOSARCH=\"NetBSD\" [...] |
3331 | In file included from xpidl.c:42: | | 3331 | In file included from xpidl.c:42: |
3332 | xpidl.h:53:24: libIDL/IDL.h: No such file or directory | | 3332 | xpidl.h:53:24: libIDL/IDL.h: No such file or directory |
3333 | In file included from xpidl.c:42: | | 3333 | In file included from xpidl.c:42: |
3334 | xpidl.h:132: error: parse error before "IDL_ns" | | 3334 | xpidl.h:132: error: parse error before "IDL_ns" |
3335 | [...] | | 3335 | [...] |
3336 | </pre> | | 3336 | </pre> |
3337 | <p>The package still does not find all of its dependencies. Now the | | 3337 | <p>The package still does not find all of its dependencies. Now the |
3338 | question is: Which package provides the | | 3338 | question is: Which package provides the |
3339 | <code class="filename">libIDL/IDL.h</code> header file?</p> | | 3339 | <code class="filename">libIDL/IDL.h</code> header file?</p> |
3340 | <pre class="programlisting"> | | 3340 | <pre class="programlisting"> |
3341 | <code class="prompt">$</code> echo ../../*/*idl* | | 3341 | <code class="prompt">$</code> echo ../../*/*idl* |
3342 | ../../devel/py-idle ../../wip/idled ../../x11/acidlaunch | | 3342 | ../../devel/py-idle ../../wip/idled ../../x11/acidlaunch |
3343 | <code class="prompt">$</code> echo ../../*/*IDL* | | 3343 | <code class="prompt">$</code> echo ../../*/*IDL* |
3344 | ../../net/libIDL | | 3344 | ../../net/libIDL |
3345 | </pre> | | 3345 | </pre> |
3346 | <p>Let's take the one from the second try. So I included the | | 3346 | <p>Let's take the one from the second try. So I included the |
3347 | <code class="filename">../../net/libIDL/buildlink3.mk</code> file and tried | | 3347 | <code class="filename">../../net/libIDL/buildlink3.mk</code> file and tried |
3348 | again. But the error didn't change. After digging through some of the | | 3348 | again. But the error didn't change. After digging through some of the |
3349 | code, I concluded that the build process of the package was broken and | | 3349 | code, I concluded that the build process of the package was broken and |
3350 | couldn't have ever worked, but since the Mozilla source tree is quite | | 3350 | couldn't have ever worked, but since the Mozilla source tree is quite |
3351 | large, I didn't want to fix it. So I added the following to the package | | 3351 | large, I didn't want to fix it. So I added the following to the package |
3352 | <code class="filename">Makefile</code> and tried again:</p> | | 3352 | <code class="filename">Makefile</code> and tried again:</p> |
3353 | <pre class="programlisting"> | | 3353 | <pre class="programlisting"> |
3354 | CPPFLAGS+= -I${BUILDLINK_PREFIX.libIDL}/include/libIDL-2.0 | | 3354 | CPPFLAGS+= -I${BUILDLINK_PREFIX.libIDL}/include/libIDL-2.0 |
3355 | BUILDLINK_TRANSFORM+= -l:IDL:IDL-2 | | 3355 | BUILDLINK_TRANSFORM+= -l:IDL:IDL-2 |
3356 | </pre> | | 3356 | </pre> |
3357 | <p>The latter line is needed because the package expects the library | | 3357 | <p>The latter line is needed because the package expects the library |
3358 | <code class="filename">libIDL.so</code>, but only | | 3358 | <code class="filename">libIDL.so</code>, but only |
3359 | <code class="filename">libIDL-2.so</code> is available. So I told the compiler | | 3359 | <code class="filename">libIDL-2.so</code> is available. So I told the compiler |
3360 | wrapper to rewrite that on the fly.</p> | | 3360 | wrapper to rewrite that on the fly.</p> |
3361 | <p>The next problem was related to a recent change of the FreeType | | 3361 | <p>The next problem was related to a recent change of the FreeType |
3362 | interface. I looked up in <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/seamonkey/README.html" target="_top"><code class="filename">www/seamonkey</code></a> | | 3362 | interface. I looked up in <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/seamonkey/README.html" target="_top"><code class="filename">www/seamonkey</code></a> |
3363 | which patch files were relevant for this issue and copied them to the | | 3363 | which patch files were relevant for this issue and copied them to the |
3364 | <code class="filename">patches</code> directory. Then I retried, fixed the | | 3364 | <code class="filename">patches</code> directory. Then I retried, fixed the |
3365 | patches so that they applied cleanly and retried again. This time, | | 3365 | patches so that they applied cleanly and retried again. This time, |
3366 | everything worked.</p> | | 3366 | everything worked.</p> |
3367 | </div> | | 3367 | </div> |
3368 | <div class="sect3"> | | 3368 | <div class="sect3"> |
3369 | <div class="titlepage"><div><div><h4 class="title"> | | 3369 | <div class="titlepage"><div><div><h4 class="title"> |
3370 | <a name="creating.nvu.inst"></a>10.2.1.3. Installing the package</h4></div></div></div> | | 3370 | <a name="creating.nvu.inst"></a>10.2.1.3. Installing the package</h4></div></div></div> |
3371 | <pre class="programlisting"> | | 3371 | <pre class="programlisting"> |
3372 | <code class="prompt">$</code> bmake CHECK_FILES=no install | | 3372 | <code class="prompt">$</code> bmake CHECK_FILES=no install |
3373 | [...] | | 3373 | [...] |
3374 | <code class="prompt">$</code> bmake print-PLIST >PLIST | | 3374 | <code class="prompt">$</code> bmake print-PLIST >PLIST |
3375 | <code class="prompt">$</code> bmake deinstall | | 3375 | <code class="prompt">$</code> bmake deinstall |
3376 | <code class="prompt">$</code> bmake install | | 3376 | <code class="prompt">$</code> bmake install |
3377 | </pre> | | 3377 | </pre> |
3378 | </div> | | 3378 | </div> |
3379 | </div> | | 3379 | </div> |
3380 | </div> | | 3380 | </div> |
3381 | </div> | | 3381 | </div> |
3382 | <div class="chapter"> | | 3382 | <div class="chapter"> |
3383 | <div class="titlepage"><div><div><h2 class="title"> | | 3383 | <div class="titlepage"><div><div><h2 class="title"> |
3384 | <a name="components"></a>Chapter 11. Package components - files, directories and contents</h2></div></div></div> | | 3384 | <a name="components"></a>Chapter 11. Package components - files, directories and contents</h2></div></div></div> |
3385 | <div class="toc"> | | 3385 | <div class="toc"> |
3386 | <p><b>Table of Contents</b></p> | | 3386 | <p><b>Table of Contents</b></p> |
3387 | <dl class="toc"> | | 3387 | <dl class="toc"> |
3388 | <dt><span class="sect1"><a href="#components.Makefile">11.1. <code class="filename">Makefile</code></a></span></dt> | | 3388 | <dt><span class="sect1"><a href="#components.Makefile">11.1. <code class="filename">Makefile</code></a></span></dt> |
3389 | <dt><span class="sect1"><a href="#components.distinfo">11.2. <code class="filename">distinfo</code></a></span></dt> | | 3389 | <dt><span class="sect1"><a href="#components.distinfo">11.2. <code class="filename">distinfo</code></a></span></dt> |
3390 | <dt><span class="sect1"><a href="#components.patches">11.3. <code class="filename">patches/*</code></a></span></dt> | | 3390 | <dt><span class="sect1"><a href="#components.patches">11.3. <code class="filename">patches/*</code></a></span></dt> |
3391 | <dd><dl> | | 3391 | <dd><dl> |
3392 | <dt><span class="sect2"><a href="#components.patch.structure">11.3.1. Structure of a single patch file</a></span></dt> | | 3392 | <dt><span class="sect2"><a href="#components.patch.structure">11.3.1. Structure of a single patch file</a></span></dt> |
3393 | <dt><span class="sect2"><a href="#components.patches.caveats">11.3.2. Creating patch files</a></span></dt> | | 3393 | <dt><span class="sect2"><a href="#components.patches.caveats">11.3.2. Creating patch files</a></span></dt> |
3394 | <dt><span class="sect2"><a href="#components.patches.sources">11.3.3. Sources where the patch files come from</a></span></dt> | | 3394 | <dt><span class="sect2"><a href="#components.patches.sources">11.3.3. Sources where the patch files come from</a></span></dt> |
3395 | <dt><span class="sect2"><a href="#components.patches.guidelines">11.3.4. Patching guidelines</a></span></dt> | | 3395 | <dt><span class="sect2"><a href="#components.patches.guidelines">11.3.4. Patching guidelines</a></span></dt> |
3396 | <dt><span class="sect2"><a href="#components.patches.feedback">11.3.5. Feedback to the author</a></span></dt> | | 3396 | <dt><span class="sect2"><a href="#components.patches.feedback">11.3.5. Feedback to the author</a></span></dt> |
3397 | </dl></dd> | | 3397 | </dl></dd> |
3398 | <dt><span class="sect1"><a href="#other-mandatory-files">11.4. Other mandatory files</a></span></dt> | | 3398 | <dt><span class="sect1"><a href="#other-mandatory-files">11.4. Other mandatory files</a></span></dt> |
3399 | <dt><span class="sect1"><a href="#components.optional">11.5. Optional files</a></span></dt> | | 3399 | <dt><span class="sect1"><a href="#components.optional">11.5. Optional files</a></span></dt> |
3400 | <dd><dl> | | 3400 | <dd><dl> |
3401 | <dt><span class="sect2"><a href="#components.optional.bin">11.5.1. Files affecting the binary package</a></span></dt> | | 3401 | <dt><span class="sect2"><a href="#components.optional.bin">11.5.1. Files affecting the binary package</a></span></dt> |
3402 | <dt><span class="sect2"><a href="#components.optional.build">11.5.2. Files affecting the build process</a></span></dt> | | 3402 | <dt><span class="sect2"><a href="#components.optional.build">11.5.2. Files affecting the build process</a></span></dt> |
3403 | <dt><span class="sect2"><a href="#components.optional.none">11.5.3. Files affecting nothing at all</a></span></dt> | | 3403 | <dt><span class="sect2"><a href="#components.optional.none">11.5.3. Files affecting nothing at all</a></span></dt> |
3404 | </dl></dd> | | 3404 | </dl></dd> |
3405 | <dt><span class="sect1"><a href="#work-dir">11.6. <code class="filename">work*</code></a></span></dt> | | 3405 | <dt><span class="sect1"><a href="#work-dir">11.6. <code class="filename">work*</code></a></span></dt> |
3406 | <dt><span class="sect1"><a href="#files-dir">11.7. <code class="filename">files/*</code></a></span></dt> | | 3406 | <dt><span class="sect1"><a href="#files-dir">11.7. <code class="filename">files/*</code></a></span></dt> |
3407 | </dl> | | 3407 | </dl> |
3408 | </div> | | 3408 | </div> |
3409 | <p>Whenever you're preparing a package, there are a number of | | 3409 | <p>Whenever you're preparing a package, there are a number of |
3410 | files involved which are described in the following | | 3410 | files involved which are described in the following |
3411 | sections.</p> | | 3411 | sections.</p> |
3412 | <div class="sect1"> | | 3412 | <div class="sect1"> |
3413 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3413 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3414 | <a name="components.Makefile"></a>11.1. <code class="filename">Makefile</code> | | 3414 | <a name="components.Makefile"></a>11.1. <code class="filename">Makefile</code> |
3415 | </h2></div></div></div> | | 3415 | </h2></div></div></div> |
3416 | <p>Building, installation and creation of a binary package are all | | 3416 | <p>Building, installation and creation of a binary package are all |
3417 | controlled by the package's <code class="filename">Makefile</code>. | | 3417 | controlled by the package's <code class="filename">Makefile</code>. |
3418 | The <code class="filename">Makefile</code> describes various things about | | 3418 | The <code class="filename">Makefile</code> describes various things about |
3419 | a package, for example from where to get it, how to configure, | | 3419 | a package, for example from where to get it, how to configure, |
3420 | build, and install it.</p> | | 3420 | build, and install it.</p> |
3421 | <p>A package <code class="filename">Makefile</code> contains several | | 3421 | <p>A package <code class="filename">Makefile</code> contains several |
3422 | sections that describe the package.</p> | | 3422 | sections that describe the package.</p> |
3423 | <p>In the first section there are the following variables, which | | 3423 | <p>In the first section there are the following variables, which |
3424 | should appear exactly in the order given here. The order and | | 3424 | should appear exactly in the order given here. The order and |
3425 | grouping of the variables is mostly historical and has no further | | 3425 | grouping of the variables is mostly historical and has no further |
3426 | meaning.</p> | | 3426 | meaning.</p> |
3427 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 3427 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
3428 | <li class="listitem"><p><code class="varname">DISTNAME</code> is the basename of the | | 3428 | <li class="listitem"><p><code class="varname">DISTNAME</code> is the basename of the |
3429 | distribution file to be downloaded from the package's | | 3429 | distribution file to be downloaded from the package's |
3430 | website.</p></li> | | 3430 | website.</p></li> |
3431 | <li class="listitem"><p><code class="varname">PKGNAME</code> is the name of the | | 3431 | <li class="listitem"><p><code class="varname">PKGNAME</code> is the name of the |
3432 | package, as used by pkgsrc. You need to provide it if | | 3432 | package, as used by pkgsrc. You need to provide it if |
3433 | <code class="varname">DISTNAME</code> (which is the default) is not a good | | 3433 | <code class="varname">DISTNAME</code> (which is the default) is not a good |
3434 | name for the package in pkgsrc or <code class="varname">DISTNAME</code> is not | | 3434 | name for the package in pkgsrc or <code class="varname">DISTNAME</code> is not |
3435 | provided (no distribution file is required). Usually it is the pkgsrc | | 3435 | provided (no distribution file is required). Usually it is the pkgsrc |
3436 | directory name together with the version number. It must match the | | 3436 | directory name together with the version number. It must match the |
3437 | regular expression | | 3437 | regular expression |
3438 | <code class="varname">^[A-Za-z0-9][A-Za-z0-9-_.+]*$</code>, that is, it | | 3438 | <code class="varname">^[A-Za-z0-9][A-Za-z0-9-_.+]*$</code>, that is, it |
3439 | starts with a letter or digit, and contains only letters, digits, | | 3439 | starts with a letter or digit, and contains only letters, digits, |
3440 | dashes, underscores, dots and plus signs.</p></li> | | 3440 | dashes, underscores, dots and plus signs.</p></li> |
3441 | <li class="listitem"> | | 3441 | <li class="listitem"> |
3442 | <p><code class="varname">CATEGORIES</code> is a list of categories | | 3442 | <p><code class="varname">CATEGORIES</code> is a list of categories |
3443 | which the package fits in. You can choose any of the top-level | | 3443 | which the package fits in. You can choose any of the top-level |
3444 | directories of pkgsrc for it.</p> | | 3444 | directories of pkgsrc for it.</p> |
3445 | <p>Currently the following values are available for | | 3445 | <p>Currently the following values are available for |
3446 | <code class="varname">CATEGORIES</code>. If more than | | 3446 | <code class="varname">CATEGORIES</code>. If more than |
3447 | one is used, they need to be separated by spaces:</p> | | 3447 | one is used, they need to be separated by spaces:</p> |
3448 | <pre class="programlisting"> | | 3448 | <pre class="programlisting"> |
3449 | archivers cross geography meta-pkgs security | | 3449 | archivers cross geography meta-pkgs security |
3450 | audio databases graphics misc shells | | 3450 | audio databases graphics misc shells |
3451 | benchmarks devel ham multimedia sysutils | | 3451 | benchmarks devel ham multimedia sysutils |
3452 | biology editors inputmethod net textproc | | 3452 | biology editors inputmethod net textproc |
3453 | cad emulators lang news time | | 3453 | cad emulators lang news time |
3454 | chat finance mail parallel wm | | 3454 | chat finance mail parallel wm |
3455 | comms fonts math pkgtools www | | 3455 | comms fonts math pkgtools www |
3456 | converters games mbone print x11 | | 3456 | converters games mbone print x11 |
3457 | </pre> | | 3457 | </pre> |
3458 | </li> | | 3458 | </li> |
3459 | <li class="listitem"><p><code class="varname">MASTER_SITES</code>, | | 3459 | <li class="listitem"><p><code class="varname">MASTER_SITES</code>, |
3460 | <code class="varname">DYNAMIC_MASTER_SITES</code>, | | 3460 | <code class="varname">DYNAMIC_MASTER_SITES</code>, |
3461 | <code class="varname">DIST_SUBDIR</code>, <code class="varname">EXTRACT_SUFX</code> | | 3461 | <code class="varname">DIST_SUBDIR</code>, <code class="varname">EXTRACT_SUFX</code> |
3462 | and <code class="varname">DISTFILES</code> are discussed in detail in | | 3462 | and <code class="varname">DISTFILES</code> are discussed in detail in |
3463 | <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> | | 3463 | <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> |
3464 | </ul></div> | | 3464 | </ul></div> |
3465 | <p>The second section contains information about separately | | 3465 | <p>The second section contains information about separately |
3466 | downloaded patches, if any. | | 3466 | downloaded patches, if any. |
3467 | </p> | | 3467 | </p> |
3468 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 3468 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
3469 | <li class="listitem"><p><code class="varname">PATCHFILES</code>: | | 3469 | <li class="listitem"><p><code class="varname">PATCHFILES</code>: |
3470 | Name(s) of additional files that contain distribution patches. | | 3470 | Name(s) of additional files that contain distribution patches. |
3471 | There is no default. pkgsrc will look for them at | | 3471 | There is no default. pkgsrc will look for them at |
3472 | <code class="varname">PATCH_SITES</code>. | | 3472 | <code class="varname">PATCH_SITES</code>. |
3473 | They will automatically be uncompressed before patching if | | 3473 | They will automatically be uncompressed before patching if |
3474 | the names end with <code class="filename">.gz</code> or | | 3474 | the names end with <code class="filename">.gz</code> or |
3475 | <code class="filename">.Z</code>.</p></li> | | 3475 | <code class="filename">.Z</code>.</p></li> |
3476 | <li class="listitem"><p><code class="varname">PATCH_SITES</code>: | | 3476 | <li class="listitem"><p><code class="varname">PATCH_SITES</code>: |
3477 | Primary location(s) for distribution patch files (see | | 3477 | Primary location(s) for distribution patch files (see |
3478 | <code class="varname">PATCHFILES</code> above) if not found locally.</p></li> | | 3478 | <code class="varname">PATCHFILES</code> above) if not found locally.</p></li> |
3479 | <li class="listitem"><p><code class="varname">PATCH_DIST_STRIP</code>: | | 3479 | <li class="listitem"><p><code class="varname">PATCH_DIST_STRIP</code>: |
3480 | an argument to <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?patch+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">patch</span>(1)</span></a> that sets the pathname strip count to | | 3480 | an argument to <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?patch+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">patch</span>(1)</span></a> that sets the pathname strip count to |
3481 | help find the correct files to patch. It defaults to | | 3481 | help find the correct files to patch. It defaults to |
3482 | <span class="command"><strong>-p0</strong></span>.</p></li> | | 3482 | <span class="command"><strong>-p0</strong></span>.</p></li> |
3483 | </ul></div> | | 3483 | </ul></div> |
3484 | <p>The third section contains the following variables. | | 3484 | <p>The third section contains the following variables. |
3485 | </p> | | 3485 | </p> |
3486 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 3486 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
3487 | <li class="listitem"><p><code class="varname">MAINTAINER</code> is the email | | 3487 | <li class="listitem"><p><code class="varname">MAINTAINER</code> is the email |
3488 | address of the person who feels responsible for this package, | | 3488 | address of the person who feels responsible for this package, |
3489 | and who is most likely to look at problems or questions regarding | | 3489 | and who is most likely to look at problems or questions regarding |
3490 | this package which have been reported with <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?send-pr+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">send-pr</span>(1)</span></a>. | | 3490 | this package which have been reported with <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?send-pr+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">send-pr</span>(1)</span></a>. |
3491 | Other developers may contact the <code class="varname">MAINTAINER</code> | | 3491 | Other developers may contact the <code class="varname">MAINTAINER</code> |
3492 | before making changes to the package, but are not required to | | 3492 | before making changes to the package, but are not required to |
3493 | do so. When packaging a new program, set <code class="varname">MAINTAINER</code> | | 3493 | do so. When packaging a new program, set <code class="varname">MAINTAINER</code> |
3494 | to yourself. If you really can't maintain the package for future | | 3494 | to yourself. If you really can't maintain the package for future |
3495 | updates, set it to | | 3495 | updates, set it to |
3496 | <code class="email"><<a class="email" href="mailto:pkgsrc-users@NetBSD.org">pkgsrc-users@NetBSD.org</a>></code>.</p></li> | | 3496 | <code class="email"><<a class="email" href="mailto:pkgsrc-users@NetBSD.org">pkgsrc-users@NetBSD.org</a>></code>.</p></li> |
3497 | <li class="listitem"><p><code class="varname">OWNER</code> should be used instead | | 3497 | <li class="listitem"><p><code class="varname">OWNER</code> should be used instead |
3498 | of <code class="varname">MAINTAINER</code> when you do not want other | | 3498 | of <code class="varname">MAINTAINER</code> when you do not want other |
3499 | developers to update or change the package without contacting | | 3499 | developers to update or change the package without contacting |
3500 | you first. A package Makefile should contain one of | | 3500 | you first. A package Makefile should contain one of |
3501 | <code class="varname">MAINTAINER</code> or <code class="varname">OWNER</code>, but | | 3501 | <code class="varname">MAINTAINER</code> or <code class="varname">OWNER</code>, but |
3502 | not both. </p></li> | | 3502 | not both. </p></li> |
3503 | <li class="listitem"><p><code class="varname">HOMEPAGE</code> is a URL where users can | | 3503 | <li class="listitem"><p><code class="varname">HOMEPAGE</code> is a URL where users can |
3504 | find more information about the package.</p></li> | | 3504 | find more information about the package.</p></li> |
3505 | <li class="listitem"><p><code class="varname">COMMENT</code> is a one-line | | 3505 | <li class="listitem"><p><code class="varname">COMMENT</code> is a one-line |
3506 | description of the package (should not include the package | | 3506 | description of the package (should not include the package |
3507 | name).</p></li> | | 3507 | name).</p></li> |
3508 | <li class="listitem"><p><code class="varname">LICENSE</code> indicates the license(s) | | 3508 | <li class="listitem"><p><code class="varname">LICENSE</code> indicates the license(s) |
3509 | applicable for the package. See <a class="xref" href="#handling-licenses" title="19.1.3. Handling licenses">Section 19.1.3, “Handling licenses”</a> for further details.</p></li> | | 3509 | applicable for the package. See <a class="xref" href="#handling-licenses" title="19.1.3. Handling licenses">Section 19.1.3, “Handling licenses”</a> for further details.</p></li> |
3510 | </ul></div> | | 3510 | </ul></div> |
3511 | <p>Other variables that affect the build: | | 3511 | <p>Other variables that affect the build: |
3512 | </p> | | 3512 | </p> |
3513 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> | | 3513 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> |
3514 | <p><code class="varname">WRKSRC</code>: The directory where the | | 3514 | <p><code class="varname">WRKSRC</code>: The directory where the |
3515 | interesting distribution files of the package are found. The | | 3515 | interesting distribution files of the package are found. The |
3516 | default is <code class="filename">${WRKDIR}/${DISTNAME}</code>, which | | 3516 | default is <code class="filename">${WRKDIR}/${DISTNAME}</code>, which |
3517 | works for most packages.</p> | | 3517 | works for most packages.</p> |
3518 | <p>If a package doesn't create a subdirectory for itself | | 3518 | <p>If a package doesn't create a subdirectory for itself |
3519 | (most GNU software does, for instance), but extracts itself in | | 3519 | (most GNU software does, for instance), but extracts itself in |
3520 | the current directory, you should set | | 3520 | the current directory, you should set |
3521 | <code class="varname">WRKSRC=${WRKDIR}</code>.</p> | | 3521 | <code class="varname">WRKSRC=${WRKDIR}</code>.</p> |
3522 | <p>If a package doesn't create a subdirectory with the | | 3522 | <p>If a package doesn't create a subdirectory with the |
3523 | name of <code class="varname">DISTNAME</code> but some different name, | | 3523 | name of <code class="varname">DISTNAME</code> but some different name, |
3524 | set <code class="varname">WRKSRC</code> to point to the proper name in | | 3524 | set <code class="varname">WRKSRC</code> to point to the proper name in |
3525 | <code class="filename">${WRKDIR}</code>, for example | | 3525 | <code class="filename">${WRKDIR}</code>, for example |
3526 | <code class="varname">WRKSRC=${WRKDIR}/${DISTNAME}/unix</code>. See | | 3526 | <code class="varname">WRKSRC=${WRKDIR}/${DISTNAME}/unix</code>. See |
3527 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/lang/tcl/README.html" target="_top"><code class="filename">lang/tcl</code></a> and <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/x11/tk/README.html" target="_top"><code class="filename">x11/tk</code></a> for other examples.</p> | | 3527 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/lang/tcl/README.html" target="_top"><code class="filename">lang/tcl</code></a> and <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/x11/tk/README.html" target="_top"><code class="filename">x11/tk</code></a> for other examples.</p> |
3528 | <p>The name of the working directory created by pkgsrc is | | 3528 | <p>The name of the working directory created by pkgsrc is |
3529 | taken from the <code class="varname">WRKDIR_BASENAME</code> | | 3529 | taken from the <code class="varname">WRKDIR_BASENAME</code> |
3530 | variable. By default, its value is | | 3530 | variable. By default, its value is |
3531 | <code class="filename">work</code>. If you want to use the same | | 3531 | <code class="filename">work</code>. If you want to use the same |
3532 | pkgsrc tree for building different kinds of binary packages, | | 3532 | pkgsrc tree for building different kinds of binary packages, |
3533 | you can change the variable according to your needs. Two | | 3533 | you can change the variable according to your needs. Two |
3534 | other variables handle common cases of setting | | 3534 | other variables handle common cases of setting |
3535 | <code class="varname">WRKDIR_BASENAME</code> individually. If | | 3535 | <code class="varname">WRKDIR_BASENAME</code> individually. If |
3536 | <code class="varname">OBJHOSTNAME</code> is defined in | | 3536 | <code class="varname">OBJHOSTNAME</code> is defined in |
3537 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>, the first component of | | 3537 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>, the first component of |
3538 | the host's name is attached to the directory name. If | | 3538 | the host's name is attached to the directory name. If |
3539 | <code class="varname">OBJMACHINE</code> is defined, the platform name | | 3539 | <code class="varname">OBJMACHINE</code> is defined, the platform name |
3540 | is attached, which might look like | | 3540 | is attached, which might look like |
3541 | <code class="filename">work.i386</code> or | | 3541 | <code class="filename">work.i386</code> or |
3542 | <code class="filename">work.sparc</code>.</p> | | 3542 | <code class="filename">work.sparc</code>.</p> |
3543 | </li></ul></div> | | 3543 | </li></ul></div> |
3544 | <p>Please pay attention to the following gotchas:</p> | | 3544 | <p>Please pay attention to the following gotchas:</p> |
3545 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 3545 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
3546 | <li class="listitem"><p>Add <code class="varname">MANCOMPRESSED</code> if man pages are | | 3546 | <li class="listitem"><p>Add <code class="varname">MANCOMPRESSED</code> if man pages are |
3547 | installed in compressed form by the package. For packages using | | 3547 | installed in compressed form by the package. For packages using |
3548 | BSD-style makefiles which honor MANZ, there is | | 3548 | BSD-style makefiles which honor MANZ, there is |
3549 | <code class="varname">MANCOMPRESSED_IF_MANZ</code>.</p></li> | | 3549 | <code class="varname">MANCOMPRESSED_IF_MANZ</code>.</p></li> |
3550 | <li class="listitem"><p>Replace <code class="filename">/usr/local</code> with | | 3550 | <li class="listitem"><p>Replace <code class="filename">/usr/local</code> with |
3551 | <span class="quote">“<span class="quote">${PREFIX}</span>”</span> in all files (see patches, | | 3551 | <span class="quote">“<span class="quote">${PREFIX}</span>”</span> in all files (see patches, |
3552 | below).</p></li> | | 3552 | below).</p></li> |
3553 | <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> | | 3553 | <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> |
3554 | </ul></div> | | 3554 | </ul></div> |
3555 | </div> | | 3555 | </div> |
3556 | <div class="sect1"> | | 3556 | <div class="sect1"> |
3557 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3557 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3558 | <a name="components.distinfo"></a>11.2. <code class="filename">distinfo</code> | | 3558 | <a name="components.distinfo"></a>11.2. <code class="filename">distinfo</code> |
3559 | </h2></div></div></div> | | 3559 | </h2></div></div></div> |
3560 | <p>The <code class="filename">distinfo</code> file contains the message | | 3560 | <p>The <code class="filename">distinfo</code> file contains the message |
3561 | digest, or checksum, of each distfile needed for the package. This | | 3561 | digest, or checksum, of each distfile needed for the package. This |
3562 | ensures that the distfiles retrieved from the Internet have not been | | 3562 | ensures that the distfiles retrieved from the Internet have not been |
3563 | corrupted during transfer or altered by a malign force to introduce | | 3563 | corrupted during transfer or altered by a malign force to introduce |
3564 | a security hole. To provide maximum security, all distfiles are | | 3564 | a security hole. To provide maximum security, all distfiles are |
3565 | protected using three different message digest algorithms (SHA1, | | 3565 | protected using three different message digest algorithms (SHA1, |
3566 | RMD160, SHA512), as well as the file size.</p> | | 3566 | RMD160, SHA512), as well as the file size.</p> |
3567 | <p>The <code class="filename">distinfo</code> file also contains the | | 3567 | <p>The <code class="filename">distinfo</code> file also contains the |
3568 | checksums for all the patches found in the | | 3568 | checksums for all the patches found in the |
3569 | <code class="filename">patches</code> directory (see <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “<code class="filename">patches/*</code>”</a>).</p> | | 3569 | <code class="filename">patches</code> directory (see <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “<code class="filename">patches/*</code>”</a>).</p> |
3570 | <p>To regenerate the <code class="filename">distinfo</code> file, use the | | 3570 | <p>To regenerate the <code class="filename">distinfo</code> file, use the |
3571 | <span class="command"><strong>make distinfo</strong></span> command.</p> | | 3571 | <span class="command"><strong>make distinfo</strong></span> command.</p> |
3572 | <p>Some packages have different sets of distfiles depending on | | 3572 | <p>Some packages have different sets of distfiles depending on |
3573 | the platform, for example <a href="http://cdn.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 | | 3573 | the platform, for example <a href="https://cdn.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 |
3574 | <code class="filename">distinfo</code> file and care should be taken when | | 3574 | <code class="filename">distinfo</code> file and care should be taken when |
3575 | upgrading such a package to ensure distfile information is not | | 3575 | upgrading such a package to ensure distfile information is not |
3576 | lost.</p> | | 3576 | lost.</p> |
3577 | </div> | | 3577 | </div> |
3578 | <div class="sect1"> | | 3578 | <div class="sect1"> |
3579 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3579 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3580 | <a name="components.patches"></a>11.3. <code class="filename">patches/*</code> | | 3580 | <a name="components.patches"></a>11.3. <code class="filename">patches/*</code> |
3581 | </h2></div></div></div> | | 3581 | </h2></div></div></div> |
3582 | <p>Some packages don't work out-of-the box on the various | | 3582 | <p>Some packages don't work out-of-the box on the various |
3583 | platforms that are supported by pkgsrc. These packages need | | 3583 | platforms that are supported by pkgsrc. These packages need |
3584 | to be patched to make them work. The patch files can be | | 3584 | to be patched to make them work. The patch files can be |
3585 | found in the <code class="filename">patches/</code> directory.</p> | | 3585 | found in the <code class="filename">patches/</code> directory.</p> |
3586 | <p>In the <span class="emphasis"><em>patch</em></span> phase, these patches are | | 3586 | <p>In the <span class="emphasis"><em>patch</em></span> phase, these patches are |
3587 | applied to the files in <code class="varname">WRKSRC</code> directory after | | 3587 | applied to the files in <code class="varname">WRKSRC</code> directory after |
3588 | extracting them, in alphabetic order.</p> | | 3588 | extracting them, in alphabetic order.</p> |
3589 | <div class="sect2"> | | 3589 | <div class="sect2"> |
3590 | <div class="titlepage"><div><div><h3 class="title"> | | 3590 | <div class="titlepage"><div><div><h3 class="title"> |
3591 | <a name="components.patch.structure"></a>11.3.1. Structure of a single patch file</h3></div></div></div> | | 3591 | <a name="components.patch.structure"></a>11.3.1. Structure of a single patch file</h3></div></div></div> |
3592 | <p>The <code class="filename">patch-*</code> files should be in | | 3592 | <p>The <code class="filename">patch-*</code> files should be in |
3593 | <span class="command"><strong>diff -bu</strong></span> format, and apply without a fuzz to avoid | | 3593 | <span class="command"><strong>diff -bu</strong></span> format, and apply without a fuzz to avoid |
3594 | problems. (To force patches to apply with fuzz you can set | | 3594 | problems. (To force patches to apply with fuzz you can set |
3595 | <code class="varname">PATCH_FUZZ_FACTOR=-F2</code>). Furthermore, each patch | | 3595 | <code class="varname">PATCH_FUZZ_FACTOR=-F2</code>). Furthermore, each patch |
3596 | should contain only changes for a single file, and no file should be | | 3596 | should contain only changes for a single file, and no file should be |
3597 | patched by more than one patch file. This helps to keep future | | 3597 | patched by more than one patch file. This helps to keep future |
3598 | modifications simple.</p> | | 3598 | modifications simple.</p> |
3599 | <p>Each patch file is structured as follows: In the first line, | | 3599 | <p>Each patch file is structured as follows: In the first line, |
3600 | there is the RCS Id of the patch itself. The second line should be | | 3600 | there is the RCS Id of the patch itself. The second line should be |
3601 | empty for aesthetic reasons. After that, there should be a comment for | | 3601 | empty for aesthetic reasons. After that, there should be a comment for |
3602 | each change that the patch does. There are a number of standard | | 3602 | each change that the patch does. There are a number of standard |
3603 | cases:</p> | | 3603 | cases:</p> |
3604 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 3604 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
3605 | <li class="listitem"><p>Patches for commonly known vulnerabilities should | | 3605 | <li class="listitem"><p>Patches for commonly known vulnerabilities should |
3606 | mention the vulnerability ID (CAN, CVE).</p></li> | | 3606 | mention the vulnerability ID (CAN, CVE).</p></li> |
3607 | <li class="listitem"><p>Patches that change source code should mention the | | 3607 | <li class="listitem"><p>Patches that change source code should mention the |
3608 | platform and other environment (for example, the compiler) that the | | 3608 | platform and other environment (for example, the compiler) that the |
3609 | patch is needed for.</p></li> | | 3609 | patch is needed for.</p></li> |
3610 | </ul></div> | | 3610 | </ul></div> |
3611 | <p>The patch should be commented so that any | | 3611 | <p>The patch should be commented so that any |
3612 | developer who knows the code of the application can make some use of | | 3612 | developer who knows the code of the application can make some use of |
3613 | the patch. Special care should be taken for the upstream developers, | | 3613 | the patch. Special care should be taken for the upstream developers, |
3614 | since we generally want that they accept our patches, so we have less | | 3614 | since we generally want that they accept our patches, so we have less |
3615 | work in the future.</p> | | 3615 | work in the future.</p> |
3616 | </div> | | 3616 | </div> |
3617 | <div class="sect2"> | | 3617 | <div class="sect2"> |
3618 | <div class="titlepage"><div><div><h3 class="title"> | | 3618 | <div class="titlepage"><div><div><h3 class="title"> |
3619 | <a name="components.patches.caveats"></a>11.3.2. Creating patch files</h3></div></div></div> | | 3619 | <a name="components.patches.caveats"></a>11.3.2. Creating patch files</h3></div></div></div> |
3620 | <p>One important thing to mention is to pay attention that no RCS | | 3620 | <p>One important thing to mention is to pay attention that no RCS |
3621 | IDs get stored in the patch files, as these will cause problems when | | 3621 | IDs get stored in the patch files, as these will cause problems when |
3622 | later checked into the NetBSD CVS tree. Use the | | 3622 | later checked into the NetBSD CVS tree. Use the |
3623 | <span class="command"><strong>pkgdiff</strong></span> command from the <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a> package to avoid these | | 3623 | <span class="command"><strong>pkgdiff</strong></span> command from the <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a> package to avoid these |
3624 | problems.</p> | | 3624 | problems.</p> |
3625 | <p>For even more automation, we recommend using | | 3625 | <p>For even more automation, we recommend using |
3626 | <span class="command"><strong>mkpatches</strong></span> from the same package to make a | | 3626 | <span class="command"><strong>mkpatches</strong></span> from the same package to make a |
3627 | whole set of patches. You just have to backup files before you | | 3627 | whole set of patches. You just have to backup files before you |
3628 | edit them to <code class="filename">filename.orig</code>, e.g. with | | 3628 | edit them to <code class="filename">filename.orig</code>, e.g. with |
3629 | <span class="command"><strong>cp -p filename filename.orig</strong></span> or, easier, by | | 3629 | <span class="command"><strong>cp -p filename filename.orig</strong></span> or, easier, by |
3630 | using <span class="command"><strong>pkgvi</strong></span> again from the same package. If | | 3630 | using <span class="command"><strong>pkgvi</strong></span> again from the same package. If |
3631 | you upgrade a package this way, you can easily compare the new | | 3631 | you upgrade a package this way, you can easily compare the new |
3632 | set of patches with the previously existing one with | | 3632 | set of patches with the previously existing one with |
3633 | <span class="command"><strong>patchdiff</strong></span>. The files in <code class="filename">patches</code> | | 3633 | <span class="command"><strong>patchdiff</strong></span>. The files in <code class="filename">patches</code> |
3634 | are replaced by new files, so carefully check if you want to take all | | 3634 | are replaced by new files, so carefully check if you want to take all |
3635 | the changes.</p> | | 3635 | the changes.</p> |
3636 | <p>When you have finished a package, remember to generate | | 3636 | <p>When you have finished a package, remember to generate |
3637 | the checksums for the patch files by using the <span class="command"><strong>make | | 3637 | the checksums for the patch files by using the <span class="command"><strong>make |
3638 | 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> | | 3638 | 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> |
3639 | <p>When adding a patch that corrects a problem in the | | 3639 | <p>When adding a patch that corrects a problem in the |
3640 | distfile (rather than e.g. enforcing pkgsrc's view of where | | 3640 | distfile (rather than e.g. enforcing pkgsrc's view of where |
3641 | man pages should go), send the patch as a bug report to the | | 3641 | man pages should go), send the patch as a bug report to the |
3642 | maintainer. This benefits non-pkgsrc users of the package, | | 3642 | maintainer. This benefits non-pkgsrc users of the package, |
3643 | and usually makes it possible to remove the patch in future | | 3643 | and usually makes it possible to remove the patch in future |
3644 | version.</p> | | 3644 | version.</p> |
3645 | <p>The file names of the patch files are usually of the form | | 3645 | <p>The file names of the patch files are usually of the form |
3646 | <code class="filename">patch-<em class="replaceable"><code>path_to_file__with__underscores.c</code></em></code>. | | 3646 | <code class="filename">patch-<em class="replaceable"><code>path_to_file__with__underscores.c</code></em></code>. |
3647 | Many packages still use the previous convention | | 3647 | Many packages still use the previous convention |
3648 | <code class="filename">patch-<em class="replaceable"><code>[a-z][a-z]</code></em></code>, | | 3648 | <code class="filename">patch-<em class="replaceable"><code>[a-z][a-z]</code></em></code>, |
3649 | but new patches should be of the form containing the filename. | | 3649 | but new patches should be of the form containing the filename. |
3650 | <span class="command"><strong>mkpatches</strong></span> included in <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a> takes care of the name | | 3650 | <span class="command"><strong>mkpatches</strong></span> included in <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a> takes care of the name |
3651 | automatically.</p> | | 3651 | automatically.</p> |
3652 | </div> | | 3652 | </div> |
3653 | <div class="sect2"> | | 3653 | <div class="sect2"> |
3654 | <div class="titlepage"><div><div><h3 class="title"> | | 3654 | <div class="titlepage"><div><div><h3 class="title"> |
3655 | <a name="components.patches.sources"></a>11.3.3. Sources where the patch files come from</h3></div></div></div> | | 3655 | <a name="components.patches.sources"></a>11.3.3. Sources where the patch files come from</h3></div></div></div> |
3656 | <p>If you want to share patches between multiple packages | | 3656 | <p>If you want to share patches between multiple packages |
3657 | in pkgsrc, e.g. because they use the same distfiles, set | | 3657 | in pkgsrc, e.g. because they use the same distfiles, set |
3658 | <code class="varname">PATCHDIR</code> to the path where the patch files | | 3658 | <code class="varname">PATCHDIR</code> to the path where the patch files |
3659 | can be found, e.g.:</p> | | 3659 | can be found, e.g.:</p> |
3660 | <pre class="programlisting"> | | 3660 | <pre class="programlisting"> |
3661 | PATCHDIR= ${.CURDIR}/../xemacs/patches | | 3661 | PATCHDIR= ${.CURDIR}/../xemacs/patches |
3662 | </pre> | | 3662 | </pre> |
3663 | <p>Patch files that are distributed by the author or other | | 3663 | <p>Patch files that are distributed by the author or other |
3664 | maintainers can be listed in | | 3664 | maintainers can be listed in |
3665 | <code class="varname">PATCHFILES</code>.</p> | | 3665 | <code class="varname">PATCHFILES</code>.</p> |
3666 | <p>If it is desired to store any patches that should not be | | 3666 | <p>If it is desired to store any patches that should not be |
3667 | committed into pkgsrc, they can be kept outside the pkgsrc | | 3667 | committed into pkgsrc, they can be kept outside the pkgsrc |
3668 | tree in the <code class="filename">$LOCALPATCHES</code> directory. The | | 3668 | tree in the <code class="filename">$LOCALPATCHES</code> directory. The |
3669 | directory tree there is expected to have the same | | 3669 | directory tree there is expected to have the same |
3670 | <span class="quote">“<span class="quote">category/package</span>”</span> structure as pkgsrc, and | | 3670 | <span class="quote">“<span class="quote">category/package</span>”</span> structure as pkgsrc, and |
3671 | patches are expected to be stored inside these dirs (also | | 3671 | patches are expected to be stored inside these dirs (also |
3672 | known as <code class="filename">$LOCALPATCHES/$PKGPATH</code>). For | | 3672 | known as <code class="filename">$LOCALPATCHES/$PKGPATH</code>). For |
3673 | example, if you want to keep a private patch for | | 3673 | example, if you want to keep a private patch for |
3674 | <code class="filename">pkgsrc/graphics/png</code>, keep it in | | 3674 | <code class="filename">pkgsrc/graphics/png</code>, keep it in |
3675 | <code class="filename">$LOCALPATCHES/graphics/png/mypatch</code>. All | | 3675 | <code class="filename">$LOCALPATCHES/graphics/png/mypatch</code>. All |
3676 | files in the named directory are expected to be patch files, | | 3676 | files in the named directory are expected to be patch files, |
3677 | and <span class="emphasis"><em>they are applied after pkgsrc patches are | | 3677 | and <span class="emphasis"><em>they are applied after pkgsrc patches are |
3678 | applied</em></span>.</p> | | 3678 | applied</em></span>.</p> |
3679 | </div> | | 3679 | </div> |
3680 | <div class="sect2"> | | 3680 | <div class="sect2"> |
3681 | <div class="titlepage"><div><div><h3 class="title"> | | 3681 | <div class="titlepage"><div><div><h3 class="title"> |
3682 | <a name="components.patches.guidelines"></a>11.3.4. Patching guidelines</h3></div></div></div> | | 3682 | <a name="components.patches.guidelines"></a>11.3.4. Patching guidelines</h3></div></div></div> |
3683 | <p>When fixing a portability issue in the code do not use | | 3683 | <p>When fixing a portability issue in the code do not use |
3684 | preprocessor magic to check for the current operating system nor | | 3684 | preprocessor magic to check for the current operating system nor |
3685 | platform. Doing so hurts portability to other platforms because | | 3685 | platform. Doing so hurts portability to other platforms because |
3686 | the OS-specific details are not abstracted appropriately.</p> | | 3686 | the OS-specific details are not abstracted appropriately.</p> |
3687 | <p>The general rule to follow is: instead of checking for the | | 3687 | <p>The general rule to follow is: instead of checking for the |
3688 | operating system the application is being built on, check for the | | 3688 | operating system the application is being built on, check for the |
3689 | specific <span class="emphasis"><em>features</em></span> you need. For example, | | 3689 | specific <span class="emphasis"><em>features</em></span> you need. For example, |
3690 | instead of assuming that kqueue is available under NetBSD and | | 3690 | instead of assuming that kqueue is available under NetBSD and |
3691 | using the <code class="varname">__NetBSD__</code> macro to conditionalize | | 3691 | using the <code class="varname">__NetBSD__</code> macro to conditionalize |
3692 | kqueue support, add a check that detects kqueue itself — | | 3692 | kqueue support, add a check that detects kqueue itself — |
3693 | yes, this generally involves patching the | | 3693 | yes, this generally involves patching the |
3694 | <span class="command"><strong>configure</strong></span> script. There is absolutely nothing | | 3694 | <span class="command"><strong>configure</strong></span> script. There is absolutely nothing |
3695 | that prevents some OSes from adopting interfaces from other OSes | | 3695 | that prevents some OSes from adopting interfaces from other OSes |
3696 | (e.g. Linux implementing kqueue), something that the above checks | | 3696 | (e.g. Linux implementing kqueue), something that the above checks |
3697 | cannot take into account.</p> | | 3697 | cannot take into account.</p> |
3698 | <p>Of course, checking for features generally involves more | | 3698 | <p>Of course, checking for features generally involves more |
3699 | work on the developer's side, but the resulting changes are | | 3699 | work on the developer's side, but the resulting changes are |
3700 | cleaner and there are chances they will work on many other | | 3700 | cleaner and there are chances they will work on many other |
3701 | platforms. Not to mention that there are higher chances of being | | 3701 | platforms. Not to mention that there are higher chances of being |
3702 | later integrated into the mainstream sources. Remember: | | 3702 | later integrated into the mainstream sources. Remember: |
3703 | <span class="emphasis"><em>It doesn't work unless it is right!</em></span></p> | | 3703 | <span class="emphasis"><em>It doesn't work unless it is right!</em></span></p> |
3704 | <p>Some typical examples:</p> | | 3704 | <p>Some typical examples:</p> |
3705 | <div class="table"> | | 3705 | <div class="table"> |
3706 | <a name="patch-examples"></a><p class="title"><b>Table 11.1. Patching examples</b></p> | | 3706 | <a name="patch-examples"></a><p class="title"><b>Table 11.1. Patching examples</b></p> |
3707 | <div class="table-contents"><table class="table" summary="Patching examples" border="1"> | | 3707 | <div class="table-contents"><table class="table" summary="Patching examples" border="1"> |
3708 | <colgroup> | | 3708 | <colgroup> |
3709 | <col> | | 3709 | <col> |
3710 | <col> | | 3710 | <col> |
3711 | <col> | | 3711 | <col> |
3712 | </colgroup> | | 3712 | </colgroup> |
3713 | <thead><tr> | | 3713 | <thead><tr> |
3714 | <th>Where</th> | | 3714 | <th>Where</th> |
3715 | <th>Incorrect</th> | | 3715 | <th>Incorrect</th> |
3716 | <th>Correct</th> | | 3716 | <th>Correct</th> |
3717 | </tr></thead> | | 3717 | </tr></thead> |
3718 | <tbody> | | 3718 | <tbody> |
3719 | <tr> | | 3719 | <tr> |
3720 | <td>configure script</td> | | 3720 | <td>configure script</td> |
3721 | <td> | | 3721 | <td> |
3722 | <pre class="programlisting"> | | 3722 | <pre class="programlisting"> |
3723 | case ${target_os} in | | 3723 | case ${target_os} in |
3724 | netbsd*) have_kvm=yes ;; | | 3724 | netbsd*) have_kvm=yes ;; |
3725 | *) have_kvm=no ;; | | 3725 | *) have_kvm=no ;; |
3726 | esac | | 3726 | esac |
3727 | </pre> | | 3727 | </pre> |
3728 | </td> | | 3728 | </td> |
3729 | <td> | | 3729 | <td> |
3730 | <pre class="programlisting"> | | 3730 | <pre class="programlisting"> |
3731 | AC_CHECK_LIB(kvm, kvm_open, have_kvm=yes, have_kvm=no) | | 3731 | AC_CHECK_LIB(kvm, kvm_open, have_kvm=yes, have_kvm=no) |
3732 | </pre> | | 3732 | </pre> |
3733 | </td> | | 3733 | </td> |
3734 | </tr> | | 3734 | </tr> |
3735 | <tr> | | 3735 | <tr> |
3736 | <td>C source file</td> | | 3736 | <td>C source file</td> |
3737 | <td> | | 3737 | <td> |
3738 | <pre class="programlisting"> | | 3738 | <pre class="programlisting"> |
3739 | #if defined(__NetBSD__) | | 3739 | #if defined(__NetBSD__) |
3740 | # include <sys/event.h> | | 3740 | # include <sys/event.h> |
3741 | #endif | | 3741 | #endif |
3742 | </pre> | | 3742 | </pre> |
3743 | </td> | | 3743 | </td> |
3744 | <td> | | 3744 | <td> |
3745 | <pre class="programlisting"> | | 3745 | <pre class="programlisting"> |
3746 | #if defined(HAVE_SYS_EVENT_H) | | 3746 | #if defined(HAVE_SYS_EVENT_H) |
3747 | # include <sys/event.h> | | 3747 | # include <sys/event.h> |
3748 | #endif | | 3748 | #endif |
3749 | </pre> | | 3749 | </pre> |
3750 | </td> | | 3750 | </td> |
3751 | </tr> | | 3751 | </tr> |
3752 | <tr> | | 3752 | <tr> |
3753 | <td>C source file</td> | | 3753 | <td>C source file</td> |
3754 | <td> | | 3754 | <td> |
3755 | <pre class="programlisting"> | | 3755 | <pre class="programlisting"> |
3756 | int | | 3756 | int |
3757 | monitor_file(...) | | 3757 | monitor_file(...) |
3758 | { | | 3758 | { |
3759 | #if defined(__NetBSD__) | | 3759 | #if defined(__NetBSD__) |
3760 | int fd = kqueue(); | | 3760 | int fd = kqueue(); |
3761 | ... | | 3761 | ... |
3762 | #else | | 3762 | #else |
3763 | ... | | 3763 | ... |
3764 | #endif | | 3764 | #endif |
3765 | } | | 3765 | } |
3766 | </pre> | | 3766 | </pre> |
3767 | </td> | | 3767 | </td> |
3768 | <td> | | 3768 | <td> |
3769 | <pre class="programlisting"> | | 3769 | <pre class="programlisting"> |
3770 | int | | 3770 | int |
3771 | monitor_file(...) | | 3771 | monitor_file(...) |
3772 | { | | 3772 | { |
3773 | #if defined(HAVE_KQUEUE) | | 3773 | #if defined(HAVE_KQUEUE) |
3774 | int fd = kqueue(); | | 3774 | int fd = kqueue(); |
3775 | ... | | 3775 | ... |
3776 | #else | | 3776 | #else |
3777 | ... | | 3777 | ... |
3778 | #endif | | 3778 | #endif |
3779 | } | | 3779 | } |
3780 | </pre> | | 3780 | </pre> |
3781 | </td> | | 3781 | </td> |
3782 | </tr> | | 3782 | </tr> |
3783 | </tbody> | | 3783 | </tbody> |
3784 | </table></div> | | 3784 | </table></div> |
3785 | </div> | | 3785 | </div> |
3786 | <br class="table-break"><p>For more information, please read the <span class="emphasis"><em>Making | | 3786 | <br class="table-break"><p>For more information, please read the <span class="emphasis"><em>Making |
3787 | 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 | | 3787 | 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 |
3788 | 1</a>, <a class="ulink" href="http://www.oreillynet.com/pub/a/onlamp/2005/04/28/packaging2.html" target="_top">part | | 3788 | 1</a>, <a class="ulink" href="http://www.oreillynet.com/pub/a/onlamp/2005/04/28/packaging2.html" target="_top">part |
3789 | 2</a>). It summarizes multiple details on how to make | | 3789 | 2</a>). It summarizes multiple details on how to make |
3790 | software easier to package; all the suggestions in it were | | 3790 | software easier to package; all the suggestions in it were |
3791 | collected from our experience in pkgsrc work, so they are possibly | | 3791 | collected from our experience in pkgsrc work, so they are possibly |
3792 | helpful when creating patches too.</p> | | 3792 | helpful when creating patches too.</p> |
3793 | </div> | | 3793 | </div> |
3794 | <div class="sect2"> | | 3794 | <div class="sect2"> |
3795 | <div class="titlepage"><div><div><h3 class="title"> | | 3795 | <div class="titlepage"><div><div><h3 class="title"> |
3796 | <a name="components.patches.feedback"></a>11.3.5. Feedback to the author</h3></div></div></div> | | 3796 | <a name="components.patches.feedback"></a>11.3.5. Feedback to the author</h3></div></div></div> |
3797 | <p>Always, always, <span class="strong"><strong>always</strong></span> | | 3797 | <p>Always, always, <span class="strong"><strong>always</strong></span> |
3798 | feed back any <span class="emphasis"><em>portability fixes</em></span> or | | 3798 | feed back any <span class="emphasis"><em>portability fixes</em></span> or |
3799 | improvements you do to a package to the mainstream developers. | | 3799 | improvements you do to a package to the mainstream developers. |
3800 | This is the only way to get their attention on portability issues | | 3800 | This is the only way to get their attention on portability issues |
3801 | and to ensure that future versions can be built out-of-the box on | | 3801 | and to ensure that future versions can be built out-of-the box on |
3802 | NetBSD. Furthermore, any user that gets newer distfiles will get | | 3802 | NetBSD. Furthermore, any user that gets newer distfiles will get |
3803 | the fixes straight from the packaged code.</p> | | 3803 | the fixes straight from the packaged code.</p> |
3804 | <p>This generally involves cleaning up the patches | | 3804 | <p>This generally involves cleaning up the patches |
3805 | (because sometimes the patches that are | | 3805 | (because sometimes the patches that are |
3806 | added to pkgsrc are quick hacks), filing bug reports in the | | 3806 | added to pkgsrc are quick hacks), filing bug reports in the |
3807 | appropriate trackers for the projects and working with the | | 3807 | appropriate trackers for the projects and working with the |
3808 | mainstream authors to accept your changes. It is | | 3808 | mainstream authors to accept your changes. It is |
3809 | <span class="emphasis"><em>extremely important</em></span> that you do it so that | | 3809 | <span class="emphasis"><em>extremely important</em></span> that you do it so that |
3810 | the packages in pkgsrc are kept simple and thus further changes | | 3810 | the packages in pkgsrc are kept simple and thus further changes |
3811 | can be done without much hassle.</p> | | 3811 | can be done without much hassle.</p> |
3812 | <p>When you have done this, please add a URL to the upstream | | 3812 | <p>When you have done this, please add a URL to the upstream |
3813 | bug report to the patch comment.</p> | | 3813 | bug report to the patch comment.</p> |
3814 | <p>Support the idea of free software!</p> | | 3814 | <p>Support the idea of free software!</p> |
3815 | </div> | | 3815 | </div> |
3816 | </div> | | 3816 | </div> |
3817 | <div class="sect1"> | | 3817 | <div class="sect1"> |
3818 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3818 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3819 | <a name="other-mandatory-files"></a>11.4. Other mandatory files</h2></div></div></div> | | 3819 | <a name="other-mandatory-files"></a>11.4. Other mandatory files</h2></div></div></div> |
3820 | <div class="variablelist"><dl class="variablelist"> | | 3820 | <div class="variablelist"><dl class="variablelist"> |
3821 | <dt><span class="term"><code class="filename">DESCR</code></span></dt> | | 3821 | <dt><span class="term"><code class="filename">DESCR</code></span></dt> |
3822 | <dd><p>A multi-line description of the piece of software. This should include | | 3822 | <dd><p>A multi-line description of the piece of software. This should include |
3823 | any credits where they are due. Please bear in mind that others do not | | 3823 | any credits where they are due. Please bear in mind that others do not |
3824 | share your sense of humour (or spelling idiosyncrasies), and that others | | 3824 | share your sense of humour (or spelling idiosyncrasies), and that others |
3825 | will read everything that you write here.</p></dd> | | 3825 | will read everything that you write here.</p></dd> |
3826 | <dt><span class="term"><code class="filename">PLIST</code></span></dt> | | 3826 | <dt><span class="term"><code class="filename">PLIST</code></span></dt> |
3827 | <dd><p>This file governs the files that are installed on your | | 3827 | <dd><p>This file governs the files that are installed on your |
3828 | system: all the binaries, manual pages, etc. There are other | | 3828 | system: all the binaries, manual pages, etc. There are other |
3829 | directives which may be entered in this file, to control the | | 3829 | directives which may be entered in this file, to control the |
3830 | creation and deletion of directories, and the location of | | 3830 | creation and deletion of directories, and the location of |
3831 | inserted files. See <a class="xref" href="#plist" title="Chapter 13. PLIST issues">Chapter 13, <i>PLIST issues</i></a> for more | | 3831 | inserted files. See <a class="xref" href="#plist" title="Chapter 13. PLIST issues">Chapter 13, <i>PLIST issues</i></a> for more |
3832 | information.</p></dd> | | 3832 | information.</p></dd> |
3833 | </dl></div> | | 3833 | </dl></div> |
3834 | </div> | | 3834 | </div> |
3835 | <div class="sect1"> | | 3835 | <div class="sect1"> |
3836 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3836 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3837 | <a name="components.optional"></a>11.5. Optional files</h2></div></div></div> | | 3837 | <a name="components.optional"></a>11.5. Optional files</h2></div></div></div> |
3838 | <div class="sect2"> | | 3838 | <div class="sect2"> |
3839 | <div class="titlepage"><div><div><h3 class="title"> | | 3839 | <div class="titlepage"><div><div><h3 class="title"> |
3840 | <a name="components.optional.bin"></a>11.5.1. Files affecting the binary package</h3></div></div></div> | | 3840 | <a name="components.optional.bin"></a>11.5.1. Files affecting the binary package</h3></div></div></div> |
3841 | <div class="variablelist"><dl class="variablelist"> | | 3841 | <div class="variablelist"><dl class="variablelist"> |
3842 | <dt><span class="term"><code class="filename">INSTALL</code></span></dt> | | 3842 | <dt><span class="term"><code class="filename">INSTALL</code></span></dt> |
3843 | <dd> | | 3843 | <dd> |
3844 | <p>This shell script is invoked twice by <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>. | | 3844 | <p>This shell script is invoked twice by <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>. |
3845 | First time after package extraction and before files are | | 3845 | First time after package extraction and before files are |
3846 | moved in place, the second time after the files to install | | 3846 | moved in place, the second time after the files to install |
3847 | are moved in place. This can be used to do any custom | | 3847 | are moved in place. This can be used to do any custom |
3848 | procedures not possible with @exec commands in | | 3848 | procedures not possible with @exec commands in |
3849 | <code class="filename">PLIST</code>. See <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a> and | | 3849 | <code class="filename">PLIST</code>. See <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a> and |
3850 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_create+1.i386+NetBSD-7.1"><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>. | | 3850 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_create+1.i386+NetBSD-7.1.2"><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>. |
3851 | Please note that you can modify variables in it easily by using | | 3851 | Please note that you can modify variables in it easily by using |
3852 | <code class="varname">FILES_SUBST</code> in the package's | | 3852 | <code class="varname">FILES_SUBST</code> in the package's |
3853 | <code class="filename">Makefile</code>:</p> | | 3853 | <code class="filename">Makefile</code>:</p> |
3854 | <pre class="programlisting"> | | 3854 | <pre class="programlisting"> |
3855 | FILES_SUBST+= SOMEVAR="somevalue" | | 3855 | FILES_SUBST+= SOMEVAR="somevalue" |
3856 | </pre> | | 3856 | </pre> |
3857 | <p>replaces "@SOMEVAR@" with <span class="quote">“<span class="quote">somevalue</span>”</span> in the | | 3857 | <p>replaces "@SOMEVAR@" with <span class="quote">“<span class="quote">somevalue</span>”</span> in the |
3858 | <code class="filename">INSTALL</code>. By default, substitution is | | 3858 | <code class="filename">INSTALL</code>. By default, substitution is |
3859 | performed for <code class="varname">PREFIX</code>, | | 3859 | performed for <code class="varname">PREFIX</code>, |
3860 | <code class="varname">LOCALBASE</code>, <code class="varname">X11BASE</code>, | | 3860 | <code class="varname">LOCALBASE</code>, <code class="varname">X11BASE</code>, |
3861 | <code class="varname">VARBASE</code>, and a few others, type | | 3861 | <code class="varname">VARBASE</code>, and a few others, type |
3862 | <span class="command"><strong>make help topic=FILES_SUBST</strong></span> for a | | 3862 | <span class="command"><strong>make help topic=FILES_SUBST</strong></span> for a |
3863 | complete list.</p> | | 3863 | complete list.</p> |
3864 | </dd> | | 3864 | </dd> |
3865 | <dt><span class="term"><code class="filename">DEINSTALL</code></span></dt> | | 3865 | <dt><span class="term"><code class="filename">DEINSTALL</code></span></dt> |
3866 | <dd><p>This script is executed before and after any files are removed. It is | | 3866 | <dd><p>This script is executed before and after any files are removed. It is |
3867 | this script's responsibility to clean up any additional messy details | | 3867 | this script's responsibility to clean up any additional messy details |
3868 | around the package's installation, since all pkg_delete knows is how to | | 3868 | around the package's installation, since all pkg_delete knows is how to |
3869 | delete the files created in the original distribution. | | 3869 | delete the files created in the original distribution. |
3870 | See <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> | | 3870 | See <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> |
3871 | and <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_create+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_create</span>(1)</span></a> for more information. | | 3871 | and <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_create+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_create</span>(1)</span></a> for more information. |
3872 | The same methods to replace variables can be used as for | | 3872 | The same methods to replace variables can be used as for |
3873 | the <code class="filename">INSTALL</code> file.</p></dd> | | 3873 | the <code class="filename">INSTALL</code> file.</p></dd> |
3874 | <dt><span class="term"><code class="filename">MESSAGE</code></span></dt> | | 3874 | <dt><span class="term"><code class="filename">MESSAGE</code></span></dt> |
3875 | <dd> | | 3875 | <dd> |
3876 | <p>This file is displayed after installation of the package. | | 3876 | <p>This file is displayed after installation of the package. |
3877 | Useful for things like legal notices on almost-free | | 3877 | Useful for things like legal notices on almost-free |
3878 | software and hints for updating config files after | | 3878 | software and hints for updating config files after |
3879 | installing modules for apache, PHP etc. | | 3879 | installing modules for apache, PHP etc. |
3880 | Please note that you can modify variables in it easily by using | | 3880 | Please note that you can modify variables in it easily by using |
3881 | <code class="varname">MESSAGE_SUBST</code> in the package's | | 3881 | <code class="varname">MESSAGE_SUBST</code> in the package's |
3882 | <code class="filename">Makefile</code>:</p> | | 3882 | <code class="filename">Makefile</code>:</p> |
3883 | <pre class="programlisting"> | | 3883 | <pre class="programlisting"> |
3884 | MESSAGE_SUBST+= SOMEVAR="somevalue" | | 3884 | MESSAGE_SUBST+= SOMEVAR="somevalue" |
3885 | </pre> | | 3885 | </pre> |
3886 | <p>replaces "${SOMEVAR}" with <span class="quote">“<span class="quote">somevalue</span>”</span> in | | 3886 | <p>replaces "${SOMEVAR}" with <span class="quote">“<span class="quote">somevalue</span>”</span> in |
3887 | <code class="filename">MESSAGE</code>. By default, substitution is | | 3887 | <code class="filename">MESSAGE</code>. By default, substitution is |
3888 | performed for <code class="varname">PKGNAME</code>, | | 3888 | performed for <code class="varname">PKGNAME</code>, |
3889 | <code class="varname">PKGBASE</code>, <code class="varname">PREFIX</code>, | | 3889 | <code class="varname">PKGBASE</code>, <code class="varname">PREFIX</code>, |
3890 | <code class="varname">LOCALBASE</code>, <code class="varname">X11BASE</code>, | | 3890 | <code class="varname">LOCALBASE</code>, <code class="varname">X11BASE</code>, |
3891 | <code class="varname">PKG_SYSCONFDIR</code>, | | 3891 | <code class="varname">PKG_SYSCONFDIR</code>, |
3892 | <code class="varname">ROOT_GROUP</code>, and | | 3892 | <code class="varname">ROOT_GROUP</code>, and |
3893 | <code class="varname">ROOT_USER</code>.</p> | | 3893 | <code class="varname">ROOT_USER</code>.</p> |
3894 | <p>You can display a different or additional files by | | 3894 | <p>You can display a different or additional files by |
3895 | setting the <code class="varname">MESSAGE_SRC</code> variable. Its | | 3895 | setting the <code class="varname">MESSAGE_SRC</code> variable. Its |
3896 | default is <code class="filename">MESSAGE</code>, if the file | | 3896 | default is <code class="filename">MESSAGE</code>, if the file |
3897 | exists.</p> | | 3897 | exists.</p> |
3898 | </dd> | | 3898 | </dd> |
3899 | <dt><span class="term"><code class="filename">ALTERNATIVES</code></span></dt> | | 3899 | <dt><span class="term"><code class="filename">ALTERNATIVES</code></span></dt> |
3900 | <dd> | | 3900 | <dd> |
3901 | <p>This file is used by the alternatives framework. | | 3901 | <p>This file is used by the alternatives framework. |
3902 | It creates, configures, and destroys generic wrappers used to | | 3902 | It creates, configures, and destroys generic wrappers used to |
3903 | run programs with similar interfaces. | | 3903 | run programs with similar interfaces. |
3904 | See pkg_alternatives(8) from pkgtools/pkg_alternatives | | 3904 | See pkg_alternatives(8) from pkgtools/pkg_alternatives |
3905 | for more information.</p> | | 3905 | for more information.</p> |
3906 | <p>Each line of the file contains two filenames, first | | 3906 | <p>Each line of the file contains two filenames, first |
3907 | the wrapper and then the alternative provided by the package. | | 3907 | the wrapper and then the alternative provided by the package. |
3908 | Both paths are relative to <code class="varname">PREFIX</code>.</p> | | 3908 | Both paths are relative to <code class="varname">PREFIX</code>.</p> |
3909 | </dd> | | 3909 | </dd> |
3910 | </dl></div> | | 3910 | </dl></div> |
3911 | </div> | | 3911 | </div> |
3912 | <div class="sect2"> | | 3912 | <div class="sect2"> |
3913 | <div class="titlepage"><div><div><h3 class="title"> | | 3913 | <div class="titlepage"><div><div><h3 class="title"> |
3914 | <a name="components.optional.build"></a>11.5.2. Files affecting the build process</h3></div></div></div> | | 3914 | <a name="components.optional.build"></a>11.5.2. Files affecting the build process</h3></div></div></div> |
3915 | <div class="variablelist"><dl class="variablelist"> | | 3915 | <div class="variablelist"><dl class="variablelist"> |
3916 | <dt><span class="term"><code class="filename">Makefile.common</code></span></dt> | | 3916 | <dt><span class="term"><code class="filename">Makefile.common</code></span></dt> |
3917 | <dd><p>This file contains arbitrary things that could | | 3917 | <dd><p>This file contains arbitrary things that could |
3918 | also go into a <code class="filename">Makefile</code>, but its purpose is | | 3918 | also go into a <code class="filename">Makefile</code>, but its purpose is |
3919 | to be used by more than one package. This file should only be | | 3919 | to be used by more than one package. This file should only be |
3920 | used when the packages that will use the file are known in | | 3920 | used when the packages that will use the file are known in |
3921 | advance. For other purposes it is often better to write a | | 3921 | advance. For other purposes it is often better to write a |
3922 | <code class="filename">*.mk</code> file and give it a good name that | | 3922 | <code class="filename">*.mk</code> file and give it a good name that |
3923 | describes what it does.</p></dd> | | 3923 | describes what it does.</p></dd> |
3924 | <dt><span class="term"><code class="filename">buildlink3.mk</code></span></dt> | | 3924 | <dt><span class="term"><code class="filename">buildlink3.mk</code></span></dt> |
3925 | <dd><p>This file contains the dependency information | | 3925 | <dd><p>This file contains the dependency information |
3926 | for the buildlink3 framework (see <a class="xref" href="#buildlink" title="Chapter 14. Buildlink methodology">Chapter 14, <i>Buildlink methodology</i></a>).</p></dd> | | 3926 | for the buildlink3 framework (see <a class="xref" href="#buildlink" title="Chapter 14. Buildlink methodology">Chapter 14, <i>Buildlink methodology</i></a>).</p></dd> |
3927 | <dt><span class="term"><code class="filename">hacks.mk</code></span></dt> | | 3927 | <dt><span class="term"><code class="filename">hacks.mk</code></span></dt> |
3928 | <dd><p>This file contains workarounds for compiler bugs | | 3928 | <dd><p>This file contains workarounds for compiler bugs |
3929 | and similar things. It is included automatically by the pkgsrc | | 3929 | and similar things. It is included automatically by the pkgsrc |
3930 | infrastructure, so you don't need an extra | | 3930 | infrastructure, so you don't need an extra |
3931 | <code class="literal">.include</code> line for | | 3931 | <code class="literal">.include</code> line for |
3932 | it.</p></dd> | | 3932 | it.</p></dd> |
3933 | <dt><span class="term"><code class="filename">options.mk</code></span></dt> | | 3933 | <dt><span class="term"><code class="filename">options.mk</code></span></dt> |
3934 | <dd><p>This file contains the code for the | | 3934 | <dd><p>This file contains the code for the |
3935 | package-specific options (see <a class="xref" href="#options" title="Chapter 16. Options handling">Chapter 16, <i>Options handling</i></a>) that can be | | 3935 | package-specific options (see <a class="xref" href="#options" title="Chapter 16. Options handling">Chapter 16, <i>Options handling</i></a>) that can be |
3936 | selected by the user. If a package has only one or two options, | | 3936 | selected by the user. If a package has only one or two options, |
3937 | it is equally acceptable to put the code directly into the | | 3937 | it is equally acceptable to put the code directly into the |
3938 | <code class="filename">Makefile</code>.</p></dd> | | 3938 | <code class="filename">Makefile</code>.</p></dd> |
3939 | </dl></div> | | 3939 | </dl></div> |
3940 | </div> | | 3940 | </div> |
3941 | <div class="sect2"> | | 3941 | <div class="sect2"> |
3942 | <div class="titlepage"><div><div><h3 class="title"> | | 3942 | <div class="titlepage"><div><div><h3 class="title"> |
3943 | <a name="components.optional.none"></a>11.5.3. Files affecting nothing at all</h3></div></div></div> | | 3943 | <a name="components.optional.none"></a>11.5.3. Files affecting nothing at all</h3></div></div></div> |
3944 | <div class="variablelist"><dl class="variablelist"> | | 3944 | <div class="variablelist"><dl class="variablelist"> |
3945 | <dt><span class="term"><code class="filename">README*</code></span></dt> | | 3945 | <dt><span class="term"><code class="filename">README*</code></span></dt> |
3946 | <dd><p>These files do not take place in the creation of | | 3946 | <dd><p>These files do not take place in the creation of |
3947 | a package and thus are purely informative to the package | | 3947 | a package and thus are purely informative to the package |
3948 | developer.</p></dd> | | 3948 | developer.</p></dd> |
3949 | <dt><span class="term"><code class="filename">TODO</code></span></dt> | | 3949 | <dt><span class="term"><code class="filename">TODO</code></span></dt> |
3950 | <dd><p>This file contains things that need to be done | | 3950 | <dd><p>This file contains things that need to be done |
3951 | to make the package even | | 3951 | to make the package even |
3952 | better.</p></dd> | | 3952 | better.</p></dd> |
3953 | </dl></div> | | 3953 | </dl></div> |
3954 | </div> | | 3954 | </div> |
3955 | </div> | | 3955 | </div> |
3956 | <div class="sect1"> | | 3956 | <div class="sect1"> |
3957 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3957 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3958 | <a name="work-dir"></a>11.6. <code class="filename">work*</code> | | 3958 | <a name="work-dir"></a>11.6. <code class="filename">work*</code> |
3959 | </h2></div></div></div> | | 3959 | </h2></div></div></div> |
3960 | <p>When you type <span class="command"><strong>make</strong></span>, the distribution files are | | 3960 | <p>When you type <span class="command"><strong>make</strong></span>, the distribution files are |
3961 | unpacked into the directory denoted by | | 3961 | unpacked into the directory denoted by |
3962 | <code class="varname">WRKDIR</code>. It can be removed by running | | 3962 | <code class="varname">WRKDIR</code>. It can be removed by running |
3963 | <span class="command"><strong>make clean</strong></span>. Besides the sources, this | | 3963 | <span class="command"><strong>make clean</strong></span>. Besides the sources, this |
3964 | directory is also used to keep various timestamp files. | | 3964 | directory is also used to keep various timestamp files. |
3965 | The directory gets <span class="emphasis"><em>removed completely</em></span> on clean. | | 3965 | The directory gets <span class="emphasis"><em>removed completely</em></span> on clean. |
3966 | The default is <code class="filename">${.CURDIR}/work</code> | | 3966 | The default is <code class="filename">${.CURDIR}/work</code> |
3967 | or <code class="filename">${.CURDIR}/work.${MACHINE_ARCH}</code> | | 3967 | or <code class="filename">${.CURDIR}/work.${MACHINE_ARCH}</code> |
3968 | if <code class="varname">OBJMACHINE</code> is set.</p> | | 3968 | if <code class="varname">OBJMACHINE</code> is set.</p> |
3969 | </div> | | 3969 | </div> |
3970 | <div class="sect1"> | | 3970 | <div class="sect1"> |
3971 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 3971 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
3972 | <a name="files-dir"></a>11.7. <code class="filename">files/*</code> | | 3972 | <a name="files-dir"></a>11.7. <code class="filename">files/*</code> |
3973 | </h2></div></div></div> | | 3973 | </h2></div></div></div> |
3974 | <p>If you have any files that you wish to be placed in the package prior | | 3974 | <p>If you have any files that you wish to be placed in the package prior |
3975 | to configuration or building, you could place these files here and use | | 3975 | to configuration or building, you could place these files here and use |
3976 | a <span class="command"><strong>${CP}</strong></span> command in the | | 3976 | a <span class="command"><strong>${CP}</strong></span> command in the |
3977 | <span class="quote">“<span class="quote">pre-configure</span>”</span> target to achieve | | 3977 | <span class="quote">“<span class="quote">pre-configure</span>”</span> target to achieve |
3978 | this. Alternatively, you could simply diff the file against | | 3978 | this. Alternatively, you could simply diff the file against |
3979 | <code class="filename">/dev/null</code> and use the patch mechanism to manage | | 3979 | <code class="filename">/dev/null</code> and use the patch mechanism to manage |
3980 | the creation of this file.</p> | | 3980 | the creation of this file.</p> |
3981 | <p>If you want to share files in this way with other | | 3981 | <p>If you want to share files in this way with other |
3982 | packages, set the <code class="varname">FILESDIR</code> variable to point | | 3982 | packages, set the <code class="varname">FILESDIR</code> variable to point |
3983 | to the other package's <code class="filename">files</code> directory, | | 3983 | to the other package's <code class="filename">files</code> directory, |
3984 | e.g.:</p> | | 3984 | e.g.:</p> |
3985 | <pre class="programlisting"> | | 3985 | <pre class="programlisting"> |
3986 | FILESDIR=${.CURDIR}/../xemacs/files | | 3986 | FILESDIR=${.CURDIR}/../xemacs/files |
3987 | </pre> | | 3987 | </pre> |
3988 | </div> | | 3988 | </div> |
3989 | </div> | | 3989 | </div> |
3990 | <div class="chapter"> | | 3990 | <div class="chapter"> |
3991 | <div class="titlepage"><div><div><h2 class="title"> | | 3991 | <div class="titlepage"><div><div><h2 class="title"> |
3992 | <a name="makefile"></a>Chapter 12. Programming in <code class="filename">Makefile</code>s</h2></div></div></div> | | 3992 | <a name="makefile"></a>Chapter 12. Programming in <code class="filename">Makefile</code>s</h2></div></div></div> |
3993 | <div class="toc"> | | 3993 | <div class="toc"> |
3994 | <p><b>Table of Contents</b></p> | | 3994 | <p><b>Table of Contents</b></p> |
3995 | <dl class="toc"> | | 3995 | <dl class="toc"> |
3996 | <dt><span class="sect1"><a href="#makefile.style">12.1. Caveats</a></span></dt> | | 3996 | <dt><span class="sect1"><a href="#makefile.style">12.1. Caveats</a></span></dt> |
3997 | <dt><span class="sect1"><a href="#makefile.variables">12.2. <code class="filename">Makefile</code> variables</a></span></dt> | | 3997 | <dt><span class="sect1"><a href="#makefile.variables">12.2. <code class="filename">Makefile</code> variables</a></span></dt> |
3998 | <dd><dl><dt><span class="sect2"><a href="#makefile.variables.names">12.2.1. Naming conventions</a></span></dt></dl></dd> | | 3998 | <dd><dl><dt><span class="sect2"><a href="#makefile.variables.names">12.2.1. Naming conventions</a></span></dt></dl></dd> |
3999 | <dt><span class="sect1"><a href="#makefile.code">12.3. Code snippets</a></span></dt> | | 3999 | <dt><span class="sect1"><a href="#makefile.code">12.3. Code snippets</a></span></dt> |
4000 | <dd><dl> | | 4000 | <dd><dl> |
4001 | <dt><span class="sect2"><a href="#adding-to-list">12.3.1. Adding things to a list</a></span></dt> | | 4001 | <dt><span class="sect2"><a href="#adding-to-list">12.3.1. Adding things to a list</a></span></dt> |
4002 | <dt><span class="sect2"><a href="#echo-literal">12.3.2. Echoing a string exactly as-is</a></span></dt> | | 4002 | <dt><span class="sect2"><a href="#echo-literal">12.3.2. Echoing a string exactly as-is</a></span></dt> |
4003 | <dt><span class="sect2"><a href="#cflags-gnu-configure">12.3.3. Passing <code class="varname">CFLAGS</code> to GNU configure scripts</a></span></dt> | | 4003 | <dt><span class="sect2"><a href="#cflags-gnu-configure">12.3.3. Passing <code class="varname">CFLAGS</code> to GNU configure scripts</a></span></dt> |
4004 | <dt><span class="sect2"><a href="#empty-variables">12.3.4. Handling possibly empty variables</a></span></dt> | | 4004 | <dt><span class="sect2"><a href="#empty-variables">12.3.4. Handling possibly empty variables</a></span></dt> |
4005 | </dl></dd> | | 4005 | </dl></dd> |
4006 | </dl> | | 4006 | </dl> |
4007 | </div> | | 4007 | </div> |
4008 | <p>Pkgsrc consists of many <code class="filename">Makefile</code> fragments, | | 4008 | <p>Pkgsrc consists of many <code class="filename">Makefile</code> fragments, |
4009 | each of which forms a well-defined part of the pkgsrc system. Using | | 4009 | each of which forms a well-defined part of the pkgsrc system. Using |
4010 | the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> system as a programming language for a big system | | 4010 | the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> system as a programming language for a big system |
4011 | like pkgsrc requires some discipline to keep the code correct and | | 4011 | like pkgsrc requires some discipline to keep the code correct and |
4012 | understandable.</p> | | 4012 | understandable.</p> |
4013 | <p>The basic ingredients for <code class="filename">Makefile</code> | | 4013 | <p>The basic ingredients for <code class="filename">Makefile</code> |
4014 | programming are variables (which are actually macros) and shell | | 4014 | programming are variables (which are actually macros) and shell |
4015 | commands. Among these shell commands may even be more complex ones | | 4015 | commands. Among these shell commands may even be more complex ones |
4016 | like <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?awk+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">awk</span>(1)</span></a> programs. To make sure that every shell command runs | | 4016 | like <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?awk+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">awk</span>(1)</span></a> programs. To make sure that every shell command runs |
4017 | as intended it is necessary to quote all variables correctly when they | | 4017 | as intended it is necessary to quote all variables correctly when they |
4018 | are used.</p> | | 4018 | are used.</p> |
4019 | <p>This chapter describes some patterns, that appear quite often in | | 4019 | <p>This chapter describes some patterns, that appear quite often in |
4020 | <code class="filename">Makefile</code>s, including the pitfalls that come along | | 4020 | <code class="filename">Makefile</code>s, including the pitfalls that come along |
4021 | with them.</p> | | 4021 | with them.</p> |
4022 | <div class="sect1"> | | 4022 | <div class="sect1"> |
4023 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4023 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4024 | <a name="makefile.style"></a>12.1. Caveats</h2></div></div></div> | | 4024 | <a name="makefile.style"></a>12.1. Caveats</h2></div></div></div> |
4025 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> | | 4025 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> |
4026 | <p>When you are creating a file as a | | 4026 | <p>When you are creating a file as a |
4027 | target of a rule, always write the data to a temporary file first | | 4027 | target of a rule, always write the data to a temporary file first |
4028 | and finally rename that file. Otherwise there might occur an error | | 4028 | and finally rename that file. Otherwise there might occur an error |
4029 | in the middle of generating the file, and when the user runs | | 4029 | in the middle of generating the file, and when the user runs |
4030 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> for the second time, the file exists and will not be | | 4030 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> for the second time, the file exists and will not be |
4031 | regenerated properly. Example:</p> | | 4031 | regenerated properly. Example:</p> |
4032 | <pre class="programlisting"> | | 4032 | <pre class="programlisting"> |
4033 | wrong: | | 4033 | wrong: |
4034 | @echo "line 1" > ${.TARGET} | | 4034 | @echo "line 1" > ${.TARGET} |
4035 | @echo "line 2" >> ${.TARGET} | | 4035 | @echo "line 2" >> ${.TARGET} |
4036 | @false | | 4036 | @false |
4037 | | | 4037 | |
4038 | correct: | | 4038 | correct: |
4039 | @echo "line 1" > ${.TARGET}.tmp | | 4039 | @echo "line 1" > ${.TARGET}.tmp |
4040 | @echo "line 2" >> ${.TARGET}.tmp | | 4040 | @echo "line 2" >> ${.TARGET}.tmp |
4041 | @false | | 4041 | @false |
4042 | @mv ${.TARGET}.tmp ${.TARGET} | | 4042 | @mv ${.TARGET}.tmp ${.TARGET} |
4043 | </pre> | | 4043 | </pre> |
4044 | <p>When you run <span class="command"><strong>make wrong</strong></span> twice, the file | | 4044 | <p>When you run <span class="command"><strong>make wrong</strong></span> twice, the file |
4045 | <code class="filename">wrong</code> will exist, although there was an error | | 4045 | <code class="filename">wrong</code> will exist, although there was an error |
4046 | message in the first run. On the other hand, running <span class="command"><strong>make | | 4046 | message in the first run. On the other hand, running <span class="command"><strong>make |
4047 | correct</strong></span> gives an error message twice, as expected.</p> | | 4047 | correct</strong></span> gives an error message twice, as expected.</p> |
4048 | <p>You might remember that <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> sometimes removes | | 4048 | <p>You might remember that <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> sometimes removes |
4049 | <code class="literal">${.TARGET}</code> in case of error, but this only | | 4049 | <code class="literal">${.TARGET}</code> in case of error, but this only |
4050 | happens when it is interrupted, for example by pressing | | 4050 | happens when it is interrupted, for example by pressing |
4051 | <code class="literal">^C</code>. This does <span class="emphasis"><em>not</em></span> happen | | 4051 | <code class="literal">^C</code>. This does <span class="emphasis"><em>not</em></span> happen |
4052 | when one of the commands fails (like <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?false+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">false</span>(1)</span></a> above).</p> | | 4052 | when one of the commands fails (like <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?false+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">false</span>(1)</span></a> above).</p> |
4053 | </li></ul></div> | | 4053 | </li></ul></div> |
4054 | </div> | | 4054 | </div> |
4055 | <div class="sect1"> | | 4055 | <div class="sect1"> |
4056 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4056 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4057 | <a name="makefile.variables"></a>12.2. <code class="filename">Makefile</code> variables</h2></div></div></div> | | 4057 | <a name="makefile.variables"></a>12.2. <code class="filename">Makefile</code> variables</h2></div></div></div> |
4058 | <p><code class="filename">Makefile</code> variables contain strings that | | 4058 | <p><code class="filename">Makefile</code> variables contain strings that |
4059 | can be processed using the five operators ``='', ``+='', ``?='', | | 4059 | can be processed using the five operators ``='', ``+='', ``?='', |
4060 | ``:='', and ``!='', which are described in the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> man | | 4060 | ``:='', and ``!='', which are described in the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> man |
4061 | page.</p> | | 4061 | page.</p> |
4062 | <p>When a variable's value is parsed from a | | 4062 | <p>When a variable's value is parsed from a |
4063 | <code class="filename">Makefile</code>, the hash character ``#'' and the | | 4063 | <code class="filename">Makefile</code>, the hash character ``#'' and the |
4064 | backslash character ``\'' are handled specially. If a backslash is | | 4064 | backslash character ``\'' are handled specially. If a backslash is |
4065 | followed by a newline, any whitespace immediately in front of the | | 4065 | followed by a newline, any whitespace immediately in front of the |
4066 | backslash, the backslash, the newline, and any whitespace | | 4066 | backslash, the backslash, the newline, and any whitespace |
4067 | immediately behind the newline are replaced with a single space. A | | 4067 | immediately behind the newline are replaced with a single space. A |
4068 | backslash character and an immediately following hash character are | | 4068 | backslash character and an immediately following hash character are |
4069 | replaced with a single hash character. Otherwise, the backslash is | | 4069 | replaced with a single hash character. Otherwise, the backslash is |
4070 | passed as is. In a variable assignment, any hash character that is | | 4070 | passed as is. In a variable assignment, any hash character that is |
4071 | not preceded by a backslash starts a comment that continues upto the | | 4071 | not preceded by a backslash starts a comment that continues upto the |
4072 | end of the logical line.</p> | | 4072 | end of the logical line.</p> |
4073 | <p>The evaluation of variables either happens immediately or lazy. | | 4073 | <p>The evaluation of variables either happens immediately or lazy. |
4074 | It happens immediately when the variable occurs | | 4074 | It happens immediately when the variable occurs |
4075 | on the right-hand side of the ``:='' or the ``!='' operator, in a | | 4075 | on the right-hand side of the ``:='' or the ``!='' operator, in a |
4076 | <code class="varname">.if</code> condition or a <code class="varname">.for</code> loop. | | 4076 | <code class="varname">.if</code> condition or a <code class="varname">.for</code> loop. |
4077 | In the other cases, it is evaluated lazily.</p> | | 4077 | In the other cases, it is evaluated lazily.</p> |
4078 | <p>Some of the modifiers split the string into words and then | | 4078 | <p>Some of the modifiers split the string into words and then |
4079 | operate on the words, others operate on the string as a whole. When | | 4079 | operate on the words, others operate on the string as a whole. When |
4080 | a string is split into words, it is split like in <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?sh+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">sh</span>(1)</span></a>.</p> | | 4080 | a string is split into words, it is split like in <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?sh+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">sh</span>(1)</span></a>.</p> |
4081 | <p>There are several types of variables that should be handled | | 4081 | <p>There are several types of variables that should be handled |
4082 | differently. Strings and two types of lists.</p> | | 4082 | differently. Strings and two types of lists.</p> |
4083 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4083 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4084 | <li class="listitem"><p><span class="emphasis"><em>Strings</em></span> can contain arbitrary | | 4084 | <li class="listitem"><p><span class="emphasis"><em>Strings</em></span> can contain arbitrary |
4085 | characters. Nevertheless, you should restrict yourself to only | | 4085 | characters. Nevertheless, you should restrict yourself to only |
4086 | using printable characters. Examples are | | 4086 | using printable characters. Examples are |
4087 | <code class="varname">PREFIX</code> and | | 4087 | <code class="varname">PREFIX</code> and |
4088 | <code class="varname">COMMENT</code>.</p></li> | | 4088 | <code class="varname">COMMENT</code>.</p></li> |
4089 | <li class="listitem"><p><span class="emphasis"><em>Internal lists</em></span> are lists that | | 4089 | <li class="listitem"><p><span class="emphasis"><em>Internal lists</em></span> are lists that |
4090 | are never exported to any shell command. Their elements are | | 4090 | are never exported to any shell command. Their elements are |
4091 | separated by whitespace. Therefore, the elements themselves cannot | | 4091 | separated by whitespace. Therefore, the elements themselves cannot |
4092 | have embedded whitespace. Any other characters are allowed. | | 4092 | have embedded whitespace. Any other characters are allowed. |
4093 | Internal lists can be used in <span class="command"><strong>.for</strong></span> loops. | | 4093 | Internal lists can be used in <span class="command"><strong>.for</strong></span> loops. |
4094 | Examples are <code class="varname">DEPENDS</code> and | | 4094 | Examples are <code class="varname">DEPENDS</code> and |
4095 | <code class="varname">BUILD_DEPENDS</code>.</p></li> | | 4095 | <code class="varname">BUILD_DEPENDS</code>.</p></li> |
4096 | <li class="listitem"><p><span class="emphasis"><em>External lists</em></span> are lists that | | 4096 | <li class="listitem"><p><span class="emphasis"><em>External lists</em></span> are lists that |
4097 | may be exported to a shell command. Their elements can contain any | | 4097 | may be exported to a shell command. Their elements can contain any |
4098 | characters, including whitespace. That's why they cannot be used | | 4098 | characters, including whitespace. That's why they cannot be used |
4099 | in <span class="command"><strong>.for</strong></span> loops. Examples are | | 4099 | in <span class="command"><strong>.for</strong></span> loops. Examples are |
4100 | <code class="varname">DISTFILES</code> and | | 4100 | <code class="varname">DISTFILES</code> and |
4101 | <code class="varname">MASTER_SITES</code>.</p></li> | | 4101 | <code class="varname">MASTER_SITES</code>.</p></li> |
4102 | </ul></div> | | 4102 | </ul></div> |
4103 | <div class="sect2"> | | 4103 | <div class="sect2"> |
4104 | <div class="titlepage"><div><div><h3 class="title"> | | 4104 | <div class="titlepage"><div><div><h3 class="title"> |
4105 | <a name="makefile.variables.names"></a>12.2.1. Naming conventions</h3></div></div></div> | | 4105 | <a name="makefile.variables.names"></a>12.2.1. Naming conventions</h3></div></div></div> |
4106 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4106 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4107 | <li class="listitem"><p>All variable names starting with an underscore | | 4107 | <li class="listitem"><p>All variable names starting with an underscore |
4108 | are reserved for use by the pkgsrc infrastructure. They shall | | 4108 | are reserved for use by the pkgsrc infrastructure. They shall |
4109 | not be used by package | | 4109 | not be used by package |
4110 | <code class="filename">Makefile</code>s.</p></li> | | 4110 | <code class="filename">Makefile</code>s.</p></li> |
4111 | <li class="listitem"><p>In <span class="command"><strong>.for</strong></span> loops you should use | | 4111 | <li class="listitem"><p>In <span class="command"><strong>.for</strong></span> loops you should use |
4112 | lowercase variable names for the iteration | | 4112 | lowercase variable names for the iteration |
4113 | variables.</p></li> | | 4113 | variables.</p></li> |
4114 | <li class="listitem"><p>All list variables should have a ``plural'' | | 4114 | <li class="listitem"><p>All list variables should have a ``plural'' |
4115 | name, e.g. <code class="varname">PKG_OPTIONS</code> or | | 4115 | name, e.g. <code class="varname">PKG_OPTIONS</code> or |
4116 | <code class="varname">DISTFILES</code>.</p></li> | | 4116 | <code class="varname">DISTFILES</code>.</p></li> |
4117 | </ul></div> | | 4117 | </ul></div> |
4118 | </div> | | 4118 | </div> |
4119 | </div> | | 4119 | </div> |
4120 | <div class="sect1"> | | 4120 | <div class="sect1"> |
4121 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4121 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4122 | <a name="makefile.code"></a>12.3. Code snippets</h2></div></div></div> | | 4122 | <a name="makefile.code"></a>12.3. Code snippets</h2></div></div></div> |
4123 | <div class="sect2"> | | 4123 | <div class="sect2"> |
4124 | <div class="titlepage"><div><div><h3 class="title"> | | 4124 | <div class="titlepage"><div><div><h3 class="title"> |
4125 | <a name="adding-to-list"></a>12.3.1. Adding things to a list</h3></div></div></div> | | 4125 | <a name="adding-to-list"></a>12.3.1. Adding things to a list</h3></div></div></div> |
4126 | <p>When adding a string that possibly contains whitespace or quotes to | | 4126 | <p>When adding a string that possibly contains whitespace or quotes to |
4127 | a list (example 1), it must be quoted using the <code class="code">:Q</code> | | 4127 | a list (example 1), it must be quoted using the <code class="code">:Q</code> |
4128 | modifier.</p> | | 4128 | modifier.</p> |
4129 | <p>When adding another list to a list (example 2), it must not be | | 4129 | <p>When adding another list to a list (example 2), it must not be |
4130 | quoted, since its elements are already quoted.</p> | | 4130 | quoted, since its elements are already quoted.</p> |
4131 | <pre class="programlisting"> | | 4131 | <pre class="programlisting"> |
4132 | STRING= foo * bar `date` | | 4132 | STRING= foo * bar `date` |
4133 | LIST= # empty | | 4133 | LIST= # empty |
4134 | ANOTHER_LIST= a=b c=d | | 4134 | ANOTHER_LIST= a=b c=d |
4135 | | | 4135 | |
4136 | LIST+= ${STRING:Q} # 1 | | 4136 | LIST+= ${STRING:Q} # 1 |
4137 | LIST+= ${ANOTHER_LIST} # 2 | | 4137 | LIST+= ${ANOTHER_LIST} # 2 |
4138 | </pre> | | 4138 | </pre> |
4139 | </div> | | 4139 | </div> |
4140 | <div class="sect2"> | | 4140 | <div class="sect2"> |
4141 | <div class="titlepage"><div><div><h3 class="title"> | | 4141 | <div class="titlepage"><div><div><h3 class="title"> |
4142 | <a name="echo-literal"></a>12.3.2. Echoing a string exactly as-is</h3></div></div></div> | | 4142 | <a name="echo-literal"></a>12.3.2. Echoing a string exactly as-is</h3></div></div></div> |
4143 | <p>Echoing a string containing special characters needs special | | 4143 | <p>Echoing a string containing special characters needs special |
4144 | work.</p> | | 4144 | work.</p> |
4145 | <pre class="programlisting"> | | 4145 | <pre class="programlisting"> |
4146 | STRING= foo bar < > * `date` $$HOME ' " | | 4146 | STRING= foo bar < > * `date` $$HOME ' " |
4147 | EXAMPLE_ENV= string=${STRING:Q} x=multiple\ quoted\ words | | 4147 | EXAMPLE_ENV= string=${STRING:Q} x=multiple\ quoted\ words |
4148 | | | 4148 | |
4149 | all: | | 4149 | all: |
4150 | echo ${STRING} # 1 | | 4150 | echo ${STRING} # 1 |
4151 | echo ${STRING:Q} # 2 | | 4151 | echo ${STRING:Q} # 2 |
4152 | printf '%s\n' ${STRING:Q}'' # 3 | | 4152 | printf '%s\n' ${STRING:Q}'' # 3 |
4153 | env ${EXAMPLE_ENV} sh -c 'echo "$$string"; echo "$$x"' # 4 | | 4153 | env ${EXAMPLE_ENV} sh -c 'echo "$$string"; echo "$$x"' # 4 |
4154 | </pre> | | 4154 | </pre> |
4155 | <p>Example 1 leads to a syntax error in the shell, as the characters | | 4155 | <p>Example 1 leads to a syntax error in the shell, as the characters |
4156 | are just copied.</p> | | 4156 | are just copied.</p> |
4157 | <p>Example 2 quotes the string so that the shell interprets it | | 4157 | <p>Example 2 quotes the string so that the shell interprets it |
4158 | correctly. But the echo command may additionally interpret strings with a | | 4158 | correctly. But the echo command may additionally interpret strings with a |
4159 | leading dash or those containing backslashes.</p> | | 4159 | leading dash or those containing backslashes.</p> |
4160 | <p>Example 3 can handle arbitrary strings, since <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?printf+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">printf</span>(1)</span></a> only | | 4160 | <p>Example 3 can handle arbitrary strings, since <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?printf+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">printf</span>(1)</span></a> only |
4161 | interprets the format string, but not the next argument.</p> | | 4161 | interprets the format string, but not the next argument.</p> |
4162 | <p>In example 4, the <code class="varname">EXAMPLE_ENV</code> does not | | 4162 | <p>In example 4, the <code class="varname">EXAMPLE_ENV</code> does not |
4163 | need to be quoted because the quoting has already been done | | 4163 | need to be quoted because the quoting has already been done |
4164 | when adding elements to the list.</p> | | 4164 | when adding elements to the list.</p> |
4165 | </div> | | 4165 | </div> |
4166 | <div class="sect2"> | | 4166 | <div class="sect2"> |
4167 | <div class="titlepage"><div><div><h3 class="title"> | | 4167 | <div class="titlepage"><div><div><h3 class="title"> |
4168 | <a name="cflags-gnu-configure"></a>12.3.3. Passing <code class="varname">CFLAGS</code> to GNU configure scripts</h3></div></div></div> | | 4168 | <a name="cflags-gnu-configure"></a>12.3.3. Passing <code class="varname">CFLAGS</code> to GNU configure scripts</h3></div></div></div> |
4169 | <p>When passing <code class="varname">CFLAGS</code> or similar variables to a | | 4169 | <p>When passing <code class="varname">CFLAGS</code> or similar variables to a |
4170 | GNU-style configure script (especially those that call other configure | | 4170 | GNU-style configure script (especially those that call other configure |
4171 | scripts), it must not have leading or trailing whitespace, since | | 4171 | scripts), it must not have leading or trailing whitespace, since |
4172 | otherwise the configure script gets confused. To trim leading and | | 4172 | otherwise the configure script gets confused. To trim leading and |
4173 | trailing whitespace, use the <code class="code">:M</code> modifier, as in the | | 4173 | trailing whitespace, use the <code class="code">:M</code> modifier, as in the |
4174 | following example:</p> | | 4174 | following example:</p> |
4175 | <pre class="programlisting"> | | 4175 | <pre class="programlisting"> |
4176 | CPPFLAGS= # empty | | 4176 | CPPFLAGS= # empty |
4177 | CPPFLAGS+= -Wundef -DPREFIX=\"${PREFIX}\" | | 4177 | CPPFLAGS+= -Wundef -DPREFIX=\"${PREFIX}\" |
4178 | CPPFLAGS+= ${MY_CPPFLAGS} | | 4178 | CPPFLAGS+= ${MY_CPPFLAGS} |
4179 | | | 4179 | |
4180 | CONFIGURE_ARGS+= CPPFLAGS=${CPPFLAGS:M*:Q} | | 4180 | CONFIGURE_ARGS+= CPPFLAGS=${CPPFLAGS:M*:Q} |
4181 | | | 4181 | |
4182 | all: | | 4182 | all: |
4183 | echo x${CPPFLAGS:Q}x # leading and trailing whitespace | | 4183 | echo x${CPPFLAGS:Q}x # leading and trailing whitespace |
4184 | echo x${CONFIGURE_ARGS:Q}x # properly trimmed | | 4184 | echo x${CONFIGURE_ARGS:Q}x # properly trimmed |
4185 | </pre> | | 4185 | </pre> |
4186 | <p>In this example, <code class="varname">CPPFLAGS</code> has both leading and | | 4186 | <p>In this example, <code class="varname">CPPFLAGS</code> has both leading and |
4187 | trailing whitespace because the <code class="code">+=</code> operator always adds a | | 4187 | trailing whitespace because the <code class="code">+=</code> operator always adds a |
4188 | space.</p> | | 4188 | space.</p> |
4189 | </div> | | 4189 | </div> |
4190 | <div class="sect2"> | | 4190 | <div class="sect2"> |
4191 | <div class="titlepage"><div><div><h3 class="title"> | | 4191 | <div class="titlepage"><div><div><h3 class="title"> |
4192 | <a name="empty-variables"></a>12.3.4. Handling possibly empty variables</h3></div></div></div> | | 4192 | <a name="empty-variables"></a>12.3.4. Handling possibly empty variables</h3></div></div></div> |
4193 | <p>When a possibly empty variable is used in a shell program, it may | | 4193 | <p>When a possibly empty variable is used in a shell program, it may |
4194 | lead to a syntax error.</p> | | 4194 | lead to a syntax error.</p> |
4195 | <pre class="programlisting"> | | 4195 | <pre class="programlisting"> |
4196 | EGFILES= # empty | | 4196 | EGFILES= # empty |
4197 | | | 4197 | |
4198 | install-examples: # produces a syntax error in the shell | | 4198 | install-examples: # produces a syntax error in the shell |
4199 | for egfile in ${EGFILES}; do \ | | 4199 | for egfile in ${EGFILES}; do \ |
4200 | echo "Installing $$egfile"; \ | | 4200 | echo "Installing $$egfile"; \ |
4201 | done | | 4201 | done |
4202 | </pre> | | 4202 | </pre> |
4203 | <p>The shell only sees the text <code class="code">for egfile in ; do</code>, since | | 4203 | <p>The shell only sees the text <code class="code">for egfile in ; do</code>, since |
4204 | <code class="code">${EGFILES}</code> is replaced with an empty string by <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a>. | | 4204 | <code class="code">${EGFILES}</code> is replaced with an empty string by <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a>. |
4205 | To fix this syntax error, use one of the snippets below.</p> | | 4205 | To fix this syntax error, use one of the snippets below.</p> |
4206 | <pre class="programlisting"> | | 4206 | <pre class="programlisting"> |
4207 | EMPTY= # empty | | 4207 | EMPTY= # empty |
4208 | | | 4208 | |
4209 | install-examples: | | 4209 | install-examples: |
4210 | for egfile in ${EGFILES} ""; do \ | | 4210 | for egfile in ${EGFILES} ""; do \ |
4211 | [ -n "$$egfile" ] || continue; \ | | 4211 | [ -n "$$egfile" ] || continue; \ |
4212 | echo "Installing $$egfile"; \ | | 4212 | echo "Installing $$egfile"; \ |
4213 | done | | 4213 | done |
4214 | </pre> | | 4214 | </pre> |
4215 | <p>In this case, an empty string is appended to the iteration list (to | | 4215 | <p>In this case, an empty string is appended to the iteration list (to |
4216 | prevent the syntax error) and filtered out later.</p> | | 4216 | prevent the syntax error) and filtered out later.</p> |
4217 | <pre class="programlisting"> | | 4217 | <pre class="programlisting"> |
4218 | EGFILES= # empty | | 4218 | EGFILES= # empty |
4219 | | | 4219 | |
4220 | install-examples: | | 4220 | install-examples: |
4221 | .for egfile in ${EGFILES} | | 4221 | .for egfile in ${EGFILES} |
4222 | echo "Installing ${egfile}" | | 4222 | echo "Installing ${egfile}" |
4223 | .endfor | | 4223 | .endfor |
4224 | </pre> | | 4224 | </pre> |
4225 | <p>This variant only works when <code class="varname">EGFILES</code> does not | | 4225 | <p>This variant only works when <code class="varname">EGFILES</code> does not |
4226 | contain filenames with spaces, since the <code class="code">.for</code> loop splits on | | 4226 | contain filenames with spaces, since the <code class="code">.for</code> loop splits on |
4227 | simple whitespace.</p> | | 4227 | simple whitespace.</p> |
4228 | <p>To have a shell command test whether a make variable is empty, use | | 4228 | <p>To have a shell command test whether a make variable is empty, use |
4229 | the following code: <code class="code">${TEST} -z ${POSSIBLY_EMPTY:Q}""</code>.</p> | | 4229 | the following code: <code class="code">${TEST} -z ${POSSIBLY_EMPTY:Q}""</code>.</p> |
4230 | </div> | | 4230 | </div> |
4231 | </div> | | 4231 | </div> |
4232 | </div> | | 4232 | </div> |
4233 | <div class="chapter"> | | 4233 | <div class="chapter"> |
4234 | <div class="titlepage"><div><div><h2 class="title"> | | 4234 | <div class="titlepage"><div><div><h2 class="title"> |
4235 | <a name="plist"></a>Chapter 13. PLIST issues</h2></div></div></div> | | 4235 | <a name="plist"></a>Chapter 13. PLIST issues</h2></div></div></div> |
4236 | <div class="toc"> | | 4236 | <div class="toc"> |
4237 | <p><b>Table of Contents</b></p> | | 4237 | <p><b>Table of Contents</b></p> |
4238 | <dl class="toc"> | | 4238 | <dl class="toc"> |
4239 | <dt><span class="sect1"><a href="#rcs-id">13.1. RCS ID</a></span></dt> | | 4239 | <dt><span class="sect1"><a href="#rcs-id">13.1. RCS ID</a></span></dt> |
4240 | <dt><span class="sect1"><a href="#automatic-plist-generation">13.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> | | 4240 | <dt><span class="sect1"><a href="#automatic-plist-generation">13.2. Semi-automatic <code class="filename">PLIST</code> generation</a></span></dt> |
4241 | <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> | | 4241 | <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> |
4242 | <dt><span class="sect1"><a href="#plist.misc">13.4. Variable substitution in PLIST</a></span></dt> | | 4242 | <dt><span class="sect1"><a href="#plist.misc">13.4. Variable substitution in PLIST</a></span></dt> |
4243 | <dt><span class="sect1"><a href="#manpage-compression">13.5. Man page compression</a></span></dt> | | 4243 | <dt><span class="sect1"><a href="#manpage-compression">13.5. Man page compression</a></span></dt> |
4244 | <dt><span class="sect1"><a href="#using-PLIST_SRC">13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code></a></span></dt> | | 4244 | <dt><span class="sect1"><a href="#using-PLIST_SRC">13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code></a></span></dt> |
4245 | <dt><span class="sect1"><a href="#platform-specific-plist">13.7. Platform-specific and differing PLISTs</a></span></dt> | | 4245 | <dt><span class="sect1"><a href="#platform-specific-plist">13.7. Platform-specific and differing PLISTs</a></span></dt> |
4246 | <dt><span class="sect1"><a href="#build-plist">13.8. Build-specific PLISTs</a></span></dt> | | 4246 | <dt><span class="sect1"><a href="#build-plist">13.8. Build-specific PLISTs</a></span></dt> |
4247 | <dt><span class="sect1"><a href="#faq.common-dirs">13.9. Sharing directories between packages</a></span></dt> | | 4247 | <dt><span class="sect1"><a href="#faq.common-dirs">13.9. Sharing directories between packages</a></span></dt> |
4248 | </dl> | | 4248 | </dl> |
4249 | </div> | | 4249 | </div> |
4250 | <p>The <code class="filename">PLIST</code> file contains a package's | | 4250 | <p>The <code class="filename">PLIST</code> file contains a package's |
4251 | <span class="quote">“<span class="quote">packing list</span>”</span>, i.e. a list of files that belong to | | 4251 | <span class="quote">“<span class="quote">packing list</span>”</span>, i.e. a list of files that belong to |
4252 | the package (relative to the <code class="filename">${PREFIX}</code> | | 4252 | the package (relative to the <code class="filename">${PREFIX}</code> |
4253 | directory it's been installed in) plus some additional statements | | 4253 | directory it's been installed in) plus some additional statements |
4254 | - see the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_create+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_create</span>(1)</span></a> man page for a full list. | | 4254 | - see the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_create+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_create</span>(1)</span></a> man page for a full list. |
4255 | This chapter addresses some issues that need attention when | | 4255 | This chapter addresses some issues that need attention when |
4256 | dealing with the <code class="filename">PLIST</code> file (or files, see | | 4256 | dealing with the <code class="filename">PLIST</code> file (or files, see |
4257 | below!).</p> | | 4257 | below!).</p> |
4258 | <div class="sect1"> | | 4258 | <div class="sect1"> |
4259 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4259 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4260 | <a name="rcs-id"></a>13.1. RCS ID</h2></div></div></div> | | 4260 | <a name="rcs-id"></a>13.1. RCS ID</h2></div></div></div> |
4261 | <p>Be sure to add a RCS ID line as the first thing in any | | 4261 | <p>Be sure to add a RCS ID line as the first thing in any |
4262 | <code class="filename">PLIST</code> file you write:</p> | | 4262 | <code class="filename">PLIST</code> file you write:</p> |
4263 | <pre class="programlisting"> | | 4263 | <pre class="programlisting"> |
4264 | @comment $NetBSD $ | | 4264 | @comment $NetBSD $ |
4265 | </pre> | | 4265 | </pre> |
4266 | <p>An artificial space has been added between NetBSD and $, this is a | | 4266 | <p>An artificial space has been added between NetBSD and $, this is a |
4267 | workaround here to prevent CVS expanding to the filename of the guide. When | | 4267 | workaround here to prevent CVS expanding to the filename of the guide. When |
4268 | adding the RCS ID the space should be omitted.</p> | | 4268 | adding the RCS ID the space should be omitted.</p> |
4269 | </div> | | 4269 | </div> |
4270 | <div class="sect1"> | | 4270 | <div class="sect1"> |
4271 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4271 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4272 | <a name="automatic-plist-generation"></a>13.2. Semi-automatic <code class="filename">PLIST</code> generation</h2></div></div></div> | | 4272 | <a name="automatic-plist-generation"></a>13.2. Semi-automatic <code class="filename">PLIST</code> generation</h2></div></div></div> |
4273 | <p>You can use the <span class="command"><strong>make print-PLIST</strong></span> command | | 4273 | <p>You can use the <span class="command"><strong>make print-PLIST</strong></span> command |
4274 | to output a PLIST that matches any new files since the package | | 4274 | to output a PLIST that matches any new files since the package |
4275 | was extracted. See <a class="xref" href="#build.helpful-targets" title="17.17. Other helpful targets">Section 17.17, “Other helpful targets”</a> for | | 4275 | was extracted. See <a class="xref" href="#build.helpful-targets" title="17.17. Other helpful targets">Section 17.17, “Other helpful targets”</a> for |
4276 | more information on this target.</p> | | 4276 | more information on this target.</p> |
4277 | </div> | | 4277 | </div> |
4278 | <div class="sect1"> | | 4278 | <div class="sect1"> |
4279 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4279 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4280 | <a name="print-PLIST"></a>13.3. Tweaking output of <span class="command"><strong>make print-PLIST</strong></span> | | 4280 | <a name="print-PLIST"></a>13.3. Tweaking output of <span class="command"><strong>make print-PLIST</strong></span> |
4281 | </h2></div></div></div> | | 4281 | </h2></div></div></div> |
4282 | <p>The <code class="varname">PRINT_PLIST_AWK</code> variable takes a set | | 4282 | <p>The <code class="varname">PRINT_PLIST_AWK</code> variable takes a set |
4283 | of AWK patterns and actions that are used to filter the output of | | 4283 | of AWK patterns and actions that are used to filter the output of |
4284 | print-PLIST. You can <span class="emphasis"><em>append</em></span> any chunk of AWK | | 4284 | print-PLIST. You can <span class="emphasis"><em>append</em></span> any chunk of AWK |
4285 | scripting you like to it, but be careful with quoting.</p> | | 4285 | scripting you like to it, but be careful with quoting.</p> |
4286 | <p>For example, to get all files inside the | | 4286 | <p>For example, to get all files inside the |
4287 | <code class="filename">libdata/foo</code> directory removed from the | | 4287 | <code class="filename">libdata/foo</code> directory removed from the |
4288 | resulting PLIST:</p> | | 4288 | resulting PLIST:</p> |
4289 | <pre class="programlisting"> | | 4289 | <pre class="programlisting"> |
4290 | PRINT_PLIST_AWK+= /^libdata\/foo/ { next; } | | 4290 | PRINT_PLIST_AWK+= /^libdata\/foo/ { next; } |
4291 | </pre> | | 4291 | </pre> |
4292 | </div> | | 4292 | </div> |
4293 | <div class="sect1"> | | 4293 | <div class="sect1"> |
4294 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4294 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4295 | <a name="plist.misc"></a>13.4. Variable substitution in PLIST</h2></div></div></div> | | 4295 | <a name="plist.misc"></a>13.4. Variable substitution in PLIST</h2></div></div></div> |
4296 | <p>A number of variables are substituted automatically in | | 4296 | <p>A number of variables are substituted automatically in |
4297 | PLISTs when a package is installed on a system. This includes the | | 4297 | PLISTs when a package is installed on a system. This includes the |
4298 | following variables:</p> | | 4298 | following variables:</p> |
4299 | <div class="variablelist"><dl class="variablelist"> | | 4299 | <div class="variablelist"><dl class="variablelist"> |
4300 | <dt><span class="term"><code class="varname">${MACHINE_ARCH}</code>, <code class="varname">${MACHINE_GNU_ARCH}</code></span></dt> | | 4300 | <dt><span class="term"><code class="varname">${MACHINE_ARCH}</code>, <code class="varname">${MACHINE_GNU_ARCH}</code></span></dt> |
4301 | <dd> | | 4301 | <dd> |
4302 | <p>Some packages like emacs and perl embed information | | 4302 | <p>Some packages like emacs and perl embed information |
4303 | about which architecture they were built on into the | | 4303 | about which architecture they were built on into the |
4304 | pathnames where they install their files. To handle this | | 4304 | pathnames where they install their files. To handle this |
4305 | case, PLIST will be preprocessed before actually used, and | | 4305 | case, PLIST will be preprocessed before actually used, and |
4306 | the symbol | | 4306 | the symbol |
4307 | <span class="quote">“<span class="quote"><code class="varname">${MACHINE_ARCH}</code></span>”</span> will be | | 4307 | <span class="quote">“<span class="quote"><code class="varname">${MACHINE_ARCH}</code></span>”</span> will be |
4308 | replaced by what <span class="command"><strong>uname -p</strong></span> gives. The | | 4308 | replaced by what <span class="command"><strong>uname -p</strong></span> gives. The |
4309 | same is done if the string | | 4309 | same is done if the string |
4310 | <code class="varname">${MACHINE_GNU_ARCH}</code> is embedded in | | 4310 | <code class="varname">${MACHINE_GNU_ARCH}</code> is embedded in |
4311 | PLIST somewhere - use this on packages that have GNU | | 4311 | PLIST somewhere - use this on packages that have GNU |
4312 | autoconf-created configure scripts.</p> | | 4312 | autoconf-created configure scripts.</p> |
4313 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 4313 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
4314 | <h3 class="title">Legacy note</h3> | | 4314 | <h3 class="title">Legacy note</h3> |
4315 | <p>There used to be a symbol | | 4315 | <p>There used to be a symbol |
4316 | <span class="quote">“<span class="quote"><code class="varname">$ARCH</code></span>”</span> that | | 4316 | <span class="quote">“<span class="quote"><code class="varname">$ARCH</code></span>”</span> that |
4317 | was replaced by the output of <span class="command"><strong>uname | | 4317 | was replaced by the output of <span class="command"><strong>uname |
4318 | -m</strong></span>, but that's no longer supported and has | | 4318 | -m</strong></span>, but that's no longer supported and has |
4319 | been removed.</p> | | 4319 | been removed.</p> |
4320 | </div> | | 4320 | </div> |
4321 | </dd> | | 4321 | </dd> |
4322 | <dt><span class="term"><code class="varname">${OPSYS}</code>, <code class="varname">${LOWER_OPSYS}</code>, <code class="varname">${OS_VERSION}</code></span></dt> | | 4322 | <dt><span class="term"><code class="varname">${OPSYS}</code>, <code class="varname">${LOWER_OPSYS}</code>, <code class="varname">${OS_VERSION}</code></span></dt> |
4323 | <dd> | | 4323 | <dd> |
4324 | <p>Some packages want to embed the OS name and version | | 4324 | <p>Some packages want to embed the OS name and version |
4325 | into some paths. To do this, use these variables in the | | 4325 | into some paths. To do this, use these variables in the |
4326 | <code class="filename">PLIST</code>: | | 4326 | <code class="filename">PLIST</code>: |
4327 | </p> | | 4327 | </p> |
4328 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4328 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4329 | <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> | | 4329 | <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> |
4330 | <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> | | 4330 | <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> |
4331 | <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> | | 4331 | <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> |
4332 | </ul></div> | | 4332 | </ul></div> |
4333 | </dd> | | 4333 | </dd> |
4334 | </dl></div> | | 4334 | </dl></div> |
4335 | <p>For a list of values which are replaced by | | 4335 | <p>For a list of values which are replaced by |
4336 | default, the output of <span class="command"><strong>make help topic=PLIST_SUBST</strong></span> as | | 4336 | default, the output of <span class="command"><strong>make help topic=PLIST_SUBST</strong></span> as |
4337 | well as searching the <code class="filename">pkgsrc/mk</code> directory with <span class="command"><strong>grep</strong></span> for | | 4337 | well as searching the <code class="filename">pkgsrc/mk</code> directory with <span class="command"><strong>grep</strong></span> for |
4338 | <code class="varname">PLIST_SUBST</code> should help.</p> | | 4338 | <code class="varname">PLIST_SUBST</code> should help.</p> |
4339 | <p>If you want to change other variables not listed above, you | | 4339 | <p>If you want to change other variables not listed above, you |
4340 | can add variables and their expansions to this variable in the | | 4340 | can add variables and their expansions to this variable in the |
4341 | 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> | | 4341 | 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> |
4342 | <pre class="programlisting"> | | 4342 | <pre class="programlisting"> |
4343 | PLIST_SUBST+= SOMEVAR="somevalue" | | 4343 | PLIST_SUBST+= SOMEVAR="somevalue" |
4344 | </pre> | | 4344 | </pre> |
4345 | <p>This replaces all occurrences of <span class="quote">“<span class="quote">${SOMEVAR}</span>”</span> | | 4345 | <p>This replaces all occurrences of <span class="quote">“<span class="quote">${SOMEVAR}</span>”</span> |
4346 | in the <code class="filename">PLIST</code> with | | 4346 | in the <code class="filename">PLIST</code> with |
4347 | <span class="quote">“<span class="quote">somevalue</span>”</span>.</p> | | 4347 | <span class="quote">“<span class="quote">somevalue</span>”</span>.</p> |
4348 | <p>The <code class="varname">PLIST_VARS</code> variable can be used to simplify | | 4348 | <p>The <code class="varname">PLIST_VARS</code> variable can be used to simplify |
4349 | the common case of conditionally including some | | 4349 | the common case of conditionally including some |
4350 | <code class="filename">PLIST</code> entries. It can be done by adding | | 4350 | <code class="filename">PLIST</code> entries. It can be done by adding |
4351 | <code class="literal"><code class="varname">PLIST_VARS</code>+=foo</code> and | | 4351 | <code class="literal"><code class="varname">PLIST_VARS</code>+=foo</code> and |
4352 | setting the corresponding <code class="varname">PLIST.foo</code> variable | | 4352 | setting the corresponding <code class="varname">PLIST.foo</code> variable |
4353 | to <code class="literal">yes</code> if the entry should be included. | | 4353 | to <code class="literal">yes</code> if the entry should be included. |
4354 | This will substitute <span class="quote">“<span class="quote"><code class="varname">${PLIST.foo}</code></span>”</span> | | 4354 | This will substitute <span class="quote">“<span class="quote"><code class="varname">${PLIST.foo}</code></span>”</span> |
4355 | in the <code class="filename">PLIST</code> with either | | 4355 | in the <code class="filename">PLIST</code> with either |
4356 | <span class="quote">“<span class="quote"><code class="literal">""</code></span>”</span> or | | 4356 | <span class="quote">“<span class="quote"><code class="literal">""</code></span>”</span> or |
4357 | <span class="quote">“<span class="quote"><code class="literal">"@comment "</code></span>”</span>. | | 4357 | <span class="quote">“<span class="quote"><code class="literal">"@comment "</code></span>”</span>. |
4358 | For example, in <code class="filename">Makefile</code>:</p> | | 4358 | For example, in <code class="filename">Makefile</code>:</p> |
4359 | <pre class="programlisting"> | | 4359 | <pre class="programlisting"> |
4360 | PLIST_VARS+= foo | | 4360 | PLIST_VARS+= foo |
4361 | .if <em class="replaceable"><code>condition</code></em> | | 4361 | .if <em class="replaceable"><code>condition</code></em> |
4362 | PLIST.foo= yes | | 4362 | PLIST.foo= yes |
4363 | .else | | 4363 | .else |
4364 | </pre> | | 4364 | </pre> |
4365 | <p>And then in <code class="filename">PLIST</code>:</p> | | 4365 | <p>And then in <code class="filename">PLIST</code>:</p> |
4366 | <pre class="programlisting"> | | 4366 | <pre class="programlisting"> |
4367 | @comment $NetBSD $ | | 4367 | @comment $NetBSD $ |
4368 | bin/bar | | 4368 | bin/bar |
4369 | man/man1/bar.1 | | 4369 | man/man1/bar.1 |
4370 | ${PLIST.foo}bin/foo | | 4370 | ${PLIST.foo}bin/foo |
4371 | ${PLIST.foo}man/man1/foo.1 | | 4371 | ${PLIST.foo}man/man1/foo.1 |
4372 | ${PLIST.foo}share/bar/foo.data | | 4372 | ${PLIST.foo}share/bar/foo.data |
4373 | </pre> | | 4373 | </pre> |
4374 | <p>An artificial space has been added between NetBSD and $, this is a | | 4374 | <p>An artificial space has been added between NetBSD and $, this is a |
4375 | workaround here to prevent CVS expanding to the filename of the guide. When | | 4375 | workaround here to prevent CVS expanding to the filename of the guide. When |
4376 | adding the RCS ID the space should be ommited.</p> | | 4376 | adding the RCS ID the space should be ommited.</p> |
4377 | </div> | | 4377 | </div> |
4378 | <div class="sect1"> | | 4378 | <div class="sect1"> |
4379 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4379 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4380 | <a name="manpage-compression"></a>13.5. Man page compression</h2></div></div></div> | | 4380 | <a name="manpage-compression"></a>13.5. Man page compression</h2></div></div></div> |
4381 | <p>Man pages should be installed in compressed form if | | 4381 | <p>Man pages should be installed in compressed form if |
4382 | <code class="varname">MANZ</code> is set (in <code class="filename">bsd.own.mk</code>), | | 4382 | <code class="varname">MANZ</code> is set (in <code class="filename">bsd.own.mk</code>), |
4383 | and uncompressed otherwise. To handle this in the | | 4383 | and uncompressed otherwise. To handle this in the |
4384 | <code class="filename">PLIST</code> file, the suffix <span class="quote">“<span class="quote">.gz</span>”</span> is | | 4384 | <code class="filename">PLIST</code> file, the suffix <span class="quote">“<span class="quote">.gz</span>”</span> is |
4385 | appended/removed automatically for man pages according to | | 4385 | appended/removed automatically for man pages according to |
4386 | <code class="varname">MANZ</code> and <code class="varname">MANCOMPRESSED</code> being set | | 4386 | <code class="varname">MANZ</code> and <code class="varname">MANCOMPRESSED</code> being set |
4387 | or not, see above for details. This modification of the | | 4387 | or not, see above for details. This modification of the |
4388 | <code class="filename">PLIST</code> file is done on a copy of it, not | | 4388 | <code class="filename">PLIST</code> file is done on a copy of it, not |
4389 | <code class="filename">PLIST</code> itself.</p> | | 4389 | <code class="filename">PLIST</code> itself.</p> |
4390 | </div> | | 4390 | </div> |
4391 | <div class="sect1"> | | 4391 | <div class="sect1"> |
4392 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4392 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4393 | <a name="using-PLIST_SRC"></a>13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code> | | 4393 | <a name="using-PLIST_SRC"></a>13.6. Changing PLIST source with <code class="varname">PLIST_SRC</code> |
4394 | </h2></div></div></div> | | 4394 | </h2></div></div></div> |
4395 | <p>To use one or more files as source for the <code class="filename">PLIST</code> used | | 4395 | <p>To use one or more files as source for the <code class="filename">PLIST</code> used |
4396 | in generating the binary package, set the variable | | 4396 | in generating the binary package, set the variable |
4397 | <code class="varname">PLIST_SRC</code> to the names of that file(s). | | 4397 | <code class="varname">PLIST_SRC</code> to the names of that file(s). |
4398 | The files are later concatenated using <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?cat+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">cat</span>(1)</span></a>, and the order of things is | | 4398 | The files are later concatenated using <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?cat+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">cat</span>(1)</span></a>, and the order of things is |
4399 | important. The default for <code class="varname">PLIST_SRC</code> is | | 4399 | important. The default for <code class="varname">PLIST_SRC</code> is |
4400 | <code class="filename">${PKGDIR}/PLIST</code>.</p> | | 4400 | <code class="filename">${PKGDIR}/PLIST</code>.</p> |
4401 | </div> | | 4401 | </div> |
4402 | <div class="sect1"> | | 4402 | <div class="sect1"> |
4403 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4403 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4404 | <a name="platform-specific-plist"></a>13.7. Platform-specific and differing PLISTs</h2></div></div></div> | | 4404 | <a name="platform-specific-plist"></a>13.7. Platform-specific and differing PLISTs</h2></div></div></div> |
4405 | <p>Some packages decide to install a different set of files based on | | 4405 | <p>Some packages decide to install a different set of files based on |
4406 | the operating system being used. These differences can be | | 4406 | the operating system being used. These differences can be |
4407 | automatically handled by using the following files:</p> | | 4407 | automatically handled by using the following files:</p> |
4408 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4408 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4409 | <li class="listitem"><p><code class="filename">PLIST.common</code></p></li> | | 4409 | <li class="listitem"><p><code class="filename">PLIST.common</code></p></li> |
4410 | <li class="listitem"><p><code class="filename">PLIST.${OPSYS}</code></p></li> | | 4410 | <li class="listitem"><p><code class="filename">PLIST.${OPSYS}</code></p></li> |
4411 | <li class="listitem"><p><code class="filename">PLIST.${MACHINE_ARCH}</code></p></li> | | 4411 | <li class="listitem"><p><code class="filename">PLIST.${MACHINE_ARCH}</code></p></li> |
4412 | <li class="listitem"><p><code class="filename">PLIST.${OPSYS}-${MACHINE_ARCH}</code></p></li> | | 4412 | <li class="listitem"><p><code class="filename">PLIST.${OPSYS}-${MACHINE_ARCH}</code></p></li> |
4413 | <li class="listitem"><p><code class="filename">PLIST.common_end</code></p></li> | | 4413 | <li class="listitem"><p><code class="filename">PLIST.common_end</code></p></li> |
4414 | </ul></div> | | 4414 | </ul></div> |
4415 | </div> | | 4415 | </div> |
4416 | <div class="sect1"> | | 4416 | <div class="sect1"> |
4417 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4417 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4418 | <a name="build-plist"></a>13.8. Build-specific PLISTs</h2></div></div></div> | | 4418 | <a name="build-plist"></a>13.8. Build-specific PLISTs</h2></div></div></div> |
4419 | <p>Some packages decide to generate hard-to-guess file names | | 4419 | <p>Some packages decide to generate hard-to-guess file names |
4420 | during installation that are hard to wire down.</p> | | 4420 | during installation that are hard to wire down.</p> |
4421 | <p>In such cases, you can set the | | 4421 | <p>In such cases, you can set the |
4422 | <code class="varname">GENERATE_PLIST</code> variable to shell code | | 4422 | <code class="varname">GENERATE_PLIST</code> variable to shell code |
4423 | terminated (with a semicolon) that will output PLIST entries which | | 4423 | terminated (with a semicolon) that will output PLIST entries which |
4424 | will be appended to the PLIST</p> | | 4424 | will be appended to the PLIST</p> |
4425 | <p>You can find one example in editors/xemacs:</p> | | 4425 | <p>You can find one example in editors/xemacs:</p> |
4426 | <pre class="programlisting"> | | 4426 | <pre class="programlisting"> |
4427 | GENERATE_PLIST+= ${ECHO} bin/${DISTNAME}-`${WRKSRC}/src/xemacs -sd`.dmp ; | | 4427 | GENERATE_PLIST+= ${ECHO} bin/${DISTNAME}-`${WRKSRC}/src/xemacs -sd`.dmp ; |
4428 | </pre> | | 4428 | </pre> |
4429 | <p>which will append something like | | 4429 | <p>which will append something like |
4430 | <code class="filename">bin/xemacs-21.4.23-54e8ea71.dmp</code> to the | | 4430 | <code class="filename">bin/xemacs-21.4.23-54e8ea71.dmp</code> to the |
4431 | <code class="filename">PLIST</code>. | | 4431 | <code class="filename">PLIST</code>. |
4432 | </p> | | 4432 | </p> |
4433 | </div> | | 4433 | </div> |
4434 | <div class="sect1"> | | 4434 | <div class="sect1"> |
4435 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4435 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4436 | <a name="faq.common-dirs"></a>13.9. Sharing directories between packages</h2></div></div></div> | | 4436 | <a name="faq.common-dirs"></a>13.9. Sharing directories between packages</h2></div></div></div> |
4437 | <p>A <span class="quote">“<span class="quote">shared directory</span>”</span> is a directory where | | 4437 | <p>A <span class="quote">“<span class="quote">shared directory</span>”</span> is a directory where |
4438 | multiple (and unrelated) packages install files. These | | 4438 | multiple (and unrelated) packages install files. These |
4439 | directories were problematic because you had to add special | | 4439 | directories were problematic because you had to add special |
4440 | tricks in the PLIST to conditionally remove them, or have some | | 4440 | tricks in the PLIST to conditionally remove them, or have some |
4441 | centralized package handle them.</p> | | 4441 | centralized package handle them.</p> |
4442 | <p>In pkgsrc, it is now easy: Each package should create | | 4442 | <p>In pkgsrc, it is now easy: Each package should create |
4443 | directories and install files as needed; <span class="command"><strong>pkg_delete</strong></span> | | 4443 | directories and install files as needed; <span class="command"><strong>pkg_delete</strong></span> |
4444 | will remove any directories left empty after uninstalling a | | 4444 | will remove any directories left empty after uninstalling a |
4445 | package.</p> | | 4445 | package.</p> |
4446 | <p>If a package needs an empty directory to work, create | | 4446 | <p>If a package needs an empty directory to work, create |
4447 | the directory during installation as usual, and also add an | | 4447 | the directory during installation as usual, and also add an |
4448 | entry to the PLIST: | | 4448 | entry to the PLIST: |
4449 | | | 4449 | |
4450 | </p> | | 4450 | </p> |
4451 | <pre class="programlisting"> | | 4451 | <pre class="programlisting"> |
4452 | @pkgdir path/to/empty/directory | | 4452 | @pkgdir path/to/empty/directory |
4453 | </pre> | | 4453 | </pre> |
4454 | <p> | | 4454 | <p> |
4455 | | | 4455 | |
4456 | or take a look at <code class="varname">MAKE_DIRS</code> and | | 4456 | or take a look at <code class="varname">MAKE_DIRS</code> and |
4457 | <code class="varname">OWN_DIRS</code>. | | 4457 | <code class="varname">OWN_DIRS</code>. |
4458 | </p> | | 4458 | </p> |
4459 | </div> | | 4459 | </div> |
4460 | </div> | | 4460 | </div> |
4461 | <div class="chapter"> | | 4461 | <div class="chapter"> |
4462 | <div class="titlepage"><div><div><h2 class="title"> | | 4462 | <div class="titlepage"><div><div><h2 class="title"> |
4463 | <a name="buildlink"></a>Chapter 14. Buildlink methodology</h2></div></div></div> | | 4463 | <a name="buildlink"></a>Chapter 14. Buildlink methodology</h2></div></div></div> |
4464 | <div class="toc"> | | 4464 | <div class="toc"> |
4465 | <p><b>Table of Contents</b></p> | | 4465 | <p><b>Table of Contents</b></p> |
4466 | <dl class="toc"> | | 4466 | <dl class="toc"> |
4467 | <dt><span class="sect1"><a href="#converting-to-buildlink3">14.1. Converting packages to use buildlink3</a></span></dt> | | 4467 | <dt><span class="sect1"><a href="#converting-to-buildlink3">14.1. Converting packages to use buildlink3</a></span></dt> |
4468 | <dt><span class="sect1"><a href="#creating-buildlink3.mk">14.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> | | 4468 | <dt><span class="sect1"><a href="#creating-buildlink3.mk">14.2. Writing <code class="filename">buildlink3.mk</code> files</a></span></dt> |
4469 | <dd><dl> | | 4469 | <dd><dl> |
4470 | <dt><span class="sect2"><a href="#anatomy-of-bl3">14.2.1. Anatomy of a buildlink3.mk file</a></span></dt> | | 4470 | <dt><span class="sect2"><a href="#anatomy-of-bl3">14.2.1. Anatomy of a buildlink3.mk file</a></span></dt> |
4471 | <dt><span class="sect2"><a href="#updating-buildlink-depends">14.2.2. Updating | | 4471 | <dt><span class="sect2"><a href="#updating-buildlink-depends">14.2.2. Updating |
4472 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 4472 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
4473 | and | | 4473 | and |
4474 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 4474 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
4475 | in <code class="filename">buildlink3.mk</code> files</a></span></dt> | | 4475 | in <code class="filename">buildlink3.mk</code> files</a></span></dt> |
4476 | </dl></dd> | | 4476 | </dl></dd> |
4477 | <dt><span class="sect1"><a href="#writing-builtin.mk">14.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> | | 4477 | <dt><span class="sect1"><a href="#writing-builtin.mk">14.3. Writing <code class="filename">builtin.mk</code> files</a></span></dt> |
4478 | <dd><dl> | | 4478 | <dd><dl> |
4479 | <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> | | 4479 | <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> |
4480 | <dt><span class="sect2"><a href="#native-or-pkgsrc-preference">14.3.2. Global preferences for native or pkgsrc software</a></span></dt> | | 4480 | <dt><span class="sect2"><a href="#native-or-pkgsrc-preference">14.3.2. Global preferences for native or pkgsrc software</a></span></dt> |
4481 | </dl></dd> | | 4481 | </dl></dd> |
4482 | </dl> | | 4482 | </dl> |
4483 | </div> | | 4483 | </div> |
4484 | <p>Buildlink is a framework in pkgsrc that controls what headers and libraries | | 4484 | <p>Buildlink is a framework in pkgsrc that controls what headers and libraries |
4485 | are seen by a package's configure and build processes. This is implemented | | 4485 | are seen by a package's configure and build processes. This is implemented |
4486 | in a two step process:</p> | | 4486 | in a two step process:</p> |
4487 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 4487 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
4488 | <li class="listitem"><p>Symlink headers and libraries for dependencies into | | 4488 | <li class="listitem"><p>Symlink headers and libraries for dependencies into |
4489 | <code class="varname">BUILDLINK_DIR</code>, which by default is a subdirectory | | 4489 | <code class="varname">BUILDLINK_DIR</code>, which by default is a subdirectory |
4490 | of <code class="varname">WRKDIR</code>.</p></li> | | 4490 | of <code class="varname">WRKDIR</code>.</p></li> |
4491 | <li class="listitem"><p>Create wrapper scripts that are used in place of the normal compiler | | 4491 | <li class="listitem"><p>Create wrapper scripts that are used in place of the normal compiler |
4492 | tools that translate <code class="option">-I${LOCALBASE}/include</code> and | | 4492 | tools that translate <code class="option">-I${LOCALBASE}/include</code> and |
4493 | <code class="option">-L${LOCALBASE}/lib</code> into references to | | 4493 | <code class="option">-L${LOCALBASE}/lib</code> into references to |
4494 | <code class="varname">BUILDLINK_DIR</code>. The wrapper scripts also make | | 4494 | <code class="varname">BUILDLINK_DIR</code>. The wrapper scripts also make |
4495 | native compiler on some operating systems look like GCC, so that | | 4495 | native compiler on some operating systems look like GCC, so that |
4496 | packages that expect GCC won't require modifications to build with | | 4496 | packages that expect GCC won't require modifications to build with |
4497 | those native compilers.</p></li> | | 4497 | those native compilers.</p></li> |
4498 | </ol></div> | | 4498 | </ol></div> |
4499 | <p>This normalizes the environment in which a package is built so that the | | 4499 | <p>This normalizes the environment in which a package is built so that the |
4500 | package may be built consistently despite what other software may be | | 4500 | package may be built consistently despite what other software may be |
4501 | installed. Please note that the normal system header and library paths, | | 4501 | installed. Please note that the normal system header and library paths, |
4502 | e.g. <code class="filename">/usr/include</code>, | | 4502 | e.g. <code class="filename">/usr/include</code>, |
4503 | <code class="filename">/usr/lib</code>, etc., are always searched -- buildlink3 is | | 4503 | <code class="filename">/usr/lib</code>, etc., are always searched -- buildlink3 is |
4504 | designed to insulate the package build from non-system-supplied | | 4504 | designed to insulate the package build from non-system-supplied |
4505 | software.</p> | | 4505 | software.</p> |
4506 | <div class="sect1"> | | 4506 | <div class="sect1"> |
4507 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4507 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4508 | <a name="converting-to-buildlink3"></a>14.1. Converting packages to use buildlink3</h2></div></div></div> | | 4508 | <a name="converting-to-buildlink3"></a>14.1. Converting packages to use buildlink3</h2></div></div></div> |
4509 | <p>The process of converting packages to use the buildlink3 | | 4509 | <p>The process of converting packages to use the buildlink3 |
4510 | framework (<span class="quote">“<span class="quote">bl3ifying</span>”</span>) is fairly straightforward. | | 4510 | framework (<span class="quote">“<span class="quote">bl3ifying</span>”</span>) is fairly straightforward. |
4511 | The things to keep in mind are:</p> | | 4511 | The things to keep in mind are:</p> |
4512 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 4512 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
4513 | <li class="listitem"><p>Ensure that the build always calls the wrapper scripts | | 4513 | <li class="listitem"><p>Ensure that the build always calls the wrapper scripts |
4514 | instead of the actual toolchain. Some packages are tricky, | | 4514 | instead of the actual toolchain. Some packages are tricky, |
4515 | and the only way to know for sure is the check | | 4515 | and the only way to know for sure is the check |
4516 | <code class="filename">${WRKDIR}/.work.log</code> to see if the | | 4516 | <code class="filename">${WRKDIR}/.work.log</code> to see if the |
4517 | wrappers are being invoked.</p></li> | | 4517 | wrappers are being invoked.</p></li> |
4518 | <li class="listitem"><p>Don't override <code class="varname">PREFIX</code> from within | | 4518 | <li class="listitem"><p>Don't override <code class="varname">PREFIX</code> from within |
4519 | the package Makefile, e.g. Java VMs, standalone shells, | | 4519 | the package Makefile, e.g. Java VMs, standalone shells, |
4520 | etc., because the code to symlink files into | | 4520 | etc., because the code to symlink files into |
4521 | <code class="filename">${BUILDLINK_DIR}</code> looks for files | | 4521 | <code class="filename">${BUILDLINK_DIR}</code> looks for files |
4522 | relative to <span class="quote">“<span class="quote">pkg_info -qp <em class="replaceable"><code>pkgname</code></em></span>”</span>. | | 4522 | relative to <span class="quote">“<span class="quote">pkg_info -qp <em class="replaceable"><code>pkgname</code></em></span>”</span>. |
4523 | </p></li> | | 4523 | </p></li> |
4524 | <li class="listitem"><p>Remember that <span class="emphasis"><em>only</em></span> the | | 4524 | <li class="listitem"><p>Remember that <span class="emphasis"><em>only</em></span> the |
4525 | <code class="filename">buildlink3.mk</code> files that you list in a | | 4525 | <code class="filename">buildlink3.mk</code> files that you list in a |
4526 | package's Makefile are added as dependencies for that package. | | 4526 | package's Makefile are added as dependencies for that package. |
4527 | </p></li> | | 4527 | </p></li> |
4528 | </ol></div> | | 4528 | </ol></div> |
4529 | <p>If a dependency on a particular package is required for its libraries and | | 4529 | <p>If a dependency on a particular package is required for its libraries and |
4530 | headers, then we replace:</p> | | 4530 | headers, then we replace:</p> |
4531 | <pre class="programlisting"> | | 4531 | <pre class="programlisting"> |
4532 | DEPENDS+= foo>=1.1.0:../../category/foo | | 4532 | DEPENDS+= foo>=1.1.0:../../category/foo |
4533 | </pre> | | 4533 | </pre> |
4534 | <p>with</p> | | 4534 | <p>with</p> |
4535 | <pre class="programlisting"> | | 4535 | <pre class="programlisting"> |
4536 | .include "../../category/foo/buildlink3.mk" | | 4536 | .include "../../category/foo/buildlink3.mk" |
4537 | </pre> | | 4537 | </pre> |
4538 | <p>The buildlink3.mk files usually define the required dependencies. | | 4538 | <p>The buildlink3.mk files usually define the required dependencies. |
4539 | If you need a newer version of the dependency when using buildlink3.mk | | 4539 | If you need a newer version of the dependency when using buildlink3.mk |
4540 | files, then you can define it in your Makefile; for example:</p> | | 4540 | files, then you can define it in your Makefile; for example:</p> |
4541 | <pre class="programlisting"> | | 4541 | <pre class="programlisting"> |
4542 | BUILDLINK_API_DEPENDS.foo+= foo>=1.1.0 | | 4542 | BUILDLINK_API_DEPENDS.foo+= foo>=1.1.0 |
4543 | .include "../../category/foo/buildlink3.mk" | | 4543 | .include "../../category/foo/buildlink3.mk" |
4544 | </pre> | | 4544 | </pre> |
4545 | <p>There are several <code class="filename">buildlink3.mk</code> | | 4545 | <p>There are several <code class="filename">buildlink3.mk</code> |
4546 | files in <code class="filename">pkgsrc/mk</code> | | 4546 | files in <code class="filename">pkgsrc/mk</code> |
4547 | that handle special package issues:</p> | | 4547 | that handle special package issues:</p> |
4548 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4548 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4549 | <li class="listitem"><p><code class="filename">bdb.buildlink3.mk</code> chooses either | | 4549 | <li class="listitem"><p><code class="filename">bdb.buildlink3.mk</code> chooses either |
4550 | the native or a pkgsrc Berkeley DB implementation based on | | 4550 | the native or a pkgsrc Berkeley DB implementation based on |
4551 | the values of <code class="varname">BDB_ACCEPTED</code> and | | 4551 | the values of <code class="varname">BDB_ACCEPTED</code> and |
4552 | <code class="varname">BDB_DEFAULT</code>.</p></li> | | 4552 | <code class="varname">BDB_DEFAULT</code>.</p></li> |
4553 | <li class="listitem"><p><code class="filename">curses.buildlink3.mk</code>: If the system | | 4553 | <li class="listitem"><p><code class="filename">curses.buildlink3.mk</code>: If the system |
4554 | comes with neither Curses nor NCurses, this will take care | | 4554 | comes with neither Curses nor NCurses, this will take care |
4555 | to install the <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/ncurses/README.html" target="_top"><code class="filename">devel/ncurses</code></a> package.</p></li> | | 4555 | to install the <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/ncurses/README.html" target="_top"><code class="filename">devel/ncurses</code></a> package.</p></li> |
4556 | <li class="listitem"><p><code class="filename">krb5.buildlink3.mk</code> uses the value | | 4556 | <li class="listitem"><p><code class="filename">krb5.buildlink3.mk</code> uses the value |
4557 | of <code class="varname">KRB5_ACCEPTED</code> to choose between | | 4557 | of <code class="varname">KRB5_ACCEPTED</code> to choose between |
4558 | adding a dependency on Heimdal or MIT-krb5 for packages that | | 4558 | adding a dependency on Heimdal or MIT-krb5 for packages that |
4559 | require a Kerberos 5 implementation.</p></li> | | 4559 | require a Kerberos 5 implementation.</p></li> |
4560 | <li class="listitem"><p><code class="filename">motif.buildlink3.mk</code> checks for a | | 4560 | <li class="listitem"><p><code class="filename">motif.buildlink3.mk</code> checks for a |
4561 | system-provided Motif installation or adds a dependency on | | 4561 | system-provided Motif installation or adds a dependency on |
4562 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/x11/lesstif/README.html" target="_top"><code class="filename">x11/lesstif</code></a> or <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/x11/motif/README.html" target="_top"><code class="filename">x11/motif</code></a>. The user can set | | 4562 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/x11/lesstif/README.html" target="_top"><code class="filename">x11/lesstif</code></a> or <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/x11/motif/README.html" target="_top"><code class="filename">x11/motif</code></a>. The user can set |
4563 | <code class="varname">MOTIF_TYPE</code> to <span class="quote">“<span class="quote">dt</span>”</span>, | | 4563 | <code class="varname">MOTIF_TYPE</code> to <span class="quote">“<span class="quote">dt</span>”</span>, |
4564 | <span class="quote">“<span class="quote">lesstif</span>”</span> or <span class="quote">“<span class="quote">motif</span>”</span> | | 4564 | <span class="quote">“<span class="quote">lesstif</span>”</span> or <span class="quote">“<span class="quote">motif</span>”</span> |
4565 | to choose which Motif version will be used.</p></li> | | 4565 | to choose which Motif version will be used.</p></li> |
4566 | <li class="listitem"><p><code class="filename">readline.buildlink3.mk</code> checks for a | | 4566 | <li class="listitem"><p><code class="filename">readline.buildlink3.mk</code> checks for a |
4567 | system-provided GNU readline or editline (libedit) installation, | | 4567 | system-provided GNU readline or editline (libedit) installation, |
4568 | or adds a dependency on <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/readline/README.html" target="_top"><code class="filename">devel/readline</code></a>, | | 4568 | or adds a dependency on <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/readline/README.html" target="_top"><code class="filename">devel/readline</code></a>, |
4569 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/editline/README.html" target="_top"><code class="filename">devel/editline</code></a>. The user can set | | 4569 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/editline/README.html" target="_top"><code class="filename">devel/editline</code></a>. The user can set |
4570 | <code class="varname">READLINE_DEFAULT</code> to choose readline implementation. | | 4570 | <code class="varname">READLINE_DEFAULT</code> to choose readline implementation. |
4571 | If your package really needs GNU readline library, its Makefile | | 4571 | If your package really needs GNU readline library, its Makefile |
4572 | should include <code class="filename">devel/readline/buildlink3.mk</code> | | 4572 | should include <code class="filename">devel/readline/buildlink3.mk</code> |
4573 | instead of <code class="filename">readline.buildlink3.mk</code>.</p></li> | | 4573 | instead of <code class="filename">readline.buildlink3.mk</code>.</p></li> |
4574 | <li class="listitem"><p><code class="filename">oss.buildlink3.mk</code> defines several | | 4574 | <li class="listitem"><p><code class="filename">oss.buildlink3.mk</code> defines several |
4575 | variables that may be used by packages that use the | | 4575 | variables that may be used by packages that use the |
4576 | Open Sound System (OSS) API.</p></li> | | 4576 | Open Sound System (OSS) API.</p></li> |
4577 | <li class="listitem"><p><code class="filename">pgsql.buildlink3.mk</code> will accept | | 4577 | <li class="listitem"><p><code class="filename">pgsql.buildlink3.mk</code> will accept |
4578 | any of the Postgres versions in the variable | | 4578 | any of the Postgres versions in the variable |
4579 | <code class="varname">PGSQL_VERSIONS_ACCEPTED</code> and default to | | 4579 | <code class="varname">PGSQL_VERSIONS_ACCEPTED</code> and default to |
4580 | the version <code class="varname">PGSQL_VERSION_DEFAULT</code>. See | | 4580 | the version <code class="varname">PGSQL_VERSION_DEFAULT</code>. See |
4581 | the file for more information.</p></li> | | 4581 | the file for more information.</p></li> |
4582 | <li class="listitem"><p><code class="filename">pthread.buildlink3.mk</code> uses the value of | | 4582 | <li class="listitem"><p><code class="filename">pthread.buildlink3.mk</code> uses the value of |
4583 | <code class="varname">PTHREAD_OPTS</code> and checks for native pthreads or adds | | 4583 | <code class="varname">PTHREAD_OPTS</code> and checks for native pthreads or adds |
4584 | a dependency on <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/pth/README.html" target="_top"><code class="filename">devel/pth</code></a> as needed.</p></li> | | 4584 | a dependency on <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/pth/README.html" target="_top"><code class="filename">devel/pth</code></a> as needed.</p></li> |
4585 | <li class="listitem"><p><code class="filename">xaw.buildlink3.mk</code> uses the value of | | 4585 | <li class="listitem"><p><code class="filename">xaw.buildlink3.mk</code> uses the value of |
4586 | <code class="varname">XAW_TYPE</code> to choose a particular Athena widgets | | 4586 | <code class="varname">XAW_TYPE</code> to choose a particular Athena widgets |
4587 | library.</p></li> | | 4587 | library.</p></li> |
4588 | </ul></div> | | 4588 | </ul></div> |
4589 | <p>The comments in those <code class="filename">buildlink3.mk</code> | | 4589 | <p>The comments in those <code class="filename">buildlink3.mk</code> |
4590 | files provide a more complete | | 4590 | files provide a more complete |
4591 | description of how to use them properly.</p> | | 4591 | description of how to use them properly.</p> |
4592 | </div> | | 4592 | </div> |
4593 | <div class="sect1"> | | 4593 | <div class="sect1"> |
4594 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4594 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4595 | <a name="creating-buildlink3.mk"></a>14.2. Writing <code class="filename">buildlink3.mk</code> files</h2></div></div></div> | | 4595 | <a name="creating-buildlink3.mk"></a>14.2. Writing <code class="filename">buildlink3.mk</code> files</h2></div></div></div> |
4596 | <a name="buildlink3.mk"></a><p>A package's <code class="filename">buildlink3.mk</code> file is | | 4596 | <a name="buildlink3.mk"></a><p>A package's <code class="filename">buildlink3.mk</code> file is |
4597 | included by Makefiles to indicate the need to compile and link | | 4597 | included by Makefiles to indicate the need to compile and link |
4598 | against header files and libraries provided by the package. A | | 4598 | against header files and libraries provided by the package. A |
4599 | <code class="filename">buildlink3.mk</code> file should always provide | | 4599 | <code class="filename">buildlink3.mk</code> file should always provide |
4600 | enough information to add the correct type of dependency | | 4600 | enough information to add the correct type of dependency |
4601 | relationship and include any other | | 4601 | relationship and include any other |
4602 | <code class="filename">buildlink3.mk</code> files that it needs to find | | 4602 | <code class="filename">buildlink3.mk</code> files that it needs to find |
4603 | headers and libraries that it needs in turn.</p> | | 4603 | headers and libraries that it needs in turn.</p> |
4604 | <p>To generate an initial <code class="filename">buildlink3.mk</code> | | 4604 | <p>To generate an initial <code class="filename">buildlink3.mk</code> |
4605 | file for further editing, Rene Hexel's <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/createbuildlink/README.html" target="_top"><code class="filename">pkgtools/createbuildlink</code></a> | | 4605 | file for further editing, Rene Hexel's <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/createbuildlink/README.html" target="_top"><code class="filename">pkgtools/createbuildlink</code></a> |
4606 | package is highly recommended. For most packages, the following | | 4606 | package is highly recommended. For most packages, the following |
4607 | command will generate a good starting point for | | 4607 | command will generate a good starting point for |
4608 | <code class="filename">buildlink3.mk</code> files:</p> | | 4608 | <code class="filename">buildlink3.mk</code> files:</p> |
4609 | <pre class="screen"> | | 4609 | <pre class="screen"> |
4610 | <code class="prompt">%</code> <strong class="userinput"><code>cd pkgsrc/<em class="replaceable"><code>category</code></em>/<em class="replaceable"><code>pkgdir</code></em> | | 4610 | <code class="prompt">%</code> <strong class="userinput"><code>cd pkgsrc/<em class="replaceable"><code>category</code></em>/<em class="replaceable"><code>pkgdir</code></em> |
4611 | <code class="prompt">%</code> createbuildlink >buildlink3.mk</code></strong> | | 4611 | <code class="prompt">%</code> createbuildlink >buildlink3.mk</code></strong> |
4612 | </pre> | | 4612 | </pre> |
4613 | <div class="sect2"> | | 4613 | <div class="sect2"> |
4614 | <div class="titlepage"><div><div><h3 class="title"> | | 4614 | <div class="titlepage"><div><div><h3 class="title"> |
4615 | <a name="anatomy-of-bl3"></a>14.2.1. Anatomy of a buildlink3.mk file</h3></div></div></div> | | 4615 | <a name="anatomy-of-bl3"></a>14.2.1. Anatomy of a buildlink3.mk file</h3></div></div></div> |
4616 | <p>The following real-life example | | 4616 | <p>The following real-life example |
4617 | <code class="filename">buildlink3.mk</code> is taken | | 4617 | <code class="filename">buildlink3.mk</code> is taken |
4618 | from <code class="filename">pkgsrc/graphics/tiff</code>:</p> | | 4618 | from <code class="filename">pkgsrc/graphics/tiff</code>:</p> |
4619 | <pre class="programlisting"> | | 4619 | <pre class="programlisting"> |
4620 | # $NetBSD: buildlink3.mk,v 1.16 2009/03/20 19:24:45 joerg Exp $ | | 4620 | # $NetBSD: buildlink3.mk,v 1.16 2009/03/20 19:24:45 joerg Exp $ |
4621 | | | 4621 | |
4622 | BUILDLINK_TREE+= tiff | | 4622 | BUILDLINK_TREE+= tiff |
4623 | | | 4623 | |
4624 | .if !defined(TIFF_BUILDLINK3_MK) | | 4624 | .if !defined(TIFF_BUILDLINK3_MK) |
4625 | TIFF_BUILDLINK3_MK:= | | 4625 | TIFF_BUILDLINK3_MK:= |
4626 | | | 4626 | |
4627 | BUILDLINK_API_DEPENDS.tiff+= tiff>=3.6.1 | | 4627 | BUILDLINK_API_DEPENDS.tiff+= tiff>=3.6.1 |
4628 | BUILDLINK_ABI_DEPENDS.tiff+= tiff>=3.7.2nb1 | | 4628 | BUILDLINK_ABI_DEPENDS.tiff+= tiff>=3.7.2nb1 |
4629 | BUILDLINK_PKGSRCDIR.tiff?= ../../graphics/tiff | | 4629 | BUILDLINK_PKGSRCDIR.tiff?= ../../graphics/tiff |
4630 | | | 4630 | |
4631 | .include "../../devel/zlib/buildlink3.mk" | | 4631 | .include "../../devel/zlib/buildlink3.mk" |
4632 | .include "../../graphics/jpeg/buildlink3.mk" | | 4632 | .include "../../graphics/jpeg/buildlink3.mk" |
4633 | .endif # TIFF_BUILDLINK3_MK | | 4633 | .endif # TIFF_BUILDLINK3_MK |
4634 | | | 4634 | |
4635 | BUILDLINK_TREE+= -tiff | | 4635 | BUILDLINK_TREE+= -tiff |
4636 | </pre> | | 4636 | </pre> |
4637 | <p>The header and footer manipulate | | 4637 | <p>The header and footer manipulate |
4638 | <code class="varname">BUILDLINK_TREE</code>, which is common across all | | 4638 | <code class="varname">BUILDLINK_TREE</code>, which is common across all |
4639 | <code class="filename">buildlink3.mk</code> files and is used to track | | 4639 | <code class="filename">buildlink3.mk</code> files and is used to track |
4640 | the dependency tree.</p> | | 4640 | the dependency tree.</p> |
4641 | <p>The main section is protected from multiple inclusion | | 4641 | <p>The main section is protected from multiple inclusion |
4642 | and controls how the dependency on <em class="replaceable"><code>pkg</code></em> is | | 4642 | and controls how the dependency on <em class="replaceable"><code>pkg</code></em> is |
4643 | added. Several important variables are set in the section:</p> | | 4643 | added. Several important variables are set in the section:</p> |
4644 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4644 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4645 | <li class="listitem"><p><code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 4645 | <li class="listitem"><p><code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
4646 | is the actual dependency recorded in the installed | | 4646 | is the actual dependency recorded in the installed |
4647 | package; this should always be set using | | 4647 | package; this should always be set using |
4648 | <span class="command"><strong>+=</strong></span> to ensure that | | 4648 | <span class="command"><strong>+=</strong></span> to ensure that |
4649 | we're appending to any pre-existing list of values. This | | 4649 | we're appending to any pre-existing list of values. This |
4650 | variable should be set to the first version of the | | 4650 | variable should be set to the first version of the |
4651 | package that had an backwards-incompatible API change. | | 4651 | package that had an backwards-incompatible API change. |
4652 | </p></li> | | 4652 | </p></li> |
4653 | <li class="listitem"><p><code class="varname">BUILDLINK_PKGSRCDIR.<em class="replaceable"><code>pkg</code></em></code> | | 4653 | <li class="listitem"><p><code class="varname">BUILDLINK_PKGSRCDIR.<em class="replaceable"><code>pkg</code></em></code> |
4654 | is the location of the <em class="replaceable"><code>pkg</code></em> | | 4654 | is the location of the <em class="replaceable"><code>pkg</code></em> |
4655 | pkgsrc directory.</p></li> | | 4655 | pkgsrc directory.</p></li> |
4656 | <li class="listitem"><p><code class="varname">BUILDLINK_DEPMETHOD.<em class="replaceable"><code>pkg</code></em></code> | | 4656 | <li class="listitem"><p><code class="varname">BUILDLINK_DEPMETHOD.<em class="replaceable"><code>pkg</code></em></code> |
4657 | (not shown above) controls whether we use | | 4657 | (not shown above) controls whether we use |
4658 | <code class="varname">BUILD_DEPENDS</code> or | | 4658 | <code class="varname">BUILD_DEPENDS</code> or |
4659 | <code class="varname">DEPENDS</code> to add the dependency on | | 4659 | <code class="varname">DEPENDS</code> to add the dependency on |
4660 | <em class="replaceable"><code>pkg</code></em>. The build dependency is | | 4660 | <em class="replaceable"><code>pkg</code></em>. The build dependency is |
4661 | selected by setting | | 4661 | selected by setting |
4662 | <code class="varname">BUILDLINK_DEPMETHOD.<em class="replaceable"><code>pkg</code></em></code> | | 4662 | <code class="varname">BUILDLINK_DEPMETHOD.<em class="replaceable"><code>pkg</code></em></code> |
4663 | to <span class="quote">“<span class="quote">build</span>”</span>. By default, the full dependency is | | 4663 | to <span class="quote">“<span class="quote">build</span>”</span>. By default, the full dependency is |
4664 | used.</p></li> | | 4664 | used.</p></li> |
4665 | <li class="listitem"><p><code class="varname">BUILDLINK_INCDIRS.<em class="replaceable"><code>pkg</code></em></code> | | 4665 | <li class="listitem"><p><code class="varname">BUILDLINK_INCDIRS.<em class="replaceable"><code>pkg</code></em></code> |
4666 | and | | 4666 | and |
4667 | <code class="varname">BUILDLINK_LIBDIRS.<em class="replaceable"><code>pkg</code></em></code> | | 4667 | <code class="varname">BUILDLINK_LIBDIRS.<em class="replaceable"><code>pkg</code></em></code> |
4668 | (not shown above) are lists of subdirectories of | | 4668 | (not shown above) are lists of subdirectories of |
4669 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code> | | 4669 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code> |
4670 | to add to the header and library search paths. These | | 4670 | to add to the header and library search paths. These |
4671 | default to <span class="quote">“<span class="quote">include</span>”</span> and <span class="quote">“<span class="quote">lib</span>”</span> | | 4671 | default to <span class="quote">“<span class="quote">include</span>”</span> and <span class="quote">“<span class="quote">lib</span>”</span> |
4672 | respectively.</p></li> | | 4672 | respectively.</p></li> |
4673 | <li class="listitem"><p><code class="varname">BUILDLINK_CPPFLAGS.<em class="replaceable"><code>pkg</code></em></code> | | 4673 | <li class="listitem"><p><code class="varname">BUILDLINK_CPPFLAGS.<em class="replaceable"><code>pkg</code></em></code> |
4674 | (not shown above) is the list of preprocessor flags to add | | 4674 | (not shown above) is the list of preprocessor flags to add |
4675 | to <code class="varname">CPPFLAGS</code>, which are passed on to the | | 4675 | to <code class="varname">CPPFLAGS</code>, which are passed on to the |
4676 | configure and build phases. The <span class="quote">“<span class="quote">-I</span>”</span> option | | 4676 | configure and build phases. The <span class="quote">“<span class="quote">-I</span>”</span> option |
4677 | should be avoided and instead be handled using | | 4677 | should be avoided and instead be handled using |
4678 | <code class="varname">BUILDLINK_INCDIRS.<em class="replaceable"><code>pkg</code></em></code> as | | 4678 | <code class="varname">BUILDLINK_INCDIRS.<em class="replaceable"><code>pkg</code></em></code> as |
4679 | above.</p></li> | | 4679 | above.</p></li> |
4680 | </ul></div> | | 4680 | </ul></div> |
4681 | <p>The following variables are all optionally defined within | | 4681 | <p>The following variables are all optionally defined within |
4682 | this second section (protected against multiple inclusion) and | | 4682 | this second section (protected against multiple inclusion) and |
4683 | control which package files are symlinked into | | 4683 | control which package files are symlinked into |
4684 | <code class="filename">${BUILDLINK_DIR}</code> and how their names are | | 4684 | <code class="filename">${BUILDLINK_DIR}</code> and how their names are |
4685 | transformed during the symlinking:</p> | | 4685 | transformed during the symlinking:</p> |
4686 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4686 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4687 | <li class="listitem"><p><code class="varname">BUILDLINK_FILES.<em class="replaceable"><code>pkg</code></em></code> | | 4687 | <li class="listitem"><p><code class="varname">BUILDLINK_FILES.<em class="replaceable"><code>pkg</code></em></code> |
4688 | (not shown above) is a shell glob pattern relative to | | 4688 | (not shown above) is a shell glob pattern relative to |
4689 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code> | | 4689 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code> |
4690 | to be symlinked into | | 4690 | to be symlinked into |
4691 | <code class="filename">${BUILDLINK_DIR}</code>, | | 4691 | <code class="filename">${BUILDLINK_DIR}</code>, |
4692 | e.g. <code class="filename">include/*.h</code>.</p></li> | | 4692 | e.g. <code class="filename">include/*.h</code>.</p></li> |
4693 | <li class="listitem"><p><code class="varname">BUILDLINK_FILES_CMD.<em class="replaceable"><code>pkg</code></em></code> | | 4693 | <li class="listitem"><p><code class="varname">BUILDLINK_FILES_CMD.<em class="replaceable"><code>pkg</code></em></code> |
4694 | (not shown above) is a shell pipeline that | | 4694 | (not shown above) is a shell pipeline that |
4695 | outputs to stdout a list of files relative to | | 4695 | outputs to stdout a list of files relative to |
4696 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code>. | | 4696 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code>. |
4697 | The resulting files are to be symlinked | | 4697 | The resulting files are to be symlinked |
4698 | into <code class="filename">${BUILDLINK_DIR}</code>. By default, | | 4698 | into <code class="filename">${BUILDLINK_DIR}</code>. By default, |
4699 | this takes the <code class="filename">+CONTENTS</code> of a | | 4699 | this takes the <code class="filename">+CONTENTS</code> of a |
4700 | <em class="replaceable"><code>pkg</code></em> and filters it through | | 4700 | <em class="replaceable"><code>pkg</code></em> and filters it through |
4701 | <code class="varname">${BUILDLINK_CONTENTS_FILTER.<em class="replaceable"><code>pkg</code></em>}</code>.</p></li> | | 4701 | <code class="varname">${BUILDLINK_CONTENTS_FILTER.<em class="replaceable"><code>pkg</code></em>}</code>.</p></li> |
4702 | <li class="listitem"><p><code class="varname">BUILDLINK_CONTENTS_FILTER.<em class="replaceable"><code>pkg</code></em></code> | | 4702 | <li class="listitem"><p><code class="varname">BUILDLINK_CONTENTS_FILTER.<em class="replaceable"><code>pkg</code></em></code> |
4703 | (not shown above) is a filter command that filters | | 4703 | (not shown above) is a filter command that filters |
4704 | <code class="filename">+CONTENTS</code> input into a list of files | | 4704 | <code class="filename">+CONTENTS</code> input into a list of files |
4705 | relative to | | 4705 | relative to |
4706 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code> | | 4706 | <code class="filename">${BUILDLINK_PREFIX.<em class="replaceable"><code>pkg</code></em>}</code> |
4707 | on stdout. By default, | | 4707 | on stdout. By default, |
4708 | <code class="varname">BUILDLINK_CONTENTS_FILTER.<em class="replaceable"><code>pkg</code></em></code> | | 4708 | <code class="varname">BUILDLINK_CONTENTS_FILTER.<em class="replaceable"><code>pkg</code></em></code> |
4709 | outputs the contents of the <code class="filename">include</code> | | 4709 | outputs the contents of the <code class="filename">include</code> |
4710 | and <code class="filename">lib</code> directories in the package | | 4710 | and <code class="filename">lib</code> directories in the package |
4711 | <code class="filename">+CONTENTS</code>.</p></li> | | 4711 | <code class="filename">+CONTENTS</code>.</p></li> |
4712 | <li class="listitem"><p><code class="varname">BUILDLINK_FNAME_TRANSFORM.<em class="replaceable"><code>pkg</code></em></code> | | 4712 | <li class="listitem"><p><code class="varname">BUILDLINK_FNAME_TRANSFORM.<em class="replaceable"><code>pkg</code></em></code> |
4713 | (not shown above) is a list of sed arguments used to | | 4713 | (not shown above) is a list of sed arguments used to |
4714 | transform the name of the source filename into a | | 4714 | transform the name of the source filename into a |
4715 | destination filename, e.g. <span class="command"><strong>-e | | 4715 | destination filename, e.g. <span class="command"><strong>-e |
4716 | "s|/curses.h|/ncurses.h|g"</strong></span>.</p></li> | | 4716 | "s|/curses.h|/ncurses.h|g"</strong></span>.</p></li> |
4717 | </ul></div> | | 4717 | </ul></div> |
4718 | <p>This section can additionally include any | | 4718 | <p>This section can additionally include any |
4719 | <code class="filename">buildlink3.mk</code> needed for | | 4719 | <code class="filename">buildlink3.mk</code> needed for |
4720 | <em class="replaceable"><code>pkg</code></em>'s library dependencies. | | 4720 | <em class="replaceable"><code>pkg</code></em>'s library dependencies. |
4721 | Including these <code class="filename">buildlink3.mk</code> files | | 4721 | Including these <code class="filename">buildlink3.mk</code> files |
4722 | means that the headers and libraries for these | | 4722 | means that the headers and libraries for these |
4723 | dependencies are also symlinked into | | 4723 | dependencies are also symlinked into |
4724 | <code class="filename">${BUILDLINK_DIR}</code> | | 4724 | <code class="filename">${BUILDLINK_DIR}</code> |
4725 | whenever the <em class="replaceable"><code>pkg</code></em> | | 4725 | whenever the <em class="replaceable"><code>pkg</code></em> |
4726 | <code class="filename">buildlink3.mk</code> | | 4726 | <code class="filename">buildlink3.mk</code> |
4727 | file is included. Dependencies are only added for directly | | 4727 | file is included. Dependencies are only added for directly |
4728 | include <code class="filename">buildlink3.mk</code> files.</p> | | 4728 | include <code class="filename">buildlink3.mk</code> files.</p> |
4729 | <p>When providing a <code class="filename">buildlink3.mk</code> and | | 4729 | <p>When providing a <code class="filename">buildlink3.mk</code> and |
4730 | including other <code class="filename">buildlink3.mk</code> files in it, | | 4730 | including other <code class="filename">buildlink3.mk</code> files in it, |
4731 | please only add necessary ones, i.e., those whose libraries or | | 4731 | please only add necessary ones, i.e., those whose libraries or |
4732 | header files are automatically exposed when the package is | | 4732 | header files are automatically exposed when the package is |
4733 | use.</p> | | 4733 | use.</p> |
4734 | <p>In particular, if only an executable | | 4734 | <p>In particular, if only an executable |
4735 | (<code class="filename">bin/foo</code>) is linked against a library, that | | 4735 | (<code class="filename">bin/foo</code>) is linked against a library, that |
4736 | library does not need to be propagated in the | | 4736 | library does not need to be propagated in the |
4737 | <code class="filename">buildlink3.mk</code> file.</p> | | 4737 | <code class="filename">buildlink3.mk</code> file.</p> |
4738 | <p>The following steps should help you decide if a | | 4738 | <p>The following steps should help you decide if a |
4739 | <code class="filename">buildlink3.mk</code> file needs to be included: | | 4739 | <code class="filename">buildlink3.mk</code> file needs to be included: |
4740 | </p> | | 4740 | </p> |
4741 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4741 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4742 | <li class="listitem"><p>Look at the installed header files: What | | 4742 | <li class="listitem"><p>Look at the installed header files: What |
4743 | headers do they include? The packages providing these files | | 4743 | headers do they include? The packages providing these files |
4744 | must be buildlinked.</p></li> | | 4744 | must be buildlinked.</p></li> |
4745 | <li class="listitem"><p>Run <code class="filename">ldd</code> on all installed | | 4745 | <li class="listitem"><p>Run <code class="filename">ldd</code> on all installed |
4746 | libraries and look against what other libraries they link. | | 4746 | libraries and look against what other libraries they link. |
4747 | Some of the packages providing these probably need to be | | 4747 | Some of the packages providing these probably need to be |
4748 | buildlinked; however, it's not automatic, since e.g. GTK on | | 4748 | buildlinked; however, it's not automatic, since e.g. GTK on |
4749 | some systems pulls in the X libraries, so they will show up in | | 4749 | some systems pulls in the X libraries, so they will show up in |
4750 | the <code class="filename">ldd</code> output, while on others (like OS | | 4750 | the <code class="filename">ldd</code> output, while on others (like OS |
4751 | X) it won't. <code class="filename">ldd</code> output can thus only be | | 4751 | X) it won't. <code class="filename">ldd</code> output can thus only be |
4752 | used as a hint.</p></li> | | 4752 | used as a hint.</p></li> |
4753 | </ul></div> | | 4753 | </ul></div> |
4754 | <p> | | 4754 | <p> |
4755 | </p> | | 4755 | </p> |
4756 | </div> | | 4756 | </div> |
4757 | <div class="sect2"> | | 4757 | <div class="sect2"> |
4758 | <div class="titlepage"><div><div><h3 class="title"> | | 4758 | <div class="titlepage"><div><div><h3 class="title"> |
4759 | <a name="updating-buildlink-depends"></a>14.2.2. Updating | | 4759 | <a name="updating-buildlink-depends"></a>14.2.2. Updating |
4760 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 4760 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
4761 | and | | 4761 | and |
4762 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 4762 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
4763 | in <code class="filename">buildlink3.mk</code> files</h3></div></div></div> | | 4763 | in <code class="filename">buildlink3.mk</code> files</h3></div></div></div> |
4764 | <p>These two variables differ in that one describes source | | 4764 | <p>These two variables differ in that one describes source |
4765 | compatibility (API) and the other binary compatibility (ABI). | | 4765 | compatibility (API) and the other binary compatibility (ABI). |
4766 | The difference is that a change in the API breaks compilation of | | 4766 | The difference is that a change in the API breaks compilation of |
4767 | programs while changes in the ABI stop compiled programs from | | 4767 | programs while changes in the ABI stop compiled programs from |
4768 | running.</p> | | 4768 | running.</p> |
4769 | <p>Changes to the | | 4769 | <p>Changes to the |
4770 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 4770 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
4771 | variable in a <code class="filename">buildlink3.mk</code> file happen | | 4771 | variable in a <code class="filename">buildlink3.mk</code> file happen |
4772 | very rarely. One possible reason is that all packages depending | | 4772 | very rarely. One possible reason is that all packages depending |
4773 | on this already need a newer version. In case it is bumped see | | 4773 | on this already need a newer version. In case it is bumped see |
4774 | the description below.</p> | | 4774 | the description below.</p> |
4775 | <p>The most common example of an ABI change is that the major | | 4775 | <p>The most common example of an ABI change is that the major |
4776 | version of a shared library is increased. In this case, | | 4776 | version of a shared library is increased. In this case, |
4777 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 4777 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
4778 | should be adjusted to require at least the new package version. | | 4778 | should be adjusted to require at least the new package version. |
4779 | Then the packages that depend on this package need their | | 4779 | Then the packages that depend on this package need their |
4780 | <code class="varname">PKGREVISION</code>s increased and, if they have | | 4780 | <code class="varname">PKGREVISION</code>s increased and, if they have |
4781 | <code class="filename">buildlink3.mk</code> files, their | | 4781 | <code class="filename">buildlink3.mk</code> files, their |
4782 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 4782 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
4783 | adjusted, too. This is needed so pkgsrc will require the correct | | 4783 | adjusted, too. This is needed so pkgsrc will require the correct |
4784 | package dependency and not settle for an older one when building | | 4784 | package dependency and not settle for an older one when building |
4785 | the source.</p> | | 4785 | the source.</p> |
4786 | <p>See <a class="xref" href="#dependencies" title="19.1.5. Handling dependencies">Section 19.1.5, “Handling dependencies”</a> for | | 4786 | <p>See <a class="xref" href="#dependencies" title="19.1.5. Handling dependencies">Section 19.1.5, “Handling dependencies”</a> for |
4787 | more information about dependencies on other packages, | | 4787 | more information about dependencies on other packages, |
4788 | including the <code class="varname">BUILDLINK_ABI_DEPENDS</code> and | | 4788 | including the <code class="varname">BUILDLINK_ABI_DEPENDS</code> and |
4789 | <code class="varname">ABI_DEPENDS</code> definitions.</p> | | 4789 | <code class="varname">ABI_DEPENDS</code> definitions.</p> |
4790 | <p>Please take careful consideration before adjusting | | 4790 | <p>Please take careful consideration before adjusting |
4791 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 4791 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
4792 | or | | 4792 | or |
4793 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 4793 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
4794 | as we don't want to cause unneeded package deletions and | | 4794 | as we don't want to cause unneeded package deletions and |
4795 | rebuilds. In many cases, new versions of packages work just | | 4795 | rebuilds. In many cases, new versions of packages work just |
4796 | fine with older dependencies.</p> | | 4796 | fine with older dependencies.</p> |
4797 | <p>Also it is not needed to set | | 4797 | <p>Also it is not needed to set |
4798 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> | | 4798 | <code class="varname">BUILDLINK_ABI_DEPENDS.<em class="replaceable"><code>pkg</code></em></code> |
4799 | when it is identical to | | 4799 | when it is identical to |
4800 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code>. </p> | | 4800 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code>. </p> |
4801 | </div> | | 4801 | </div> |
4802 | </div> | | 4802 | </div> |
4803 | <div class="sect1"> | | 4803 | <div class="sect1"> |
4804 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 4804 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
4805 | <a name="writing-builtin.mk"></a>14.3. Writing <code class="filename">builtin.mk</code> files</h2></div></div></div> | | 4805 | <a name="writing-builtin.mk"></a>14.3. Writing <code class="filename">builtin.mk</code> files</h2></div></div></div> |
4806 | <p>Some packages in pkgsrc install headers and libraries that | | 4806 | <p>Some packages in pkgsrc install headers and libraries that |
4807 | coincide with headers and libraries present in the base system. | | 4807 | coincide with headers and libraries present in the base system. |
4808 | Aside from a <code class="filename">buildlink3.mk</code> file, these | | 4808 | Aside from a <code class="filename">buildlink3.mk</code> file, these |
4809 | packages should also include a <code class="filename">builtin.mk</code> | | 4809 | packages should also include a <code class="filename">builtin.mk</code> |
4810 | file that includes the necessary checks to decide whether using | | 4810 | file that includes the necessary checks to decide whether using |
4811 | the built-in software or the pkgsrc software is | | 4811 | the built-in software or the pkgsrc software is |
4812 | appropriate.</p> | | 4812 | appropriate.</p> |
4813 | <p>The only requirements of a builtin.mk file for | | 4813 | <p>The only requirements of a builtin.mk file for |
4814 | <em class="replaceable"><code>pkg</code></em> are:</p> | | 4814 | <em class="replaceable"><code>pkg</code></em> are:</p> |
4815 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 4815 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
4816 | <li class="listitem"><p>It should set | | 4816 | <li class="listitem"><p>It should set |
4817 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 4817 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
4818 | to either <span class="quote">“<span class="quote">yes</span>”</span> or <span class="quote">“<span class="quote">no</span>”</span> | | 4818 | to either <span class="quote">“<span class="quote">yes</span>”</span> or <span class="quote">“<span class="quote">no</span>”</span> |
4819 | after it is included.</p></li> | | 4819 | after it is included.</p></li> |
4820 | <li class="listitem"><p>It should <span class="emphasis"><em>not</em></span> override any | | 4820 | <li class="listitem"><p>It should <span class="emphasis"><em>not</em></span> override any |
4821 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 4821 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
4822 | which is already set before the | | 4822 | which is already set before the |
4823 | <code class="filename">builtin.mk</code> file is included.</p></li> | | 4823 | <code class="filename">builtin.mk</code> file is included.</p></li> |
4824 | <li class="listitem"><p>It should be written to allow multiple inclusion. This | | 4824 | <li class="listitem"><p>It should be written to allow multiple inclusion. This |
4825 | is <span class="emphasis"><em>very</em></span> important and takes careful | | 4825 | is <span class="emphasis"><em>very</em></span> important and takes careful |
4826 | attention to <code class="filename">Makefile</code> coding.</p></li> | | 4826 | attention to <code class="filename">Makefile</code> coding.</p></li> |
4827 | </ol></div> | | 4827 | </ol></div> |
4828 | <div class="sect2"> | | 4828 | <div class="sect2"> |
4829 | <div class="titlepage"><div><div><h3 class="title"> | | 4829 | <div class="titlepage"><div><div><h3 class="title"> |
4830 | <a name="anatomy-of-builtin.mk"></a>14.3.1. Anatomy of a <code class="filename">builtin.mk</code> file</h3></div></div></div> | | 4830 | <a name="anatomy-of-builtin.mk"></a>14.3.1. Anatomy of a <code class="filename">builtin.mk</code> file</h3></div></div></div> |
4831 | <p>The following is the recommended template for builtin.mk | | 4831 | <p>The following is the recommended template for builtin.mk |
4832 | files:</p> | | 4832 | files:</p> |
4833 | <pre class="programlisting"> | | 4833 | <pre class="programlisting"> |
4834 | .if !defined(IS_BUILTIN.foo) | | 4834 | .if !defined(IS_BUILTIN.foo) |
4835 | # | | 4835 | # |
4836 | # IS_BUILTIN.foo is set to "yes" or "no" depending on whether "foo" | | 4836 | # IS_BUILTIN.foo is set to "yes" or "no" depending on whether "foo" |
4837 | # genuinely exists in the system or not. | | 4837 | # genuinely exists in the system or not. |
4838 | # | | 4838 | # |
4839 | IS_BUILTIN.foo?= no | | 4839 | IS_BUILTIN.foo?= no |
4840 | | | 4840 | |
4841 | # BUILTIN_PKG.foo should be set here if "foo" is built-in and its package | | 4841 | # BUILTIN_PKG.foo should be set here if "foo" is built-in and its package |
4842 | # version can be determined. | | 4842 | # version can be determined. |
4843 | # | | 4843 | # |
4844 | . if !empty(IS_BUILTIN.foo:M[yY][eE][sS]) | | 4844 | . if !empty(IS_BUILTIN.foo:M[yY][eE][sS]) |
4845 | BUILTIN_PKG.foo?= foo-1.0 | | 4845 | BUILTIN_PKG.foo?= foo-1.0 |
4846 | . endif | | 4846 | . endif |
4847 | .endif # IS_BUILTIN.foo | | 4847 | .endif # IS_BUILTIN.foo |
4848 | | | 4848 | |
4849 | .if !defined(USE_BUILTIN.foo) | | 4849 | .if !defined(USE_BUILTIN.foo) |
4850 | USE_BUILTIN.foo?= ${IS_BUILTIN.foo} | | 4850 | USE_BUILTIN.foo?= ${IS_BUILTIN.foo} |
4851 | . if defined(BUILTIN_PKG.foo) | | 4851 | . if defined(BUILTIN_PKG.foo) |
4852 | . for _depend_ in ${BUILDLINK_API_DEPENDS.foo} | | 4852 | . for _depend_ in ${BUILDLINK_API_DEPENDS.foo} |
4853 | . if !empty(USE_BUILTIN.foo:M[yY][eE][sS]) | | 4853 | . if !empty(USE_BUILTIN.foo:M[yY][eE][sS]) |
4854 | USE_BUILTIN.foo!= \ | | 4854 | USE_BUILTIN.foo!= \ |
4855 | ${PKG_ADMIN} pmatch '${_depend_}' ${BUILTIN_PKG.foo} \ | | 4855 | ${PKG_ADMIN} pmatch '${_depend_}' ${BUILTIN_PKG.foo} \ |
4856 | && ${ECHO} "yes" || ${ECHO} "no" | | 4856 | && ${ECHO} "yes" || ${ECHO} "no" |
4857 | . endif | | 4857 | . endif |
4858 | . endfor | | 4858 | . endfor |
4859 | . endif | | 4859 | . endif |
4860 | .endif # USE_BUILTIN.foo | | 4860 | .endif # USE_BUILTIN.foo |
4861 | | | 4861 | |
4862 | CHECK_BUILTIN.foo?= no | | 4862 | CHECK_BUILTIN.foo?= no |
4863 | .if !empty(CHECK_BUILTIN.foo:M[nN][oO]) | | 4863 | .if !empty(CHECK_BUILTIN.foo:M[nN][oO]) |
4864 | # | | 4864 | # |
4865 | # Here we place code that depends on whether USE_BUILTIN.foo is set to | | 4865 | # Here we place code that depends on whether USE_BUILTIN.foo is set to |
4866 | # "yes" or "no". | | 4866 | # "yes" or "no". |
4867 | # | | 4867 | # |
4868 | .endif # CHECK_BUILTIN.foo | | 4868 | .endif # CHECK_BUILTIN.foo |
4869 | </pre> | | 4869 | </pre> |
4870 | <p>The first section sets | | 4870 | <p>The first section sets |
4871 | <code class="varname">IS_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 4871 | <code class="varname">IS_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
4872 | depending on if <em class="replaceable"><code>pkg</code></em> really exists | | 4872 | depending on if <em class="replaceable"><code>pkg</code></em> really exists |
4873 | in the base system. This should not be a base system software | | 4873 | in the base system. This should not be a base system software |
4874 | with similar functionality to <em class="replaceable"><code>pkg</code></em>; | | 4874 | with similar functionality to <em class="replaceable"><code>pkg</code></em>; |
4875 | it should only be <span class="quote">“<span class="quote">yes</span>”</span> if the actual package is | | 4875 | it should only be <span class="quote">“<span class="quote">yes</span>”</span> if the actual package is |
4876 | included as part of the base system. This variable is only | | 4876 | included as part of the base system. This variable is only |
4877 | used internally within the <code class="filename">builtin.mk</code> | | 4877 | used internally within the <code class="filename">builtin.mk</code> |
4878 | file.</p> | | 4878 | file.</p> |
4879 | <p>The second section sets | | 4879 | <p>The second section sets |
4880 | <code class="varname">BUILTIN_PKG.<em class="replaceable"><code>pkg</code></em></code> | | 4880 | <code class="varname">BUILTIN_PKG.<em class="replaceable"><code>pkg</code></em></code> |
4881 | to the version of <em class="replaceable"><code>pkg</code></em> in the base | | 4881 | to the version of <em class="replaceable"><code>pkg</code></em> in the base |
4882 | system if it exists (if | | 4882 | system if it exists (if |
4883 | <code class="varname">IS_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 4883 | <code class="varname">IS_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
4884 | is <span class="quote">“<span class="quote">yes</span>”</span>). This variable is only used internally | | 4884 | is <span class="quote">“<span class="quote">yes</span>”</span>). This variable is only used internally |
4885 | within the <code class="filename">builtin.mk</code> file.</p> | | 4885 | within the <code class="filename">builtin.mk</code> file.</p> |
4886 | <p>The third section sets | | 4886 | <p>The third section sets |
4887 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 4887 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
4888 | and is <span class="emphasis"><em>required</em></span> in all | | 4888 | and is <span class="emphasis"><em>required</em></span> in all |
4889 | <code class="filename">builtin.mk</code> files. The code in this | | 4889 | <code class="filename">builtin.mk</code> files. The code in this |
4890 | section must make the determination whether the built-in | | 4890 | section must make the determination whether the built-in |
4891 | software is adequate to satisfy the dependencies listed in | | 4891 | software is adequate to satisfy the dependencies listed in |
4892 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code>. | | 4892 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code>. |
4893 | This is typically done by comparing | | 4893 | This is typically done by comparing |
4894 | <code class="varname">BUILTIN_PKG.<em class="replaceable"><code>pkg</code></em></code> | | 4894 | <code class="varname">BUILTIN_PKG.<em class="replaceable"><code>pkg</code></em></code> |
4895 | against each of the dependencies in | | 4895 | against each of the dependencies in |
4896 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code>. | | 4896 | <code class="varname">BUILDLINK_API_DEPENDS.<em class="replaceable"><code>pkg</code></em></code>. |
4897 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 4897 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
4898 | <span class="emphasis"><em>must</em></span> be set to the correct value by the | | 4898 | <span class="emphasis"><em>must</em></span> be set to the correct value by the |
4899 | end of the <code class="filename">builtin.mk</code> file. Note that | | 4899 | end of the <code class="filename">builtin.mk</code> file. Note that |
4900 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 4900 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
4901 | may be <span class="quote">“<span class="quote">yes</span>”</span> even if | | 4901 | may be <span class="quote">“<span class="quote">yes</span>”</span> even if |
4902 | <code class="varname">IS_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 4902 | <code class="varname">IS_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
4903 | is <span class="quote">“<span class="quote">no</span>”</span> because we may make the determination | | 4903 | is <span class="quote">“<span class="quote">no</span>”</span> because we may make the determination |
4904 | that the built-in version of the software is similar enough to | | 4904 | that the built-in version of the software is similar enough to |
4905 | be used as a replacement.</p> | | 4905 | be used as a replacement.</p> |
4906 | <p>The last section is guarded by | | 4906 | <p>The last section is guarded by |
4907 | <code class="varname">CHECK_BUILTIN.<em class="replaceable"><code>pkg</code></em></code>, | | 4907 | <code class="varname">CHECK_BUILTIN.<em class="replaceable"><code>pkg</code></em></code>, |
4908 | and includes code that uses the value of | | 4908 | and includes code that uses the value of |
4909 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> | | 4909 | <code class="varname">USE_BUILTIN.<em class="replaceable"><code>pkg</code></em></code> |
4910 | set in the previous section. This typically includes, e.g., | | 4910 | set in the previous section. This typically includes, e.g., |
4911 | adding additional dependency restrictions and listing additional | | 4911 | adding additional dependency restrictions and listing additional |
4912 | files to symlink into <code class="filename">${BUILDLINK_DIR}</code> (via | | 4912 | files to symlink into <code class="filename">${BUILDLINK_DIR}</code> (via |
4913 | <code class="varname">BUILDLINK_FILES.<em class="replaceable"><code>pkg</code></em></code>).</p> | | 4913 | <code class="varname">BUILDLINK_FILES.<em class="replaceable"><code>pkg</code></em></code>).</p> |
4914 | </div> | | 4914 | </div> |
4915 | <div class="sect2"> | | 4915 | <div class="sect2"> |
4916 | <div class="titlepage"><div><div><h3 class="title"> | | 4916 | <div class="titlepage"><div><div><h3 class="title"> |
4917 | <a name="native-or-pkgsrc-preference"></a>14.3.2. Global preferences for native or pkgsrc software</h3></div></div></div> | | 4917 | <a name="native-or-pkgsrc-preference"></a>14.3.2. Global preferences for native or pkgsrc software</h3></div></div></div> |
4918 | <p>When building packages, it's possible to choose whether to set | | 4918 | <p>When building packages, it's possible to choose whether to set |
4919 | a global preference for using either the built-in (native) | | 4919 | a global preference for using either the built-in (native) |
4920 | version or the pkgsrc version of software to satisfy a | | 4920 | version or the pkgsrc version of software to satisfy a |
4921 | dependency. This is controlled by setting | | 4921 | dependency. This is controlled by setting |
4922 | <code class="varname">PREFER_PKGSRC</code> and | | 4922 | <code class="varname">PREFER_PKGSRC</code> and |
4923 | <code class="varname">PREFER_NATIVE</code>. These variables take values | | 4923 | <code class="varname">PREFER_NATIVE</code>. These variables take values |
4924 | of either <span class="quote">“<span class="quote">yes</span>”</span>, <span class="quote">“<span class="quote">no</span>”</span>, or a list of | | 4924 | of either <span class="quote">“<span class="quote">yes</span>”</span>, <span class="quote">“<span class="quote">no</span>”</span>, or a list of |
4925 | packages. <code class="varname">PREFER_PKGSRC</code> tells pkgsrc to | | 4925 | packages. <code class="varname">PREFER_PKGSRC</code> tells pkgsrc to |
4926 | use the pkgsrc versions of software, while | | 4926 | use the pkgsrc versions of software, while |
4927 | <code class="varname">PREFER_NATIVE</code> tells pkgsrc to use the | | 4927 | <code class="varname">PREFER_NATIVE</code> tells pkgsrc to use the |
4928 | built-in versions. Preferences are determined by the most | | 4928 | built-in versions. Preferences are determined by the most |
4929 | specific instance of the package in either | | 4929 | specific instance of the package in either |
4930 | <code class="varname">PREFER_PKGSRC</code> or | | 4930 | <code class="varname">PREFER_PKGSRC</code> or |
4931 | <code class="varname">PREFER_NATIVE</code>. If a package is specified | | 4931 | <code class="varname">PREFER_NATIVE</code>. If a package is specified |
4932 | in neither or in both variables, then | | 4932 | in neither or in both variables, then |
4933 | <code class="varname">PREFER_PKGSRC</code> has precedence over | | 4933 | <code class="varname">PREFER_PKGSRC</code> has precedence over |
4934 | <code class="varname">PREFER_NATIVE</code>. For example, to require | | 4934 | <code class="varname">PREFER_NATIVE</code>. For example, to require |
4935 | using pkgsrc versions of software for all but the most basic | | 4935 | using pkgsrc versions of software for all but the most basic |
4936 | bits on a NetBSD system, you can set:</p> | | 4936 | bits on a NetBSD system, you can set:</p> |
4937 | <pre class="programlisting"> | | 4937 | <pre class="programlisting"> |
4938 | PREFER_PKGSRC= yes | | 4938 | PREFER_PKGSRC= yes |
4939 | PREFER_NATIVE= getopt skey tcp_wrappers | | 4939 | PREFER_NATIVE= getopt skey tcp_wrappers |
4940 | </pre> | | 4940 | </pre> |
4941 | <p>A package <span class="emphasis"><em>must</em></span> have a | | 4941 | <p>A package <span class="emphasis"><em>must</em></span> have a |
4942 | <code class="filename">builtin.mk</code> | | 4942 | <code class="filename">builtin.mk</code> |
4943 | file to be listed in <code class="varname">PREFER_NATIVE</code>, | | 4943 | file to be listed in <code class="varname">PREFER_NATIVE</code>, |
4944 | otherwise it is simply ignored in that list.</p> | | 4944 | otherwise it is simply ignored in that list.</p> |
4945 | <p>Setting <code class="varname">PREFER_NATIVE</code> should be performed | | 4945 | <p>Setting <code class="varname">PREFER_NATIVE</code> should be performed |
4946 | straight after bootstrap and <code class="varname">PREFER_PKGSRC</code> during | | 4946 | straight after bootstrap and <code class="varname">PREFER_PKGSRC</code> during |
4947 | bootstrap. | | 4947 | bootstrap. |
4948 | Switching between settings globally at a later date can introduce | | 4948 | Switching between settings globally at a later date can introduce |
4949 | complications with dependency resolution. This is caused by packages | | 4949 | complications with dependency resolution. This is caused by packages |
4950 | built with the opposite preference being installed alongside each other.</p> | | 4950 | built with the opposite preference being installed alongside each other.</p> |
4951 | <pre class="screen"> | | 4951 | <pre class="screen"> |
4952 | <code class="prompt">#</code> <strong class="userinput"><code>./bootstrap --prefer-pkgsrc yes</code></strong> | | 4952 | <code class="prompt">#</code> <strong class="userinput"><code>./bootstrap --prefer-pkgsrc yes</code></strong> |
4953 | </pre> | | 4953 | </pre> |
4954 | </div> | | 4954 | </div> |
4955 | </div> | | 4955 | </div> |
4956 | </div> | | 4956 | </div> |
4957 | <div class="chapter"> | | 4957 | <div class="chapter"> |
4958 | <div class="titlepage"><div><div><h2 class="title"> | | 4958 | <div class="titlepage"><div><div><h2 class="title"> |
4959 | <a name="pkginstall"></a>Chapter 15. The pkginstall framework</h2></div></div></div> | | 4959 | <a name="pkginstall"></a>Chapter 15. The pkginstall framework</h2></div></div></div> |
4960 | <div class="toc"> | | 4960 | <div class="toc"> |
4961 | <p><b>Table of Contents</b></p> | | 4961 | <p><b>Table of Contents</b></p> |
4962 | <dl class="toc"> | | 4962 | <dl class="toc"> |
4963 | <dt><span class="sect1"><a href="#files-and-dirs-outside-prefix">15.1. Files and directories outside the installation prefix</a></span></dt> | | 4963 | <dt><span class="sect1"><a href="#files-and-dirs-outside-prefix">15.1. Files and directories outside the installation prefix</a></span></dt> |
4964 | <dd><dl> | | 4964 | <dd><dl> |
4965 | <dt><span class="sect2"><a href="#dirs-outside-prefix">15.1.1. Directory manipulation</a></span></dt> | | 4965 | <dt><span class="sect2"><a href="#dirs-outside-prefix">15.1.1. Directory manipulation</a></span></dt> |
4966 | <dt><span class="sect2"><a href="#files-outside-prefix">15.1.2. File manipulation</a></span></dt> | | 4966 | <dt><span class="sect2"><a href="#files-outside-prefix">15.1.2. File manipulation</a></span></dt> |
4967 | </dl></dd> | | 4967 | </dl></dd> |
4968 | <dt><span class="sect1"><a href="#conf-files">15.2. Configuration files</a></span></dt> | | 4968 | <dt><span class="sect1"><a href="#conf-files">15.2. Configuration files</a></span></dt> |
4969 | <dd><dl> | | 4969 | <dd><dl> |
4970 | <dt><span class="sect2"><a href="#conf-files-sysconfdir">15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</a></span></dt> | | 4970 | <dt><span class="sect2"><a href="#conf-files-sysconfdir">15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</a></span></dt> |
4971 | <dt><span class="sect2"><a href="#conf-files-configure">15.2.2. Telling the software where configuration files are</a></span></dt> | | 4971 | <dt><span class="sect2"><a href="#conf-files-configure">15.2.2. Telling the software where configuration files are</a></span></dt> |
4972 | <dt><span class="sect2"><a href="#conf-files-patching">15.2.3. Patching installations</a></span></dt> | | 4972 | <dt><span class="sect2"><a href="#conf-files-patching">15.2.3. Patching installations</a></span></dt> |
4973 | <dt><span class="sect2"><a href="#conf-files-disable">15.2.4. Disabling handling of configuration files</a></span></dt> | | 4973 | <dt><span class="sect2"><a href="#conf-files-disable">15.2.4. Disabling handling of configuration files</a></span></dt> |
4974 | </dl></dd> | | 4974 | </dl></dd> |
4975 | <dt><span class="sect1"><a href="#rcd-scripts">15.3. System startup scripts</a></span></dt> | | 4975 | <dt><span class="sect1"><a href="#rcd-scripts">15.3. System startup scripts</a></span></dt> |
4976 | <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> | | 4976 | <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> |
4977 | <dt><span class="sect1"><a href="#users-and-groups">15.4. System users and groups</a></span></dt> | | 4977 | <dt><span class="sect1"><a href="#users-and-groups">15.4. System users and groups</a></span></dt> |
4978 | <dt><span class="sect1"><a href="#shells">15.5. System shells</a></span></dt> | | 4978 | <dt><span class="sect1"><a href="#shells">15.5. System shells</a></span></dt> |
4979 | <dd><dl><dt><span class="sect2"><a href="#shells-disable">15.5.1. Disabling shell registration</a></span></dt></dl></dd> | | 4979 | <dd><dl><dt><span class="sect2"><a href="#shells-disable">15.5.1. Disabling shell registration</a></span></dt></dl></dd> |
4980 | <dt><span class="sect1"><a href="#fonts">15.6. Fonts</a></span></dt> | | 4980 | <dt><span class="sect1"><a href="#fonts">15.6. Fonts</a></span></dt> |
4981 | <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> | | 4981 | <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> |
4982 | </dl> | | 4982 | </dl> |
4983 | </div> | | 4983 | </div> |
4984 | <p>This chapter describes the framework known as | | 4984 | <p>This chapter describes the framework known as |
4985 | <code class="literal">pkginstall</code>, whose key features are:</p> | | 4985 | <code class="literal">pkginstall</code>, whose key features are:</p> |
4986 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 4986 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
4987 | <li class="listitem"><p>Generic installation and manipulation of directories and files | | 4987 | <li class="listitem"><p>Generic installation and manipulation of directories and files |
4988 | outside the pkgsrc-handled tree, <code class="varname">LOCALBASE</code>.</p></li> | | 4988 | outside the pkgsrc-handled tree, <code class="varname">LOCALBASE</code>.</p></li> |
4989 | <li class="listitem"><p>Automatic handling of configuration files during installation, | | 4989 | <li class="listitem"><p>Automatic handling of configuration files during installation, |
4990 | provided that packages are correctly designed.</p></li> | | 4990 | provided that packages are correctly designed.</p></li> |
4991 | <li class="listitem"><p>Generation and installation of system startup scripts.</p></li> | | 4991 | <li class="listitem"><p>Generation and installation of system startup scripts.</p></li> |
4992 | <li class="listitem"><p>Registration of system users and groups.</p></li> | | 4992 | <li class="listitem"><p>Registration of system users and groups.</p></li> |
4993 | <li class="listitem"><p>Registration of system shells.</p></li> | | 4993 | <li class="listitem"><p>Registration of system shells.</p></li> |
4994 | <li class="listitem"><p>Automatic updating of fonts databases.</p></li> | | 4994 | <li class="listitem"><p>Automatic updating of fonts databases.</p></li> |
4995 | </ul></div> | | 4995 | </ul></div> |
4996 | <p>The following sections inspect each of the above points in detail.</p> | | 4996 | <p>The following sections inspect each of the above points in detail.</p> |
4997 | <p>You may be thinking that many of the things described here could be | | 4997 | <p>You may be thinking that many of the things described here could be |
4998 | easily done with simple code in the package's post-installation target | | 4998 | easily done with simple code in the package's post-installation target |
4999 | (<code class="literal">post-install</code>). <span class="emphasis"><em>This is incorrect</em></span>, | | 4999 | (<code class="literal">post-install</code>). <span class="emphasis"><em>This is incorrect</em></span>, |
5000 | as the code in them is only executed when building from source. Machines | | 5000 | as the code in them is only executed when building from source. Machines |
5001 | using binary packages could not benefit from it at all (as the code itself | | 5001 | using binary packages could not benefit from it at all (as the code itself |
5002 | could be unavailable). Therefore, the only way to achieve any of the items | | 5002 | could be unavailable). Therefore, the only way to achieve any of the items |
5003 | described above is by means of the installation scripts, which are | | 5003 | described above is by means of the installation scripts, which are |
5004 | automatically generated by pkginstall.</p> | | 5004 | automatically generated by pkginstall.</p> |
5005 | <div class="sect1"> | | 5005 | <div class="sect1"> |
5006 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5006 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5007 | <a name="files-and-dirs-outside-prefix"></a>15.1. Files and directories outside the installation prefix</h2></div></div></div> | | 5007 | <a name="files-and-dirs-outside-prefix"></a>15.1. Files and directories outside the installation prefix</h2></div></div></div> |
5008 | <p>As you already know, the <code class="filename">PLIST</code> file holds a list | | 5008 | <p>As you already know, the <code class="filename">PLIST</code> file holds a list |
5009 | of files and directories that belong to a package. The names used in it | | 5009 | of files and directories that belong to a package. The names used in it |
5010 | are relative to the installation prefix (<code class="filename">${PREFIX}</code>), | | 5010 | are relative to the installation prefix (<code class="filename">${PREFIX}</code>), |
5011 | which means that it cannot register files outside this directory (absolute | | 5011 | which means that it cannot register files outside this directory (absolute |
5012 | path names are not allowed). Despite this restriction, some packages need | | 5012 | path names are not allowed). Despite this restriction, some packages need |
5013 | to install files outside this location; e.g., under | | 5013 | to install files outside this location; e.g., under |
5014 | <code class="filename">${VARBASE}</code> or | | 5014 | <code class="filename">${VARBASE}</code> or |
5015 | <code class="filename">${PKG_SYSCONFDIR}</code>. The only way to achieve this | | 5015 | <code class="filename">${PKG_SYSCONFDIR}</code>. The only way to achieve this |
5016 | is to create such files during installation time by using | | 5016 | is to create such files during installation time by using |
5017 | installation scripts.</p> | | 5017 | installation scripts.</p> |
5018 | <p>The generic installation scripts are shell scripts that can | | 5018 | <p>The generic installation scripts are shell scripts that can |
5019 | contain arbitrary code. The list of scripts to execute is taken from | | 5019 | contain arbitrary code. The list of scripts to execute is taken from |
5020 | the <code class="varname">INSTALL_FILE</code> variable, which defaults to | | 5020 | the <code class="varname">INSTALL_FILE</code> variable, which defaults to |
5021 | <code class="filename">INSTALL</code>. A similar variable exists for package | | 5021 | <code class="filename">INSTALL</code>. A similar variable exists for package |
5022 | removal (<code class="varname">DEINSTALL_FILE</code>, whose default is | | 5022 | removal (<code class="varname">DEINSTALL_FILE</code>, whose default is |
5023 | <code class="filename">DEINSTALL</code>). These scripts can run arbitrary | | 5023 | <code class="filename">DEINSTALL</code>). These scripts can run arbitrary |
5024 | commands, so they have the potential to create and manage files | | 5024 | commands, so they have the potential to create and manage files |
5025 | anywhere in the file system.</p> | | 5025 | anywhere in the file system.</p> |
5026 | <p>Using these general installation files is not recommended, but | | 5026 | <p>Using these general installation files is not recommended, but |
5027 | may be needed in some special cases. One reason for avoiding them is | | 5027 | may be needed in some special cases. One reason for avoiding them is |
5028 | that the user has to trust the packager that there is no unwanted or | | 5028 | that the user has to trust the packager that there is no unwanted or |
5029 | simply erroneous code included in the installation script. Also, | | 5029 | simply erroneous code included in the installation script. Also, |
5030 | previously there were many similar scripts for the same functionality, | | 5030 | previously there were many similar scripts for the same functionality, |
5031 | and fixing a common error involved finding and changing all of | | 5031 | and fixing a common error involved finding and changing all of |
5032 | them.</p> | | 5032 | them.</p> |
5033 | <p>The pkginstall framework offers another, standardized way. It | | 5033 | <p>The pkginstall framework offers another, standardized way. It |
5034 | provides generic scripts to abstract the manipulation of such files | | 5034 | provides generic scripts to abstract the manipulation of such files |
5035 | and directories based on variables set in the package's | | 5035 | and directories based on variables set in the package's |
5036 | <code class="filename">Makefile</code>. The rest of this section describes | | 5036 | <code class="filename">Makefile</code>. The rest of this section describes |
5037 | these variables.</p> | | 5037 | these variables.</p> |
5038 | <div class="sect2"> | | 5038 | <div class="sect2"> |
5039 | <div class="titlepage"><div><div><h3 class="title"> | | 5039 | <div class="titlepage"><div><div><h3 class="title"> |
5040 | <a name="dirs-outside-prefix"></a>15.1.1. Directory manipulation</h3></div></div></div> | | 5040 | <a name="dirs-outside-prefix"></a>15.1.1. Directory manipulation</h3></div></div></div> |
5041 | <p>The following variables can be set to request the creation of | | 5041 | <p>The following variables can be set to request the creation of |
5042 | directories anywhere in the file system:</p> | | 5042 | directories anywhere in the file system:</p> |
5043 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 5043 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
5044 | <li class="listitem"> | | 5044 | <li class="listitem"> |
5045 | <p><code class="varname">MAKE_DIRS</code> and <code class="varname">OWN_DIRS</code> | | 5045 | <p><code class="varname">MAKE_DIRS</code> and <code class="varname">OWN_DIRS</code> |
5046 | contain a list of directories that should be created and should attempt | | 5046 | contain a list of directories that should be created and should attempt |
5047 | to be destroyed by the installation scripts. The difference between | | 5047 | to be destroyed by the installation scripts. The difference between |
5048 | the two is that the latter prompts the administrator to remove any | | 5048 | the two is that the latter prompts the administrator to remove any |
5049 | directories that may be left after deinstallation (because they were | | 5049 | directories that may be left after deinstallation (because they were |
5050 | not empty), while the former does not. Example:</p> | | 5050 | not empty), while the former does not. Example:</p> |
5051 | <pre class="programlisting"> | | 5051 | <pre class="programlisting"> |
5052 | MAKE_DIRS+= ${VARBASE}/foo/private | | 5052 | MAKE_DIRS+= ${VARBASE}/foo/private |
5053 | </pre> | | 5053 | </pre> |
5054 | </li> | | 5054 | </li> |
5055 | <li class="listitem"> | | 5055 | <li class="listitem"> |
5056 | <p><code class="varname">MAKE_DIRS_PERMS</code> and | | 5056 | <p><code class="varname">MAKE_DIRS_PERMS</code> and |
5057 | <code class="varname">OWN_DIRS_PERMS</code> contain a list of tuples describing | | 5057 | <code class="varname">OWN_DIRS_PERMS</code> contain a list of tuples describing |
5058 | which directories should be created and should attempt to be destroyed | | 5058 | which directories should be created and should attempt to be destroyed |
5059 | by the installation scripts. Each tuple holds the following values, | | 5059 | by the installation scripts. Each tuple holds the following values, |
5060 | separated by spaces: the directory name, its owner, its group and its | | 5060 | separated by spaces: the directory name, its owner, its group and its |
5061 | numerical mode. For example:</p> | | 5061 | numerical mode. For example:</p> |
5062 | <pre class="programlisting"> | | 5062 | <pre class="programlisting"> |
5063 | MAKE_DIRS_PERMS+= ${VARBASE}/foo/private \ | | 5063 | MAKE_DIRS_PERMS+= ${VARBASE}/foo/private \ |
5064 | ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 0700 | | 5064 | ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 0700 |
5065 | </pre> | | 5065 | </pre> |
5066 | <p>The difference between the two is exactly the same as their | | 5066 | <p>The difference between the two is exactly the same as their |
5067 | non-<code class="varname">PERMS</code> counterparts.</p> | | 5067 | non-<code class="varname">PERMS</code> counterparts.</p> |
5068 | </li> | | 5068 | </li> |
5069 | </ul></div> | | 5069 | </ul></div> |
5070 | </div> | | 5070 | </div> |
5071 | <div class="sect2"> | | 5071 | <div class="sect2"> |
5072 | <div class="titlepage"><div><div><h3 class="title"> | | 5072 | <div class="titlepage"><div><div><h3 class="title"> |
5073 | <a name="files-outside-prefix"></a>15.1.2. File manipulation</h3></div></div></div> | | 5073 | <a name="files-outside-prefix"></a>15.1.2. File manipulation</h3></div></div></div> |
5074 | <p>Creating non-empty files outside the installation prefix is tricky | | 5074 | <p>Creating non-empty files outside the installation prefix is tricky |
5075 | because the <code class="filename">PLIST</code> forces all files to be inside it. | | 5075 | because the <code class="filename">PLIST</code> forces all files to be inside it. |
5076 | To overcome this problem, the only solution is to extract the file in the | | 5076 | To overcome this problem, the only solution is to extract the file in the |
5077 | known place (i.e., inside the installation prefix) and copy it to the | | 5077 | known place (i.e., inside the installation prefix) and copy it to the |
5078 | appropriate location during installation (done by the installation scripts | | 5078 | appropriate location during installation (done by the installation scripts |
5079 | generated by pkginstall). We will call the former the <span class="emphasis"><em>master | | 5079 | generated by pkginstall). We will call the former the <span class="emphasis"><em>master |
5080 | file</em></span> in the following paragraphs, which describe the variables | | 5080 | file</em></span> in the following paragraphs, which describe the variables |
5081 | that can be used to automatically and consistently handle files outside the | | 5081 | that can be used to automatically and consistently handle files outside the |
5082 | installation prefix:</p> | | 5082 | installation prefix:</p> |
5083 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 5083 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
5084 | <li class="listitem"> | | 5084 | <li class="listitem"> |
5085 | <p><code class="varname">CONF_FILES</code> and | | 5085 | <p><code class="varname">CONF_FILES</code> and |
5086 | <code class="varname">REQD_FILES</code> are pairs of master and target files. | | 5086 | <code class="varname">REQD_FILES</code> are pairs of master and target files. |
5087 | During installation time, the master file is copied to the target one | | 5087 | During installation time, the master file is copied to the target one |
5088 | if and only if the latter does not exist. Upon deinstallation, the | | 5088 | if and only if the latter does not exist. Upon deinstallation, the |
5089 | target file is removed provided that it was not modified by the | | 5089 | target file is removed provided that it was not modified by the |
5090 | installation.</p> | | 5090 | installation.</p> |
5091 | <p>The difference between the two is that the latter prompts the | | 5091 | <p>The difference between the two is that the latter prompts the |
5092 | administrator to remove any files that may be left after | | 5092 | administrator to remove any files that may be left after |
5093 | deinstallation (because they were not empty), while the former does | | 5093 | deinstallation (because they were not empty), while the former does |
5094 | not.</p> | | 5094 | not.</p> |
5095 | </li> | | 5095 | </li> |
5096 | <li class="listitem"> | | 5096 | <li class="listitem"> |
5097 | <p><code class="varname">CONF_FILES_PERMS</code> and | | 5097 | <p><code class="varname">CONF_FILES_PERMS</code> and |
5098 | <code class="varname">REQD_FILES_PERMS</code> contain tuples describing master | | 5098 | <code class="varname">REQD_FILES_PERMS</code> contain tuples describing master |
5099 | files as well as their target locations. For each of them, it also | | 5099 | files as well as their target locations. For each of them, it also |
5100 | specifies their owner, their group and their numeric permissions, in | | 5100 | specifies their owner, their group and their numeric permissions, in |
5101 | this order. For example:</p> | | 5101 | this order. For example:</p> |
5102 | <pre class="programlisting"> | | 5102 | <pre class="programlisting"> |
5103 | REQD_FILES_PERMS+= ${PREFIX}/share/somefile ${VARBASE}/somefile \ | | 5103 | REQD_FILES_PERMS+= ${PREFIX}/share/somefile ${VARBASE}/somefile \ |
5104 | ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 0700 | | 5104 | ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 0700 |
5105 | </pre> | | 5105 | </pre> |
5106 | <p>The difference between the two is exactly the same as their | | 5106 | <p>The difference between the two is exactly the same as their |
5107 | non-<code class="varname">PERMS</code> counterparts.</p> | | 5107 | non-<code class="varname">PERMS</code> counterparts.</p> |
5108 | </li> | | 5108 | </li> |
5109 | </ul></div> | | 5109 | </ul></div> |
5110 | </div> | | 5110 | </div> |
5111 | </div> | | 5111 | </div> |
5112 | <div class="sect1"> | | 5112 | <div class="sect1"> |
5113 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5113 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5114 | <a name="conf-files"></a>15.2. Configuration files</h2></div></div></div> | | 5114 | <a name="conf-files"></a>15.2. Configuration files</h2></div></div></div> |
5115 | <p>Configuration files are special in the sense that they are installed | | 5115 | <p>Configuration files are special in the sense that they are installed |
5116 | in their own specific directory, <code class="varname">PKG_SYSCONFDIR</code>, and | | 5116 | in their own specific directory, <code class="varname">PKG_SYSCONFDIR</code>, and |
5117 | need special treatment during installation (most of which is automated by | | 5117 | need special treatment during installation (most of which is automated by |
5118 | pkginstall). The main concept you must bear in mind is that files marked | | 5118 | pkginstall). The main concept you must bear in mind is that files marked |
5119 | as configuration files are automatically copied to the right place (somewhere | | 5119 | as configuration files are automatically copied to the right place (somewhere |
5120 | inside <code class="varname">PKG_SYSCONFDIR</code>) during installation <span class="emphasis"><em>if | | 5120 | inside <code class="varname">PKG_SYSCONFDIR</code>) during installation <span class="emphasis"><em>if |
5121 | and only if</em></span> they didn't exist before. Similarly, they will not | | 5121 | and only if</em></span> they didn't exist before. Similarly, they will not |
5122 | be removed if they have local modifications. This ensures that | | 5122 | be removed if they have local modifications. This ensures that |
5123 | administrators never lose any custom changes they may have made.</p> | | 5123 | administrators never lose any custom changes they may have made.</p> |
5124 | <div class="sect2"> | | 5124 | <div class="sect2"> |
5125 | <div class="titlepage"><div><div><h3 class="title"> | | 5125 | <div class="titlepage"><div><div><h3 class="title"> |
5126 | <a name="conf-files-sysconfdir"></a>15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</h3></div></div></div> | | 5126 | <a name="conf-files-sysconfdir"></a>15.2.1. How <code class="varname">PKG_SYSCONFDIR</code> is set</h3></div></div></div> |
5127 | <p>As said before, the <code class="varname">PKG_SYSCONFDIR</code> variable | | 5127 | <p>As said before, the <code class="varname">PKG_SYSCONFDIR</code> variable |
5128 | specifies where configuration files shall be installed. Its contents are | | 5128 | specifies where configuration files shall be installed. Its contents are |
5129 | set based upon the following variables:</p> | | 5129 | set based upon the following variables:</p> |
5130 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 5130 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
5131 | <li class="listitem"><p><code class="varname">PKG_SYSCONFBASE</code>: The configuration's root | | 5131 | <li class="listitem"><p><code class="varname">PKG_SYSCONFBASE</code>: The configuration's root |
5132 | directory. Defaults to <code class="filename">${PREFIX}/etc</code> although it may | | 5132 | directory. Defaults to <code class="filename">${PREFIX}/etc</code> although it may |
5133 | be overridden by the user to point to his preferred location (e.g., | | 5133 | be overridden by the user to point to his preferred location (e.g., |
5134 | <code class="filename">/etc</code>, <code class="filename">/etc/pkg</code>, etc.). | | 5134 | <code class="filename">/etc</code>, <code class="filename">/etc/pkg</code>, etc.). |
5135 | Packages must not use it directly.</p></li> | | 5135 | Packages must not use it directly.</p></li> |
5136 | <li class="listitem"> | | 5136 | <li class="listitem"> |
5137 | <p><code class="varname">PKG_SYSCONFSUBDIR</code>: A subdirectory of | | 5137 | <p><code class="varname">PKG_SYSCONFSUBDIR</code>: A subdirectory of |
5138 | <code class="varname">PKG_SYSCONFBASE</code> under which the configuration files | | 5138 | <code class="varname">PKG_SYSCONFBASE</code> under which the configuration files |
5139 | for the package being built shall be installed. The definition of this | | 5139 | for the package being built shall be installed. The definition of this |
5140 | variable only makes sense in the package's | | 5140 | variable only makes sense in the package's |
5141 | <code class="filename">Makefile</code> (i.e., it is not user-customizable).</p> | | 5141 | <code class="filename">Makefile</code> (i.e., it is not user-customizable).</p> |
5142 | <p>As an example, consider the Apache package, | | 5142 | <p>As an example, consider the Apache package, |
5143 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/apache24/README.html" target="_top"><code class="filename">www/apache24</code></a>, which places its | | 5143 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/apache24/README.html" target="_top"><code class="filename">www/apache24</code></a>, which places its |
5144 | configuration files under the | | 5144 | configuration files under the |
5145 | <code class="filename">httpd/</code> subdirectory of | | 5145 | <code class="filename">httpd/</code> subdirectory of |
5146 | <code class="varname">PKG_SYSCONFBASE</code>. This should be set in the package | | 5146 | <code class="varname">PKG_SYSCONFBASE</code>. This should be set in the package |
5147 | Makefile.</p> | | 5147 | Makefile.</p> |
5148 | </li> | | 5148 | </li> |
5149 | <li class="listitem"><p><code class="varname">PKG_SYSCONFVAR</code>: Specifies the name of the | | 5149 | <li class="listitem"><p><code class="varname">PKG_SYSCONFVAR</code>: Specifies the name of the |
5150 | variable that holds this package's configuration directory (if | | 5150 | variable that holds this package's configuration directory (if |
5151 | different from <code class="varname">PKG_SYSCONFBASE</code>). It defaults to | | 5151 | different from <code class="varname">PKG_SYSCONFBASE</code>). It defaults to |
5152 | <code class="varname">PKGBASE</code>'s value, and is always prefixed with | | 5152 | <code class="varname">PKGBASE</code>'s value, and is always prefixed with |
5153 | <code class="literal">PKG_SYSCONFDIR</code>.</p></li> | | 5153 | <code class="literal">PKG_SYSCONFDIR</code>.</p></li> |
5154 | <li class="listitem"><p><code class="varname">PKG_SYSCONFDIR.${PKG_SYSCONFVAR}</code>: Holds the | | 5154 | <li class="listitem"><p><code class="varname">PKG_SYSCONFDIR.${PKG_SYSCONFVAR}</code>: Holds the |
5155 | directory where the configuration files for the package identified by | | 5155 | directory where the configuration files for the package identified by |
5156 | <code class="varname">PKG_SYSCONFVAR</code>'s shall be placed.</p></li> | | 5156 | <code class="varname">PKG_SYSCONFVAR</code>'s shall be placed.</p></li> |
5157 | </ul></div> | | 5157 | </ul></div> |
5158 | <p>Based on the above variables, pkginstall determines the value of | | 5158 | <p>Based on the above variables, pkginstall determines the value of |
5159 | <code class="varname">PKG_SYSCONFDIR</code>, which is the <span class="emphasis"><em>only</em></span> | | 5159 | <code class="varname">PKG_SYSCONFDIR</code>, which is the <span class="emphasis"><em>only</em></span> |
5160 | variable that can be used within a package to refer to its configuration | | 5160 | variable that can be used within a package to refer to its configuration |
5161 | directory. The algorithm used to set its value is basically the | | 5161 | directory. The algorithm used to set its value is basically the |
5162 | following:</p> | | 5162 | following:</p> |
5163 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 5163 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
5164 | <li class="listitem"><p>If <code class="varname">PKG_SYSCONFDIR.${PKG_SYSCONFVAR}</code> is set, | | 5164 | <li class="listitem"><p>If <code class="varname">PKG_SYSCONFDIR.${PKG_SYSCONFVAR}</code> is set, |
5165 | its value is used.</p></li> | | 5165 | its value is used.</p></li> |
5166 | <li class="listitem"><p>If the previous variable is not defined but | | 5166 | <li class="listitem"><p>If the previous variable is not defined but |
5167 | <code class="varname">PKG_SYSCONFSUBDIR</code> is set in the package's | | 5167 | <code class="varname">PKG_SYSCONFSUBDIR</code> is set in the package's |
5168 | <code class="filename">Makefile</code>, the resulting value is | | 5168 | <code class="filename">Makefile</code>, the resulting value is |
5169 | <code class="filename">${PKG_SYSCONFBASE}/${PKG_SYSCONFSUBDIR}</code>.</p></li> | | 5169 | <code class="filename">${PKG_SYSCONFBASE}/${PKG_SYSCONFSUBDIR}</code>.</p></li> |
5170 | <li class="listitem"><p>Otherwise, it is set to | | 5170 | <li class="listitem"><p>Otherwise, it is set to |
5171 | <code class="filename">${PKG_SYSCONFBASE}</code>.</p></li> | | 5171 | <code class="filename">${PKG_SYSCONFBASE}</code>.</p></li> |
5172 | </ol></div> | | 5172 | </ol></div> |
5173 | <p>It is worth mentioning that <code class="filename">${PKG_SYSCONFDIR}</code> is | | 5173 | <p>It is worth mentioning that <code class="filename">${PKG_SYSCONFDIR}</code> is |
5174 | 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 | | 5174 | 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 |
5175 | subdirectories of <code class="filename">${PKG_SYSCONFDIR}</code>, they still have to | | 5175 | subdirectories of <code class="filename">${PKG_SYSCONFDIR}</code>, they still have to |
5176 | be created with OWN_DIRS or MAKE_DIRS.</p> | | 5176 | be created with OWN_DIRS or MAKE_DIRS.</p> |
5177 | </div> | | 5177 | </div> |
5178 | <div class="sect2"> | | 5178 | <div class="sect2"> |
5179 | <div class="titlepage"><div><div><h3 class="title"> | | 5179 | <div class="titlepage"><div><div><h3 class="title"> |
5180 | <a name="conf-files-configure"></a>15.2.2. Telling the software where configuration files are</h3></div></div></div> | | 5180 | <a name="conf-files-configure"></a>15.2.2. Telling the software where configuration files are</h3></div></div></div> |
5181 | <p>Given that pkgsrc (and users!) expect configuration files to be in a | | 5181 | <p>Given that pkgsrc (and users!) expect configuration files to be in a |
5182 | known place, you need to teach each package where it shall install its | | 5182 | known place, you need to teach each package where it shall install its |
5183 | files. In some cases you will have to patch the package Makefiles to | | 5183 | files. In some cases you will have to patch the package Makefiles to |
5184 | achieve it. If you are lucky, though, it may be as easy as passing an | | 5184 | achieve it. If you are lucky, though, it may be as easy as passing an |
5185 | extra flag to the configuration script; this is the case of GNU Autoconf- | | 5185 | extra flag to the configuration script; this is the case of GNU Autoconf- |
5186 | generated files:</p> | | 5186 | generated files:</p> |
5187 | <pre class="programlisting"> | | 5187 | <pre class="programlisting"> |
5188 | CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSCONFDIR} | | 5188 | CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSCONFDIR} |
5189 | </pre> | | 5189 | </pre> |
5190 | <p>Note that this specifies where the package has to <span class="emphasis"><em>look | | 5190 | <p>Note that this specifies where the package has to <span class="emphasis"><em>look |
5191 | for</em></span> its configuration files, not where they will be originally | | 5191 | for</em></span> its configuration files, not where they will be originally |
5192 | installed (although the difference is never explicit, | | 5192 | installed (although the difference is never explicit, |
5193 | unfortunately).</p> | | 5193 | unfortunately).</p> |
5194 | </div> | | 5194 | </div> |
5195 | <div class="sect2"> | | 5195 | <div class="sect2"> |
5196 | <div class="titlepage"><div><div><h3 class="title"> | | 5196 | <div class="titlepage"><div><div><h3 class="title"> |
5197 | <a name="conf-files-patching"></a>15.2.3. Patching installations</h3></div></div></div> | | 5197 | <a name="conf-files-patching"></a>15.2.3. Patching installations</h3></div></div></div> |
5198 | <p>As said before, pkginstall automatically handles configuration files. | | 5198 | <p>As said before, pkginstall automatically handles configuration files. |
5199 | This means that <span class="strong"><strong>the packages themselves must not | | 5199 | This means that <span class="strong"><strong>the packages themselves must not |
5200 | touch the contents of <code class="filename">${PKG_SYSCONFDIR}</code> | | 5200 | touch the contents of <code class="filename">${PKG_SYSCONFDIR}</code> |
5201 | directly</strong></span>. Bad news is that many software installation scripts | | 5201 | directly</strong></span>. Bad news is that many software installation scripts |
5202 | will, out of the box, mess with the contents of that directory. So what is | | 5202 | will, out of the box, mess with the contents of that directory. So what is |
5203 | the correct procedure to fix this issue?</p> | | 5203 | the correct procedure to fix this issue?</p> |
5204 | <p>You must teach the package (usually by manually patching it) to | | 5204 | <p>You must teach the package (usually by manually patching it) to |
5205 | install any configuration files under the examples hierarchy, | | 5205 | install any configuration files under the examples hierarchy, |
5206 | <code class="filename">share/examples/${PKGBASE}/</code>. This way, the | | 5206 | <code class="filename">share/examples/${PKGBASE}/</code>. This way, the |
5207 | <code class="filename">PLIST</code> registers them and the administrator always | | 5207 | <code class="filename">PLIST</code> registers them and the administrator always |
5208 | has the original copies available.</p> | | 5208 | has the original copies available.</p> |
5209 | <p>Once the required configuration files are in place (i.e., under the | | 5209 | <p>Once the required configuration files are in place (i.e., under the |
5210 | examples hierarchy), the pkginstall framework can use them as master copies | | 5210 | examples hierarchy), the pkginstall framework can use them as master copies |
5211 | during the package installation to update what is in | | 5211 | during the package installation to update what is in |
5212 | <code class="filename">${PKG_SYSCONFDIR}</code>. To achieve this, the variables | | 5212 | <code class="filename">${PKG_SYSCONFDIR}</code>. To achieve this, the variables |
5213 | <code class="varname">CONF_FILES</code> and <code class="varname">CONF_FILES_PERMS</code> are | | 5213 | <code class="varname">CONF_FILES</code> and <code class="varname">CONF_FILES_PERMS</code> are |
5214 | 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 | | 5214 | 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 |
5215 | about their syntax and their purpose. Here is an example, taken from the | | 5215 | about their syntax and their purpose. Here is an example, taken from the |
5216 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/mail/mutt/README.html" target="_top"><code class="filename">mail/mutt</code></a> package:</p> | | 5216 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/mail/mutt/README.html" target="_top"><code class="filename">mail/mutt</code></a> package:</p> |
5217 | <pre class="programlisting"> | | 5217 | <pre class="programlisting"> |
5218 | EGDIR= ${PREFIX}/share/doc/mutt/samples | | 5218 | EGDIR= ${PREFIX}/share/doc/mutt/samples |
5219 | CONF_FILES= ${EGDIR}/Muttrc ${PKG_SYSCONFDIR}/Muttrc | | 5219 | CONF_FILES= ${EGDIR}/Muttrc ${PKG_SYSCONFDIR}/Muttrc |
5220 | </pre> | | 5220 | </pre> |
5221 | <p>Note that the <code class="varname">EGDIR</code> variable is specific to that | | 5221 | <p>Note that the <code class="varname">EGDIR</code> variable is specific to that |
5222 | package and has no meaning outside it.</p> | | 5222 | package and has no meaning outside it.</p> |
5223 | </div> | | 5223 | </div> |
5224 | <div class="sect2"> | | 5224 | <div class="sect2"> |
5225 | <div class="titlepage"><div><div><h3 class="title"> | | 5225 | <div class="titlepage"><div><div><h3 class="title"> |
5226 | <a name="conf-files-disable"></a>15.2.4. Disabling handling of configuration files</h3></div></div></div> | | 5226 | <a name="conf-files-disable"></a>15.2.4. Disabling handling of configuration files</h3></div></div></div> |
5227 | <p>The automatic copying of config files can be toggled by setting the | | 5227 | <p>The automatic copying of config files can be toggled by setting the |
5228 | environment variable <code class="varname">PKG_CONFIG</code> prior to package | | 5228 | environment variable <code class="varname">PKG_CONFIG</code> prior to package |
5229 | installation.</p> | | 5229 | installation.</p> |
5230 | </div> | | 5230 | </div> |
5231 | </div> | | 5231 | </div> |
5232 | <div class="sect1"> | | 5232 | <div class="sect1"> |
5233 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5233 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5234 | <a name="rcd-scripts"></a>15.3. System startup scripts</h2></div></div></div> | | 5234 | <a name="rcd-scripts"></a>15.3. System startup scripts</h2></div></div></div> |
5235 | <p>System startup scripts are special files because they must be | | 5235 | <p>System startup scripts are special files because they must be |
5236 | installed in a place known by the underlying OS, usually outside the | | 5236 | installed in a place known by the underlying OS, usually outside the |
5237 | 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 | | 5237 | 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 |
5238 | can be used. However, pkginstall provides a special mechanism to handle | | 5238 | can be used. However, pkginstall provides a special mechanism to handle |
5239 | these files.</p> | | 5239 | these files.</p> |
5240 | <p>In order to provide system startup scripts, the package has | | 5240 | <p>In order to provide system startup scripts, the package has |
5241 | to:</p> | | 5241 | to:</p> |
5242 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 5242 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
5243 | <li class="listitem"><p>Store the script inside <code class="filename">${FILESDIR}</code>, with | | 5243 | <li class="listitem"><p>Store the script inside <code class="filename">${FILESDIR}</code>, with |
5244 | the <code class="literal">.sh</code> suffix appended. Considering the | | 5244 | the <code class="literal">.sh</code> suffix appended. Considering the |
5245 | <a href="http://cdn.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 | | 5245 | <a href="https://cdn.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 |
5246 | <code class="filename">cupsd.sh</code> in its files directory.</p></li> | | 5246 | <code class="filename">cupsd.sh</code> in its files directory.</p></li> |
5247 | <li class="listitem"> | | 5247 | <li class="listitem"> |
5248 | <p>Tell pkginstall to handle it, appending the name of the script, | | 5248 | <p>Tell pkginstall to handle it, appending the name of the script, |
5249 | without its extension, to the <code class="varname">RCD_SCRIPTS</code> variable. | | 5249 | without its extension, to the <code class="varname">RCD_SCRIPTS</code> variable. |
5250 | Continuing the previous example:</p> | | 5250 | Continuing the previous example:</p> |
5251 | <pre class="programlisting"> | | 5251 | <pre class="programlisting"> |
5252 | RCD_SCRIPTS+= cupsd | | 5252 | RCD_SCRIPTS+= cupsd |
5253 | </pre> | | 5253 | </pre> |
5254 | </li> | | 5254 | </li> |
5255 | </ol></div> | | 5255 | </ol></div> |
5256 | <p>Once this is done, pkginstall will do the following steps for each | | 5256 | <p>Once this is done, pkginstall will do the following steps for each |
5257 | script in an automated fashion:</p> | | 5257 | script in an automated fashion:</p> |
5258 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 5258 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
5259 | <li class="listitem"><p>Process the file found in the files directory applying all the | | 5259 | <li class="listitem"><p>Process the file found in the files directory applying all the |
5260 | substitutions described in the <code class="filename">FILES_SUBST</code> | | 5260 | substitutions described in the <code class="filename">FILES_SUBST</code> |
5261 | variable.</p></li> | | 5261 | variable.</p></li> |
5262 | <li class="listitem"><p>Copy the script from the files directory to the examples | | 5262 | <li class="listitem"><p>Copy the script from the files directory to the examples |
5263 | hierarchy, <code class="filename">${PREFIX}/share/examples/rc.d/</code>. Note | | 5263 | hierarchy, <code class="filename">${PREFIX}/share/examples/rc.d/</code>. Note |
5264 | that this master file must be explicitly registered in the | | 5264 | that this master file must be explicitly registered in the |
5265 | <code class="filename">PLIST</code>.</p></li> | | 5265 | <code class="filename">PLIST</code>.</p></li> |
5266 | <li class="listitem"><p>Add code to the installation scripts to copy the startup script | | 5266 | <li class="listitem"><p>Add code to the installation scripts to copy the startup script |
5267 | from the examples hierarchy into the system-wide startup scripts | | 5267 | from the examples hierarchy into the system-wide startup scripts |
5268 | directory.</p></li> | | 5268 | directory.</p></li> |
5269 | </ol></div> | | 5269 | </ol></div> |
5270 | <div class="sect2"> | | 5270 | <div class="sect2"> |
5271 | <div class="titlepage"><div><div><h3 class="title"> | | 5271 | <div class="titlepage"><div><div><h3 class="title"> |
5272 | <a name="rcd-scripts-disable"></a>15.3.1. Disabling handling of system startup scripts</h3></div></div></div> | | 5272 | <a name="rcd-scripts-disable"></a>15.3.1. Disabling handling of system startup scripts</h3></div></div></div> |
5273 | <p>The automatic copying of config files can be toggled by setting the | | 5273 | <p>The automatic copying of config files can be toggled by setting the |
5274 | environment variable <code class="varname">PKG_RCD_SCRIPTS</code> prior to package | | 5274 | environment variable <code class="varname">PKG_RCD_SCRIPTS</code> prior to package |
5275 | installation. Note that the scripts will be always copied inside the | | 5275 | installation. Note that the scripts will be always copied inside the |
5276 | examples hierarchy, <code class="filename">${PREFIX}/share/examples/rc.d/</code>, no | | 5276 | examples hierarchy, <code class="filename">${PREFIX}/share/examples/rc.d/</code>, no |
5277 | matter what the value of this variable is.</p> | | 5277 | matter what the value of this variable is.</p> |
5278 | </div> | | 5278 | </div> |
5279 | </div> | | 5279 | </div> |
5280 | <div class="sect1"> | | 5280 | <div class="sect1"> |
5281 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5281 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5282 | <a name="users-and-groups"></a>15.4. System users and groups</h2></div></div></div> | | 5282 | <a name="users-and-groups"></a>15.4. System users and groups</h2></div></div></div> |
5283 | <p>If a package needs to create special users and/or groups during | | 5283 | <p>If a package needs to create special users and/or groups during |
5284 | installation, it can do so by using the pkginstall framework.</p> | | 5284 | installation, it can do so by using the pkginstall framework.</p> |
5285 | <p>Users can be created by adding entries to the | | 5285 | <p>Users can be created by adding entries to the |
5286 | <code class="varname">PKG_USERS</code> variable. Each entry has the following | | 5286 | <code class="varname">PKG_USERS</code> variable. Each entry has the following |
5287 | syntax:</p> | | 5287 | syntax:</p> |
5288 | <pre class="programlisting"> | | 5288 | <pre class="programlisting"> |
5289 | user:group | | 5289 | user:group |
5290 | </pre> | | 5290 | </pre> |
5291 | <p>Further specification of user details may be done by setting | | 5291 | <p>Further specification of user details may be done by setting |
5292 | per-user variables. | | 5292 | per-user variables. |
5293 | <code class="varname">PKG_UID.<em class="replaceable"><code>user</code></em></code> is the | | 5293 | <code class="varname">PKG_UID.<em class="replaceable"><code>user</code></em></code> is the |
5294 | numeric UID for the user. | | 5294 | numeric UID for the user. |
5295 | <code class="varname">PKG_GECOS.<em class="replaceable"><code>user</code></em></code> is the | | 5295 | <code class="varname">PKG_GECOS.<em class="replaceable"><code>user</code></em></code> is the |
5296 | user's description or comment. | | 5296 | user's description or comment. |
5297 | <code class="varname">PKG_HOME.<em class="replaceable"><code>user</code></em></code> is the | | 5297 | <code class="varname">PKG_HOME.<em class="replaceable"><code>user</code></em></code> is the |
5298 | user's home directory, and defaults to | | 5298 | user's home directory, and defaults to |
5299 | <code class="filename">/nonexistent</code> if not specified. | | 5299 | <code class="filename">/nonexistent</code> if not specified. |
5300 | <code class="varname">PKG_SHELL.<em class="replaceable"><code>user</code></em></code> is the | | 5300 | <code class="varname">PKG_SHELL.<em class="replaceable"><code>user</code></em></code> is the |
5301 | user's shell, and defaults to <code class="filename">/sbin/nologin</code> if | | 5301 | user's shell, and defaults to <code class="filename">/sbin/nologin</code> if |
5302 | not specified.</p> | | 5302 | not specified.</p> |
5303 | <p>Similarly, groups can be created by adding entries to the | | 5303 | <p>Similarly, groups can be created by adding entries to the |
5304 | <code class="varname">PKG_GROUPS</code> variable, whose syntax is:</p> | | 5304 | <code class="varname">PKG_GROUPS</code> variable, whose syntax is:</p> |
5305 | <pre class="programlisting"> | | 5305 | <pre class="programlisting"> |
5306 | group | | 5306 | group |
5307 | </pre> | | 5307 | </pre> |
5308 | <p>The numeric GID of the group may be set by defining | | 5308 | <p>The numeric GID of the group may be set by defining |
5309 | <code class="varname">PKG_GID.<em class="replaceable"><code>group</code></em></code>.</p> | | 5309 | <code class="varname">PKG_GID.<em class="replaceable"><code>group</code></em></code>.</p> |
5310 | <p>If a package needs to create the users and groups at an earlier | | 5310 | <p>If a package needs to create the users and groups at an earlier |
5311 | stage, then it can set <code class="varname">USERGROUP_PHASE</code> to either | | 5311 | stage, then it can set <code class="varname">USERGROUP_PHASE</code> to either |
5312 | <code class="literal">configure</code>,<code class="literal">build</code>, or | | 5312 | <code class="literal">configure</code>,<code class="literal">build</code>, or |
5313 | <code class="literal">pre-install</code> to indicate the phase before which the | | 5313 | <code class="literal">pre-install</code> to indicate the phase before which the |
5314 | users and groups are created. In this case, the numeric UIDs and GIDs | | 5314 | users and groups are created. In this case, the numeric UIDs and GIDs |
5315 | of the created users and groups are automatically hardcoded into the | | 5315 | of the created users and groups are automatically hardcoded into the |
5316 | final installation scripts.</p> | | 5316 | final installation scripts.</p> |
5317 | </div> | | 5317 | </div> |
5318 | <div class="sect1"> | | 5318 | <div class="sect1"> |
5319 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5319 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5320 | <a name="shells"></a>15.5. System shells</h2></div></div></div> | | 5320 | <a name="shells"></a>15.5. System shells</h2></div></div></div> |
5321 | <p>Packages that install system shells should register them in the shell | | 5321 | <p>Packages that install system shells should register them in the shell |
5322 | database, <code class="filename">/etc/shells</code>, to make things easier to the | | 5322 | database, <code class="filename">/etc/shells</code>, to make things easier to the |
5323 | administrator. This must be done from the installation scripts to keep | | 5323 | administrator. This must be done from the installation scripts to keep |
5324 | binary packages working on any system. pkginstall provides an easy way to | | 5324 | binary packages working on any system. pkginstall provides an easy way to |
5325 | accomplish this task.</p> | | 5325 | accomplish this task.</p> |
5326 | <p>When a package provides a shell interpreter, it has to set the | | 5326 | <p>When a package provides a shell interpreter, it has to set the |
5327 | <code class="varname">PKG_SHELL</code> variable to its absolute file name. This will | | 5327 | <code class="varname">PKG_SHELL</code> variable to its absolute file name. This will |
5328 | add some hooks to the installation scripts to handle it. Consider the | | 5328 | add some hooks to the installation scripts to handle it. Consider the |
5329 | following example, taken from <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/shells/zsh/README.html" target="_top"><code class="filename">shells/zsh</code></a>:</p> | | 5329 | following example, taken from <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/shells/zsh/README.html" target="_top"><code class="filename">shells/zsh</code></a>:</p> |
5330 | <pre class="programlisting"> | | 5330 | <pre class="programlisting"> |
5331 | PKG_SHELL= ${PREFIX}/bin/zsh | | 5331 | PKG_SHELL= ${PREFIX}/bin/zsh |
5332 | </pre> | | 5332 | </pre> |
5333 | <div class="sect2"> | | 5333 | <div class="sect2"> |
5334 | <div class="titlepage"><div><div><h3 class="title"> | | 5334 | <div class="titlepage"><div><div><h3 class="title"> |
5335 | <a name="shells-disable"></a>15.5.1. Disabling shell registration</h3></div></div></div> | | 5335 | <a name="shells-disable"></a>15.5.1. Disabling shell registration</h3></div></div></div> |
5336 | <p>The automatic registration of shell interpreters can be disabled by | | 5336 | <p>The automatic registration of shell interpreters can be disabled by |
5337 | the administrator by setting the <code class="filename">PKG_REGISTER_SHELLS</code> | | 5337 | the administrator by setting the <code class="filename">PKG_REGISTER_SHELLS</code> |
5338 | environment variable to <code class="literal">NO</code>.</p> | | 5338 | environment variable to <code class="literal">NO</code>.</p> |
5339 | </div> | | 5339 | </div> |
5340 | </div> | | 5340 | </div> |
5341 | <div class="sect1"> | | 5341 | <div class="sect1"> |
5342 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5342 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5343 | <a name="fonts"></a>15.6. Fonts</h2></div></div></div> | | 5343 | <a name="fonts"></a>15.6. Fonts</h2></div></div></div> |
5344 | <p>Packages that install X11 fonts should update the database files | | 5344 | <p>Packages that install X11 fonts should update the database files |
5345 | that index the fonts within each fonts directory. This can easily be | | 5345 | that index the fonts within each fonts directory. This can easily be |
5346 | accomplished within the pkginstall framework.</p> | | 5346 | accomplished within the pkginstall framework.</p> |
5347 | <p>When a package installs X11 fonts, it must list the directories in | | 5347 | <p>When a package installs X11 fonts, it must list the directories in |
5348 | which fonts are installed in the | | 5348 | which fonts are installed in the |
5349 | <code class="varname">FONTS_DIRS.<em class="replaceable"><code>type</code></em></code> variables, | | 5349 | <code class="varname">FONTS_DIRS.<em class="replaceable"><code>type</code></em></code> variables, |
5350 | where <em class="replaceable"><code>type</code></em> can be one of <span class="quote">“<span class="quote">ttf</span>”</span>, | | 5350 | where <em class="replaceable"><code>type</code></em> can be one of <span class="quote">“<span class="quote">ttf</span>”</span>, |
5351 | <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 | | 5351 | <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 |
5352 | installation scripts to run the appropriate commands to update the fonts | | 5352 | installation scripts to run the appropriate commands to update the fonts |
5353 | database files within each of those directories. For convenience, if the | | 5353 | database files within each of those directories. For convenience, if the |
5354 | directory path is relative, it is taken to be relative to the package's | | 5354 | directory path is relative, it is taken to be relative to the package's |
5355 | installation prefix. Consider the following example, taken from <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/fonts/dbz-ttf/README.html" target="_top"><code class="filename">fonts/dbz-ttf</code></a>:</p> | | 5355 | installation prefix. Consider the following example, taken from <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/fonts/dbz-ttf/README.html" target="_top"><code class="filename">fonts/dbz-ttf</code></a>:</p> |
5356 | <pre class="programlisting"> | | 5356 | <pre class="programlisting"> |
5357 | FONTS_DIRS.ttf= ${PREFIX}/share/fonts/X11/TTF | | 5357 | FONTS_DIRS.ttf= ${PREFIX}/share/fonts/X11/TTF |
5358 | </pre> | | 5358 | </pre> |
5359 | <div class="sect2"> | | 5359 | <div class="sect2"> |
5360 | <div class="titlepage"><div><div><h3 class="title"> | | 5360 | <div class="titlepage"><div><div><h3 class="title"> |
5361 | <a name="fonts-disable"></a>15.6.1. Disabling automatic update of the fonts databases</h3></div></div></div> | | 5361 | <a name="fonts-disable"></a>15.6.1. Disabling automatic update of the fonts databases</h3></div></div></div> |
5362 | <p>The automatic update of fonts databases can be disabled by | | 5362 | <p>The automatic update of fonts databases can be disabled by |
5363 | the administrator by setting the <code class="filename">PKG_UPDATE_FONTS_DB</code> | | 5363 | the administrator by setting the <code class="filename">PKG_UPDATE_FONTS_DB</code> |
5364 | environment variable to <code class="literal">NO</code>.</p> | | 5364 | environment variable to <code class="literal">NO</code>.</p> |
5365 | </div> | | 5365 | </div> |
5366 | </div> | | 5366 | </div> |
5367 | </div> | | 5367 | </div> |
5368 | <div class="chapter"> | | 5368 | <div class="chapter"> |
5369 | <div class="titlepage"><div><div><h2 class="title"> | | 5369 | <div class="titlepage"><div><div><h2 class="title"> |
5370 | <a name="options"></a>Chapter 16. Options handling</h2></div></div></div> | | 5370 | <a name="options"></a>Chapter 16. Options handling</h2></div></div></div> |
5371 | <div class="toc"> | | 5371 | <div class="toc"> |
5372 | <p><b>Table of Contents</b></p> | | 5372 | <p><b>Table of Contents</b></p> |
5373 | <dl class="toc"> | | 5373 | <dl class="toc"> |
5374 | <dt><span class="sect1"><a href="#global-default-options">16.1. Global default options</a></span></dt> | | 5374 | <dt><span class="sect1"><a href="#global-default-options">16.1. Global default options</a></span></dt> |
5375 | <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> | | 5375 | <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> |
5376 | <dt><span class="sect1"><a href="#option-names">16.3. Option Names</a></span></dt> | | 5376 | <dt><span class="sect1"><a href="#option-names">16.3. Option Names</a></span></dt> |
5377 | <dt><span class="sect1"><a href="#option-build">16.4. Determining the options of dependencies</a></span></dt> | | 5377 | <dt><span class="sect1"><a href="#option-build">16.4. Determining the options of dependencies</a></span></dt> |
5378 | </dl> | | 5378 | </dl> |
5379 | </div> | | 5379 | </div> |
5380 | <p>Many packages have the ability to be built to support different | | 5380 | <p>Many packages have the ability to be built to support different |
5381 | sets of features. <code class="filename">bsd.options.mk</code> is a framework | | 5381 | sets of features. <code class="filename">bsd.options.mk</code> is a framework |
5382 | in pkgsrc that provides generic handling of those options that | | 5382 | in pkgsrc that provides generic handling of those options that |
5383 | determine different ways in which the packages can be built. It's | | 5383 | determine different ways in which the packages can be built. It's |
5384 | possible for the user to specify exactly which sets of options will be | | 5384 | possible for the user to specify exactly which sets of options will be |
5385 | built into a package or to allow a set of global default options | | 5385 | built into a package or to allow a set of global default options |
5386 | apply.</p> | | 5386 | apply.</p> |
5387 | <p>There are two broad classes of behaviors that one might want to | | 5387 | <p>There are two broad classes of behaviors that one might want to |
5388 | control via options. One is whether some particular feature is | | 5388 | control via options. One is whether some particular feature is |
5389 | enabled in a program that will be built anyway, often by including or | | 5389 | enabled in a program that will be built anyway, often by including or |
5390 | not including a dependency on some other package. The other is | | 5390 | not including a dependency on some other package. The other is |
5391 | whether or not an additional program will be built as part of the | | 5391 | whether or not an additional program will be built as part of the |
5392 | package. Generally, it is better to make a split package for such | | 5392 | package. Generally, it is better to make a split package for such |
5393 | additional programs instead of using options, because it enables | | 5393 | additional programs instead of using options, because it enables |
5394 | binary packages to be built which can then be added separately. For | | 5394 | binary packages to be built which can then be added separately. For |
5395 | example, the foo package might have minimal dependencies (those | | 5395 | example, the foo package might have minimal dependencies (those |
5396 | packages without which foo doesn't make sense), and then the foo-gfoo | | 5396 | packages without which foo doesn't make sense), and then the foo-gfoo |
5397 | package might include the GTK frontend program gfoo. This is better | | 5397 | package might include the GTK frontend program gfoo. This is better |
5398 | than including a gtk option to foo that adds gfoo, because either that | | 5398 | than including a gtk option to foo that adds gfoo, because either that |
5399 | option is default, in which case binary users can't get foo without | | 5399 | option is default, in which case binary users can't get foo without |
5400 | gfoo, or not default, in which case they can't get gfoo. With split | | 5400 | gfoo, or not default, in which case they can't get gfoo. With split |
5401 | packages, they can install foo without having GTK, and later decide to | | 5401 | packages, they can install foo without having GTK, and later decide to |
5402 | install gfoo (pulling in GTK at that time). This is an advantage to | | 5402 | install gfoo (pulling in GTK at that time). This is an advantage to |
5403 | source users too, avoiding the need for rebuilds.</p> | | 5403 | source users too, avoiding the need for rebuilds.</p> |
5404 | <p>Plugins with widely varying dependencies should usually be split | | 5404 | <p>Plugins with widely varying dependencies should usually be split |
5405 | instead of options.</p> | | 5405 | instead of options.</p> |
5406 | <p>It is often more work to maintain split packages, especially if | | 5406 | <p>It is often more work to maintain split packages, especially if |
5407 | the upstream package does not support this. The decision of split | | 5407 | the upstream package does not support this. The decision of split |
5408 | vs. option should be made based on the likelihood that users will want | | 5408 | vs. option should be made based on the likelihood that users will want |
5409 | or object to the various pieces, the size of the dependencies that are | | 5409 | or object to the various pieces, the size of the dependencies that are |
5410 | included, and the amount of work.</p> | | 5410 | included, and the amount of work.</p> |
5411 | <p>A further consideration is licensing. Non-free parts, or parts | | 5411 | <p>A further consideration is licensing. Non-free parts, or parts |
5412 | that depend on non-free dependencies (especially plugins) should | | 5412 | that depend on non-free dependencies (especially plugins) should |
5413 | almost always be split if feasible.</p> | | 5413 | almost always be split if feasible.</p> |
5414 | <div class="sect1"> | | 5414 | <div class="sect1"> |
5415 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5415 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5416 | <a name="global-default-options"></a>16.1. Global default options</h2></div></div></div> | | 5416 | <a name="global-default-options"></a>16.1. Global default options</h2></div></div></div> |
5417 | <p>Global default options are listed in | | 5417 | <p>Global default options are listed in |
5418 | <code class="varname">PKG_DEFAULT_OPTIONS</code>, which is a list of the options | | 5418 | <code class="varname">PKG_DEFAULT_OPTIONS</code>, which is a list of the options |
5419 | that should be built into every package if that option is supported. | | 5419 | that should be built into every package if that option is supported. |
5420 | This variable should be set in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p> | | 5420 | This variable should be set in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>.</p> |
5421 | </div> | | 5421 | </div> |
5422 | <div class="sect1"> | | 5422 | <div class="sect1"> |
5423 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5423 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5424 | <a name="converting-to-options"></a>16.2. Converting packages to use <code class="filename">bsd.options.mk</code> | | 5424 | <a name="converting-to-options"></a>16.2. Converting packages to use <code class="filename">bsd.options.mk</code> |
5425 | </h2></div></div></div> | | 5425 | </h2></div></div></div> |
5426 | <p>The following example shows how | | 5426 | <p>The following example shows how |
5427 | <code class="filename">bsd.options.mk</code> should be used | | 5427 | <code class="filename">bsd.options.mk</code> should be used |
5428 | by the hypothetical ``wibble'' package, either in the package | | 5428 | by the hypothetical ``wibble'' package, either in the package |
5429 | <code class="filename">Makefile</code>, or in a file, | | 5429 | <code class="filename">Makefile</code>, or in a file, |
5430 | e.g. <code class="filename">options.mk</code>, that is included by the | | 5430 | e.g. <code class="filename">options.mk</code>, that is included by the |
5431 | main package <code class="filename">Makefile</code>.</p> | | 5431 | main package <code class="filename">Makefile</code>.</p> |
5432 | <pre class="programlisting"> | | 5432 | <pre class="programlisting"> |
5433 | PKG_OPTIONS_VAR= PKG_OPTIONS.wibble | | 5433 | PKG_OPTIONS_VAR= PKG_OPTIONS.wibble |
5434 | PKG_SUPPORTED_OPTIONS= wibble-foo ldap | | 5434 | PKG_SUPPORTED_OPTIONS= wibble-foo ldap |
5435 | PKG_OPTIONS_OPTIONAL_GROUPS= database | | 5435 | PKG_OPTIONS_OPTIONAL_GROUPS= database |
5436 | PKG_OPTIONS_GROUP.database= mysql pgsql | | 5436 | PKG_OPTIONS_GROUP.database= mysql pgsql |
5437 | PKG_SUGGESTED_OPTIONS= wibble-foo | | 5437 | PKG_SUGGESTED_OPTIONS= wibble-foo |
5438 | PKG_OPTIONS_LEGACY_VARS+= WIBBLE_USE_OPENLDAP:ldap | | 5438 | PKG_OPTIONS_LEGACY_VARS+= WIBBLE_USE_OPENLDAP:ldap |
5439 | PKG_OPTIONS_LEGACY_OPTS+= foo:wibble-foo | | 5439 | PKG_OPTIONS_LEGACY_OPTS+= foo:wibble-foo |
5440 | | | 5440 | |
5441 | .include "../../mk/bsd.prefs.mk" | | 5441 | .include "../../mk/bsd.prefs.mk" |
5442 | | | 5442 | |
5443 | # this package was previously named wibble2 | | 5443 | # this package was previously named wibble2 |
5444 | .if defined(PKG_OPTIONS.wibble2) | | 5444 | .if defined(PKG_OPTIONS.wibble2) |
5445 | PKG_LEGACY_OPTIONS+= ${PKG_OPTIONS.wibble2} | | 5445 | PKG_LEGACY_OPTIONS+= ${PKG_OPTIONS.wibble2} |
5446 | PKG_OPTIONS_DEPRECATED_WARNINGS+= \ | | 5446 | PKG_OPTIONS_DEPRECATED_WARNINGS+= \ |
5447 | "Deprecated variable PKG_OPTIONS.wibble2 used, use ${PKG_OPTIONS_VAR} instead." | | 5447 | "Deprecated variable PKG_OPTIONS.wibble2 used, use ${PKG_OPTIONS_VAR} instead." |
5448 | .endif | | 5448 | .endif |
5449 | | | 5449 | |
5450 | .include "../../mk/bsd.options.mk" | | 5450 | .include "../../mk/bsd.options.mk" |
5451 | | | 5451 | |
5452 | # Package-specific option-handling | | 5452 | # Package-specific option-handling |
5453 | | | 5453 | |
5454 | ### | | 5454 | ### |
5455 | ### FOO support | | 5455 | ### FOO support |
5456 | ### | | 5456 | ### |
5457 | .if !empty(PKG_OPTIONS:Mwibble-foo) | | 5457 | .if !empty(PKG_OPTIONS:Mwibble-foo) |
5458 | CONFIGURE_ARGS+= --enable-foo | | 5458 | CONFIGURE_ARGS+= --enable-foo |
5459 | .endif | | 5459 | .endif |
5460 | | | 5460 | |
5461 | ### | | 5461 | ### |
5462 | ### LDAP support | | 5462 | ### LDAP support |
5463 | ### | | 5463 | ### |
5464 | .if !empty(PKG_OPTIONS:Mldap) | | 5464 | .if !empty(PKG_OPTIONS:Mldap) |
5465 | . include "../../databases/openldap-client/buildlink3.mk" | | 5465 | . include "../../databases/openldap-client/buildlink3.mk" |
5466 | CONFIGURE_ARGS+= --enable-ldap=${BUILDLINK_PREFIX.openldap-client} | | 5466 | CONFIGURE_ARGS+= --enable-ldap=${BUILDLINK_PREFIX.openldap-client} |
5467 | .endif | | 5467 | .endif |
5468 | | | 5468 | |
5469 | ### | | 5469 | ### |
5470 | ### database support | | 5470 | ### database support |
5471 | ### | | 5471 | ### |
5472 | .if !empty(PKG_OPTIONS:Mmysql) | | 5472 | .if !empty(PKG_OPTIONS:Mmysql) |
5473 | . include "../../mk/mysql.buildlink3.mk" | | 5473 | . include "../../mk/mysql.buildlink3.mk" |
5474 | .endif | | 5474 | .endif |
5475 | .if !empty(PKG_OPTIONS:Mpgsql) | | 5475 | .if !empty(PKG_OPTIONS:Mpgsql) |
5476 | . include "../../mk/pgsql.buildlink3.mk" | | 5476 | . include "../../mk/pgsql.buildlink3.mk" |
5477 | .endif | | 5477 | .endif |
5478 | </pre> | | 5478 | </pre> |
5479 | <p>The first section contains the information about which build | | 5479 | <p>The first section contains the information about which build |
5480 | options are supported by the package, and any default options settings | | 5480 | options are supported by the package, and any default options settings |
5481 | if needed.</p> | | 5481 | if needed.</p> |
5482 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 5482 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
5483 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_VAR</code> is the name of the | | 5483 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_VAR</code> is the name of the |
5484 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> variable that the user can set to override the default | | 5484 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> variable that the user can set to override the default |
5485 | options. It should be set to | | 5485 | options. It should be set to |
5486 | PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em>. Do not set it to | | 5486 | PKG_OPTIONS.<em class="replaceable"><code>pkgbase</code></em>. Do not set it to |
5487 | PKG_OPTIONS.${PKGBASE}, since <code class="varname">PKGBASE</code> is not defined | | 5487 | PKG_OPTIONS.${PKGBASE}, since <code class="varname">PKGBASE</code> is not defined |
5488 | at the point where the options are processed.</p></li> | | 5488 | at the point where the options are processed.</p></li> |
5489 | <li class="listitem"><p><code class="varname">PKG_SUPPORTED_OPTIONS</code> is a list of | | 5489 | <li class="listitem"><p><code class="varname">PKG_SUPPORTED_OPTIONS</code> is a list of |
5490 | build options supported by the package.</p></li> | | 5490 | build options supported by the package.</p></li> |
5491 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_OPTIONAL_GROUPS</code> is a | | 5491 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_OPTIONAL_GROUPS</code> is a |
5492 | list of names of groups of mutually exclusive options. The options in | | 5492 | list of names of groups of mutually exclusive options. The options in |
5493 | each group are listed in | | 5493 | each group are listed in |
5494 | <code class="varname">PKG_OPTIONS_GROUP.<em class="replaceable"><code>groupname</code></em></code>. | | 5494 | <code class="varname">PKG_OPTIONS_GROUP.<em class="replaceable"><code>groupname</code></em></code>. |
5495 | The most specific setting of any option from the group takes | | 5495 | The most specific setting of any option from the group takes |
5496 | precedence over all other options in the group. Options from the | | 5496 | precedence over all other options in the group. Options from the |
5497 | groups will be automatically added to | | 5497 | groups will be automatically added to |
5498 | <code class="varname">PKG_SUPPORTED_OPTIONS</code>.</p></li> | | 5498 | <code class="varname">PKG_SUPPORTED_OPTIONS</code>.</p></li> |
5499 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_REQUIRED_GROUPS</code> is like | | 5499 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_REQUIRED_GROUPS</code> is like |
5500 | <code class="varname">PKG_OPTIONS_OPTIONAL_GROUPS</code>, but building the | | 5500 | <code class="varname">PKG_OPTIONS_OPTIONAL_GROUPS</code>, but building the |
5501 | packages will fail if no option from the group is | | 5501 | packages will fail if no option from the group is |
5502 | selected.</p></li> | | 5502 | selected.</p></li> |
5503 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_NONEMPTY_SETS</code> is a list | | 5503 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_NONEMPTY_SETS</code> is a list |
5504 | of names of sets of options. At least one option from each set must | | 5504 | of names of sets of options. At least one option from each set must |
5505 | be selected. The options in each set are listed in | | 5505 | be selected. The options in each set are listed in |
5506 | <code class="varname">PKG_OPTIONS_SET.<em class="replaceable"><code>setname</code></em></code>. | | 5506 | <code class="varname">PKG_OPTIONS_SET.<em class="replaceable"><code>setname</code></em></code>. |
5507 | Options from the sets will be automatically added to | | 5507 | Options from the sets will be automatically added to |
5508 | <code class="varname">PKG_SUPPORTED_OPTIONS</code>. Building the package will | | 5508 | <code class="varname">PKG_SUPPORTED_OPTIONS</code>. Building the package will |
5509 | fail if no option from the set is selected.</p></li> | | 5509 | fail if no option from the set is selected.</p></li> |
5510 | <li class="listitem"><p><code class="varname">PKG_SUGGESTED_OPTIONS</code> is a list of | | 5510 | <li class="listitem"><p><code class="varname">PKG_SUGGESTED_OPTIONS</code> is a list of |
5511 | build options which are enabled by default.</p></li> | | 5511 | build options which are enabled by default.</p></li> |
5512 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_LEGACY_VARS</code> is a list | | 5512 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_LEGACY_VARS</code> is a list |
5513 | of | | 5513 | of |
5514 | <span class="quote">“<span class="quote"><em class="replaceable"><code>USE_VARIABLE</code></em>:<em class="replaceable"><code>option</code></em></span>”</span> | | 5514 | <span class="quote">“<span class="quote"><em class="replaceable"><code>USE_VARIABLE</code></em>:<em class="replaceable"><code>option</code></em></span>”</span> |
5515 | pairs that map legacy <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> variables to | | 5515 | pairs that map legacy <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> variables to |
5516 | their option counterparts. Pairs should be added with | | 5516 | their option counterparts. Pairs should be added with |
5517 | <span class="quote">“<span class="quote">+=</span>”</span> to keep the listing of global legacy variables. A | | 5517 | <span class="quote">“<span class="quote">+=</span>”</span> to keep the listing of global legacy variables. A |
5518 | warning will be issued if the user uses a legacy | | 5518 | warning will be issued if the user uses a legacy |
5519 | variable.</p></li> | | 5519 | variable.</p></li> |
5520 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_LEGACY_OPTS</code> is a list | | 5520 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_LEGACY_OPTS</code> is a list |
5521 | of | | 5521 | of |
5522 | <span class="quote">“<span class="quote"><em class="replaceable"><code>old-option</code></em>:<em class="replaceable"><code>new-option</code></em></span>”</span> | | 5522 | <span class="quote">“<span class="quote"><em class="replaceable"><code>old-option</code></em>:<em class="replaceable"><code>new-option</code></em></span>”</span> |
5523 | pairs that map options that have been renamed to their new | | 5523 | pairs that map options that have been renamed to their new |
5524 | counterparts. Pairs should be added with <span class="quote">“<span class="quote">+=</span>”</span> to keep | | 5524 | counterparts. Pairs should be added with <span class="quote">“<span class="quote">+=</span>”</span> to keep |
5525 | the listing of global legacy options. A warning will be issued if | | 5525 | the listing of global legacy options. A warning will be issued if |
5526 | the user uses a legacy option.</p></li> | | 5526 | the user uses a legacy option.</p></li> |
5527 | <li class="listitem"><p><code class="varname">PKG_LEGACY_OPTIONS</code> is a list of | | 5527 | <li class="listitem"><p><code class="varname">PKG_LEGACY_OPTIONS</code> is a list of |
5528 | options implied by deprecated variables used. This can be used for | | 5528 | options implied by deprecated variables used. This can be used for |
5529 | cases that neither <code class="varname">PKG_OPTIONS_LEGACY_VARS</code> nor | | 5529 | cases that neither <code class="varname">PKG_OPTIONS_LEGACY_VARS</code> nor |
5530 | <code class="varname">PKG_OPTIONS_LEGACY_OPTS</code> can handle, e. g. when | | 5530 | <code class="varname">PKG_OPTIONS_LEGACY_OPTS</code> can handle, e. g. when |
5531 | <code class="varname">PKG_OPTIONS_VAR</code> is renamed.</p></li> | | 5531 | <code class="varname">PKG_OPTIONS_VAR</code> is renamed.</p></li> |
5532 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_DEPRECATED_WARNINGS</code> is | | 5532 | <li class="listitem"><p><code class="varname">PKG_OPTIONS_DEPRECATED_WARNINGS</code> is |
5533 | a list of warnings about deprecated variables or options used, and | | 5533 | a list of warnings about deprecated variables or options used, and |
5534 | what to use instead.</p></li> | | 5534 | what to use instead.</p></li> |
5535 | </ol></div> | | 5535 | </ol></div> |
5536 | <p>A package should never modify | | 5536 | <p>A package should never modify |
5537 | <code class="varname">PKG_DEFAULT_OPTIONS</code> or the variable named in | | 5537 | <code class="varname">PKG_DEFAULT_OPTIONS</code> or the variable named in |
5538 | <code class="varname">PKG_OPTIONS_VAR</code>. These are strictly user-settable. | | 5538 | <code class="varname">PKG_OPTIONS_VAR</code>. These are strictly user-settable. |
5539 | To suggest a default set of options, use | | 5539 | To suggest a default set of options, use |
5540 | <code class="varname">PKG_SUGGESTED_OPTIONS</code>.</p> | | 5540 | <code class="varname">PKG_SUGGESTED_OPTIONS</code>.</p> |
5541 | <p><code class="varname">PKG_OPTIONS_VAR</code> must be defined before | | 5541 | <p><code class="varname">PKG_OPTIONS_VAR</code> must be defined before |
5542 | including <code class="filename">bsd.options.mk</code>. If none of | | 5542 | including <code class="filename">bsd.options.mk</code>. If none of |
5543 | <code class="varname">PKG_SUPPORTED_OPTIONS</code>, | | 5543 | <code class="varname">PKG_SUPPORTED_OPTIONS</code>, |
5544 | <code class="varname">PKG_OPTIONS_OPTIONAL_GROUPS</code>, and | | 5544 | <code class="varname">PKG_OPTIONS_OPTIONAL_GROUPS</code>, and |
5545 | <code class="varname">PKG_OPTIONS_REQUIRED_GROUPS</code> are defined (as can | | 5545 | <code class="varname">PKG_OPTIONS_REQUIRED_GROUPS</code> are defined (as can |
5546 | happen with platform-specific options if none of them is supported on | | 5546 | happen with platform-specific options if none of them is supported on |
5547 | the current platform), <code class="varname">PKG_OPTIONS</code> is set to the | | 5547 | the current platform), <code class="varname">PKG_OPTIONS</code> is set to the |
5548 | empty list and the package is otherwise treated as not using the | | 5548 | empty list and the package is otherwise treated as not using the |
5549 | options framework.</p> | | 5549 | options framework.</p> |
5550 | <p>After the inclusion of <code class="filename">bsd.options.mk</code>, the | | 5550 | <p>After the inclusion of <code class="filename">bsd.options.mk</code>, the |
5551 | variable <code class="varname">PKG_OPTIONS</code> contains the list of selected | | 5551 | variable <code class="varname">PKG_OPTIONS</code> contains the list of selected |
5552 | build options, properly filtered to remove unsupported and duplicate | | 5552 | build options, properly filtered to remove unsupported and duplicate |
5553 | options.</p> | | 5553 | options.</p> |
5554 | <p>The remaining sections contain the logic that is specific to | | 5554 | <p>The remaining sections contain the logic that is specific to |
5555 | each option. The correct way to check for an option is to check | | 5555 | each option. The correct way to check for an option is to check |
5556 | whether it is listed in <code class="varname">PKG_OPTIONS</code>:</p> | | 5556 | whether it is listed in <code class="varname">PKG_OPTIONS</code>:</p> |
5557 | <pre class="programlisting"> | | 5557 | <pre class="programlisting"> |
5558 | .if !empty(PKG_OPTIONS:M<em class="replaceable"><code>option</code></em>) | | 5558 | .if !empty(PKG_OPTIONS:M<em class="replaceable"><code>option</code></em>) |
5559 | </pre> | | 5559 | </pre> |
5560 | </div> | | 5560 | </div> |
5561 | <div class="sect1"> | | 5561 | <div class="sect1"> |
5562 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5562 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5563 | <a name="option-names"></a>16.3. Option Names</h2></div></div></div> | | 5563 | <a name="option-names"></a>16.3. Option Names</h2></div></div></div> |
5564 | <p>Options that enable similar features in different packages (like | | 5564 | <p>Options that enable similar features in different packages (like |
5565 | optional support for a library) should use a common name in all | | 5565 | optional support for a library) should use a common name in all |
5566 | packages that support it (like the name of the library). If another | | 5566 | packages that support it (like the name of the library). If another |
5567 | package already has an option with the same meaning, use the same | | 5567 | package already has an option with the same meaning, use the same |
5568 | name.</p> | | 5568 | name.</p> |
5569 | <p>Options that enable features specific to one package, where it's | | 5569 | <p>Options that enable features specific to one package, where it's |
5570 | unlikely that another (unrelated) package has the same (or a similar) | | 5570 | unlikely that another (unrelated) package has the same (or a similar) |
5571 | optional feature, should use a name prefixed with | | 5571 | optional feature, should use a name prefixed with |
5572 | <code class="varname"><em class="replaceable"><code>pkgname</code></em>-</code>.</p> | | 5572 | <code class="varname"><em class="replaceable"><code>pkgname</code></em>-</code>.</p> |
5573 | <p>If a group of related packages share an optional feature | | 5573 | <p>If a group of related packages share an optional feature |
5574 | specific to that group, prefix it with the name of the | | 5574 | specific to that group, prefix it with the name of the |
5575 | <span class="quote">“<span class="quote">main</span>”</span> package | | 5575 | <span class="quote">“<span class="quote">main</span>”</span> package |
5576 | (e. g. <code class="varname">djbware-errno-hack</code>).</p> | | 5576 | (e. g. <code class="varname">djbware-errno-hack</code>).</p> |
5577 | <p>For new options, add a line to | | 5577 | <p>For new options, add a line to |
5578 | <code class="filename">mk/defaults/options.description</code>. Lines have two | | 5578 | <code class="filename">mk/defaults/options.description</code>. Lines have two |
5579 | fields, separated by tab. The first field is the option name, the | | 5579 | fields, separated by tab. The first field is the option name, the |
5580 | second its description. The description should be a whole sentence | | 5580 | second its description. The description should be a whole sentence |
5581 | (starting with an uppercase letter and ending with a period) that | | 5581 | (starting with an uppercase letter and ending with a period) that |
5582 | describes what enabling the option does. E. g. <span class="quote">“<span class="quote">Enable ispell | | 5582 | describes what enabling the option does. E. g. <span class="quote">“<span class="quote">Enable ispell |
5583 | support.</span>”</span> The file is sorted by option names.</p> | | 5583 | support.</span>”</span> The file is sorted by option names.</p> |
5584 | </div> | | 5584 | </div> |
5585 | <div class="sect1"> | | 5585 | <div class="sect1"> |
5586 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5586 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5587 | <a name="option-build"></a>16.4. Determining the options of dependencies</h2></div></div></div> | | 5587 | <a name="option-build"></a>16.4. Determining the options of dependencies</h2></div></div></div> |
5588 | <p>When writing <a class="link" href="#buildlink3.mk"><code class="filename">buildlink3.mk</code></a> files, it is often necessary to list | | 5588 | <p>When writing <a class="link" href="#buildlink3.mk"><code class="filename">buildlink3.mk</code></a> files, it is often necessary to list |
5589 | different dependencies based on the options with which the package was | | 5589 | different dependencies based on the options with which the package was |
5590 | built. For querying these options, the file | | 5590 | built. For querying these options, the file |
5591 | <code class="filename">pkgsrc/mk/pkg-build-options.mk</code> should be used. A | | 5591 | <code class="filename">pkgsrc/mk/pkg-build-options.mk</code> should be used. A |
5592 | typical example looks like this:</p> | | 5592 | typical example looks like this:</p> |
5593 | <pre class="programlisting"> | | 5593 | <pre class="programlisting"> |
5594 | pkgbase := libpurple | | 5594 | pkgbase := libpurple |
5595 | .include "../../mk/pkg-build-options.mk" | | 5595 | .include "../../mk/pkg-build-options.mk" |
5596 | | | 5596 | |
5597 | .if !empty(PKG_BUILD_OPTIONS.libpurple:Mdbus) | | 5597 | .if !empty(PKG_BUILD_OPTIONS.libpurple:Mdbus) |
5598 | ... | | 5598 | ... |
5599 | .endif | | 5599 | .endif |
5600 | </pre> | | 5600 | </pre> |
5601 | <p>Including <code class="filename">pkg-build-options.mk</code> here will set | | 5601 | <p>Including <code class="filename">pkg-build-options.mk</code> here will set |
5602 | the variable <code class="varname">PKG_BUILD_OPTIONS.libpurple</code> to the build | | 5602 | the variable <code class="varname">PKG_BUILD_OPTIONS.libpurple</code> to the build |
5603 | options of the libpurple package, which can then be queried like | | 5603 | options of the libpurple package, which can then be queried like |
5604 | <code class="varname">PKG_OPTIONS</code> in the <code class="filename">options.mk</code> | | 5604 | <code class="varname">PKG_OPTIONS</code> in the <code class="filename">options.mk</code> |
5605 | file. See the file <code class="filename">pkg-build-options.mk</code> for more | | 5605 | file. See the file <code class="filename">pkg-build-options.mk</code> for more |
5606 | details.</p> | | 5606 | details.</p> |
5607 | </div> | | 5607 | </div> |
5608 | </div> | | 5608 | </div> |
5609 | <div class="chapter"> | | 5609 | <div class="chapter"> |
5610 | <div class="titlepage"><div><div><h2 class="title"> | | 5610 | <div class="titlepage"><div><div><h2 class="title"> |
5611 | <a name="build"></a>Chapter 17. The build process</h2></div></div></div> | | 5611 | <a name="build"></a>Chapter 17. The build process</h2></div></div></div> |
5612 | <div class="toc"> | | 5612 | <div class="toc"> |
5613 | <p><b>Table of Contents</b></p> | | 5613 | <p><b>Table of Contents</b></p> |
5614 | <dl class="toc"> | | 5614 | <dl class="toc"> |
5615 | <dt><span class="sect1"><a href="#build.intro">17.1. Introduction</a></span></dt> | | 5615 | <dt><span class="sect1"><a href="#build.intro">17.1. Introduction</a></span></dt> |
5616 | <dt><span class="sect1"><a href="#build.prefix">17.2. Program location</a></span></dt> | | 5616 | <dt><span class="sect1"><a href="#build.prefix">17.2. Program location</a></span></dt> |
5617 | <dt><span class="sect1"><a href="#build.builddirs">17.3. Directories used during the build process</a></span></dt> | | 5617 | <dt><span class="sect1"><a href="#build.builddirs">17.3. Directories used during the build process</a></span></dt> |
5618 | <dt><span class="sect1"><a href="#build.running">17.4. Running a phase</a></span></dt> | | 5618 | <dt><span class="sect1"><a href="#build.running">17.4. Running a phase</a></span></dt> |
5619 | <dt><span class="sect1"><a href="#build.fetch">17.5. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> | | 5619 | <dt><span class="sect1"><a href="#build.fetch">17.5. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> |
5620 | <dd><dl> | | 5620 | <dd><dl> |
5621 | <dt><span class="sect2"><a href="#build.fetch.what">17.5.1. What to fetch and where to get it from</a></span></dt> | | 5621 | <dt><span class="sect2"><a href="#build.fetch.what">17.5.1. What to fetch and where to get it from</a></span></dt> |
5622 | <dt><span class="sect2"><a href="#build.fetch.how">17.5.2. How are the files fetched?</a></span></dt> | | 5622 | <dt><span class="sect2"><a href="#build.fetch.how">17.5.2. How are the files fetched?</a></span></dt> |
5623 | </dl></dd> | | 5623 | </dl></dd> |
5624 | <dt><span class="sect1"><a href="#build.checksum">17.6. The <span class="emphasis"><em>checksum</em></span> phase</a></span></dt> | | 5624 | <dt><span class="sect1"><a href="#build.checksum">17.6. The <span class="emphasis"><em>checksum</em></span> phase</a></span></dt> |
5625 | <dt><span class="sect1"><a href="#build.extract">17.7. The <span class="emphasis"><em>extract</em></span> phase</a></span></dt> | | 5625 | <dt><span class="sect1"><a href="#build.extract">17.7. The <span class="emphasis"><em>extract</em></span> phase</a></span></dt> |
5626 | <dt><span class="sect1"><a href="#build.patch">17.8. The <span class="emphasis"><em>patch</em></span> phase</a></span></dt> | | 5626 | <dt><span class="sect1"><a href="#build.patch">17.8. The <span class="emphasis"><em>patch</em></span> phase</a></span></dt> |
5627 | <dt><span class="sect1"><a href="#build.tools">17.9. The <span class="emphasis"><em>tools</em></span> phase</a></span></dt> | | 5627 | <dt><span class="sect1"><a href="#build.tools">17.9. The <span class="emphasis"><em>tools</em></span> phase</a></span></dt> |
5628 | <dt><span class="sect1"><a href="#build.wrapper">17.10. The <span class="emphasis"><em>wrapper</em></span> phase</a></span></dt> | | 5628 | <dt><span class="sect1"><a href="#build.wrapper">17.10. The <span class="emphasis"><em>wrapper</em></span> phase</a></span></dt> |
5629 | <dt><span class="sect1"><a href="#build.configure">17.11. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> | | 5629 | <dt><span class="sect1"><a href="#build.configure">17.11. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> |
5630 | <dt><span class="sect1"><a href="#build.build">17.12. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> | | 5630 | <dt><span class="sect1"><a href="#build.build">17.12. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> |
5631 | <dt><span class="sect1"><a href="#build.test">17.13. The <span class="emphasis"><em>test</em></span> phase</a></span></dt> | | 5631 | <dt><span class="sect1"><a href="#build.test">17.13. The <span class="emphasis"><em>test</em></span> phase</a></span></dt> |
5632 | <dt><span class="sect1"><a href="#build.install">17.14. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> | | 5632 | <dt><span class="sect1"><a href="#build.install">17.14. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> |
5633 | <dt><span class="sect1"><a href="#build.package">17.15. The <span class="emphasis"><em>package</em></span> phase</a></span></dt> | | 5633 | <dt><span class="sect1"><a href="#build.package">17.15. The <span class="emphasis"><em>package</em></span> phase</a></span></dt> |
5634 | <dt><span class="sect1"><a href="#build.clean">17.16. Cleaning up</a></span></dt> | | 5634 | <dt><span class="sect1"><a href="#build.clean">17.16. Cleaning up</a></span></dt> |
5635 | <dt><span class="sect1"><a href="#build.helpful-targets">17.17. Other helpful targets</a></span></dt> | | 5635 | <dt><span class="sect1"><a href="#build.helpful-targets">17.17. Other helpful targets</a></span></dt> |
5636 | </dl> | | 5636 | </dl> |
5637 | </div> | | 5637 | </div> |
5638 | <div class="sect1"> | | 5638 | <div class="sect1"> |
5639 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5639 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5640 | <a name="build.intro"></a>17.1. Introduction</h2></div></div></div> | | 5640 | <a name="build.intro"></a>17.1. Introduction</h2></div></div></div> |
5641 | <p>This chapter gives a detailed description on how a package is | | 5641 | <p>This chapter gives a detailed description on how a package is |
5642 | built. Building a package is separated into different | | 5642 | built. Building a package is separated into different |
5643 | <span class="emphasis"><em>phases</em></span> (for example <code class="varname">fetch</code>, | | 5643 | <span class="emphasis"><em>phases</em></span> (for example <code class="varname">fetch</code>, |
5644 | <code class="varname">build</code>, <code class="varname">install</code>), all of which are | | 5644 | <code class="varname">build</code>, <code class="varname">install</code>), all of which are |
5645 | described in the following sections. Each phase is split into | | 5645 | described in the following sections. Each phase is split into |
5646 | so-called <span class="emphasis"><em>stages</em></span>, which take the name of the | | 5646 | so-called <span class="emphasis"><em>stages</em></span>, which take the name of the |
5647 | containing phase, prefixed by one of <code class="varname">pre-</code>, | | 5647 | containing phase, prefixed by one of <code class="varname">pre-</code>, |
5648 | <code class="varname">do-</code> or <code class="varname">post-</code>. (Examples are | | 5648 | <code class="varname">do-</code> or <code class="varname">post-</code>. (Examples are |
5649 | <code class="varname">pre-configure</code>, <code class="varname">post-build</code>.) Most | | 5649 | <code class="varname">pre-configure</code>, <code class="varname">post-build</code>.) Most |
5650 | of the actual work is done in the <code class="varname">do-*</code> stages.</p> | | 5650 | of the actual work is done in the <code class="varname">do-*</code> stages.</p> |
5651 | <p>Never override the regular targets (like | | 5651 | <p>Never override the regular targets (like |
5652 | <code class="varname">fetch</code>), if you have to, override the | | 5652 | <code class="varname">fetch</code>), if you have to, override the |
5653 | <code class="varname">do-*</code> ones instead.</p> | | 5653 | <code class="varname">do-*</code> ones instead.</p> |
5654 | <p>The basic steps for building a program are always the same. First | | 5654 | <p>The basic steps for building a program are always the same. First |
5655 | the program's source (<span class="emphasis"><em>distfile</em></span>) must be brought to | | 5655 | the program's source (<span class="emphasis"><em>distfile</em></span>) must be brought to |
5656 | the local system and then extracted. After any pkgsrc-specific patches | | 5656 | the local system and then extracted. After any pkgsrc-specific patches |
5657 | to compile properly are applied, the software can be configured, then | | 5657 | to compile properly are applied, the software can be configured, then |
5658 | built (usually by compiling), and finally the generated binaries, etc. | | 5658 | built (usually by compiling), and finally the generated binaries, etc. |
5659 | can be put into place on the system.</p> | | 5659 | can be put into place on the system.</p> |
5660 | <p>To get more details about what is happening at each step, | | 5660 | <p>To get more details about what is happening at each step, |
5661 | you can set the <code class="varname">PKG_VERBOSE</code> variable, or the | | 5661 | you can set the <code class="varname">PKG_VERBOSE</code> variable, or the |
5662 | <code class="varname">PATCH_DEBUG</code> variable if you are just interested | | 5662 | <code class="varname">PATCH_DEBUG</code> variable if you are just interested |
5663 | in more details about the <span class="emphasis"><em>patch</em></span> step.</p> | | 5663 | in more details about the <span class="emphasis"><em>patch</em></span> step.</p> |
5664 | </div> | | 5664 | </div> |
5665 | <div class="sect1"> | | 5665 | <div class="sect1"> |
5666 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5666 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5667 | <a name="build.prefix"></a>17.2. Program location</h2></div></div></div> | | 5667 | <a name="build.prefix"></a>17.2. Program location</h2></div></div></div> |
5668 | <p>Before outlining the process performed by the NetBSD package system in | | 5668 | <p>Before outlining the process performed by the NetBSD package system in |
5669 | the next section, here's a brief discussion on where programs are | | 5669 | the next section, here's a brief discussion on where programs are |
5670 | installed, and which variables influence this.</p> | | 5670 | installed, and which variables influence this.</p> |
5671 | <p>The automatic variable <code class="varname">PREFIX</code> indicates | | 5671 | <p>The automatic variable <code class="varname">PREFIX</code> indicates |
5672 | where all files of the final program shall be installed. It is | | 5672 | where all files of the final program shall be installed. It is |
5673 | usually set to <code class="varname">LOCALBASE</code> | | 5673 | usually set to <code class="varname">LOCALBASE</code> |
5674 | (<code class="filename">/usr/pkg</code>), or <code class="varname">CROSSBASE</code> | | 5674 | (<code class="filename">/usr/pkg</code>), or <code class="varname">CROSSBASE</code> |
5675 | for pkgs in the <code class="filename">cross</code> category. The value of | | 5675 | for pkgs in the <code class="filename">cross</code> category. The value of |
5676 | <code class="varname">PREFIX</code> needs to be put | | 5676 | <code class="varname">PREFIX</code> needs to be put |
5677 | into the various places in the program's source where paths to | | 5677 | into the various places in the program's source where paths to |
5678 | these files are encoded. See <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “<code class="filename">patches/*</code>”</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> | | 5678 | these files are encoded. See <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “<code class="filename">patches/*</code>”</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> |
5679 | <p>When choosing which of these variables to use, | | 5679 | <p>When choosing which of these variables to use, |
5680 | follow the following rules:</p> | | 5680 | follow the following rules:</p> |
5681 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 5681 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
5682 | <li class="listitem"><p><code class="varname">PREFIX</code> always points to the location | | 5682 | <li class="listitem"><p><code class="varname">PREFIX</code> always points to the location |
5683 | where the current pkg will be installed. When referring to a | | 5683 | where the current pkg will be installed. When referring to a |
5684 | pkg's own installation path, use | | 5684 | pkg's own installation path, use |
5685 | <span class="quote">“<span class="quote">${PREFIX}</span>”</span>.</p></li> | | 5685 | <span class="quote">“<span class="quote">${PREFIX}</span>”</span>.</p></li> |
5686 | <li class="listitem"><p><code class="varname">LOCALBASE</code> is where all non-X11 pkgs | | 5686 | <li class="listitem"><p><code class="varname">LOCALBASE</code> is where all non-X11 pkgs |
5687 | are installed. If you need to construct a -I or -L argument | | 5687 | are installed. If you need to construct a -I or -L argument |
5688 | to the compiler to find includes and libraries installed by | | 5688 | to the compiler to find includes and libraries installed by |
5689 | another non-X11 pkg, use <span class="quote">“<span class="quote">${LOCALBASE}</span>”</span>. The name | | 5689 | another non-X11 pkg, use <span class="quote">“<span class="quote">${LOCALBASE}</span>”</span>. The name |
5690 | <code class="varname">LOCALBASE</code> stems from FreeBSD, which | | 5690 | <code class="varname">LOCALBASE</code> stems from FreeBSD, which |
5691 | installed all packages in <code class="filename">/usr/local</code>. As | | 5691 | installed all packages in <code class="filename">/usr/local</code>. As |
5692 | pkgsrc leaves <code class="filename">/usr/local</code> for the system | | 5692 | pkgsrc leaves <code class="filename">/usr/local</code> for the system |
5693 | administrator, this variable is a misnomer.</p></li> | | 5693 | administrator, this variable is a misnomer.</p></li> |
5694 | <li class="listitem"><p><code class="varname">X11BASE</code> is where the actual X11 | | 5694 | <li class="listitem"><p><code class="varname">X11BASE</code> is where the actual X11 |
5695 | distribution (from xsrc, etc.) is installed. When looking for | | 5695 | distribution (from xsrc, etc.) is installed. When looking for |
5696 | <span class="emphasis"><em>standard</em></span> X11 includes (not those | | 5696 | <span class="emphasis"><em>standard</em></span> X11 includes (not those |
5697 | installed by a package), use <span class="quote">“<span class="quote">${X11BASE}</span>”</span>.</p></li> | | 5697 | installed by a package), use <span class="quote">“<span class="quote">${X11BASE}</span>”</span>.</p></li> |
5698 | <li class="listitem"><p>X11-based packages using imake must set | | 5698 | <li class="listitem"><p>X11-based packages using imake must set |
5699 | <code class="varname">USE_IMAKE</code> to be installed correctly under | | 5699 | <code class="varname">USE_IMAKE</code> to be installed correctly under |
5700 | <code class="varname">LOCALBASE</code>.</p></li> | | 5700 | <code class="varname">LOCALBASE</code>.</p></li> |
5701 | <li class="listitem"><p>Within <code class="filename">${PREFIX}</code>, packages should | | 5701 | <li class="listitem"><p>Within <code class="filename">${PREFIX}</code>, packages should |
5702 | install files according to <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?hier+7.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">hier</span>(7)</span></a>, with the exception that | | 5702 | install files according to <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?hier+7.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">hier</span>(7)</span></a>, with the exception that |
5703 | manual pages go into <code class="filename">${PREFIX}/man</code>, not | | 5703 | manual pages go into <code class="filename">${PREFIX}/man</code>, not |
5704 | <code class="filename">${PREFIX}/share/man</code>.</p></li> | | 5704 | <code class="filename">${PREFIX}/share/man</code>.</p></li> |
5705 | </ul></div> | | 5705 | </ul></div> |
5706 | </div> | | 5706 | </div> |
5707 | <div class="sect1"> | | 5707 | <div class="sect1"> |
5708 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5708 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5709 | <a name="build.builddirs"></a>17.3. Directories used during the build process</h2></div></div></div> | | 5709 | <a name="build.builddirs"></a>17.3. Directories used during the build process</h2></div></div></div> |
5710 | <p>When building a package, various directories are used to store | | 5710 | <p>When building a package, various directories are used to store |
5711 | source files, temporary files, pkgsrc-internal files, and so on. These | | 5711 | source files, temporary files, pkgsrc-internal files, and so on. These |
5712 | directories are explained here.</p> | | 5712 | directories are explained here.</p> |
5713 | <p>Some of the directory variables contain relative pathnames. There | | 5713 | <p>Some of the directory variables contain relative pathnames. There |
5714 | are two common base directories for these relative directories: | | 5714 | are two common base directories for these relative directories: |
5715 | <code class="varname">PKGSRCDIR/PKGPATH</code> is used for directories that are | | 5715 | <code class="varname">PKGSRCDIR/PKGPATH</code> is used for directories that are |
5716 | pkgsrc-specific. <code class="varname">WRKSRC</code> is used for directories | | 5716 | pkgsrc-specific. <code class="varname">WRKSRC</code> is used for directories |
5717 | inside the package itself.</p> | | 5717 | inside the package itself.</p> |
5718 | <div class="variablelist"><dl class="variablelist"> | | 5718 | <div class="variablelist"><dl class="variablelist"> |
5719 | <dt><span class="term"><code class="varname">PKGSRCDIR</code></span></dt> | | 5719 | <dt><span class="term"><code class="varname">PKGSRCDIR</code></span></dt> |
5720 | <dd><p>This is an absolute pathname that points to the pkgsrc | | 5720 | <dd><p>This is an absolute pathname that points to the pkgsrc |
5721 | root directory. Generally, you don't need | | 5721 | root directory. Generally, you don't need |
5722 | it.</p></dd> | | 5722 | it.</p></dd> |
5723 | <dt><span class="term"><code class="varname">PKGDIR</code></span></dt> | | 5723 | <dt><span class="term"><code class="varname">PKGDIR</code></span></dt> |
5724 | <dd><p>This is an absolute pathname that points to the | | 5724 | <dd><p>This is an absolute pathname that points to the |
5725 | current package.</p></dd> | | 5725 | current package.</p></dd> |
5726 | <dt><span class="term"><code class="varname">PKGPATH</code></span></dt> | | 5726 | <dt><span class="term"><code class="varname">PKGPATH</code></span></dt> |
5727 | <dd><p>This is a pathname relative to | | 5727 | <dd><p>This is a pathname relative to |
5728 | <code class="varname">PKGSRCDIR</code> that points to the current | | 5728 | <code class="varname">PKGSRCDIR</code> that points to the current |
5729 | package.</p></dd> | | 5729 | package.</p></dd> |
5730 | <dt><span class="term"><code class="varname">WRKDIR</code></span></dt> | | 5730 | <dt><span class="term"><code class="varname">WRKDIR</code></span></dt> |
5731 | <dd><p>This is an absolute pathname pointing to the directory | | 5731 | <dd><p>This is an absolute pathname pointing to the directory |
5732 | where all work takes place. The distfiles are extracted to this | | 5732 | where all work takes place. The distfiles are extracted to this |
5733 | directory. It also contains temporary directories and log files used by | | 5733 | directory. It also contains temporary directories and log files used by |
5734 | the various pkgsrc frameworks, like <span class="emphasis"><em>buildlink</em></span> or | | 5734 | the various pkgsrc frameworks, like <span class="emphasis"><em>buildlink</em></span> or |
5735 | the <span class="emphasis"><em>wrappers</em></span>.</p></dd> | | 5735 | the <span class="emphasis"><em>wrappers</em></span>.</p></dd> |
5736 | <dt><span class="term"><code class="varname">WRKSRC</code></span></dt> | | 5736 | <dt><span class="term"><code class="varname">WRKSRC</code></span></dt> |
5737 | <dd><p>This is an absolute pathname pointing to the directory | | 5737 | <dd><p>This is an absolute pathname pointing to the directory |
5738 | where the distfiles are extracted. It is usually a direct subdirectory | | 5738 | where the distfiles are extracted. It is usually a direct subdirectory |
5739 | of <code class="varname">WRKDIR</code>, and often it's the only directory entry | | 5739 | of <code class="varname">WRKDIR</code>, and often it's the only directory entry |
5740 | that isn't hidden. This variable may be changed by a package | | 5740 | that isn't hidden. This variable may be changed by a package |
5741 | <code class="filename">Makefile</code>.</p></dd> | | 5741 | <code class="filename">Makefile</code>.</p></dd> |
5742 | </dl></div> | | 5742 | </dl></div> |
5743 | <p>The <code class="varname">CREATE_WRKDIR_SYMLINK</code> definition takes either | | 5743 | <p>The <code class="varname">CREATE_WRKDIR_SYMLINK</code> definition takes either |
5744 | the value <span class="emphasis"><em>yes</em></span> or <span class="emphasis"><em>no</em></span> and defaults | | 5744 | the value <span class="emphasis"><em>yes</em></span> or <span class="emphasis"><em>no</em></span> and defaults |
5745 | to <span class="emphasis"><em>no</em></span>. It indicates whether a symbolic link to the | | 5745 | to <span class="emphasis"><em>no</em></span>. It indicates whether a symbolic link to the |
5746 | <code class="varname">WRKDIR</code> is to be created in the pkgsrc entry's directory. | | 5746 | <code class="varname">WRKDIR</code> is to be created in the pkgsrc entry's directory. |
5747 | If users would like to have their pkgsrc trees behave in a | | 5747 | If users would like to have their pkgsrc trees behave in a |
5748 | read-only manner, then the value of | | 5748 | read-only manner, then the value of |
5749 | <code class="varname">CREATE_WRKDIR_SYMLINK</code> should be set to | | 5749 | <code class="varname">CREATE_WRKDIR_SYMLINK</code> should be set to |
5750 | <span class="emphasis"><em>no</em></span>.</p> | | 5750 | <span class="emphasis"><em>no</em></span>.</p> |
5751 | </div> | | 5751 | </div> |
5752 | <div class="sect1"> | | 5752 | <div class="sect1"> |
5753 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5753 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5754 | <a name="build.running"></a>17.4. Running a phase</h2></div></div></div> | | 5754 | <a name="build.running"></a>17.4. Running a phase</h2></div></div></div> |
5755 | <p>You can run a particular phase by typing <span class="command"><strong>make | | 5755 | <p>You can run a particular phase by typing <span class="command"><strong>make |
5756 | phase</strong></span>, where <span class="emphasis"><em>phase</em></span> is the name of the | | 5756 | phase</strong></span>, where <span class="emphasis"><em>phase</em></span> is the name of the |
5757 | phase. This will automatically run all phases that are required for this | | 5757 | phase. This will automatically run all phases that are required for this |
5758 | phase. The default phase is <code class="varname">build</code>, that is, when you | | 5758 | phase. The default phase is <code class="varname">build</code>, that is, when you |
5759 | run <span class="command"><strong>make</strong></span> without parameters in a package directory, | | 5759 | run <span class="command"><strong>make</strong></span> without parameters in a package directory, |
5760 | the package will be built, but not installed.</p> | | 5760 | the package will be built, but not installed.</p> |
5761 | </div> | | 5761 | </div> |
5762 | <div class="sect1"> | | 5762 | <div class="sect1"> |
5763 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5763 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5764 | <a name="build.fetch"></a>17.5. The <span class="emphasis"><em>fetch</em></span> phase</h2></div></div></div> | | 5764 | <a name="build.fetch"></a>17.5. The <span class="emphasis"><em>fetch</em></span> phase</h2></div></div></div> |
5765 | <p>The first step in building a package is to fetch the | | 5765 | <p>The first step in building a package is to fetch the |
5766 | distribution files (distfiles) from the sites that are providing | | 5766 | distribution files (distfiles) from the sites that are providing |
5767 | them. This is the task of the <span class="emphasis"><em>fetch</em></span> | | 5767 | them. This is the task of the <span class="emphasis"><em>fetch</em></span> |
5768 | phase.</p> | | 5768 | phase.</p> |
5769 | <div class="sect2"> | | 5769 | <div class="sect2"> |
5770 | <div class="titlepage"><div><div><h3 class="title"> | | 5770 | <div class="titlepage"><div><div><h3 class="title"> |
5771 | <a name="build.fetch.what"></a>17.5.1. What to fetch and where to get it from</h3></div></div></div> | | 5771 | <a name="build.fetch.what"></a>17.5.1. What to fetch and where to get it from</h3></div></div></div> |
5772 | <p>In simple cases, <code class="varname">MASTER_SITES</code> | | 5772 | <p>In simple cases, <code class="varname">MASTER_SITES</code> |
5773 | defines all URLs from where the distfile, whose name is | | 5773 | defines all URLs from where the distfile, whose name is |
5774 | derived from the <code class="varname">DISTNAME</code> variable, is | | 5774 | derived from the <code class="varname">DISTNAME</code> variable, is |
5775 | fetched. The more complicated cases are described | | 5775 | fetched. The more complicated cases are described |
5776 | below.</p> | | 5776 | below.</p> |
5777 | <p>The variable <code class="varname">DISTFILES</code> specifies | | 5777 | <p>The variable <code class="varname">DISTFILES</code> specifies |
5778 | the list of distfiles that have to be fetched. Its value | | 5778 | the list of distfiles that have to be fetched. Its value |
5779 | defaults to <code class="literal">${DEFAULT_DISTFILES}</code> and | | 5779 | defaults to <code class="literal">${DEFAULT_DISTFILES}</code> and |
5780 | its value is <code class="literal">${DISTNAME}${EXTRACT_SUFX}</code>, | | 5780 | its value is <code class="literal">${DISTNAME}${EXTRACT_SUFX}</code>, |
5781 | so that most packages don't need to define it at all. | | 5781 | so that most packages don't need to define it at all. |
5782 | <code class="varname">EXTRACT_SUFX</code> is | | 5782 | <code class="varname">EXTRACT_SUFX</code> is |
5783 | <code class="literal">.tar.gz</code> by default, but can be changed | | 5783 | <code class="literal">.tar.gz</code> by default, but can be changed |
5784 | freely. Note that if your package requires additional | | 5784 | freely. Note that if your package requires additional |
5785 | distfiles to the default one, you cannot just append the | | 5785 | distfiles to the default one, you cannot just append the |
5786 | additional filenames using the <code class="literal">+=</code> | | 5786 | additional filenames using the <code class="literal">+=</code> |
5787 | operator, but you have write for example:</p> | | 5787 | operator, but you have write for example:</p> |
5788 | <pre class="programlisting"> | | 5788 | <pre class="programlisting"> |
5789 | DISTFILES= ${DEFAULT_DISTFILES} additional-files.tar.gz | | 5789 | DISTFILES= ${DEFAULT_DISTFILES} additional-files.tar.gz |
5790 | </pre> | | 5790 | </pre> |
5791 | <p>Each distfile is fetched from a list of sites, usually | | 5791 | <p>Each distfile is fetched from a list of sites, usually |
5792 | <code class="varname">MASTER_SITES</code>. If the package has multiple | | 5792 | <code class="varname">MASTER_SITES</code>. If the package has multiple |
5793 | <code class="varname">DISTFILES</code> or multiple | | 5793 | <code class="varname">DISTFILES</code> or multiple |
5794 | <code class="varname">PATCHFILES</code> from different sites, you can | | 5794 | <code class="varname">PATCHFILES</code> from different sites, you can |
5795 | set | | 5795 | set |
5796 | <code class="varname">SITES.<em class="replaceable"><code>distfile</code></em></code> | | 5796 | <code class="varname">SITES.<em class="replaceable"><code>distfile</code></em></code> |
5797 | to the list of URLs where the file | | 5797 | to the list of URLs where the file |
5798 | <code class="filename"><em class="replaceable"><code>distfile</code></em></code> | | 5798 | <code class="filename"><em class="replaceable"><code>distfile</code></em></code> |
5799 | (including the suffix) can be found.</p> | | 5799 | (including the suffix) can be found.</p> |
5800 | <pre class="programlisting"> | | 5800 | <pre class="programlisting"> |
5801 | DISTFILES= ${DISTNAME}${EXTRACT_SUFX} | | 5801 | DISTFILES= ${DISTNAME}${EXTRACT_SUFX} |
5802 | DISTFILES+= foo-file.tar.gz | | 5802 | DISTFILES+= foo-file.tar.gz |
5803 | SITES.foo-file.tar.gz= \ | | 5803 | SITES.foo-file.tar.gz= \ |
5804 | http://www.somewhere.com/somehow/ \ | | 5804 | http://www.somewhere.com/somehow/ \ |
5805 | http://www.somewhereelse.com/mirror/somehow/ | | 5805 | http://www.somewhereelse.com/mirror/somehow/ |
5806 | </pre> | | 5806 | </pre> |
5807 | <p>When actually fetching the distfiles, each item from | | 5807 | <p>When actually fetching the distfiles, each item from |
5808 | <code class="varname">MASTER_SITES</code> or | | 5808 | <code class="varname">MASTER_SITES</code> or |
5809 | <code class="varname">SITES.*</code> gets the name of each distfile | | 5809 | <code class="varname">SITES.*</code> gets the name of each distfile |
5810 | appended to it, without an intermediate slash. Therefore, | | 5810 | appended to it, without an intermediate slash. Therefore, |
5811 | all site values have to end with a slash or other separator | | 5811 | all site values have to end with a slash or other separator |
5812 | character. This allows for example to set | | 5812 | character. This allows for example to set |
5813 | <code class="varname">MASTER_SITES</code> to a URL of a CGI script | | 5813 | <code class="varname">MASTER_SITES</code> to a URL of a CGI script |
5814 | that gets the name of the distfile as a parameter. In this | | 5814 | that gets the name of the distfile as a parameter. In this |
5815 | case, the definition would look like:</p> | | 5815 | case, the definition would look like:</p> |
5816 | <pre class="programlisting"> | | 5816 | <pre class="programlisting"> |
5817 | MASTER_SITES= http://www.example.com/download.cgi?file= | | 5817 | MASTER_SITES= http://www.example.com/download.cgi?file= |
5818 | </pre> | | 5818 | </pre> |
5819 | <p> The exception to this rule are URLs starting with a dash. | | 5819 | <p> The exception to this rule are URLs starting with a dash. |
5820 | In that case the URL is taken as is, fetched and the result | | 5820 | In that case the URL is taken as is, fetched and the result |
5821 | stored under the name of the distfile. You can use this style | | 5821 | stored under the name of the distfile. You can use this style |
5822 | for the case when the download URL style does not match the | | 5822 | for the case when the download URL style does not match the |
5823 | above common case. For example, if permanent download URL is a | | 5823 | above common case. For example, if permanent download URL is a |
5824 | redirector to the real download URL, or the download file name | | 5824 | redirector to the real download URL, or the download file name |
5825 | is offered by an HTTP Content-Disposition header. In the | | 5825 | is offered by an HTTP Content-Disposition header. In the |
5826 | following example, <code class="filename">foo-1.0.0.tar.gz</code> will be | | 5826 | following example, <code class="filename">foo-1.0.0.tar.gz</code> will be |
5827 | created instead of the default | | 5827 | created instead of the default |
5828 | <code class="filename">v1.0.0.tar.gz</code>.</p> | | 5828 | <code class="filename">v1.0.0.tar.gz</code>.</p> |
5829 | <pre class="programlisting"> | | 5829 | <pre class="programlisting"> |
5830 | DISTNAME= foo-1.0.0 | | 5830 | DISTNAME= foo-1.0.0 |
5831 | MASTER_SITES= -http://www.example.com/archive/v1.0.0.tar.gz | | 5831 | MASTER_SITES= -http://www.example.com/archive/v1.0.0.tar.gz |
5832 | </pre> | | 5832 | </pre> |
5833 | <p>There are some predefined values for | | 5833 | <p>There are some predefined values for |
5834 | <code class="varname">MASTER_SITES</code>, which can be used in | | 5834 | <code class="varname">MASTER_SITES</code>, which can be used in |
5835 | packages. The names of the variables should speak for | | 5835 | packages. The names of the variables should speak for |
5836 | themselves.</p> | | 5836 | themselves.</p> |
5837 | <pre class="programlisting"> | | 5837 | <pre class="programlisting"> |
5838 | ${MASTER_SITE_APACHE} | | 5838 | ${MASTER_SITE_APACHE} |
5839 | ${MASTER_SITE_BACKUP} | | 5839 | ${MASTER_SITE_BACKUP} |
5840 | ${MASTER_SITE_CYGWIN} | | 5840 | ${MASTER_SITE_CYGWIN} |
5841 | ${MASTER_SITE_DEBIAN} | | 5841 | ${MASTER_SITE_DEBIAN} |
5842 | ${MASTER_SITE_FREEBSD} | | 5842 | ${MASTER_SITE_FREEBSD} |
5843 | ${MASTER_SITE_FREEBSD_LOCAL} | | 5843 | ${MASTER_SITE_FREEBSD_LOCAL} |
5844 | ${MASTER_SITE_GENTOO} | | 5844 | ${MASTER_SITE_GENTOO} |
5845 | ${MASTER_SITE_GNOME} | | 5845 | ${MASTER_SITE_GNOME} |
5846 | ${MASTER_SITE_GNU} | | 5846 | ${MASTER_SITE_GNU} |
5847 | ${MASTER_SITE_GNUSTEP} | | 5847 | ${MASTER_SITE_GNUSTEP} |
5848 | ${MASTER_SITE_HASKELL_HACKAGE} | | 5848 | ${MASTER_SITE_HASKELL_HACKAGE} |
5849 | ${MASTER_SITE_IFARCHIVE} | | 5849 | ${MASTER_SITE_IFARCHIVE} |
5850 | ${MASTER_SITE_KDE} | | 5850 | ${MASTER_SITE_KDE} |
5851 | ${MASTER_SITE_MOZILLA} | | 5851 | ${MASTER_SITE_MOZILLA} |
5852 | ${MASTER_SITE_MOZILLA_ALL} | | 5852 | ${MASTER_SITE_MOZILLA_ALL} |
5853 | ${MASTER_SITE_MOZILLA_ESR} | | 5853 | ${MASTER_SITE_MOZILLA_ESR} |
5854 | ${MASTER_SITE_MYSQL} | | 5854 | ${MASTER_SITE_MYSQL} |
5855 | ${MASTER_SITE_NETLIB} | | 5855 | ${MASTER_SITE_NETLIB} |
5856 | ${MASTER_SITE_OPENOFFICE} | | 5856 | ${MASTER_SITE_OPENOFFICE} |
5857 | ${MASTER_SITE_OSDN} | | 5857 | ${MASTER_SITE_OSDN} |
5858 | ${MASTER_SITE_PERL_CPAN} | | 5858 | ${MASTER_SITE_PERL_CPAN} |
5859 | ${MASTER_SITE_PGSQL} | | 5859 | ${MASTER_SITE_PGSQL} |
5860 | ${MASTER_SITE_RUBYGEMS} | | 5860 | ${MASTER_SITE_RUBYGEMS} |
5861 | ${MASTER_SITE_R_CRAN} | | 5861 | ${MASTER_SITE_R_CRAN} |
5862 | ${MASTER_SITE_SOURCEFORGE} | | 5862 | ${MASTER_SITE_SOURCEFORGE} |
5863 | ${MASTER_SITE_SUNSITE} | | 5863 | ${MASTER_SITE_SUNSITE} |
5864 | ${MASTER_SITE_SUSE} | | 5864 | ${MASTER_SITE_SUSE} |
5865 | ${MASTER_SITE_TEX_CTAN} | | 5865 | ${MASTER_SITE_TEX_CTAN} |
5866 | ${MASTER_SITE_XCONTRIB} | | 5866 | ${MASTER_SITE_XCONTRIB} |
5867 | ${MASTER_SITE_XEMACS} | | 5867 | ${MASTER_SITE_XEMACS} |
5868 | ${MASTER_SITE_XORG} | | 5868 | ${MASTER_SITE_XORG} |
5869 | </pre> | | 5869 | </pre> |
5870 | <p>Some explanations for the less self-explaining ones: | | 5870 | <p>Some explanations for the less self-explaining ones: |
5871 | <code class="varname">MASTER_SITE_BACKUP</code> contains backup sites | | 5871 | <code class="varname">MASTER_SITE_BACKUP</code> contains backup sites |
5872 | 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 | | 5872 | 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 |
5873 | 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> | | 5873 | 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> |
5874 | <p>If you choose one of these predefined sites, you may | | 5874 | <p>If you choose one of these predefined sites, you may |
5875 | want to specify a subdirectory of that site. Since these | | 5875 | want to specify a subdirectory of that site. Since these |
5876 | macros may expand to more than one actual site, you | | 5876 | macros may expand to more than one actual site, you |
5877 | <span class="emphasis"><em>must</em></span> use the following construct to | | 5877 | <span class="emphasis"><em>must</em></span> use the following construct to |
5878 | specify a subdirectory:</p> | | 5878 | specify a subdirectory:</p> |
5879 | <pre class="programlisting"> | | 5879 | <pre class="programlisting"> |
5880 | MASTER_SITES= ${MASTER_SITE_GNU:=subdirectory/name/} | | 5880 | MASTER_SITES= ${MASTER_SITE_GNU:=subdirectory/name/} |
5881 | MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=project_name/} | | 5881 | MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=project_name/} |
5882 | </pre> | | 5882 | </pre> |
5883 | <p>Note the trailing slash after the subdirectory | | 5883 | <p>Note the trailing slash after the subdirectory |
5884 | name.</p> | | 5884 | name.</p> |
5885 | </div> | | 5885 | </div> |
5886 | <div class="sect2"> | | 5886 | <div class="sect2"> |
5887 | <div class="titlepage"><div><div><h3 class="title"> | | 5887 | <div class="titlepage"><div><div><h3 class="title"> |
5888 | <a name="build.fetch.how"></a>17.5.2. How are the files fetched?</h3></div></div></div> | | 5888 | <a name="build.fetch.how"></a>17.5.2. How are the files fetched?</h3></div></div></div> |
5889 | <p>The <span class="emphasis"><em>fetch</em></span> phase makes sure that | | 5889 | <p>The <span class="emphasis"><em>fetch</em></span> phase makes sure that |
5890 | all the distfiles exist in a local directory | | 5890 | all the distfiles exist in a local directory |
5891 | (<code class="varname">DISTDIR</code>, which can be set by the pkgsrc | | 5891 | (<code class="varname">DISTDIR</code>, which can be set by the pkgsrc |
5892 | user). If the files do not exist, they are fetched using | | 5892 | user). If the files do not exist, they are fetched using |
5893 | commands of the form</p> | | 5893 | commands of the form</p> |
5894 | <pre class="programlisting"> | | 5894 | <pre class="programlisting"> |
5895 | ${FETCH_CMD} ${FETCH_BEFORE_ARGS} ${site}${file} ${FETCH_AFTER_ARGS} | | 5895 | ${FETCH_CMD} ${FETCH_BEFORE_ARGS} ${site}${file} ${FETCH_AFTER_ARGS} |
5896 | </pre> | | 5896 | </pre> |
5897 | <p>where <code class="literal">${site}</code> varies through | | 5897 | <p>where <code class="literal">${site}</code> varies through |
5898 | several possibilities in turn: first, | | 5898 | several possibilities in turn: first, |
5899 | <code class="varname">MASTER_SITE_OVERRIDE</code> is tried, then the | | 5899 | <code class="varname">MASTER_SITE_OVERRIDE</code> is tried, then the |
5900 | sites specified in either <code class="varname">SITES.file</code> if | | 5900 | sites specified in either <code class="varname">SITES.file</code> if |
5901 | defined, else <code class="varname">MASTER_SITES</code> or | | 5901 | defined, else <code class="varname">MASTER_SITES</code> or |
5902 | <code class="varname">PATCH_SITES</code>, as applies, then finally the | | 5902 | <code class="varname">PATCH_SITES</code>, as applies, then finally the |
5903 | value of <code class="varname">MASTER_SITE_BACKUP</code>. The order of | | 5903 | value of <code class="varname">MASTER_SITE_BACKUP</code>. The order of |
5904 | all except the first and the last can be optionally sorted | | 5904 | all except the first and the last can be optionally sorted |
5905 | by the user, via setting either | | 5905 | by the user, via setting either |
5906 | <code class="varname">MASTER_SORT_RANDOM</code>, and | | 5906 | <code class="varname">MASTER_SORT_RANDOM</code>, and |
5907 | <code class="varname">MASTER_SORT_AWK</code> or | | 5907 | <code class="varname">MASTER_SORT_AWK</code> or |
5908 | <code class="varname">MASTER_SORT_REGEX</code>.</p> | | 5908 | <code class="varname">MASTER_SORT_REGEX</code>.</p> |
5909 | <p> The specific command and arguments used depend on the | | 5909 | <p> The specific command and arguments used depend on the |
5910 | <code class="varname">FETCH_USING</code> parameter. The example above is | | 5910 | <code class="varname">FETCH_USING</code> parameter. The example above is |
5911 | for <code class="literal">FETCH_USING=custom</code>.</p> | | 5911 | for <code class="literal">FETCH_USING=custom</code>.</p> |
5912 | <p>The distfiles mirror run by the NetBSD Foundation uses the | | 5912 | <p>The distfiles mirror run by the NetBSD Foundation uses the |
5913 | <span class="emphasis"><em>mirror-distfiles</em></span> target to mirror the | | 5913 | <span class="emphasis"><em>mirror-distfiles</em></span> target to mirror the |
5914 | distfiles, if they are freely distributable. Packages setting | | 5914 | distfiles, if they are freely distributable. Packages setting |
5915 | <code class="varname">NO_SRC_ON_FTP</code> (usually to | | 5915 | <code class="varname">NO_SRC_ON_FTP</code> (usually to |
5916 | <span class="quote">“<span class="quote">${RESTRICTED}</span>”</span>) will not have their distfiles | | 5916 | <span class="quote">“<span class="quote">${RESTRICTED}</span>”</span>) will not have their distfiles |
5917 | mirrored.</p> | | 5917 | mirrored.</p> |
5918 | </div> | | 5918 | </div> |
5919 | </div> | | 5919 | </div> |
5920 | <div class="sect1"> | | 5920 | <div class="sect1"> |
5921 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5921 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5922 | <a name="build.checksum"></a>17.6. The <span class="emphasis"><em>checksum</em></span> phase</h2></div></div></div> | | 5922 | <a name="build.checksum"></a>17.6. The <span class="emphasis"><em>checksum</em></span> phase</h2></div></div></div> |
5923 | <p>After the distfile(s) are fetched, their checksum is | | 5923 | <p>After the distfile(s) are fetched, their checksum is |
5924 | generated and compared with the checksums stored in the | | 5924 | generated and compared with the checksums stored in the |
5925 | distinfo file. If the checksums don't match, the build is | | 5925 | distinfo file. If the checksums don't match, the build is |
5926 | aborted. This is to ensure the same distfile is used for | | 5926 | aborted. This is to ensure the same distfile is used for |
5927 | building, and that the distfile wasn't changed, e.g. by some | | 5927 | building, and that the distfile wasn't changed, e.g. by some |
5928 | malign force, deliberately changed distfiles on the master | | 5928 | malign force, deliberately changed distfiles on the master |
5929 | distribution site or network lossage.</p> | | 5929 | distribution site or network lossage.</p> |
5930 | </div> | | 5930 | </div> |
5931 | <div class="sect1"> | | 5931 | <div class="sect1"> |
5932 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5932 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5933 | <a name="build.extract"></a>17.7. The <span class="emphasis"><em>extract</em></span> phase</h2></div></div></div> | | 5933 | <a name="build.extract"></a>17.7. The <span class="emphasis"><em>extract</em></span> phase</h2></div></div></div> |
5934 | <p>When the distfiles are present on the local system, they | | 5934 | <p>When the distfiles are present on the local system, they |
5935 | need to be extracted, as they usually come in the form of some | | 5935 | need to be extracted, as they usually come in the form of some |
5936 | compressed archive format.</p> | | 5936 | compressed archive format.</p> |
5937 | <p>By default, all <code class="varname">DISTFILES</code> are | | 5937 | <p>By default, all <code class="varname">DISTFILES</code> are |
5938 | extracted. If you only need some of them, you can set the | | 5938 | extracted. If you only need some of them, you can set the |
5939 | <code class="varname">EXTRACT_ONLY</code> variable to the list of those | | 5939 | <code class="varname">EXTRACT_ONLY</code> variable to the list of those |
5940 | files.</p> | | 5940 | files.</p> |
5941 | <p>Extracting the files is usually done by a little | | 5941 | <p>Extracting the files is usually done by a little |
5942 | program, <code class="filename">mk/extract/extract</code>, which | | 5942 | program, <code class="filename">mk/extract/extract</code>, which |
5943 | already knows how to extract various archive formats, so most | | 5943 | already knows how to extract various archive formats, so most |
5944 | likely you will not need to change anything here. But if you | | 5944 | likely you will not need to change anything here. But if you |
5945 | need, the following variables may help you:</p> | | 5945 | need, the following variables may help you:</p> |
5946 | <div class="variablelist"><dl class="variablelist"> | | 5946 | <div class="variablelist"><dl class="variablelist"> |
5947 | <dt><span class="term"><code class="varname">EXTRACT_OPTS_{BIN,LHA,PAX,RAR,TAR,ZIP,ZOO}</code></span></dt> | | 5947 | <dt><span class="term"><code class="varname">EXTRACT_OPTS_{BIN,LHA,PAX,RAR,TAR,ZIP,ZOO}</code></span></dt> |
5948 | <dd><p>Use these variables to override the default | | 5948 | <dd><p>Use these variables to override the default |
5949 | options for an extract command, which are defined in | | 5949 | options for an extract command, which are defined in |
5950 | <code class="filename">mk/extract/extract</code>.</p></dd> | | 5950 | <code class="filename">mk/extract/extract</code>.</p></dd> |
5951 | <dt><span class="term"><code class="varname">EXTRACT_USING</code></span></dt> | | 5951 | <dt><span class="term"><code class="varname">EXTRACT_USING</code></span></dt> |
5952 | <dd><p>This variable can be set to | | 5952 | <dd><p>This variable can be set to |
5953 | <code class="literal">bsdtar</code>, <code class="literal">gtar</code>, <code class="literal">nbtar</code> | | 5953 | <code class="literal">bsdtar</code>, <code class="literal">gtar</code>, <code class="literal">nbtar</code> |
5954 | (which is the default value), <code class="literal">pax</code>, or an | | 5954 | (which is the default value), <code class="literal">pax</code>, or an |
5955 | absolute pathname pointing to the command with which tar | | 5955 | absolute pathname pointing to the command with which tar |
5956 | archives should be extracted. It is preferred to choose bsdtar over gtar | | 5956 | archives should be extracted. It is preferred to choose bsdtar over gtar |
5957 | if NetBSD's pax-as-tar is not good enough.</p></dd> | | 5957 | if NetBSD's pax-as-tar is not good enough.</p></dd> |
5958 | </dl></div> | | 5958 | </dl></div> |
5959 | <p>If the <code class="filename">extract</code> program doesn't | | 5959 | <p>If the <code class="filename">extract</code> program doesn't |
5960 | serve your needs, you can also override the | | 5960 | serve your needs, you can also override the |
5961 | <code class="varname">EXTRACT_CMD</code> variable, which holds the | | 5961 | <code class="varname">EXTRACT_CMD</code> variable, which holds the |
5962 | command used for extracting the files. This command is | | 5962 | command used for extracting the files. This command is |
5963 | executed in the <code class="filename">${WRKSRC}</code> | | 5963 | executed in the <code class="filename">${WRKSRC}</code> |
5964 | directory. During execution of this command, the shell | | 5964 | directory. During execution of this command, the shell |
5965 | variable <code class="varname">extract_file</code> holds the absolute | | 5965 | variable <code class="varname">extract_file</code> holds the absolute |
5966 | pathname of the file that is going to be extracted.</p> | | 5966 | pathname of the file that is going to be extracted.</p> |
5967 | <p>And if that still does not suffice, you can override the | | 5967 | <p>And if that still does not suffice, you can override the |
5968 | <code class="varname">do-extract</code> target in the package | | 5968 | <code class="varname">do-extract</code> target in the package |
5969 | Makefile.</p> | | 5969 | Makefile.</p> |
5970 | </div> | | 5970 | </div> |
5971 | <div class="sect1"> | | 5971 | <div class="sect1"> |
5972 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5972 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5973 | <a name="build.patch"></a>17.8. The <span class="emphasis"><em>patch</em></span> phase</h2></div></div></div> | | 5973 | <a name="build.patch"></a>17.8. The <span class="emphasis"><em>patch</em></span> phase</h2></div></div></div> |
5974 | <p>After extraction, all the patches named by the | | 5974 | <p>After extraction, all the patches named by the |
5975 | <code class="varname">PATCHFILES</code>, those present in the patches | | 5975 | <code class="varname">PATCHFILES</code>, those present in the patches |
5976 | subdirectory of the package as well as in | | 5976 | subdirectory of the package as well as in |
5977 | $LOCALPATCHES/$PKGPATH (e.g. | | 5977 | $LOCALPATCHES/$PKGPATH (e.g. |
5978 | <code class="filename">/usr/local/patches/graphics/png</code>) are | | 5978 | <code class="filename">/usr/local/patches/graphics/png</code>) are |
5979 | applied. Patchfiles ending in <code class="filename">.Z</code> or | | 5979 | applied. Patchfiles ending in <code class="filename">.Z</code> or |
5980 | <code class="filename">.gz</code> are uncompressed before they are | | 5980 | <code class="filename">.gz</code> are uncompressed before they are |
5981 | applied, files ending in <code class="filename">.orig</code> or | | 5981 | applied, files ending in <code class="filename">.orig</code> or |
5982 | <code class="filename">.rej</code> are ignored. Any special options to | | 5982 | <code class="filename">.rej</code> are ignored. Any special options to |
5983 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?patch+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">patch</span>(1)</span></a> can be handed in | | 5983 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?patch+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">patch</span>(1)</span></a> can be handed in |
5984 | <code class="varname">PATCH_DIST_ARGS</code>. See <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “<code class="filename">patches/*</code>”</a> for more details.</p> | | 5984 | <code class="varname">PATCH_DIST_ARGS</code>. See <a class="xref" href="#components.patches" title="11.3. patches/*">Section 11.3, “<code class="filename">patches/*</code>”</a> for more details.</p> |
5985 | <p>By default <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?patch+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">patch</span>(1)</span></a> is given special args to make | | 5985 | <p>By default <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?patch+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">patch</span>(1)</span></a> is given special args to make |
5986 | it fail if the patches apply with some lines of fuzz. Please | | 5986 | it fail if the patches apply with some lines of fuzz. Please |
5987 | fix (regen) the patches so that they apply cleanly. The | | 5987 | fix (regen) the patches so that they apply cleanly. The |
5988 | rationale behind this is that patches that don't apply cleanly | | 5988 | rationale behind this is that patches that don't apply cleanly |
5989 | may end up being applied in the wrong place, and cause severe | | 5989 | may end up being applied in the wrong place, and cause severe |
5990 | harm there.</p> | | 5990 | harm there.</p> |
5991 | </div> | | 5991 | </div> |
5992 | <div class="sect1"> | | 5992 | <div class="sect1"> |
5993 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5993 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
5994 | <a name="build.tools"></a>17.9. The <span class="emphasis"><em>tools</em></span> phase</h2></div></div></div> | | 5994 | <a name="build.tools"></a>17.9. The <span class="emphasis"><em>tools</em></span> phase</h2></div></div></div> |
5995 | <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>. | | 5995 | <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>. |
5996 | </p> | | 5996 | </p> |
5997 | </div> | | 5997 | </div> |
5998 | <div class="sect1"> | | 5998 | <div class="sect1"> |
5999 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 5999 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6000 | <a name="build.wrapper"></a>17.10. The <span class="emphasis"><em>wrapper</em></span> phase</h2></div></div></div> | | 6000 | <a name="build.wrapper"></a>17.10. The <span class="emphasis"><em>wrapper</em></span> phase</h2></div></div></div> |
6001 | <p>This phase creates wrapper programs for the compilers and | | 6001 | <p>This phase creates wrapper programs for the compilers and |
6002 | linkers. The following variables can be used to tweak the | | 6002 | linkers. The following variables can be used to tweak the |
6003 | wrappers.</p> | | 6003 | wrappers.</p> |
6004 | <div class="variablelist"><dl class="variablelist"> | | 6004 | <div class="variablelist"><dl class="variablelist"> |
6005 | <dt><span class="term"><code class="varname">ECHO_WRAPPER_MSG</code></span></dt> | | 6005 | <dt><span class="term"><code class="varname">ECHO_WRAPPER_MSG</code></span></dt> |
6006 | <dd><p>The command used to print progress | | 6006 | <dd><p>The command used to print progress |
6007 | messages. Does nothing by default. Set to | | 6007 | messages. Does nothing by default. Set to |
6008 | <code class="literal">${ECHO}</code> to see the progress | | 6008 | <code class="literal">${ECHO}</code> to see the progress |
6009 | messages.</p></dd> | | 6009 | messages.</p></dd> |
6010 | <dt><span class="term"><code class="varname">WRAPPER_DEBUG</code></span></dt> | | 6010 | <dt><span class="term"><code class="varname">WRAPPER_DEBUG</code></span></dt> |
6011 | <dd><p>This variable can be set to | | 6011 | <dd><p>This variable can be set to |
6012 | <code class="literal">yes</code> (default) or <code class="literal">no</code>, | | 6012 | <code class="literal">yes</code> (default) or <code class="literal">no</code>, |
6013 | depending on whether you want additional information in the | | 6013 | depending on whether you want additional information in the |
6014 | wrapper log file.</p></dd> | | 6014 | wrapper log file.</p></dd> |
6015 | <dt><span class="term"><code class="varname">WRAPPER_UPDATE_CACHE</code></span></dt> | | 6015 | <dt><span class="term"><code class="varname">WRAPPER_UPDATE_CACHE</code></span></dt> |
6016 | <dd><p>This variable can be set to | | 6016 | <dd><p>This variable can be set to |
6017 | <code class="literal">yes</code> or <code class="literal">no</code>, depending | | 6017 | <code class="literal">yes</code> or <code class="literal">no</code>, depending |
6018 | on whether the wrapper should use its cache, which will | | 6018 | on whether the wrapper should use its cache, which will |
6019 | improve the speed. The default value is | | 6019 | improve the speed. The default value is |
6020 | <code class="literal">yes</code>, but is forced to | | 6020 | <code class="literal">yes</code>, but is forced to |
6021 | <code class="literal">no</code> if the platform does not support | | 6021 | <code class="literal">no</code> if the platform does not support |
6022 | it.</p></dd> | | 6022 | it.</p></dd> |
6023 | <dt><span class="term"><code class="varname">WRAPPER_REORDER_CMDS</code></span></dt> | | 6023 | <dt><span class="term"><code class="varname">WRAPPER_REORDER_CMDS</code></span></dt> |
6024 | <dd><p>A list of reordering commands. A reordering | | 6024 | <dd><p>A list of reordering commands. A reordering |
6025 | command has the form | | 6025 | command has the form |
6026 | <code class="literal">reorder:l:<em class="replaceable"><code>lib1</code></em>:<em class="replaceable"><code>lib2</code></em></code>. | | 6026 | <code class="literal">reorder:l:<em class="replaceable"><code>lib1</code></em>:<em class="replaceable"><code>lib2</code></em></code>. |
6027 | It ensures that that | | 6027 | It ensures that that |
6028 | <code class="literal">-l<em class="replaceable"><code>lib1</code></em></code> occurs | | 6028 | <code class="literal">-l<em class="replaceable"><code>lib1</code></em></code> occurs |
6029 | before <code class="literal">-l<em class="replaceable"><code>lib2</code></em></code>. | | 6029 | before <code class="literal">-l<em class="replaceable"><code>lib2</code></em></code>. |
6030 | </p></dd> | | 6030 | </p></dd> |
6031 | <dt><span class="term"><code class="varname">WRAPPER_TRANSFORM_CMDS</code></span></dt> | | 6031 | <dt><span class="term"><code class="varname">WRAPPER_TRANSFORM_CMDS</code></span></dt> |
6032 | <dd><p>A list of transformation commands. [TODO: | | 6032 | <dd><p>A list of transformation commands. [TODO: |
6033 | investigate further]</p></dd> | | 6033 | investigate further]</p></dd> |
6034 | </dl></div> | | 6034 | </dl></div> |
6035 | </div> | | 6035 | </div> |
6036 | <div class="sect1"> | | 6036 | <div class="sect1"> |
6037 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6037 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6038 | <a name="build.configure"></a>17.11. The <span class="emphasis"><em>configure</em></span> phase</h2></div></div></div> | | 6038 | <a name="build.configure"></a>17.11. The <span class="emphasis"><em>configure</em></span> phase</h2></div></div></div> |
6039 | <p>Most pieces of software need information on the header | | 6039 | <p>Most pieces of software need information on the header |
6040 | files, system calls, and library routines which are available | | 6040 | files, system calls, and library routines which are available |
6041 | on the platform they run on. The process of determining this | | 6041 | on the platform they run on. The process of determining this |
6042 | information is known as configuration, and is usually | | 6042 | information is known as configuration, and is usually |
6043 | automated. In most cases, a script is supplied with the | | 6043 | automated. In most cases, a script is supplied with the |
6044 | distfiles, and its invocation results in generation of header | | 6044 | distfiles, and its invocation results in generation of header |
6045 | files, Makefiles, etc.</p> | | 6045 | files, Makefiles, etc.</p> |
6046 | <p>If the package contains a configure script, this can be | | 6046 | <p>If the package contains a configure script, this can be |
6047 | invoked by setting <code class="varname">HAS_CONFIGURE</code> to | | 6047 | invoked by setting <code class="varname">HAS_CONFIGURE</code> to |
6048 | <span class="quote">“<span class="quote">yes</span>”</span>. If the configure script is a GNU autoconf | | 6048 | <span class="quote">“<span class="quote">yes</span>”</span>. If the configure script is a GNU autoconf |
6049 | script, you should set <code class="varname">GNU_CONFIGURE</code> to | | 6049 | script, you should set <code class="varname">GNU_CONFIGURE</code> to |
6050 | <span class="quote">“<span class="quote">yes</span>”</span> instead. What happens in the | | 6050 | <span class="quote">“<span class="quote">yes</span>”</span> instead. What happens in the |
6051 | <span class="emphasis"><em>configure</em></span> phase is roughly:</p> | | 6051 | <span class="emphasis"><em>configure</em></span> phase is roughly:</p> |
6052 | <pre class="programlisting"> | | 6052 | <pre class="programlisting"> |
6053 | .for d in ${CONFIGURE_DIRS} | | 6053 | .for d in ${CONFIGURE_DIRS} |
6054 | cd ${WRKSRC} \ | | 6054 | cd ${WRKSRC} \ |
6055 | && cd ${d} \ | | 6055 | && cd ${d} \ |
6056 | && env ${CONFIGURE_ENV} ${CONFIGURE_SCRIPT} ${CONFIGURE_ARGS} | | 6056 | && env ${CONFIGURE_ENV} ${CONFIGURE_SCRIPT} ${CONFIGURE_ARGS} |
6057 | .endfor | | 6057 | .endfor |
6058 | </pre> | | 6058 | </pre> |
6059 | <p><code class="varname">CONFIGURE_DIRS</code> (default: | | 6059 | <p><code class="varname">CONFIGURE_DIRS</code> (default: |
6060 | <span class="quote">“<span class="quote">.</span>”</span>) is a list of pathnames relative to | | 6060 | <span class="quote">“<span class="quote">.</span>”</span>) is a list of pathnames relative to |
6061 | <code class="varname">WRKSRC</code>. In each of these directories, the | | 6061 | <code class="varname">WRKSRC</code>. In each of these directories, the |
6062 | configure script is run with the environment | | 6062 | configure script is run with the environment |
6063 | <code class="varname">CONFIGURE_ENV</code> and arguments | | 6063 | <code class="varname">CONFIGURE_ENV</code> and arguments |
6064 | <code class="varname">CONFIGURE_ARGS</code>. The variables | | 6064 | <code class="varname">CONFIGURE_ARGS</code>. The variables |
6065 | <code class="varname">CONFIGURE_ENV</code>, | | 6065 | <code class="varname">CONFIGURE_ENV</code>, |
6066 | <code class="varname">CONFIGURE_SCRIPT</code> (default: | | 6066 | <code class="varname">CONFIGURE_SCRIPT</code> (default: |
6067 | <span class="quote">“<span class="quote">./configure</span>”</span>) and | | 6067 | <span class="quote">“<span class="quote">./configure</span>”</span>) and |
6068 | <code class="varname">CONFIGURE_ARGS</code> may all be changed by the | | 6068 | <code class="varname">CONFIGURE_ARGS</code> may all be changed by the |
6069 | package.</p> | | 6069 | package.</p> |
6070 | <p>If the program uses the Perl way of configuration (mainly Perl | | 6070 | <p>If the program uses the Perl way of configuration (mainly Perl |
6071 | modules, but not only), i.e. a file called | | 6071 | modules, but not only), i.e. a file called |
6072 | <code class="filename">Makefile.PL</code>, it should include | | 6072 | <code class="filename">Makefile.PL</code>, it should include |
6073 | <code class="filename">../../lang/perl5/module.mk</code>. To set any parameter for | | 6073 | <code class="filename">../../lang/perl5/module.mk</code>. To set any parameter for |
6074 | <code class="filename">Makefile.PL</code> use the <code class="varname">MAKE_PARAMS</code> | | 6074 | <code class="filename">Makefile.PL</code> use the <code class="varname">MAKE_PARAMS</code> |
6075 | variable (e.g., <code class="literal">MAKE_PARAMS+=foo=bar</code></p> | | 6075 | variable (e.g., <code class="literal">MAKE_PARAMS+=foo=bar</code></p> |
6076 | <p>If the program uses an <code class="filename">Imakefile</code> | | 6076 | <p>If the program uses an <code class="filename">Imakefile</code> |
6077 | for configuration, the appropriate steps can be invoked by | | 6077 | for configuration, the appropriate steps can be invoked by |
6078 | setting <code class="varname">USE_IMAKE</code> to | | 6078 | setting <code class="varname">USE_IMAKE</code> to |
6079 | <span class="quote">“<span class="quote">yes</span>”</span>. If you only need xmkmf, add it to <code class="varname">USE_TOOLS</code>. | | 6079 | <span class="quote">“<span class="quote">yes</span>”</span>. If you only need xmkmf, add it to <code class="varname">USE_TOOLS</code>. |
6080 | You can add variables to xmkmf's environment by adding them to the | | 6080 | You can add variables to xmkmf's environment by adding them to the |
6081 | <code class="varname">SCRIPTS_ENV</code> variable.</p> | | 6081 | <code class="varname">SCRIPTS_ENV</code> variable.</p> |
6082 | <p>If the program uses <code class="filename">cmake</code> | | 6082 | <p>If the program uses <code class="filename">cmake</code> |
6083 | for configuration, the appropriate steps can be invoked by | | 6083 | for configuration, the appropriate steps can be invoked by |
6084 | setting <code class="varname">USE_CMAKE</code> to <span class="quote">“<span class="quote">yes</span>”</span>. | | 6084 | setting <code class="varname">USE_CMAKE</code> to <span class="quote">“<span class="quote">yes</span>”</span>. |
6085 | You can add variables to cmake's environment by adding them to the | | 6085 | You can add variables to cmake's environment by adding them to the |
6086 | <code class="varname">CONFIGURE_ENV</code> variable and arguments to cmake | | 6086 | <code class="varname">CONFIGURE_ENV</code> variable and arguments to cmake |
6087 | by adding them to the <code class="varname">CMAKE_ARGS</code> variable. | | 6087 | by adding them to the <code class="varname">CMAKE_ARGS</code> variable. |
6088 | The top directory argument is given by the | | 6088 | The top directory argument is given by the |
6089 | <code class="varname">CMAKE_ARG_PATH</code> variable, that defaults to | | 6089 | <code class="varname">CMAKE_ARG_PATH</code> variable, that defaults to |
6090 | <span class="quote">“<span class="quote">.</span>”</span> (relative to <code class="varname">CONFIGURE_DIRS</code>)</p> | | 6090 | <span class="quote">“<span class="quote">.</span>”</span> (relative to <code class="varname">CONFIGURE_DIRS</code>)</p> |
6091 | <p>If there is no configure step at all, set | | 6091 | <p>If there is no configure step at all, set |
6092 | <code class="varname">NO_CONFIGURE</code> to <span class="quote">“<span class="quote">yes</span>”</span>.</p> | | 6092 | <code class="varname">NO_CONFIGURE</code> to <span class="quote">“<span class="quote">yes</span>”</span>.</p> |
6093 | </div> | | 6093 | </div> |
6094 | <div class="sect1"> | | 6094 | <div class="sect1"> |
6095 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6095 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6096 | <a name="build.build"></a>17.12. The <span class="emphasis"><em>build</em></span> phase</h2></div></div></div> | | 6096 | <a name="build.build"></a>17.12. The <span class="emphasis"><em>build</em></span> phase</h2></div></div></div> |
6097 | <p>For building a package, a rough equivalent of the | | 6097 | <p>For building a package, a rough equivalent of the |
6098 | following code is executed.</p> | | 6098 | following code is executed.</p> |
6099 | <pre class="programlisting"> | | 6099 | <pre class="programlisting"> |
6100 | .for d in ${BUILD_DIRS} | | 6100 | .for d in ${BUILD_DIRS} |
6101 | cd ${WRKSRC} \ | | 6101 | cd ${WRKSRC} \ |
6102 | && cd ${d} \ | | 6102 | && cd ${d} \ |
6103 | && env ${MAKE_ENV} \ | | 6103 | && env ${MAKE_ENV} \ |
6104 | ${MAKE_PROGRAM} ${BUILD_MAKE_FLAGS} \ | | 6104 | ${MAKE_PROGRAM} ${BUILD_MAKE_FLAGS} \ |
6105 | -f ${MAKE_FILE} \ | | 6105 | -f ${MAKE_FILE} \ |
6106 | ${BUILD_TARGET} | | 6106 | ${BUILD_TARGET} |
6107 | .endfor | | 6107 | .endfor |
6108 | </pre> | | 6108 | </pre> |
6109 | <p><code class="varname">BUILD_DIRS</code> (default: | | 6109 | <p><code class="varname">BUILD_DIRS</code> (default: |
6110 | <span class="quote">“<span class="quote">.</span>”</span>) is a list of pathnames relative to | | 6110 | <span class="quote">“<span class="quote">.</span>”</span>) is a list of pathnames relative to |
6111 | <code class="varname">WRKSRC</code>. In each of these directories, | | 6111 | <code class="varname">WRKSRC</code>. In each of these directories, |
6112 | <code class="varname">MAKE_PROGRAM</code> is run with the environment | | 6112 | <code class="varname">MAKE_PROGRAM</code> is run with the environment |
6113 | <code class="varname">MAKE_ENV</code> and arguments | | 6113 | <code class="varname">MAKE_ENV</code> and arguments |
6114 | <code class="varname">BUILD_MAKE_FLAGS</code>. The variables | | 6114 | <code class="varname">BUILD_MAKE_FLAGS</code>. The variables |
6115 | <code class="varname">MAKE_ENV</code>, | | 6115 | <code class="varname">MAKE_ENV</code>, |
6116 | <code class="varname">BUILD_MAKE_FLAGS</code>, | | 6116 | <code class="varname">BUILD_MAKE_FLAGS</code>, |
6117 | <code class="varname">MAKE_FILE</code> and | | 6117 | <code class="varname">MAKE_FILE</code> and |
6118 | <code class="varname">BUILD_TARGET</code> may all be changed by the | | 6118 | <code class="varname">BUILD_TARGET</code> may all be changed by the |
6119 | package.</p> | | 6119 | package.</p> |
6120 | <p>The default value of <code class="varname">MAKE_PROGRAM</code> is | | 6120 | <p>The default value of <code class="varname">MAKE_PROGRAM</code> is |
6121 | <span class="quote">“<span class="quote">gmake</span>”</span> if <code class="varname">USE_TOOLS</code> contains | | 6121 | <span class="quote">“<span class="quote">gmake</span>”</span> if <code class="varname">USE_TOOLS</code> contains |
6122 | <span class="quote">“<span class="quote">gmake</span>”</span>, <span class="quote">“<span class="quote">make</span>”</span> otherwise. The | | 6122 | <span class="quote">“<span class="quote">gmake</span>”</span>, <span class="quote">“<span class="quote">make</span>”</span> otherwise. The |
6123 | default value of <code class="varname">MAKE_FILE</code> is | | 6123 | default value of <code class="varname">MAKE_FILE</code> is |
6124 | <span class="quote">“<span class="quote">Makefile</span>”</span>, and <code class="varname">BUILD_TARGET</code> | | 6124 | <span class="quote">“<span class="quote">Makefile</span>”</span>, and <code class="varname">BUILD_TARGET</code> |
6125 | defaults to <span class="quote">“<span class="quote">all</span>”</span>.</p> | | 6125 | defaults to <span class="quote">“<span class="quote">all</span>”</span>.</p> |
6126 | <p>If there is no build step at all, set | | 6126 | <p>If there is no build step at all, set |
6127 | <code class="varname">NO_BUILD</code> to <span class="quote">“<span class="quote">yes</span>”</span>.</p> | | 6127 | <code class="varname">NO_BUILD</code> to <span class="quote">“<span class="quote">yes</span>”</span>.</p> |
6128 | </div> | | 6128 | </div> |
6129 | <div class="sect1"> | | 6129 | <div class="sect1"> |
6130 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6130 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6131 | <a name="build.test"></a>17.13. The <span class="emphasis"><em>test</em></span> phase</h2></div></div></div> | | 6131 | <a name="build.test"></a>17.13. The <span class="emphasis"><em>test</em></span> phase</h2></div></div></div> |
6132 | <p>[TODO]</p> | | 6132 | <p>[TODO]</p> |
6133 | </div> | | 6133 | </div> |
6134 | <div class="sect1"> | | 6134 | <div class="sect1"> |
6135 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6135 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6136 | <a name="build.install"></a>17.14. The <span class="emphasis"><em>install</em></span> phase</h2></div></div></div> | | 6136 | <a name="build.install"></a>17.14. The <span class="emphasis"><em>install</em></span> phase</h2></div></div></div> |
6137 | <p>Once the build stage has completed, the final step is to | | 6137 | <p>Once the build stage has completed, the final step is to |
6138 | install the software in public directories, so users can | | 6138 | install the software in public directories, so users can |
6139 | access the programs and files.</p> | | 6139 | access the programs and files.</p> |
6140 | <p>In the <span class="emphasis"><em>install</em></span> phase, a rough | | 6140 | <p>In the <span class="emphasis"><em>install</em></span> phase, a rough |
6141 | equivalent of the following code is executed. Additionally, | | 6141 | equivalent of the following code is executed. Additionally, |
6142 | before and after this code, much magic is performed to do | | 6142 | before and after this code, much magic is performed to do |
6143 | consistency checks, registering the package, and so on.</p> | | 6143 | consistency checks, registering the package, and so on.</p> |
6144 | <pre class="programlisting"> | | 6144 | <pre class="programlisting"> |
6145 | .for d in ${INSTALL_DIRS} | | 6145 | .for d in ${INSTALL_DIRS} |
6146 | cd ${WRKSRC} \ | | 6146 | cd ${WRKSRC} \ |
6147 | && cd ${d} \ | | 6147 | && cd ${d} \ |
6148 | && env ${MAKE_ENV} \ | | 6148 | && env ${MAKE_ENV} \ |
6149 | ${MAKE_PROGRAM} ${INSTALL_MAKE_FLAGS} \ | | 6149 | ${MAKE_PROGRAM} ${INSTALL_MAKE_FLAGS} \ |
6150 | -f ${MAKE_FILE} \ | | 6150 | -f ${MAKE_FILE} \ |
6151 | ${INSTALL_TARGET} | | 6151 | ${INSTALL_TARGET} |
6152 | .endfor | | 6152 | .endfor |
6153 | </pre> | | 6153 | </pre> |
6154 | <p>The variable's meanings are analogous to the ones in the | | 6154 | <p>The variable's meanings are analogous to the ones in the |
6155 | <span class="emphasis"><em>build</em></span> phase. | | 6155 | <span class="emphasis"><em>build</em></span> phase. |
6156 | <code class="varname">INSTALL_DIRS</code> defaults to | | 6156 | <code class="varname">INSTALL_DIRS</code> defaults to |
6157 | <code class="varname">BUILD_DIRS</code>. <code class="varname">INSTALL_TARGET</code> | | 6157 | <code class="varname">BUILD_DIRS</code>. <code class="varname">INSTALL_TARGET</code> |
6158 | is <span class="quote">“<span class="quote">install</span>”</span> by default, plus | | 6158 | is <span class="quote">“<span class="quote">install</span>”</span> by default, plus |
6159 | <span class="quote">“<span class="quote">install.man</span>”</span> if <code class="varname">USE_IMAKE</code> is | | 6159 | <span class="quote">“<span class="quote">install.man</span>”</span> if <code class="varname">USE_IMAKE</code> is |
6160 | defined and <code class="varname">NO_INSTALL_MANPAGES</code> is not | | 6160 | defined and <code class="varname">NO_INSTALL_MANPAGES</code> is not |
6161 | defined.</p> | | 6161 | defined.</p> |
6162 | <p>In the <span class="emphasis"><em>install</em></span> phase, the following | | 6162 | <p>In the <span class="emphasis"><em>install</em></span> phase, the following |
6163 | variables are useful. They are all variations of the | | 6163 | variables are useful. They are all variations of the |
6164 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?install+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">install</span>(1)</span></a> command that have the owner, group and | | 6164 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?install+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">install</span>(1)</span></a> command that have the owner, group and |
6165 | permissions preset. <code class="varname">INSTALL</code> is the plain | | 6165 | permissions preset. <code class="varname">INSTALL</code> is the plain |
6166 | install command. The specialized variants, together with their | | 6166 | install command. The specialized variants, together with their |
6167 | intended use, are:</p> | | 6167 | intended use, are:</p> |
6168 | <div class="variablelist"><dl class="variablelist"> | | 6168 | <div class="variablelist"><dl class="variablelist"> |
6169 | <dt><span class="term"><code class="varname">INSTALL_PROGRAM_DIR</code></span></dt> | | 6169 | <dt><span class="term"><code class="varname">INSTALL_PROGRAM_DIR</code></span></dt> |
6170 | <dd><p>directories that contain | | 6170 | <dd><p>directories that contain |
6171 | binaries</p></dd> | | 6171 | binaries</p></dd> |
6172 | <dt><span class="term"><code class="varname">INSTALL_SCRIPT_DIR</code></span></dt> | | 6172 | <dt><span class="term"><code class="varname">INSTALL_SCRIPT_DIR</code></span></dt> |
6173 | <dd><p>directories that contain | | 6173 | <dd><p>directories that contain |
6174 | scripts</p></dd> | | 6174 | scripts</p></dd> |
6175 | <dt><span class="term"><code class="varname">INSTALL_LIB_DIR</code></span></dt> | | 6175 | <dt><span class="term"><code class="varname">INSTALL_LIB_DIR</code></span></dt> |
6176 | <dd><p>directories that contain shared and static | | 6176 | <dd><p>directories that contain shared and static |
6177 | libraries</p></dd> | | 6177 | libraries</p></dd> |
6178 | <dt><span class="term"><code class="varname">INSTALL_DATA_DIR</code></span></dt> | | 6178 | <dt><span class="term"><code class="varname">INSTALL_DATA_DIR</code></span></dt> |
6179 | <dd><p>directories that contain data | | 6179 | <dd><p>directories that contain data |
6180 | files</p></dd> | | 6180 | files</p></dd> |
6181 | <dt><span class="term"><code class="varname">INSTALL_MAN_DIR</code></span></dt> | | 6181 | <dt><span class="term"><code class="varname">INSTALL_MAN_DIR</code></span></dt> |
6182 | <dd><p>directories that contain man | | 6182 | <dd><p>directories that contain man |
6183 | pages</p></dd> | | 6183 | pages</p></dd> |
6184 | <dt><span class="term"><code class="varname">INSTALL_GAME_DIR</code></span></dt> | | 6184 | <dt><span class="term"><code class="varname">INSTALL_GAME_DIR</code></span></dt> |
6185 | <dd><p>directories that contain data files for games | | 6185 | <dd><p>directories that contain data files for games |
6186 | </p></dd> | | 6186 | </p></dd> |
6187 | <dt><span class="term"><code class="varname">INSTALL_PROGRAM</code></span></dt> | | 6187 | <dt><span class="term"><code class="varname">INSTALL_PROGRAM</code></span></dt> |
6188 | <dd><p>binaries that can be stripped from debugging | | 6188 | <dd><p>binaries that can be stripped from debugging |
6189 | symbols</p></dd> | | 6189 | symbols</p></dd> |
6190 | <dt><span class="term"><code class="varname">INSTALL_SCRIPT</code></span></dt> | | 6190 | <dt><span class="term"><code class="varname">INSTALL_SCRIPT</code></span></dt> |
6191 | <dd><p>binaries that cannot be | | 6191 | <dd><p>binaries that cannot be |
6192 | stripped</p></dd> | | 6192 | stripped</p></dd> |
6193 | <dt><span class="term"><code class="varname">INSTALL_GAME</code></span></dt> | | 6193 | <dt><span class="term"><code class="varname">INSTALL_GAME</code></span></dt> |
6194 | <dd><p>game | | 6194 | <dd><p>game |
6195 | binaries</p></dd> | | 6195 | binaries</p></dd> |
6196 | <dt><span class="term"><code class="varname">INSTALL_LIB</code></span></dt> | | 6196 | <dt><span class="term"><code class="varname">INSTALL_LIB</code></span></dt> |
6197 | <dd><p>shared and static | | 6197 | <dd><p>shared and static |
6198 | libraries</p></dd> | | 6198 | libraries</p></dd> |
6199 | <dt><span class="term"><code class="varname">INSTALL_DATA</code></span></dt> | | 6199 | <dt><span class="term"><code class="varname">INSTALL_DATA</code></span></dt> |
6200 | <dd><p>data files</p></dd> | | 6200 | <dd><p>data files</p></dd> |
6201 | <dt><span class="term"><code class="varname">INSTALL_GAME_DATA</code></span></dt> | | 6201 | <dt><span class="term"><code class="varname">INSTALL_GAME_DATA</code></span></dt> |
6202 | <dd><p>data files for | | 6202 | <dd><p>data files for |
6203 | games</p></dd> | | 6203 | games</p></dd> |
6204 | <dt><span class="term"><code class="varname">INSTALL_MAN</code></span></dt> | | 6204 | <dt><span class="term"><code class="varname">INSTALL_MAN</code></span></dt> |
6205 | <dd><p>man pages</p></dd> | | 6205 | <dd><p>man pages</p></dd> |
6206 | </dl></div> | | 6206 | </dl></div> |
6207 | <p>Some other variables are:</p> | | 6207 | <p>Some other variables are:</p> |
6208 | <div class="variablelist"><dl class="variablelist"> | | 6208 | <div class="variablelist"><dl class="variablelist"> |
6209 | <dt><span class="term"><code class="varname">INSTALL_UNSTRIPPED</code></span></dt> | | 6209 | <dt><span class="term"><code class="varname">INSTALL_UNSTRIPPED</code></span></dt> |
6210 | <dd><p>If set to <code class="literal">yes</code>, do not run <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?strip+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">strip</span>(1)</span></a> | | 6210 | <dd><p>If set to <code class="literal">yes</code>, do not run <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?strip+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">strip</span>(1)</span></a> |
6211 | when installing binaries. Any debugging sections and symbols present in | | 6211 | when installing binaries. Any debugging sections and symbols present in |
6212 | binaries will be preserved. | | 6212 | binaries will be preserved. |
6213 | </p></dd> | | 6213 | </p></dd> |
6214 | <dt><span class="term"><code class="varname">INSTALLATION_DIRS</code></span></dt> | | 6214 | <dt><span class="term"><code class="varname">INSTALLATION_DIRS</code></span></dt> |
6215 | <dd><p>A list of directories relative to | | 6215 | <dd><p>A list of directories relative to |
6216 | <code class="varname">PREFIX</code> that are created by pkgsrc at the | | 6216 | <code class="varname">PREFIX</code> that are created by pkgsrc at the |
6217 | beginning of the <span class="emphasis"><em>install</em></span> phase. | | 6217 | beginning of the <span class="emphasis"><em>install</em></span> phase. |
6218 | The package is supposed to create all needed directories itself | | 6218 | The package is supposed to create all needed directories itself |
6219 | before installing files to it and list all other directories here. | | 6219 | before installing files to it and list all other directories here. |
6220 | </p></dd> | | 6220 | </p></dd> |
6221 | </dl></div> | | 6221 | </dl></div> |
6222 | <p>In the rare cases that a package shouldn't install anything, | | 6222 | <p>In the rare cases that a package shouldn't install anything, |
6223 | set <code class="varname">NO_INSTALL</code> to <span class="quote">“<span class="quote">yes</span>”</span>. This is | | 6223 | set <code class="varname">NO_INSTALL</code> to <span class="quote">“<span class="quote">yes</span>”</span>. This is |
6224 | mostly relevant for packages in the <code class="filename">regress</code> | | 6224 | mostly relevant for packages in the <code class="filename">regress</code> |
6225 | category.</p> | | 6225 | category.</p> |
6226 | </div> | | 6226 | </div> |
6227 | <div class="sect1"> | | 6227 | <div class="sect1"> |
6228 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6228 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6229 | <a name="build.package"></a>17.15. The <span class="emphasis"><em>package</em></span> phase</h2></div></div></div> | | 6229 | <a name="build.package"></a>17.15. The <span class="emphasis"><em>package</em></span> phase</h2></div></div></div> |
6230 | <p>Once the install stage has completed, a binary package of | | 6230 | <p>Once the install stage has completed, a binary package of |
6231 | the installed files can be built. These binary packages can be | | 6231 | the installed files can be built. These binary packages can be |
6232 | used for quick installation without previous compilation, e.g. by | | 6232 | used for quick installation without previous compilation, e.g. by |
6233 | the <span class="command"><strong>make bin-install</strong></span> or by using | | 6233 | the <span class="command"><strong>make bin-install</strong></span> or by using |
6234 | <span class="command"><strong>pkg_add</strong></span>.</p> | | 6234 | <span class="command"><strong>pkg_add</strong></span>.</p> |
6235 | <p>By default, the binary packages are created in | | 6235 | <p>By default, the binary packages are created in |
6236 | <code class="filename">${PACKAGES}/All</code> and symlinks are created in | | 6236 | <code class="filename">${PACKAGES}/All</code> and symlinks are created in |
6237 | <code class="filename">${PACKAGES}/<em class="replaceable"><code>category</code></em></code>, | | 6237 | <code class="filename">${PACKAGES}/<em class="replaceable"><code>category</code></em></code>, |
6238 | one for each category in the <code class="varname">CATEGORIES</code> | | 6238 | one for each category in the <code class="varname">CATEGORIES</code> |
6239 | variable. <code class="varname">PACKAGES</code> defaults to | | 6239 | variable. <code class="varname">PACKAGES</code> defaults to |
6240 | <code class="filename">pkgsrc/packages</code>.</p> | | 6240 | <code class="filename">pkgsrc/packages</code>.</p> |
6241 | </div> | | 6241 | </div> |
6242 | <div class="sect1"> | | 6242 | <div class="sect1"> |
6243 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6243 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6244 | <a name="build.clean"></a>17.16. Cleaning up</h2></div></div></div> | | 6244 | <a name="build.clean"></a>17.16. Cleaning up</h2></div></div></div> |
6245 | <p>Once you're finished with a package, you can clean the work | | 6245 | <p>Once you're finished with a package, you can clean the work |
6246 | directory by running <span class="command"><strong>make clean</strong></span>. If you want | | 6246 | directory by running <span class="command"><strong>make clean</strong></span>. If you want |
6247 | to clean the work directories of all dependencies too, use | | 6247 | to clean the work directories of all dependencies too, use |
6248 | <span class="command"><strong>make clean-depends</strong></span>.</p> | | 6248 | <span class="command"><strong>make clean-depends</strong></span>.</p> |
6249 | </div> | | 6249 | </div> |
6250 | <div class="sect1"> | | 6250 | <div class="sect1"> |
6251 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6251 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6252 | <a name="build.helpful-targets"></a>17.17. Other helpful targets</h2></div></div></div> | | 6252 | <a name="build.helpful-targets"></a>17.17. Other helpful targets</h2></div></div></div> |
6253 | <div class="variablelist"><dl class="variablelist"> | | 6253 | <div class="variablelist"><dl class="variablelist"> |
6254 | <dt><span class="term">pre/post-*</span></dt> | | 6254 | <dt><span class="term">pre/post-*</span></dt> |
6255 | <dd><p>For any of the main targets described in the | | 6255 | <dd><p>For any of the main targets described in the |
6256 | previous section, two auxiliary targets exist with | | 6256 | previous section, two auxiliary targets exist with |
6257 | <span class="quote">“<span class="quote">pre-</span>”</span> and <span class="quote">“<span class="quote">post-</span>”</span> used as a | | 6257 | <span class="quote">“<span class="quote">pre-</span>”</span> and <span class="quote">“<span class="quote">post-</span>”</span> used as a |
6258 | prefix for the main target's name. These targets are | | 6258 | prefix for the main target's name. These targets are |
6259 | invoked before and after the main target is called, | | 6259 | invoked before and after the main target is called, |
6260 | allowing extra configuration or installation steps be | | 6260 | allowing extra configuration or installation steps be |
6261 | performed from a package's Makefile, for example, which | | 6261 | performed from a package's Makefile, for example, which |
6262 | a program's configure script or install target | | 6262 | a program's configure script or install target |
6263 | omitted.</p></dd> | | 6263 | omitted.</p></dd> |
6264 | <dt><span class="term">do-*</span></dt> | | 6264 | <dt><span class="term">do-*</span></dt> |
6265 | <dd><p>Should one of the main targets do the wrong thing, | | 6265 | <dd><p>Should one of the main targets do the wrong thing, |
6266 | and should there be no variable to fix this, you can | | 6266 | and should there be no variable to fix this, you can |
6267 | redefine it with the do-* target. (Note that redefining | | 6267 | redefine it with the do-* target. (Note that redefining |
6268 | the target itself instead of the do-* target is a bad | | 6268 | the target itself instead of the do-* target is a bad |
6269 | idea, as the pre-* and post-* targets won't be called | | 6269 | idea, as the pre-* and post-* targets won't be called |
6270 | anymore, etc.) You will not usually need to do | | 6270 | anymore, etc.) You will not usually need to do |
6271 | this.</p></dd> | | 6271 | this.</p></dd> |
6272 | <dt><span class="term">reinstall</span></dt> | | 6272 | <dt><span class="term">reinstall</span></dt> |
6273 | <dd> | | 6273 | <dd> |
6274 | <p>If you did a <span class="command"><strong>make install</strong></span> and | | 6274 | <p>If you did a <span class="command"><strong>make install</strong></span> and |
6275 | you noticed some file was not installed properly, you | | 6275 | you noticed some file was not installed properly, you |
6276 | can repeat the installation with this target, which will | | 6276 | can repeat the installation with this target, which will |
6277 | ignore the <span class="quote">“<span class="quote">already installed</span>”</span> flag.</p> | | 6277 | ignore the <span class="quote">“<span class="quote">already installed</span>”</span> flag.</p> |
6278 | <p>This is the default value of | | 6278 | <p>This is the default value of |
6279 | <code class="varname">DEPENDS_TARGET</code> except in the case of | | 6279 | <code class="varname">DEPENDS_TARGET</code> except in the case of |
6280 | <span class="command"><strong>make update</strong></span> and <span class="command"><strong>make | | 6280 | <span class="command"><strong>make update</strong></span> and <span class="command"><strong>make |
6281 | package</strong></span>, where the defaults are | | 6281 | package</strong></span>, where the defaults are |
6282 | <span class="quote">“<span class="quote">package</span>”</span> and <span class="quote">“<span class="quote">update</span>”</span>, | | 6282 | <span class="quote">“<span class="quote">package</span>”</span> and <span class="quote">“<span class="quote">update</span>”</span>, |
6283 | respectively.</p> | | 6283 | respectively.</p> |
6284 | </dd> | | 6284 | </dd> |
6285 | <dt><span class="term">deinstall</span></dt> | | 6285 | <dt><span class="term">deinstall</span></dt> |
6286 | <dd> | | 6286 | <dd> |
6287 | <p>This target does a <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> in the | | 6287 | <p>This target does a <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> in the |
6288 | current directory, effectively de-installing the | | 6288 | current directory, effectively de-installing the |
6289 | package. The following variables can be used to tune the | | 6289 | package. The following variables can be used to tune the |
6290 | behaviour:</p> | | 6290 | behaviour:</p> |
6291 | <div class="variablelist"><dl class="variablelist"> | | 6291 | <div class="variablelist"><dl class="variablelist"> |
6292 | <dt><span class="term"><code class="varname">PKG_VERBOSE</code></span></dt> | | 6292 | <dt><span class="term"><code class="varname">PKG_VERBOSE</code></span></dt> |
6293 | <dd><p>Add a "-v" to the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> command.</p></dd> | | 6293 | <dd><p>Add a "-v" to the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> command.</p></dd> |
6294 | <dt><span class="term"><code class="varname">DEINSTALLDEPENDS</code></span></dt> | | 6294 | <dt><span class="term"><code class="varname">DEINSTALLDEPENDS</code></span></dt> |
6295 | <dd><p>Remove all packages that require (depend on) | | 6295 | <dd><p>Remove all packages that require (depend on) |
6296 | the given package. This can be used to remove any | | 6296 | the given package. This can be used to remove any |
6297 | packages that may have been pulled in by a given | | 6297 | packages that may have been pulled in by a given |
6298 | package, e.g. if <span class="command"><strong>make deinstall | | 6298 | package, e.g. if <span class="command"><strong>make deinstall |
6299 | DEINSTALLDEPENDS=1</strong></span> is done in | | 6299 | DEINSTALLDEPENDS=1</strong></span> is done in |
6300 | <code class="filename">pkgsrc/x11/kde</code>, this is | | 6300 | <code class="filename">pkgsrc/x11/kde</code>, this is |
6301 | likely to remove whole KDE. Works by adding | | 6301 | likely to remove whole KDE. Works by adding |
6302 | <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.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> | | 6302 | <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.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> |
6303 | command line.</p></dd> | | 6303 | command line.</p></dd> |
6304 | </dl></div> | | 6304 | </dl></div> |
6305 | </dd> | | 6305 | </dd> |
6306 | <dt><span class="term">bin-install</span></dt> | | 6306 | <dt><span class="term">bin-install</span></dt> |
6307 | <dd><p>Install a binary package from local disk and via FTP | | 6307 | <dd><p>Install a binary package from local disk and via FTP |
6308 | from a list of sites (see the | | 6308 | from a list of sites (see the |
6309 | <code class="varname">BINPKG_SITES</code> variable), and do a | | 6309 | <code class="varname">BINPKG_SITES</code> variable), and do a |
6310 | <span class="command"><strong>make package</strong></span> if no binary package is | | 6310 | <span class="command"><strong>make package</strong></span> if no binary package is |
6311 | available anywhere. The arguments given to | | 6311 | available anywhere. The arguments given to |
6312 | <span class="command"><strong>pkg_add</strong></span> can be set via | | 6312 | <span class="command"><strong>pkg_add</strong></span> can be set via |
6313 | <code class="varname">BIN_INSTALL_FLAGS</code> e.g., to do verbose | | 6313 | <code class="varname">BIN_INSTALL_FLAGS</code> e.g., to do verbose |
6314 | operation, etc.</p></dd> | | 6314 | operation, etc.</p></dd> |
6315 | <dt><span class="term">install-clean</span></dt> | | 6315 | <dt><span class="term">install-clean</span></dt> |
6316 | <dd><p>This target removes the state files for the "install" and later | | 6316 | <dd><p>This target removes the state files for the "install" and later |
6317 | phases so that the "install" target may be re-invoked. This can be | | 6317 | phases so that the "install" target may be re-invoked. This can be |
6318 | used after editing the PLIST to install the package without | | 6318 | used after editing the PLIST to install the package without |
6319 | rebuilding it.</p></dd> | | 6319 | rebuilding it.</p></dd> |
6320 | <dt><span class="term">build-clean</span></dt> | | 6320 | <dt><span class="term">build-clean</span></dt> |
6321 | <dd><p>This target removes the state files for the "build" and later | | 6321 | <dd><p>This target removes the state files for the "build" and later |
6322 | phases so that the "build" target may be re-invoked.</p></dd> | | 6322 | phases so that the "build" target may be re-invoked.</p></dd> |
6323 | <dt><span class="term">update</span></dt> | | 6323 | <dt><span class="term">update</span></dt> |
6324 | <dd> | | 6324 | <dd> |
6325 | <p>This target causes the current package to be | | 6325 | <p>This target causes the current package to be |
6326 | updated to the latest version. The package and all | | 6326 | updated to the latest version. The package and all |
6327 | depending packages first get de-installed, then current | | 6327 | depending packages first get de-installed, then current |
6328 | versions of the corresponding packages get compiled and | | 6328 | versions of the corresponding packages get compiled and |
6329 | installed. This is similar to manually noting which | | 6329 | installed. This is similar to manually noting which |
6330 | packages are currently installed, then performing a | | 6330 | packages are currently installed, then performing a |
6331 | series of <span class="command"><strong>make deinstall</strong></span> and | | 6331 | series of <span class="command"><strong>make deinstall</strong></span> and |
6332 | <span class="command"><strong>make install</strong></span> (or whatever | | 6332 | <span class="command"><strong>make install</strong></span> (or whatever |
6333 | <code class="varname">UPDATE_TARGET</code> is set to) for these | | 6333 | <code class="varname">UPDATE_TARGET</code> is set to) for these |
6334 | packages.</p> | | 6334 | packages.</p> |
6335 | <p>You can use the <span class="quote">“<span class="quote">update</span>”</span> target to | | 6335 | <p>You can use the <span class="quote">“<span class="quote">update</span>”</span> target to |
6336 | resume package updating in case a previous <span class="command"><strong>make | | 6336 | resume package updating in case a previous <span class="command"><strong>make |
6337 | update</strong></span> was interrupted for some reason. | | 6337 | update</strong></span> was interrupted for some reason. |
6338 | However, in this case, make sure you don't call | | 6338 | However, in this case, make sure you don't call |
6339 | <span class="command"><strong>make clean</strong></span> or otherwise remove the | | 6339 | <span class="command"><strong>make clean</strong></span> or otherwise remove the |
6340 | list of dependent packages in <code class="varname">WRKDIR</code>. | | 6340 | list of dependent packages in <code class="varname">WRKDIR</code>. |
6341 | Otherwise, you lose the ability to automatically update | | 6341 | Otherwise, you lose the ability to automatically update |
6342 | the current package along with the dependent packages | | 6342 | the current package along with the dependent packages |
6343 | you have installed.</p> | | 6343 | you have installed.</p> |
6344 | <p>Resuming an interrupted <span class="command"><strong>make | | 6344 | <p>Resuming an interrupted <span class="command"><strong>make |
6345 | update</strong></span> will only work as long as the package | | 6345 | update</strong></span> will only work as long as the package |
6346 | tree remains unchanged. If the source code for one of | | 6346 | tree remains unchanged. If the source code for one of |
6347 | the packages to be updated has been changed, resuming | | 6347 | the packages to be updated has been changed, resuming |
6348 | <span class="command"><strong>make update</strong></span> will most certainly | | 6348 | <span class="command"><strong>make update</strong></span> will most certainly |
6349 | fail!</p> | | 6349 | fail!</p> |
6350 | <p>The following variables can be used either on the | | 6350 | <p>The following variables can be used either on the |
6351 | command line or in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to | | 6351 | command line or in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to |
6352 | alter the behaviour of <span class="command"><strong>make | | 6352 | alter the behaviour of <span class="command"><strong>make |
6353 | update</strong></span>:</p> | | 6353 | update</strong></span>:</p> |
6354 | <div class="variablelist"><dl class="variablelist"> | | 6354 | <div class="variablelist"><dl class="variablelist"> |
6355 | <dt><span class="term"><code class="varname">UPDATE_TARGET</code></span></dt> | | 6355 | <dt><span class="term"><code class="varname">UPDATE_TARGET</code></span></dt> |
6356 | <dd><p>Install target to recursively use for the | | 6356 | <dd><p>Install target to recursively use for the |
6357 | updated package and the dependent packages. | | 6357 | updated package and the dependent packages. |
6358 | Defaults to <code class="varname">DEPENDS_TARGET</code> if | | 6358 | Defaults to <code class="varname">DEPENDS_TARGET</code> if |
6359 | set, <span class="quote">“<span class="quote">install</span>”</span> otherwise for | | 6359 | set, <span class="quote">“<span class="quote">install</span>”</span> otherwise for |
6360 | <span class="command"><strong>make update</strong></span>. Other good | | 6360 | <span class="command"><strong>make update</strong></span>. Other good |
6361 | targets are <span class="quote">“<span class="quote">package</span>”</span> or | | 6361 | targets are <span class="quote">“<span class="quote">package</span>”</span> or |
6362 | <span class="quote">“<span class="quote">bin-install</span>”</span>. Do not set this to | | 6362 | <span class="quote">“<span class="quote">bin-install</span>”</span>. Do not set this to |
6363 | <span class="quote">“<span class="quote">update</span>”</span> or you will get stuck in an | | 6363 | <span class="quote">“<span class="quote">update</span>”</span> or you will get stuck in an |
6364 | endless loop!</p></dd> | | 6364 | endless loop!</p></dd> |
6365 | <dt><span class="term"><code class="varname">NOCLEAN</code></span></dt> | | 6365 | <dt><span class="term"><code class="varname">NOCLEAN</code></span></dt> |
6366 | <dd><p>Don't clean up after updating. Useful if | | 6366 | <dd><p>Don't clean up after updating. Useful if |
6367 | you want to leave the work sources of the updated | | 6367 | you want to leave the work sources of the updated |
6368 | packages around for inspection or other purposes. | | 6368 | packages around for inspection or other purposes. |
6369 | Be sure you eventually clean up the source tree | | 6369 | Be sure you eventually clean up the source tree |
6370 | (see the <span class="quote">“<span class="quote">clean-update</span>”</span> target below) | | 6370 | (see the <span class="quote">“<span class="quote">clean-update</span>”</span> target below) |
6371 | or you may run into troubles with old source code | | 6371 | or you may run into troubles with old source code |
6372 | still lying around on your next | | 6372 | still lying around on your next |
6373 | <span class="command"><strong>make</strong></span> or <span class="command"><strong>make | | 6373 | <span class="command"><strong>make</strong></span> or <span class="command"><strong>make |
6374 | update</strong></span>.</p></dd> | | 6374 | update</strong></span>.</p></dd> |
6375 | <dt><span class="term"><code class="varname">REINSTALL</code></span></dt> | | 6375 | <dt><span class="term"><code class="varname">REINSTALL</code></span></dt> |
6376 | <dd><p>Deinstall each package before installing | | 6376 | <dd><p>Deinstall each package before installing |
6377 | (making <code class="varname">DEPENDS_TARGET</code>). This | | 6377 | (making <code class="varname">DEPENDS_TARGET</code>). This |
6378 | may be necessary if the | | 6378 | may be necessary if the |
6379 | <span class="quote">“<span class="quote">clean-update</span>”</span> target (see below) was | | 6379 | <span class="quote">“<span class="quote">clean-update</span>”</span> target (see below) was |
6380 | called after interrupting a running <span class="command"><strong>make | | 6380 | called after interrupting a running <span class="command"><strong>make |
6381 | update</strong></span>.</p></dd> | | 6381 | update</strong></span>.</p></dd> |
6382 | <dt><span class="term"><code class="varname">DEPENDS_TARGET</code></span></dt> | | 6382 | <dt><span class="term"><code class="varname">DEPENDS_TARGET</code></span></dt> |
6383 | <dd><p>Allows you to disable recursion and hardcode | | 6383 | <dd><p>Allows you to disable recursion and hardcode |
6384 | the target for packages. The default is | | 6384 | the target for packages. The default is |
6385 | <span class="quote">“<span class="quote">update</span>”</span> for the update target, | | 6385 | <span class="quote">“<span class="quote">update</span>”</span> for the update target, |
6386 | facilitating a recursive update of prerequisite | | 6386 | facilitating a recursive update of prerequisite |
6387 | packages. Only set | | 6387 | packages. Only set |
6388 | <code class="varname">DEPENDS_TARGET</code> if you want to | | 6388 | <code class="varname">DEPENDS_TARGET</code> if you want to |
6389 | disable recursive updates. Use | | 6389 | disable recursive updates. Use |
6390 | <code class="varname">UPDATE_TARGET</code> instead to just | | 6390 | <code class="varname">UPDATE_TARGET</code> instead to just |
6391 | set a specific target for each package to be | | 6391 | set a specific target for each package to be |
6392 | installed during <span class="command"><strong>make update</strong></span> | | 6392 | installed during <span class="command"><strong>make update</strong></span> |
6393 | (see above).</p></dd> | | 6393 | (see above).</p></dd> |
6394 | </dl></div> | | 6394 | </dl></div> |
6395 | </dd> | | 6395 | </dd> |
6396 | <dt><span class="term">clean-update</span></dt> | | 6396 | <dt><span class="term">clean-update</span></dt> |
6397 | <dd> | | 6397 | <dd> |
6398 | <p>Clean the source tree for all packages that would | | 6398 | <p>Clean the source tree for all packages that would |
6399 | get updated if <span class="command"><strong>make update</strong></span> was called | | 6399 | get updated if <span class="command"><strong>make update</strong></span> was called |
6400 | from the current directory. This target should not be | | 6400 | from the current directory. This target should not be |
6401 | used if the current package (or any of its depending | | 6401 | used if the current package (or any of its depending |
6402 | packages) have already been de-installed (e.g., after | | 6402 | packages) have already been de-installed (e.g., after |
6403 | calling <span class="command"><strong>make update</strong></span>) or you may lose | | 6403 | calling <span class="command"><strong>make update</strong></span>) or you may lose |
6404 | some packages you intended to update. As a rule of | | 6404 | some packages you intended to update. As a rule of |
6405 | thumb: only use this target <span class="emphasis"><em>before</em></span> | | 6405 | thumb: only use this target <span class="emphasis"><em>before</em></span> |
6406 | the first time you run <span class="command"><strong>make update</strong></span> | | 6406 | the first time you run <span class="command"><strong>make update</strong></span> |
6407 | and only if you have a dirty package tree (e.g., if you | | 6407 | and only if you have a dirty package tree (e.g., if you |
6408 | used <code class="varname">NOCLEAN</code>).</p> | | 6408 | used <code class="varname">NOCLEAN</code>).</p> |
6409 | <p>If you are unsure about whether your tree is | | 6409 | <p>If you are unsure about whether your tree is |
6410 | clean, you can either perform a <span class="command"><strong>make | | 6410 | clean, you can either perform a <span class="command"><strong>make |
6411 | clean</strong></span> at the top of the tree, or use the | | 6411 | clean</strong></span> at the top of the tree, or use the |
6412 | following sequence of commands from the directory of the | | 6412 | following sequence of commands from the directory of the |
6413 | package you want to update (<span class="emphasis"><em>before</em></span> | | 6413 | package you want to update (<span class="emphasis"><em>before</em></span> |
6414 | running <span class="command"><strong>make update</strong></span> for the first | | 6414 | running <span class="command"><strong>make update</strong></span> for the first |
6415 | time, otherwise you lose all the packages you wanted to | | 6415 | time, otherwise you lose all the packages you wanted to |
6416 | update!):</p> | | 6416 | update!):</p> |
6417 | <pre class="screen"> | | 6417 | <pre class="screen"> |
6418 | <code class="prompt">#</code> <strong class="userinput"><code>make clean-update</code></strong> | | 6418 | <code class="prompt">#</code> <strong class="userinput"><code>make clean-update</code></strong> |
6419 | <code class="prompt">#</code> <strong class="userinput"><code>make clean CLEANDEPENDS=YES</code></strong> | | 6419 | <code class="prompt">#</code> <strong class="userinput"><code>make clean CLEANDEPENDS=YES</code></strong> |
6420 | <code class="prompt">#</code> <strong class="userinput"><code>make update</code></strong> | | 6420 | <code class="prompt">#</code> <strong class="userinput"><code>make update</code></strong> |
6421 | </pre> | | 6421 | </pre> |
6422 | <p>The following variables can be used either on the | | 6422 | <p>The following variables can be used either on the |
6423 | command line or in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to alter the behaviour of | | 6423 | command line or in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to alter the behaviour of |
6424 | <span class="command"><strong>make clean-update</strong></span>:</p> | | 6424 | <span class="command"><strong>make clean-update</strong></span>:</p> |
6425 | <div class="variablelist"><dl class="variablelist"> | | 6425 | <div class="variablelist"><dl class="variablelist"> |
6426 | <dt><span class="term"><code class="varname">CLEAR_DIRLIST</code></span></dt> | | 6426 | <dt><span class="term"><code class="varname">CLEAR_DIRLIST</code></span></dt> |
6427 | <dd><p>After <span class="command"><strong>make clean</strong></span>, do not | | 6427 | <dd><p>After <span class="command"><strong>make clean</strong></span>, do not |
6428 | reconstruct the list of directories to update for | | 6428 | reconstruct the list of directories to update for |
6429 | this package. Only use this if <span class="command"><strong>make | | 6429 | this package. Only use this if <span class="command"><strong>make |
6430 | update</strong></span> successfully installed all | | 6430 | update</strong></span> successfully installed all |
6431 | packages you wanted to update. Normally, this is | | 6431 | packages you wanted to update. Normally, this is |
6432 | done automatically on <span class="command"><strong>make | | 6432 | done automatically on <span class="command"><strong>make |
6433 | update</strong></span>, but may have been suppressed by | | 6433 | update</strong></span>, but may have been suppressed by |
6434 | the <code class="varname">NOCLEAN</code> variable (see | | 6434 | the <code class="varname">NOCLEAN</code> variable (see |
6435 | above).</p></dd> | | 6435 | above).</p></dd> |
6436 | </dl></div> | | 6436 | </dl></div> |
6437 | </dd> | | 6437 | </dd> |
6438 | <dt><span class="term">replace</span></dt> | | 6438 | <dt><span class="term">replace</span></dt> |
6439 | <dd> | | 6439 | <dd> |
6440 | <p>Update the installation of the current package. This | | 6440 | <p>Update the installation of the current package. This |
6441 | differs from update in that it does not replace dependent | | 6441 | differs from update in that it does not replace dependent |
6442 | packages. You will need to install <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_tarup/README.html" target="_top"><code class="filename">pkgtools/pkg_tarup</code></a> for this | | 6442 | packages. You will need to install <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_tarup/README.html" target="_top"><code class="filename">pkgtools/pkg_tarup</code></a> for this |
6443 | target to work.</p> | | 6443 | target to work.</p> |
6444 | <p><span class="emphasis"><em>Be careful when using this | | 6444 | <p><span class="emphasis"><em>Be careful when using this |
6445 | target!</em></span> There are no guarantees that dependent | | 6445 | target!</em></span> There are no guarantees that dependent |
6446 | packages will still work, in particular they will most | | 6446 | packages will still work, in particular they will most |
6447 | certainly break if you <span class="command"><strong>make replace</strong></span> a | | 6447 | certainly break if you <span class="command"><strong>make replace</strong></span> a |
6448 | library package whose shared library major version changed | | 6448 | library package whose shared library major version changed |
6449 | between your installed version and the new one. For this | | 6449 | between your installed version and the new one. For this |
6450 | reason, this target is not officially supported and only | | 6450 | reason, this target is not officially supported and only |
6451 | recommended for advanced users.</p> | | 6451 | recommended for advanced users.</p> |
6452 | </dd> | | 6452 | </dd> |
6453 | <dt><span class="term">info</span></dt> | | 6453 | <dt><span class="term">info</span></dt> |
6454 | <dd><p>This target invokes <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_info+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_info</span>(1)</span></a> for the current | | 6454 | <dd><p>This target invokes <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_info+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_info</span>(1)</span></a> for the current |
6455 | package. You can use this to check which version of a | | 6455 | package. You can use this to check which version of a |
6456 | package is installed.</p></dd> | | 6456 | package is installed.</p></dd> |
6457 | <dt><span class="term">index</span></dt> | | 6457 | <dt><span class="term">index</span></dt> |
6458 | <dd> | | 6458 | <dd> |
6459 | <p>This is a top-level command, i.e. it should be used in | | 6459 | <p>This is a top-level command, i.e. it should be used in |
6460 | the <code class="filename">pkgsrc</code> directory. It creates a | | 6460 | the <code class="filename">pkgsrc</code> directory. It creates a |
6461 | database of all packages in the local pkgsrc tree, including | | 6461 | database of all packages in the local pkgsrc tree, including |
6462 | dependencies, comment, maintainer, and some other useful | | 6462 | dependencies, comment, maintainer, and some other useful |
6463 | information. Individual entries are created by running | | 6463 | information. Individual entries are created by running |
6464 | <span class="command"><strong>make describe</strong></span> in the packages' | | 6464 | <span class="command"><strong>make describe</strong></span> in the packages' |
6465 | directories. This index file is saved as | | 6465 | directories. This index file is saved as |
6466 | <code class="filename">pkgsrc/INDEX</code>. It can be displayed in | | 6466 | <code class="filename">pkgsrc/INDEX</code>. It can be displayed in |
6467 | verbose format by running <span class="command"><strong>make | | 6467 | verbose format by running <span class="command"><strong>make |
6468 | print-index</strong></span>. You can search in it with | | 6468 | print-index</strong></span>. You can search in it with |
6469 | <span class="command"><strong>make search | | 6469 | <span class="command"><strong>make search |
6470 | key=<em class="replaceable"><code>something</code></em></strong></span>. You can | | 6470 | key=<em class="replaceable"><code>something</code></em></strong></span>. You can |
6471 | extract a list of all packages that depend on a particular | | 6471 | extract a list of all packages that depend on a particular |
6472 | one by running <span class="command"><strong>make show-deps | | 6472 | one by running <span class="command"><strong>make show-deps |
6473 | PKG=<em class="replaceable"><code>somepackage</code></em></strong></span>.</p> | | 6473 | PKG=<em class="replaceable"><code>somepackage</code></em></strong></span>.</p> |
6474 | <p>Running this command takes a very long time, some | | 6474 | <p>Running this command takes a very long time, some |
6475 | hours even on fast machines!</p> | | 6475 | hours even on fast machines!</p> |
6476 | </dd> | | 6476 | </dd> |
6477 | <dt><span class="term">readme</span></dt> | | 6477 | <dt><span class="term">readme</span></dt> |
6478 | <dd> | | 6478 | <dd> |
6479 | <p>This target generates a | | 6479 | <p>This target generates a |
6480 | <code class="filename">README.html</code> file, which can be | | 6480 | <code class="filename">README.html</code> file, which can be |
6481 | viewed using a browser such as <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/firefox/README.html" target="_top"><code class="filename">www/firefox</code></a> or <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/links/README.html" target="_top"><code class="filename">www/links</code></a>. The generated files | | 6481 | viewed using a browser such as <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/firefox/README.html" target="_top"><code class="filename">www/firefox</code></a> or <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/www/links/README.html" target="_top"><code class="filename">www/links</code></a>. The generated files |
6482 | contain references to any packages which are in the | | 6482 | contain references to any packages which are in the |
6483 | <code class="varname">PACKAGES</code> directory on the local | | 6483 | <code class="varname">PACKAGES</code> directory on the local |
6484 | host. The generated files can be made to refer to URLs | | 6484 | host. The generated files can be made to refer to URLs |
6485 | based on <code class="varname">FTP_PKG_URL_HOST</code> and | | 6485 | based on <code class="varname">FTP_PKG_URL_HOST</code> and |
6486 | <code class="varname">FTP_PKG_URL_DIR</code>. For example, if I | | 6486 | <code class="varname">FTP_PKG_URL_DIR</code>. For example, if I |
6487 | wanted to generate <code class="filename">README.html</code> | | 6487 | wanted to generate <code class="filename">README.html</code> |
6488 | files which pointed to binary packages on the local | | 6488 | files which pointed to binary packages on the local |
6489 | machine, in the directory | | 6489 | machine, in the directory |
6490 | <code class="filename">/usr/packages</code>, set | | 6490 | <code class="filename">/usr/packages</code>, set |
6491 | <code class="varname">FTP_PKG_URL_HOST=file://localhost</code> and | | 6491 | <code class="varname">FTP_PKG_URL_HOST=file://localhost</code> and |
6492 | <code class="varname">FTP_PKG_URL_DIR=/usr/packages</code>. The | | 6492 | <code class="varname">FTP_PKG_URL_DIR=/usr/packages</code>. The |
6493 | <code class="varname">${PACKAGES}</code> directory and its | | 6493 | <code class="varname">${PACKAGES}</code> directory and its |
6494 | subdirectories will be searched for all the binary | | 6494 | subdirectories will be searched for all the binary |
6495 | packages.</p> | | 6495 | packages.</p> |
6496 | <p>The target can be run at the toplevel or in category | | 6496 | <p>The target can be run at the toplevel or in category |
6497 | directories, in which case it descends recursively.</p> | | 6497 | directories, in which case it descends recursively.</p> |
6498 | </dd> | | 6498 | </dd> |
6499 | <dt><span class="term">readme-all</span></dt> | | 6499 | <dt><span class="term">readme-all</span></dt> |
6500 | <dd><p>This is a top-level command, run it in | | 6500 | <dd><p>This is a top-level command, run it in |
6501 | <code class="filename">pkgsrc</code>. Use this target to create a | | 6501 | <code class="filename">pkgsrc</code>. Use this target to create a |
6502 | file <code class="filename">README-all.html</code> which contains a | | 6502 | file <code class="filename">README-all.html</code> which contains a |
6503 | list of all packages currently available in the NetBSD | | 6503 | list of all packages currently available in the NetBSD |
6504 | Packages Collection, together with the category they belong | | 6504 | Packages Collection, together with the category they belong |
6505 | to and a short description. This file is compiled from the | | 6505 | to and a short description. This file is compiled from the |
6506 | <code class="filename">pkgsrc/*/README.html</code> files, so be sure | | 6506 | <code class="filename">pkgsrc/*/README.html</code> files, so be sure |
6507 | to run this <span class="emphasis"><em>after</em></span> a <span class="command"><strong>make | | 6507 | to run this <span class="emphasis"><em>after</em></span> a <span class="command"><strong>make |
6508 | readme</strong></span>.</p></dd> | | 6508 | readme</strong></span>.</p></dd> |
6509 | <dt><span class="term">cdrom-readme</span></dt> | | 6509 | <dt><span class="term">cdrom-readme</span></dt> |
6510 | <dd><p>This is very much the same as the | | 6510 | <dd><p>This is very much the same as the |
6511 | <span class="quote">“<span class="quote">readme</span>”</span> target (see above), but is to be | | 6511 | <span class="quote">“<span class="quote">readme</span>”</span> target (see above), but is to be |
6512 | used when generating a pkgsrc tree to be written to a | | 6512 | used when generating a pkgsrc tree to be written to a |
6513 | CD-ROM. This target also produces | | 6513 | CD-ROM. This target also produces |
6514 | <code class="filename">README.html</code> files, and can be made | | 6514 | <code class="filename">README.html</code> files, and can be made |
6515 | to refer to URLs based on | | 6515 | to refer to URLs based on |
6516 | <code class="varname">CDROM_PKG_URL_HOST</code> and | | 6516 | <code class="varname">CDROM_PKG_URL_HOST</code> and |
6517 | <code class="varname">CDROM_PKG_URL_DIR</code>.</p></dd> | | 6517 | <code class="varname">CDROM_PKG_URL_DIR</code>.</p></dd> |
6518 | <dt><span class="term">show-distfiles</span></dt> | | 6518 | <dt><span class="term">show-distfiles</span></dt> |
6519 | <dd><p>This target shows which distfiles and patchfiles | | 6519 | <dd><p>This target shows which distfiles and patchfiles |
6520 | are needed to build the package | | 6520 | are needed to build the package |
6521 | (<code class="varname">ALLFILES</code>, which contains all | | 6521 | (<code class="varname">ALLFILES</code>, which contains all |
6522 | <code class="varname">DISTFILES</code> and | | 6522 | <code class="varname">DISTFILES</code> and |
6523 | <code class="varname">PATCHFILES</code>, but not | | 6523 | <code class="varname">PATCHFILES</code>, but not |
6524 | <code class="filename">patches/*</code>).</p></dd> | | 6524 | <code class="filename">patches/*</code>).</p></dd> |
6525 | <dt><span class="term">show-downlevel</span></dt> | | 6525 | <dt><span class="term">show-downlevel</span></dt> |
6526 | <dd><p>This target shows nothing if the package is not | | 6526 | <dd><p>This target shows nothing if the package is not |
6527 | installed. If a version of this package is installed, | | 6527 | installed. If a version of this package is installed, |
6528 | but is not the version provided in this version of | | 6528 | but is not the version provided in this version of |
6529 | pkgsrc, then a warning message is displayed. This target | | 6529 | pkgsrc, then a warning message is displayed. This target |
6530 | can be used to show which of your installed packages are | | 6530 | can be used to show which of your installed packages are |
6531 | downlevel, and so the old versions can be deleted, and | | 6531 | downlevel, and so the old versions can be deleted, and |
6532 | the current ones added.</p></dd> | | 6532 | the current ones added.</p></dd> |
6533 | <dt><span class="term">show-pkgsrc-dir</span></dt> | | 6533 | <dt><span class="term">show-pkgsrc-dir</span></dt> |
6534 | <dd><p>This target shows the directory in the pkgsrc | | 6534 | <dd><p>This target shows the directory in the pkgsrc |
6535 | hierarchy from which the package can be built and | | 6535 | hierarchy from which the package can be built and |
6536 | installed. This may not be the same directory as the one | | 6536 | installed. This may not be the same directory as the one |
6537 | from which the package was installed. This target is | | 6537 | from which the package was installed. This target is |
6538 | intended to be used by people who may wish to upgrade | | 6538 | intended to be used by people who may wish to upgrade |
6539 | many packages on a single host, and can be invoked from | | 6539 | many packages on a single host, and can be invoked from |
6540 | the top-level pkgsrc Makefile by using the | | 6540 | the top-level pkgsrc Makefile by using the |
6541 | <span class="quote">“<span class="quote">show-host-specific-pkgs</span>”</span> target.</p></dd> | | 6541 | <span class="quote">“<span class="quote">show-host-specific-pkgs</span>”</span> target.</p></dd> |
6542 | <dt><span class="term">show-installed-depends</span></dt> | | 6542 | <dt><span class="term">show-installed-depends</span></dt> |
6543 | <dd><p>This target shows which installed packages match | | 6543 | <dd><p>This target shows which installed packages match |
6544 | the current package's <code class="varname">DEPENDS</code>. Useful | | 6544 | the current package's <code class="varname">DEPENDS</code>. Useful |
6545 | if out of date dependencies are causing build | | 6545 | if out of date dependencies are causing build |
6546 | problems.</p></dd> | | 6546 | problems.</p></dd> |
6547 | <dt><span class="term">print-build-depends-list</span></dt> | | 6547 | <dt><span class="term">print-build-depends-list</span></dt> |
6548 | <dd><p>This target shows the list of packages that the current package | | 6548 | <dd><p>This target shows the list of packages that the current package |
6549 | depends on for building.</p></dd> | | 6549 | depends on for building.</p></dd> |
6550 | <dt><span class="term">print-run-depends-list</span></dt> | | 6550 | <dt><span class="term">print-run-depends-list</span></dt> |
6551 | <dd><p>This target shows the list of packages that the current package | | 6551 | <dd><p>This target shows the list of packages that the current package |
6552 | depends on for running.</p></dd> | | 6552 | depends on for running.</p></dd> |
6553 | <dt><span class="term">check-shlibs</span></dt> | | 6553 | <dt><span class="term">check-shlibs</span></dt> |
6554 | <dd><p>After a package is installed, check all its | | 6554 | <dd><p>After a package is installed, check all its |
6555 | binaries and (on ELF platforms) shared libraries to see | | 6555 | binaries and (on ELF platforms) shared libraries to see |
6556 | if they find the shared libs they need. Run by default | | 6556 | if they find the shared libs they need. Run by default |
6557 | 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> | | 6557 | 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> |
6558 | <dt><span class="term">print-PLIST</span></dt> | | 6558 | <dt><span class="term">print-PLIST</span></dt> |
6559 | <dd> | | 6559 | <dd> |
6560 | <p>After a <span class="quote">“<span class="quote">make install</span>”</span> from a new or | | 6560 | <p>After a <span class="quote">“<span class="quote">make install</span>”</span> from a new or |
6561 | upgraded pkg, this prints out an attempt to generate a | | 6561 | upgraded pkg, this prints out an attempt to generate a |
6562 | new <code class="filename">PLIST</code> from a <span class="command"><strong>find | | 6562 | new <code class="filename">PLIST</code> from a <span class="command"><strong>find |
6563 | -newer work/.extract_done</strong></span>. An attempt is made | | 6563 | -newer work/.extract_done</strong></span>. An attempt is made |
6564 | to care for shared libs etc., but it is | | 6564 | to care for shared libs etc., but it is |
6565 | <span class="emphasis"><em>strongly</em></span> recommended to review the | | 6565 | <span class="emphasis"><em>strongly</em></span> recommended to review the |
6566 | result before putting it into | | 6566 | result before putting it into |
6567 | <code class="filename">PLIST</code>. On upgrades, it's useful to | | 6567 | <code class="filename">PLIST</code>. On upgrades, it's useful to |
6568 | diff the output of this command against an already | | 6568 | diff the output of this command against an already |
6569 | existing <code class="filename">PLIST</code> file.</p> | | 6569 | existing <code class="filename">PLIST</code> file.</p> |
6570 | <p>If the package installs files via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?tar+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">tar</span>(1)</span></a> or | | 6570 | <p>If the package installs files via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?tar+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">tar</span>(1)</span></a> or |
6571 | other methods that don't update file access times, be | | 6571 | other methods that don't update file access times, be |
6572 | sure to add these files manually to your | | 6572 | sure to add these files manually to your |
6573 | <code class="filename">PLIST</code>, as the <span class="quote">“<span class="quote">find | | 6573 | <code class="filename">PLIST</code>, as the <span class="quote">“<span class="quote">find |
6574 | -newer</span>”</span> command used by this target won't catch | | 6574 | -newer</span>”</span> command used by this target won't catch |
6575 | them!</p> | | 6575 | them!</p> |
6576 | <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 | | 6576 | <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 |
6577 | information on this target.</p> | | 6577 | information on this target.</p> |
6578 | </dd> | | 6578 | </dd> |
6579 | <dt><span class="term">bulk-package</span></dt> | | 6579 | <dt><span class="term">bulk-package</span></dt> |
6580 | <dd> | | 6580 | <dd> |
6581 | <p>Used to do bulk builds. If an appropriate binary | | 6581 | <p>Used to do bulk builds. If an appropriate binary |
6582 | package already exists, no action is taken. If not, this | | 6582 | package already exists, no action is taken. If not, this |
6583 | target will compile, install and package it (and its | | 6583 | target will compile, install and package it (and its |
6584 | depends, if <code class="varname">PKG_DEPENDS</code> is set | | 6584 | depends, if <code class="varname">PKG_DEPENDS</code> is set |
6585 | 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 | | 6585 | 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 |
6586 | builds)</i></a>). | | 6586 | builds)</i></a>). |
6587 | After creating the binary package, the sources, the | | 6587 | After creating the binary package, the sources, the |
6588 | just-installed package and its required packages are | | 6588 | just-installed package and its required packages are |
6589 | removed, preserving free disk space.</p> | | 6589 | removed, preserving free disk space.</p> |
6590 | <p><span class="emphasis"><em>Beware that this target may deinstall | | 6590 | <p><span class="emphasis"><em>Beware that this target may deinstall |
6591 | all packages installed on a system!</em></span></p> | | 6591 | all packages installed on a system!</em></span></p> |
6592 | </dd> | | 6592 | </dd> |
6593 | <dt><span class="term">bulk-install</span></dt> | | 6593 | <dt><span class="term">bulk-install</span></dt> |
6594 | <dd> | | 6594 | <dd> |
6595 | <p>Used during bulk-installs to install required | | 6595 | <p>Used during bulk-installs to install required |
6596 | packages. If an up-to-date binary package is available, | | 6596 | packages. If an up-to-date binary package is available, |
6597 | it will be installed via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>. If not, | | 6597 | it will be installed via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a>. If not, |
6598 | <span class="command"><strong>make bulk-package</strong></span> will be executed, | | 6598 | <span class="command"><strong>make bulk-package</strong></span> will be executed, |
6599 | but the installed binary won't be removed.</p> | | 6599 | but the installed binary won't be removed.</p> |
6600 | <p>A binary package is considered | | 6600 | <p>A binary package is considered |
6601 | <span class="quote">“<span class="quote">up-to-date</span>”</span> to be installed via | | 6601 | <span class="quote">“<span class="quote">up-to-date</span>”</span> to be installed via |
6602 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a> if:</p> | | 6602 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_add+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_add</span>(1)</span></a> if:</p> |
6603 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 6603 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
6604 | <li class="listitem"><p>None of the package's files | | 6604 | <li class="listitem"><p>None of the package's files |
6605 | (<code class="filename">Makefile</code>, ...) were modified | | 6605 | (<code class="filename">Makefile</code>, ...) were modified |
6606 | since it was built.</p></li> | | 6606 | since it was built.</p></li> |
6607 | <li class="listitem"><p>None of the package's required (binary) | | 6607 | <li class="listitem"><p>None of the package's required (binary) |
6608 | packages were modified since it was built.</p></li> | | 6608 | packages were modified since it was built.</p></li> |
6609 | </ul></div> | | 6609 | </ul></div> |
6610 | <p><span class="emphasis"><em>Beware that this target may deinstall | | 6610 | <p><span class="emphasis"><em>Beware that this target may deinstall |
6611 | all packages installed on a system!</em></span></p> | | 6611 | all packages installed on a system!</em></span></p> |
6612 | </dd> | | 6612 | </dd> |
6613 | </dl></div> | | 6613 | </dl></div> |
6614 | </div> | | 6614 | </div> |
6615 | </div> | | 6615 | </div> |
6616 | <div class="chapter"> | | 6616 | <div class="chapter"> |
6617 | <div class="titlepage"><div><div><h2 class="title"> | | 6617 | <div class="titlepage"><div><div><h2 class="title"> |
6618 | <a name="tools"></a>Chapter 18. Tools needed for building or running</h2></div></div></div> | | 6618 | <a name="tools"></a>Chapter 18. Tools needed for building or running</h2></div></div></div> |
6619 | <div class="toc"> | | 6619 | <div class="toc"> |
6620 | <p><b>Table of Contents</b></p> | | 6620 | <p><b>Table of Contents</b></p> |
6621 | <dl class="toc"> | | 6621 | <dl class="toc"> |
6622 | <dt><span class="sect1"><a href="#pkgsrc-tools">18.1. Tools for pkgsrc builds</a></span></dt> | | 6622 | <dt><span class="sect1"><a href="#pkgsrc-tools">18.1. Tools for pkgsrc builds</a></span></dt> |
6623 | <dt><span class="sect1"><a href="#package-tools">18.2. Tools needed by packages</a></span></dt> | | 6623 | <dt><span class="sect1"><a href="#package-tools">18.2. Tools needed by packages</a></span></dt> |
6624 | <dt><span class="sect1"><a href="#platform-tools">18.3. Tools provided by platforms</a></span></dt> | | 6624 | <dt><span class="sect1"><a href="#platform-tools">18.3. Tools provided by platforms</a></span></dt> |
6625 | </dl> | | 6625 | </dl> |
6626 | </div> | | 6626 | </div> |
6627 | <p>The <code class="varname">USE_TOOLS</code> definition is used both internally | | 6627 | <p>The <code class="varname">USE_TOOLS</code> definition is used both internally |
6628 | by pkgsrc and also for individual packages to define what commands | | 6628 | by pkgsrc and also for individual packages to define what commands |
6629 | are needed for building a package (like <code class="varname">BUILD_DEPENDS</code>) | | 6629 | are needed for building a package (like <code class="varname">BUILD_DEPENDS</code>) |
6630 | or for later run-time of an installed packaged (such as | | 6630 | or for later run-time of an installed packaged (such as |
6631 | <code class="varname">DEPENDS</code>). | | 6631 | <code class="varname">DEPENDS</code>). |
6632 | If the native system provides an adequate tool, then in many cases, a pkgsrc | | 6632 | If the native system provides an adequate tool, then in many cases, a pkgsrc |
6633 | package will not be used.</p> | | 6633 | package will not be used.</p> |
6634 | <p>When building a package, the replacement tools are | | 6634 | <p>When building a package, the replacement tools are |
6635 | made available in a directory (as symlinks or wrapper scripts) | | 6635 | made available in a directory (as symlinks or wrapper scripts) |
6636 | that is early in the executable search path. Just like the buildlink | | 6636 | that is early in the executable search path. Just like the buildlink |
6637 | system, this helps with consistent builds.</p> | | 6637 | system, this helps with consistent builds.</p> |
6638 | <p>A tool may be needed to help build a specific package. For example, | | 6638 | <p>A tool may be needed to help build a specific package. For example, |
6639 | perl, GNU make (gmake) or yacc may be needed.</p> | | 6639 | perl, GNU make (gmake) or yacc may be needed.</p> |
6640 | <p>Also a tool may be needed, for example, because the native system's supplied | | 6640 | <p>Also a tool may be needed, for example, because the native system's supplied |
6641 | tool may be inefficient for building a package with pkgsrc. | | 6641 | tool may be inefficient for building a package with pkgsrc. |
6642 | For example, a package may need GNU awk, bison (instead of | | 6642 | For example, a package may need GNU awk, bison (instead of |
6643 | yacc) or a better sed.</p> | | 6643 | yacc) or a better sed.</p> |
6644 | <p>The tools used by a package can be listed by running | | 6644 | <p>The tools used by a package can be listed by running |
6645 | <span class="command"><strong>make show-tools</strong></span>.</p> | | 6645 | <span class="command"><strong>make show-tools</strong></span>.</p> |
6646 | <div class="sect1"> | | 6646 | <div class="sect1"> |
6647 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6647 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6648 | <a name="pkgsrc-tools"></a>18.1. Tools for pkgsrc builds</h2></div></div></div> | | 6648 | <a name="pkgsrc-tools"></a>18.1. Tools for pkgsrc builds</h2></div></div></div> |
6649 | <p>The default set of tools used by pkgsrc is defined in | | 6649 | <p>The default set of tools used by pkgsrc is defined in |
6650 | <code class="filename">bsd.pkg.mk</code>. This includes standard Unix tools, | | 6650 | <code class="filename">bsd.pkg.mk</code>. This includes standard Unix tools, |
6651 | such as: <span class="command"><strong>cat</strong></span>, <span class="command"><strong>awk</strong></span>, | | 6651 | such as: <span class="command"><strong>cat</strong></span>, <span class="command"><strong>awk</strong></span>, |
6652 | <span class="command"><strong>chmod</strong></span>, <span class="command"><strong>test</strong></span>, and so on. | | 6652 | <span class="command"><strong>chmod</strong></span>, <span class="command"><strong>test</strong></span>, and so on. |
6653 | These can be seen by running: | | 6653 | These can be seen by running: |
6654 | <span class="command"><strong>make show-var VARNAME=USE_TOOLS</strong></span>.</p> | | 6654 | <span class="command"><strong>make show-var VARNAME=USE_TOOLS</strong></span>.</p> |
6655 | <p>If a package needs a specific program to build | | 6655 | <p>If a package needs a specific program to build |
6656 | then the <code class="varname">USE_TOOLS</code> variable can be used | | 6656 | then the <code class="varname">USE_TOOLS</code> variable can be used |
6657 | to define the tools needed.</p> | | 6657 | to define the tools needed.</p> |
6658 | </div> | | 6658 | </div> |
6659 | <div class="sect1"> | | 6659 | <div class="sect1"> |
6660 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6660 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6661 | <a name="package-tools"></a>18.2. Tools needed by packages</h2></div></div></div> | | 6661 | <a name="package-tools"></a>18.2. Tools needed by packages</h2></div></div></div> |
6662 | <p>In the following examples, the :run means that it is needed at | | 6662 | <p>In the following examples, the :run means that it is needed at |
6663 | run-time (and becomes a DEPENDS). | | 6663 | run-time (and becomes a DEPENDS). |
6664 | The default is a build dependency which can be set with | | 6664 | The default is a build dependency which can be set with |
6665 | :build. (So in this example, it is the same as gmake:build | | 6665 | :build. (So in this example, it is the same as gmake:build |
6666 | and pkg-config:build.)</p> | | 6666 | and pkg-config:build.)</p> |
6667 | <pre class="programlisting"> | | 6667 | <pre class="programlisting"> |
6668 | USE_TOOLS+= gmake perl:run pkg-config | | 6668 | USE_TOOLS+= gmake perl:run pkg-config |
6669 | </pre> | | 6669 | </pre> |
6670 | <p>When using the tools framework, a | | 6670 | <p>When using the tools framework, a |
6671 | <code class="varname">TOOLS_PATH.foo</code> variable is defined | | 6671 | <code class="varname">TOOLS_PATH.foo</code> variable is defined |
6672 | which contains the full path to the appropriate tool. For example, | | 6672 | which contains the full path to the appropriate tool. For example, |
6673 | <code class="varname">TOOLS_PATH.bash</code> could be <span class="quote">“<span class="quote">/bin/bash</span>”</span> | | 6673 | <code class="varname">TOOLS_PATH.bash</code> could be <span class="quote">“<span class="quote">/bin/bash</span>”</span> |
6674 | on Linux systems.</p> | | 6674 | on Linux systems.</p> |
6675 | <p>If you always need a pkgsrc version of the | | 6675 | <p>If you always need a pkgsrc version of the |
6676 | tool at run-time, then just use <code class="varname">DEPENDS</code> instead. | | 6676 | tool at run-time, then just use <code class="varname">DEPENDS</code> instead. |
6677 | </p> | | 6677 | </p> |
6678 | </div> | | 6678 | </div> |
6679 | <div class="sect1"> | | 6679 | <div class="sect1"> |
6680 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6680 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6681 | <a name="platform-tools"></a>18.3. Tools provided by platforms</h2></div></div></div> | | 6681 | <a name="platform-tools"></a>18.3. Tools provided by platforms</h2></div></div></div> |
6682 | <p>When improving or porting pkgsrc to a new platform, have a look | | 6682 | <p>When improving or porting pkgsrc to a new platform, have a look |
6683 | at (or create) the corresponding platform specific make file fragment under | | 6683 | at (or create) the corresponding platform specific make file fragment under |
6684 | <code class="filename">pkgsrc/mk/tools/tools.${OPSYS}.mk</code> which defines | | 6684 | <code class="filename">pkgsrc/mk/tools/tools.${OPSYS}.mk</code> which defines |
6685 | the name of the common tools. For example:</p> | | 6685 | the name of the common tools. For example:</p> |
6686 | <pre class="programlisting"> | | 6686 | <pre class="programlisting"> |
6687 | .if exists(/usr/bin/bzcat) | | 6687 | .if exists(/usr/bin/bzcat) |
6688 | TOOLS_PLATFORM.bzcat?= /usr/bin/bzcat | | 6688 | TOOLS_PLATFORM.bzcat?= /usr/bin/bzcat |
6689 | .elif exists(/usr/bin/bzip2) | | 6689 | .elif exists(/usr/bin/bzip2) |
6690 | TOOLS_PLATFORM.bzcat?= /usr/bin/bzip2 -cd | | 6690 | TOOLS_PLATFORM.bzcat?= /usr/bin/bzip2 -cd |
6691 | .endif | | 6691 | .endif |
6692 | | | 6692 | |
6693 | TOOLS_PLATFORM.true?= true # shell builtin | | 6693 | TOOLS_PLATFORM.true?= true # shell builtin |
6694 | </pre> | | 6694 | </pre> |
6695 | </div> | | 6695 | </div> |
6696 | </div> | | 6696 | </div> |
6697 | <div class="chapter"> | | 6697 | <div class="chapter"> |
6698 | <div class="titlepage"><div><div><h2 class="title"> | | 6698 | <div class="titlepage"><div><div><h2 class="title"> |
6699 | <a name="fixes"></a>Chapter 19. Making your package work</h2></div></div></div> | | 6699 | <a name="fixes"></a>Chapter 19. Making your package work</h2></div></div></div> |
6700 | <div class="toc"> | | 6700 | <div class="toc"> |
6701 | <p><b>Table of Contents</b></p> | | 6701 | <p><b>Table of Contents</b></p> |
6702 | <dl class="toc"> | | 6702 | <dl class="toc"> |
6703 | <dt><span class="sect1"><a href="#general-operation">19.1. General operation</a></span></dt> | | 6703 | <dt><span class="sect1"><a href="#general-operation">19.1. General operation</a></span></dt> |
6704 | <dd><dl> | | 6704 | <dd><dl> |
6705 | <dt><span class="sect2"><a href="#pulling-vars-from-etc-mk.conf">19.1.1. How to pull in user-settable variables from <code class="filename">mk.conf</code></a></span></dt> | | 6705 | <dt><span class="sect2"><a href="#pulling-vars-from-etc-mk.conf">19.1.1. How to pull in user-settable variables from <code class="filename">mk.conf</code></a></span></dt> |
6706 | <dt><span class="sect2"><a href="#user-interaction">19.1.2. User interaction</a></span></dt> | | 6706 | <dt><span class="sect2"><a href="#user-interaction">19.1.2. User interaction</a></span></dt> |
6707 | <dt><span class="sect2"><a href="#handling-licenses">19.1.3. Handling licenses</a></span></dt> | | 6707 | <dt><span class="sect2"><a href="#handling-licenses">19.1.3. Handling licenses</a></span></dt> |
6708 | <dt><span class="sect2"><a href="#restricted-packages">19.1.4. Restricted packages</a></span></dt> | | 6708 | <dt><span class="sect2"><a href="#restricted-packages">19.1.4. Restricted packages</a></span></dt> |
6709 | <dt><span class="sect2"><a href="#dependencies">19.1.5. Handling dependencies</a></span></dt> | | 6709 | <dt><span class="sect2"><a href="#dependencies">19.1.5. Handling dependencies</a></span></dt> |
6710 | <dt><span class="sect2"><a href="#conflicts">19.1.6. Handling conflicts with other packages</a></span></dt> | | 6710 | <dt><span class="sect2"><a href="#conflicts">19.1.6. Handling conflicts with other packages</a></span></dt> |
6711 | <dt><span class="sect2"><a href="#not-building-packages">19.1.7. Packages that cannot or should not be built</a></span></dt> | | 6711 | <dt><span class="sect2"><a href="#not-building-packages">19.1.7. Packages that cannot or should not be built</a></span></dt> |
6712 | <dt><span class="sect2"><a href="#undeletable-packages">19.1.8. Packages which should not be deleted, once installed</a></span></dt> | | 6712 | <dt><span class="sect2"><a href="#undeletable-packages">19.1.8. Packages which should not be deleted, once installed</a></span></dt> |
6713 | <dt><span class="sect2"><a href="#security-handling">19.1.9. Handling packages with security problems</a></span></dt> | | 6713 | <dt><span class="sect2"><a href="#security-handling">19.1.9. Handling packages with security problems</a></span></dt> |
6714 | <dt><span class="sect2"><a href="#bumping-pkgrevision">19.1.10. How to handle incrementing versions when fixing an existing package</a></span></dt> | | 6714 | <dt><span class="sect2"><a href="#bumping-pkgrevision">19.1.10. How to handle incrementing versions when fixing an existing package</a></span></dt> |
6715 | <dt><span class="sect2"><a href="#fixes.subst">19.1.11. Substituting variable text in the package files (the SUBST framework)</a></span></dt> | | 6715 | <dt><span class="sect2"><a href="#fixes.subst">19.1.11. Substituting variable text in the package files (the SUBST framework)</a></span></dt> |
6716 | </dl></dd> | | 6716 | </dl></dd> |
6717 | <dt><span class="sect1"><a href="#fixes.fetch">19.2. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> | | 6717 | <dt><span class="sect1"><a href="#fixes.fetch">19.2. The <span class="emphasis"><em>fetch</em></span> phase</a></span></dt> |
6718 | <dd><dl> | | 6718 | <dd><dl> |
6719 | <dt><span class="sect2"><a href="#no-plain-download">19.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> | | 6719 | <dt><span class="sect2"><a href="#no-plain-download">19.2.1. Packages whose distfiles aren't available for plain downloading</a></span></dt> |
6720 | <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> | | 6720 | <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> |
6721 | <dt><span class="sect2"><a href="#build.fetch.github">19.2.3. Packages hosted on github.com</a></span></dt> | | 6721 | <dt><span class="sect2"><a href="#build.fetch.github">19.2.3. Packages hosted on github.com</a></span></dt> |
6722 | </dl></dd> | | 6722 | </dl></dd> |
6723 | <dt><span class="sect1"><a href="#fixes.configure">19.3. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> | | 6723 | <dt><span class="sect1"><a href="#fixes.configure">19.3. The <span class="emphasis"><em>configure</em></span> phase</a></span></dt> |
6724 | <dd><dl> | | 6724 | <dd><dl> |
6725 | <dt><span class="sect2"><a href="#fixes.libtool">19.3.1. Shared libraries - libtool</a></span></dt> | | 6725 | <dt><span class="sect2"><a href="#fixes.libtool">19.3.1. Shared libraries - libtool</a></span></dt> |
6726 | <dt><span class="sect2"><a href="#using-libtool">19.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> | | 6726 | <dt><span class="sect2"><a href="#using-libtool">19.3.2. Using libtool on GNU packages that already support libtool</a></span></dt> |
6727 | <dt><span class="sect2"><a href="#autoconf-automake">19.3.3. GNU Autoconf/Automake</a></span></dt> | | 6727 | <dt><span class="sect2"><a href="#autoconf-automake">19.3.3. GNU Autoconf/Automake</a></span></dt> |
6728 | </dl></dd> | | 6728 | </dl></dd> |
6729 | <dt><span class="sect1"><a href="#programming-languages">19.4. Programming languages</a></span></dt> | | 6729 | <dt><span class="sect1"><a href="#programming-languages">19.4. Programming languages</a></span></dt> |
6730 | <dd><dl> | | 6730 | <dd><dl> |
6731 | <dt><span class="sect2"><a href="#basic-programming-languages">19.4.1. C, C++, and Fortran</a></span></dt> | | 6731 | <dt><span class="sect2"><a href="#basic-programming-languages">19.4.1. C, C++, and Fortran</a></span></dt> |
6732 | <dt><span class="sect2"><a href="#java-programming-language">19.4.2. Java</a></span></dt> | | 6732 | <dt><span class="sect2"><a href="#java-programming-language">19.4.2. Java</a></span></dt> |
6733 | <dt><span class="sect2"><a href="#perl-scripts">19.4.3. Packages containing perl scripts</a></span></dt> | | 6733 | <dt><span class="sect2"><a href="#perl-scripts">19.4.3. Packages containing perl scripts</a></span></dt> |
6734 | <dt><span class="sect2"><a href="#shell-scripts">19.4.4. Packages containing shell scripts</a></span></dt> | | 6734 | <dt><span class="sect2"><a href="#shell-scripts">19.4.4. Packages containing shell scripts</a></span></dt> |
6735 | <dt><span class="sect2"><a href="#other-programming-languages">19.4.5. Other programming languages</a></span></dt> | | 6735 | <dt><span class="sect2"><a href="#other-programming-languages">19.4.5. Other programming languages</a></span></dt> |
6736 | </dl></dd> | | 6736 | </dl></dd> |
6737 | <dt><span class="sect1"><a href="#fixes.build">19.5. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> | | 6737 | <dt><span class="sect1"><a href="#fixes.build">19.5. The <span class="emphasis"><em>build</em></span> phase</a></span></dt> |
6738 | <dd><dl> | | 6738 | <dd><dl> |
6739 | <dt><span class="sect2"><a href="#fixes.build.cpp">19.5.1. Compiling C and C++ code conditionally</a></span></dt> | | 6739 | <dt><span class="sect2"><a href="#fixes.build.cpp">19.5.1. Compiling C and C++ code conditionally</a></span></dt> |
6740 | <dt><span class="sect2"><a href="#compiler-bugs">19.5.2. How to handle compiler bugs</a></span></dt> | | 6740 | <dt><span class="sect2"><a href="#compiler-bugs">19.5.2. How to handle compiler bugs</a></span></dt> |
6741 | <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> | | 6741 | <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> |
6742 | <dt><span class="sect2"><a href="#out-of-memory">19.5.4. Running out of memory</a></span></dt> | | 6742 | <dt><span class="sect2"><a href="#out-of-memory">19.5.4. Running out of memory</a></span></dt> |
6743 | </dl></dd> | | 6743 | </dl></dd> |
6744 | <dt><span class="sect1"><a href="#fixes.install">19.6. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> | | 6744 | <dt><span class="sect1"><a href="#fixes.install">19.6. The <span class="emphasis"><em>install</em></span> phase</a></span></dt> |
6745 | <dd><dl> | | 6745 | <dd><dl> |
6746 | <dt><span class="sect2"><a href="#install-scripts">19.6.1. Creating needed directories</a></span></dt> | | 6746 | <dt><span class="sect2"><a href="#install-scripts">19.6.1. Creating needed directories</a></span></dt> |
6747 | <dt><span class="sect2"><a href="#where-to-install-documentation">19.6.2. Where to install documentation</a></span></dt> | | 6747 | <dt><span class="sect2"><a href="#where-to-install-documentation">19.6.2. Where to install documentation</a></span></dt> |
6748 | <dt><span class="sect2"><a href="#installing-score-files">19.6.3. Installing highscore files</a></span></dt> | | 6748 | <dt><span class="sect2"><a href="#installing-score-files">19.6.3. Installing highscore files</a></span></dt> |
6749 | <dt><span class="sect2"><a href="#destdir-support">19.6.4. Adding DESTDIR support to packages</a></span></dt> | | 6749 | <dt><span class="sect2"><a href="#destdir-support">19.6.4. Adding DESTDIR support to packages</a></span></dt> |
6750 | <dt><span class="sect2"><a href="#hardcoded-paths">19.6.5. Packages with hardcoded paths to other interpreters</a></span></dt> | | 6750 | <dt><span class="sect2"><a href="#hardcoded-paths">19.6.5. Packages with hardcoded paths to other interpreters</a></span></dt> |
6751 | <dt><span class="sect2"><a href="#perl-modules">19.6.6. Packages installing perl modules</a></span></dt> | | 6751 | <dt><span class="sect2"><a href="#perl-modules">19.6.6. Packages installing perl modules</a></span></dt> |
6752 | <dt><span class="sect2"><a href="#faq.info-files">19.6.7. Packages installing info files</a></span></dt> | | 6752 | <dt><span class="sect2"><a href="#faq.info-files">19.6.7. Packages installing info files</a></span></dt> |
6753 | <dt><span class="sect2"><a href="#manpages">19.6.8. Packages installing man pages</a></span></dt> | | 6753 | <dt><span class="sect2"><a href="#manpages">19.6.8. Packages installing man pages</a></span></dt> |
6754 | <dt><span class="sect2"><a href="#gconf-data-files">19.6.9. Packages installing GConf data files</a></span></dt> | | 6754 | <dt><span class="sect2"><a href="#gconf-data-files">19.6.9. Packages installing GConf data files</a></span></dt> |
6755 | <dt><span class="sect2"><a href="#scrollkeeper-data-files">19.6.10. Packages installing scrollkeeper/rarian data files</a></span></dt> | | 6755 | <dt><span class="sect2"><a href="#scrollkeeper-data-files">19.6.10. Packages installing scrollkeeper/rarian data files</a></span></dt> |
6756 | <dt><span class="sect2"><a href="#x11-fonts">19.6.11. Packages installing X11 fonts</a></span></dt> | | 6756 | <dt><span class="sect2"><a href="#x11-fonts">19.6.11. Packages installing X11 fonts</a></span></dt> |
6757 | <dt><span class="sect2"><a href="#gtk2-modules">19.6.12. Packages installing GTK2 modules</a></span></dt> | | 6757 | <dt><span class="sect2"><a href="#gtk2-modules">19.6.12. Packages installing GTK2 modules</a></span></dt> |
6758 | <dt><span class="sect2"><a href="#sgml-xml-data">19.6.13. Packages installing SGML or XML data</a></span></dt> | | 6758 | <dt><span class="sect2"><a href="#sgml-xml-data">19.6.13. Packages installing SGML or XML data</a></span></dt> |
6759 | <dt><span class="sect2"><a href="#mime-database">19.6.14. Packages installing extensions to the MIME database</a></span></dt> | | 6759 | <dt><span class="sect2"><a href="#mime-database">19.6.14. Packages installing extensions to the MIME database</a></span></dt> |
6760 | <dt><span class="sect2"><a href="#intltool">19.6.15. Packages using intltool</a></span></dt> | | 6760 | <dt><span class="sect2"><a href="#intltool">19.6.15. Packages using intltool</a></span></dt> |
6761 | <dt><span class="sect2"><a href="#startup-scripts">19.6.16. Packages installing startup scripts</a></span></dt> | | 6761 | <dt><span class="sect2"><a href="#startup-scripts">19.6.16. Packages installing startup scripts</a></span></dt> |
6762 | <dt><span class="sect2"><a href="#tex-packages">19.6.17. Packages installing TeX modules</a></span></dt> | | 6762 | <dt><span class="sect2"><a href="#tex-packages">19.6.17. Packages installing TeX modules</a></span></dt> |
6763 | <dt><span class="sect2"><a href="#emulation-packages">19.6.18. Packages supporting running binaries in | | 6763 | <dt><span class="sect2"><a href="#emulation-packages">19.6.18. Packages supporting running binaries in |
6764 | emulation</a></span></dt> | | 6764 | emulation</a></span></dt> |
6765 | <dt><span class="sect2"><a href="#hicolor-theme">19.6.19. Packages installing hicolor theme icons</a></span></dt> | | 6765 | <dt><span class="sect2"><a href="#hicolor-theme">19.6.19. Packages installing hicolor theme icons</a></span></dt> |
6766 | <dt><span class="sect2"><a href="#desktop-files">19.6.20. Packages installing desktop files</a></span></dt> | | 6766 | <dt><span class="sect2"><a href="#desktop-files">19.6.20. Packages installing desktop files</a></span></dt> |
6767 | </dl></dd> | | 6767 | </dl></dd> |
6768 | <dt><span class="sect1"><a href="#punting">19.7. Marking packages as having problems</a></span></dt> | | 6768 | <dt><span class="sect1"><a href="#punting">19.7. Marking packages as having problems</a></span></dt> |
6769 | </dl> | | 6769 | </dl> |
6770 | </div> | | 6770 | </div> |
6771 | <div class="sect1"> | | 6771 | <div class="sect1"> |
6772 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 6772 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
6773 | <a name="general-operation"></a>19.1. General operation</h2></div></div></div> | | 6773 | <a name="general-operation"></a>19.1. General operation</h2></div></div></div> |
6774 | <p>One appealing feature of pkgsrc is that it runs on many | | 6774 | <p>One appealing feature of pkgsrc is that it runs on many |
6775 | different platforms. As a result, it is important to ensure, | | 6775 | different platforms. As a result, it is important to ensure, |
6776 | where possible, that packages in pkgsrc are portable. This | | 6776 | where possible, that packages in pkgsrc are portable. This |
6777 | chapter mentions some particular details you should pay | | 6777 | chapter mentions some particular details you should pay |
6778 | attention to while working on pkgsrc.</p> | | 6778 | attention to while working on pkgsrc.</p> |
6779 | <div class="sect2"> | | 6779 | <div class="sect2"> |
6780 | <div class="titlepage"><div><div><h3 class="title"> | | 6780 | <div class="titlepage"><div><div><h3 class="title"> |
6781 | <a name="pulling-vars-from-etc-mk.conf"></a>19.1.1. How to pull in user-settable variables from <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> | | 6781 | <a name="pulling-vars-from-etc-mk.conf"></a>19.1.1. How to pull in user-settable variables from <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> |
6782 | </h3></div></div></div> | | 6782 | </h3></div></div></div> |
6783 | <p>The pkgsrc user can configure pkgsrc by overriding several | | 6783 | <p>The pkgsrc user can configure pkgsrc by overriding several |
6784 | variables in the file pointed to by <code class="varname">MAKECONF</code>, | | 6784 | variables in the file pointed to by <code class="varname">MAKECONF</code>, |
6785 | which is <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> by default. When you | | 6785 | which is <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> by default. When you |
6786 | want to use those variables in the preprocessor directives of | | 6786 | want to use those variables in the preprocessor directives of |
6787 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> (for example <code class="literal">.if</code> or | | 6787 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> (for example <code class="literal">.if</code> or |
6788 | <code class="literal">.for</code>), you need to include the file | | 6788 | <code class="literal">.for</code>), you need to include the file |
6789 | <code class="filename">../../mk/bsd.prefs.mk</code> before, which in turn | | 6789 | <code class="filename">../../mk/bsd.prefs.mk</code> before, which in turn |
6790 | loads the user preferences.</p> | | 6790 | loads the user preferences.</p> |
6791 | <p>But note that some variables may not be completely defined | | 6791 | <p>But note that some variables may not be completely defined |
6792 | after <code class="filename">../../mk/bsd.prefs.mk</code> has been | | 6792 | after <code class="filename">../../mk/bsd.prefs.mk</code> has been |
6793 | included, as they may contain references to variables that are | | 6793 | included, as they may contain references to variables that are |
6794 | not yet defined. In shell commands (the lines in | | 6794 | not yet defined. In shell commands (the lines in |
6795 | <code class="filename">Makefile</code> that are indented with a tab) this | | 6795 | <code class="filename">Makefile</code> that are indented with a tab) this |
6796 | is no problem, since variables are only expanded when they are | | 6796 | is no problem, since variables are only expanded when they are |
6797 | used. But in the preprocessor directives mentioned above and in | | 6797 | used. But in the preprocessor directives mentioned above and in |
6798 | dependency lines (of the form <code class="literal">target: | | 6798 | dependency lines (of the form <code class="literal">target: |
6799 | dependencies</code>) the variables are expanded at load | | 6799 | dependencies</code>) the variables are expanded at load |
6800 | time.</p> | | 6800 | time.</p> |
6801 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 6801 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
6802 | <h3 class="title">Note</h3> | | 6802 | <h3 class="title">Note</h3> |
6803 | <p>To check whether a variable can be used at load time, | | 6803 | <p>To check whether a variable can be used at load time, |
6804 | run <span class="command"><strong>pkglint -Wall</strong></span> on your package.</p> | | 6804 | run <span class="command"><strong>pkglint -Wall</strong></span> on your package.</p> |
6805 | </div> | | 6805 | </div> |
6806 | </div> | | 6806 | </div> |
6807 | <div class="sect2"> | | 6807 | <div class="sect2"> |
6808 | <div class="titlepage"><div><div><h3 class="title"> | | 6808 | <div class="titlepage"><div><div><h3 class="title"> |
6809 | <a name="user-interaction"></a>19.1.2. User interaction</h3></div></div></div> | | 6809 | <a name="user-interaction"></a>19.1.2. User interaction</h3></div></div></div> |
6810 | <p>Occasionally, packages require interaction from the user, | | 6810 | <p>Occasionally, packages require interaction from the user, |
6811 | and this can be in a number of ways:</p> | | 6811 | and this can be in a number of ways:</p> |
6812 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 6812 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
6813 | <li class="listitem"><p>When fetching the distfiles, some packages require user | | 6813 | <li class="listitem"><p>When fetching the distfiles, some packages require user |
6814 | interaction such as entering username/password or accepting a | | 6814 | interaction such as entering username/password or accepting a |
6815 | license on a web page.</p></li> | | 6815 | license on a web page.</p></li> |
6816 | <li class="listitem"><p>When extracting the distfiles, some packages may ask for | | 6816 | <li class="listitem"><p>When extracting the distfiles, some packages may ask for |
6817 | passwords.</p></li> | | 6817 | passwords.</p></li> |
6818 | <li class="listitem"><p>help to configure the package before it is built</p></li> | | 6818 | <li class="listitem"><p>help to configure the package before it is built</p></li> |
6819 | <li class="listitem"><p>help during the build process</p></li> | | 6819 | <li class="listitem"><p>help during the build process</p></li> |
6820 | <li class="listitem"><p>help during the installation of a package</p></li> | | 6820 | <li class="listitem"><p>help during the installation of a package</p></li> |
6821 | </ul></div> | | 6821 | </ul></div> |
6822 | <p>A package can set the <code class="varname">INTERACTIVE_STAGE</code> | | 6822 | <p>A package can set the <code class="varname">INTERACTIVE_STAGE</code> |
6823 | variable to define which stages need interaction. This should be | | 6823 | variable to define which stages need interaction. This should be |
6824 | done in the package's <code class="filename">Makefile</code>, e.g.:</p> | | 6824 | done in the package's <code class="filename">Makefile</code>, e.g.:</p> |
6825 | <pre class="programlisting"> | | 6825 | <pre class="programlisting"> |
6826 | INTERACTIVE_STAGE= configure install | | 6826 | INTERACTIVE_STAGE= configure install |
6827 | </pre> | | 6827 | </pre> |
6828 | <p>The user can then decide to skip this package by setting the | | 6828 | <p>The user can then decide to skip this package by setting the |
6829 | <code class="varname">BATCH</code> variable. Packages that require interaction | | 6829 | <code class="varname">BATCH</code> variable. Packages that require interaction |
6830 | are also excluded from bulk builds.</p> | | 6830 | are also excluded from bulk builds.</p> |
6831 | </div> | | 6831 | </div> |
6832 | <div class="sect2"> | | 6832 | <div class="sect2"> |
6833 | <div class="titlepage"><div><div><h3 class="title"> | | 6833 | <div class="titlepage"><div><div><h3 class="title"> |
6834 | <a name="handling-licenses"></a>19.1.3. Handling licenses</h3></div></div></div> | | 6834 | <a name="handling-licenses"></a>19.1.3. Handling licenses</h3></div></div></div> |
6835 | <p>Authors of software can choose the licence under which software | | 6835 | <p>Authors of software can choose the licence under which software |
6836 | can be copied. The Free Software Foundation has declared some | | 6836 | can be copied. The Free Software Foundation has declared some |
6837 | licenses "Free", and the Open Source Initiative has a definition of | | 6837 | licenses "Free", and the Open Source Initiative has a definition of |
6838 | "Open Source".</p> | | 6838 | "Open Source".</p> |
6839 | <p>By default, pkgsrc allows packages with Free or Open Source | | 6839 | <p>By default, pkgsrc allows packages with Free or Open Source |
6840 | licenses to be built. To allow packages with other licenses to be | | 6840 | licenses to be built. To allow packages with other licenses to be |
6841 | built as well, the pkgsrc user needs to add these licenses to the | | 6841 | built as well, the pkgsrc user needs to add these licenses to the |
6842 | <code class="varname">ACCEPTABLE_LICENSES</code> variable in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. Note | | 6842 | <code class="varname">ACCEPTABLE_LICENSES</code> variable in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. Note |
6843 | that this variable only affects which packages may be | | 6843 | that this variable only affects which packages may be |
6844 | <span class="emphasis"><em>built</em></span>, while the license terms often also | | 6844 | <span class="emphasis"><em>built</em></span>, while the license terms often also |
6845 | restrict the actual use of the package and its redistribution.</p> | | 6845 | restrict the actual use of the package and its redistribution.</p> |
6846 | <p>One might want to only install packages with a BSD license, | | 6846 | <p>One might want to only install packages with a BSD license, |
6847 | or the GPL, and not the other. The free licenses are added to the | | 6847 | or the GPL, and not the other. The free licenses are added to the |
6848 | default <code class="varname">ACCEPTABLE_LICENSES</code> variable. The pkgsrc | | 6848 | default <code class="varname">ACCEPTABLE_LICENSES</code> variable. The pkgsrc |
6849 | user can override the default by setting the | | 6849 | user can override the default by setting the |
6850 | <code class="varname">ACCEPTABLE_LICENSES</code> variable with "=" instead | | 6850 | <code class="varname">ACCEPTABLE_LICENSES</code> variable with "=" instead |
6851 | of "+=". The licenses accepted by default are defined in the | | 6851 | of "+=". The licenses accepted by default are defined in the |
6852 | <code class="varname">DEFAULT_ACCEPTABLE_LICENSES</code> variable in the file | | 6852 | <code class="varname">DEFAULT_ACCEPTABLE_LICENSES</code> variable in the file |
6853 | <code class="filename">pkgsrc/mk/license.mk</code>.</p> | | 6853 | <code class="filename">pkgsrc/mk/license.mk</code>.</p> |
6854 | <p>The license tag mechanism is intended to address | | 6854 | <p>The license tag mechanism is intended to address |
6855 | copyright-related issues surrounding building, installing and | | 6855 | copyright-related issues surrounding building, installing and |
6856 | using a package, and not to address redistribution issues (see | | 6856 | using a package, and not to address redistribution issues (see |
6857 | <code class="varname">RESTRICTED</code> and | | 6857 | <code class="varname">RESTRICTED</code> and |
6858 | <code class="varname">NO_SRC_ON_FTP</code>, etc.). | | 6858 | <code class="varname">NO_SRC_ON_FTP</code>, etc.). |
6859 | Packages with redistribution restrictions should set these | | 6859 | Packages with redistribution restrictions should set these |
6860 | tags.</p> | | 6860 | tags.</p> |
6861 | <p>Denoting that a package may be copied according to a | | 6861 | <p>Denoting that a package may be copied according to a |
6862 | particular license is done by placing the license in | | 6862 | particular license is done by placing the license in |
6863 | <code class="filename">pkgsrc/licenses</code> and setting the | | 6863 | <code class="filename">pkgsrc/licenses</code> and setting the |
6864 | <code class="varname">LICENSE</code> variable to a string identifying the | | 6864 | <code class="varname">LICENSE</code> variable to a string identifying the |
6865 | license, e.g. in <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/graphics/xv/README.html" target="_top"><code class="filename">graphics/xv</code></a>:</p> | | 6865 | license, e.g. in <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/graphics/xv/README.html" target="_top"><code class="filename">graphics/xv</code></a>:</p> |
6866 | <pre class="programlisting"> | | 6866 | <pre class="programlisting"> |
6867 | LICENSE= xv-license | | 6867 | LICENSE= xv-license |
6868 | </pre> | | 6868 | </pre> |
6869 | <p>When trying to build, the user will get a notice that the | | 6869 | <p>When trying to build, the user will get a notice that the |
6870 | package is covered by a license which has not been placed in the | | 6870 | package is covered by a license which has not been placed in the |
6871 | <code class="varname">ACCEPTABLE_LICENSES</code> variable:</p> | | 6871 | <code class="varname">ACCEPTABLE_LICENSES</code> variable:</p> |
6872 | <pre class="programlisting"> | | 6872 | <pre class="programlisting"> |
6873 | <code class="prompt">%</code> <strong class="userinput"><code>make</code></strong> | | 6873 | <code class="prompt">%</code> <strong class="userinput"><code>make</code></strong> |
6874 | ===> xv-3.10anb9 has an unacceptable license: xv-license. | | 6874 | ===> xv-3.10anb9 has an unacceptable license: xv-license. |
6875 | ===> To view the license, enter "/usr/bin/make show-license". | | 6875 | ===> To view the license, enter "/usr/bin/make show-license". |
6876 | ===> To indicate acceptance, add this line to your /etc/mk.conf: | | 6876 | ===> To indicate acceptance, add this line to your /etc/mk.conf: |
6877 | ===> ACCEPTABLE_LICENSES+=xv-license | | 6877 | ===> ACCEPTABLE_LICENSES+=xv-license |
6878 | *** Error code 1 | | 6878 | *** Error code 1 |
6879 | </pre> | | 6879 | </pre> |
6880 | <p>The license can be viewed with <span class="command"><strong>make | | 6880 | <p>The license can be viewed with <span class="command"><strong>make |
6881 | show-license</strong></span>, and if the user so chooses, the line | | 6881 | show-license</strong></span>, and if the user so chooses, the line |
6882 | printed above can be added to <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to | | 6882 | printed above can be added to <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> to |
6883 | convey to pkgsrc that it should not in the future fail because of | | 6883 | convey to pkgsrc that it should not in the future fail because of |
6884 | that license:</p> | | 6884 | that license:</p> |
6885 | <pre class="programlisting"> | | 6885 | <pre class="programlisting"> |
6886 | ACCEPTABLE_LICENSES+=xv-license | | 6886 | ACCEPTABLE_LICENSES+=xv-license |
6887 | </pre> | | 6887 | </pre> |
6888 | <p>The use of <code class="varname">LICENSE=shareware</code>, | | 6888 | <p>The use of <code class="varname">LICENSE=shareware</code>, |
6889 | <code class="varname">LICENSE=no-commercial-use</code>, and similar language | | 6889 | <code class="varname">LICENSE=no-commercial-use</code>, and similar language |
6890 | is deprecated because it does not crisply refer to a particular | | 6890 | is deprecated because it does not crisply refer to a particular |
6891 | license text. Another problem with such usage is that it does not | | 6891 | license text. Another problem with such usage is that it does not |
6892 | enable a user to tell pkgsrc to proceed for a single package | | 6892 | enable a user to tell pkgsrc to proceed for a single package |
6893 | without also telling pkgsrc to proceed for all packages with that | | 6893 | without also telling pkgsrc to proceed for all packages with that |
6894 | tag.</p> | | 6894 | tag.</p> |
6895 | <div class="sect3"> | | 6895 | <div class="sect3"> |
6896 | <div class="titlepage"><div><div><h4 class="title"> | | 6896 | <div class="titlepage"><div><div><h4 class="title"> |
6897 | <a name="new-license"></a>19.1.3.1. Adding a package with a new license</h4></div></div></div> | | 6897 | <a name="new-license"></a>19.1.3.1. Adding a package with a new license</h4></div></div></div> |
6898 | <p>When adding a package with a new license, the following steps | | 6898 | <p>When adding a package with a new license, the following steps |
6899 | are required:</p> | | 6899 | are required:</p> |
6900 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 6900 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
6901 | <li class="listitem"> | | 6901 | <li class="listitem"> |
6902 | <p>Check whether the license qualifies as Free or Open | | 6902 | <p>Check whether the license qualifies as Free or Open |
6903 | Source by referencing <a class="ulink" href="http://www.gnu.org/licenses/license-list.en.html" target="_top">Various Licenses | | 6903 | Source by referencing <a class="ulink" href="http://www.gnu.org/licenses/license-list.en.html" target="_top">Various Licenses |
6904 | and Comments about Them</a> and <a class="ulink" href="http://opensource.org/licenses/alphabetical" target="_top">Licenses by Name | | | 6904 | and Comments about Them</a> and <a class="ulink" href="http://opensource.org/licenses/alphabetical" target="_top">Licenses by Name | |
6905 | Open Source Initiative</a>. If this is the case, the filename in | | 6905 | Open Source Initiative</a>. If this is the case, the filename in |
6906 | <code class="filename">pkgsrc/licenses/</code> does not need the | | 6906 | <code class="filename">pkgsrc/licenses/</code> does not need the |
6907 | <code class="filename">-license</code> suffix, and the license name should be | | 6907 | <code class="filename">-license</code> suffix, and the license name should be |
6908 | added to:</p> | | 6908 | added to:</p> |
6909 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 6909 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
6910 | <li class="listitem"><p>DEFAULT_ACCEPTABLE_LICENSES in <code class="filename">pkgsrc/mk/license.mk</code></p></li> | | 6910 | <li class="listitem"><p>DEFAULT_ACCEPTABLE_LICENSES in <code class="filename">pkgsrc/mk/license.mk</code></p></li> |
6911 | <li class="listitem"><p>default_acceptable_licenses in <code class="filename">pkgsrc/pkgtools/pkg_install/files/lib/license.c</code></p></li> | | 6911 | <li class="listitem"><p>default_acceptable_licenses in <code class="filename">pkgsrc/pkgtools/pkg_install/files/lib/license.c</code></p></li> |
6912 | </ul></div> | | 6912 | </ul></div> |
6913 | </li> | | 6913 | </li> |
6914 | <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> | | 6914 | <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> |
6915 | </ol></div> | | 6915 | </ol></div> |
6916 | </div> | | 6916 | </div> |
6917 | <div class="sect3"> | | 6917 | <div class="sect3"> |
6918 | <div class="titlepage"><div><div><h4 class="title"> | | 6918 | <div class="titlepage"><div><div><h4 class="title"> |
6919 | <a name="change-license"></a>19.1.3.2. Change to the license</h4></div></div></div> | | 6919 | <a name="change-license"></a>19.1.3.2. Change to the license</h4></div></div></div> |
6920 | <p>When the license changes (in a way other than formatting), | | 6920 | <p>When the license changes (in a way other than formatting), |
6921 | make sure that the new license has a different name (e.g., | | 6921 | make sure that the new license has a different name (e.g., |
6922 | append the version number if it exists, or the date). Just | | 6922 | append the version number if it exists, or the date). Just |
6923 | because a user told pkgsrc to build programs under a previous | | 6923 | because a user told pkgsrc to build programs under a previous |
6924 | version of a license does not mean that pkgsrc should build | | 6924 | version of a license does not mean that pkgsrc should build |
6925 | programs under the new licenses. The higher-level point is that | | 6925 | programs under the new licenses. The higher-level point is that |
6926 | pkgsrc does not evaluate licenses for reasonableness; the only | | 6926 | pkgsrc does not evaluate licenses for reasonableness; the only |
6927 | test is a mechanistic test of whether a particular text has been | | 6927 | test is a mechanistic test of whether a particular text has been |
6928 | approved by either of two bodies (FSF or OSI).</p> | | 6928 | approved by either of two bodies (FSF or OSI).</p> |
6929 | </div> | | 6929 | </div> |
6930 | </div> | | 6930 | </div> |
6931 | <div class="sect2"> | | 6931 | <div class="sect2"> |
6932 | <div class="titlepage"><div><div><h3 class="title"> | | 6932 | <div class="titlepage"><div><div><h3 class="title"> |
6933 | <a name="restricted-packages"></a>19.1.4. Restricted packages</h3></div></div></div> | | 6933 | <a name="restricted-packages"></a>19.1.4. Restricted packages</h3></div></div></div> |
6934 | <p>Some licenses restrict how software may be re-distributed. | | 6934 | <p>Some licenses restrict how software may be re-distributed. |
6935 | By declaring the restrictions, package tools can | | 6935 | By declaring the restrictions, package tools can |
6936 | automatically refrain from e.g. placing binary packages on FTP | | 6936 | automatically refrain from e.g. placing binary packages on FTP |
6937 | sites.</p> | | 6937 | sites.</p> |
6938 | <p>There are four possible restrictions, which are | | 6938 | <p>There are four possible restrictions, which are |
6939 | the cross product of sources (distfiles) and binaries not being | | 6939 | the cross product of sources (distfiles) and binaries not being |
6940 | placed on FTP sites and CD-ROMs. Because this is rarely the exact | | 6940 | placed on FTP sites and CD-ROMs. Because this is rarely the exact |
6941 | language in any license, and because non-Free licenses tend to be | | 6941 | language in any license, and because non-Free licenses tend to be |
6942 | different from each other, pkgsrc adopts a definition of FTP and | | 6942 | different from each other, pkgsrc adopts a definition of FTP and |
6943 | CD-ROM. | | 6943 | CD-ROM. |
6944 | | | 6944 | |
6945 | "FTP" means making the source or binary file available over the | | 6945 | "FTP" means making the source or binary file available over the |
6946 | Internet at no charge. | | 6946 | Internet at no charge. |
6947 | | | 6947 | |
6948 | "CD-ROM" means making the source or binary available on some kind of | | 6948 | "CD-ROM" means making the source or binary available on some kind of |
6949 | media, together with other source and binary packages, which is sold | | 6949 | media, together with other source and binary packages, which is sold |
6950 | for a distribution charge. | | 6950 | for a distribution charge. |
6951 | </p> | | 6951 | </p> |
6952 | <p>In order to encode these restrictions, the package system | | 6952 | <p>In order to encode these restrictions, the package system |
6953 | defines five make variables that can be set to note these | | 6953 | defines five make variables that can be set to note these |
6954 | restrictions:</p> | | 6954 | restrictions:</p> |
6955 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 6955 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
6956 | <li class="listitem"> | | 6956 | <li class="listitem"> |
6957 | <p><code class="varname">RESTRICTED</code></p> | | 6957 | <p><code class="varname">RESTRICTED</code></p> |
6958 | <p>This variable should be set whenever a restriction | | 6958 | <p>This variable should be set whenever a restriction |
6959 | exists (regardless of its kind). Set this variable to a | | 6959 | exists (regardless of its kind). Set this variable to a |
6960 | string containing the reason for the restriction. It should | | 6960 | string containing the reason for the restriction. It should |
6961 | be understood that those wanting to understand the restriction | | 6961 | be understood that those wanting to understand the restriction |
6962 | will have to read the license, and perhaps seek advice of | | 6962 | will have to read the license, and perhaps seek advice of |
6963 | counsel.</p> | | 6963 | counsel.</p> |
6964 | </li> | | 6964 | </li> |
6965 | <li class="listitem"> | | 6965 | <li class="listitem"> |
6966 | <p><code class="varname">NO_BIN_ON_CDROM</code></p> | | 6966 | <p><code class="varname">NO_BIN_ON_CDROM</code></p> |
6967 | <p>Binaries may not be placed on CD-ROM containing other | | 6967 | <p>Binaries may not be placed on CD-ROM containing other |
6968 | binary packages, for which a distribution charge may be made. | | 6968 | binary packages, for which a distribution charge may be made. |
6969 | In this case, set this variable to | | 6969 | In this case, set this variable to |
6970 | <code class="varname">${RESTRICTED}</code>.</p> | | 6970 | <code class="varname">${RESTRICTED}</code>.</p> |
6971 | </li> | | 6971 | </li> |
6972 | <li class="listitem"> | | 6972 | <li class="listitem"> |
6973 | <p><code class="varname">NO_BIN_ON_FTP</code></p> | | 6973 | <p><code class="varname">NO_BIN_ON_FTP</code></p> |
6974 | <p>Binaries may not made available on the Internet without | | 6974 | <p>Binaries may not made available on the Internet without |
6975 | charge. In this case, set this variable to | | 6975 | charge. In this case, set this variable to |
6976 | <code class="varname">${RESTRICTED}</code>. If this variable is set, | | 6976 | <code class="varname">${RESTRICTED}</code>. If this variable is set, |
6977 | binary packages will not be included on ftp.NetBSD.org.</p> | | 6977 | binary packages will not be included on ftp.NetBSD.org.</p> |
6978 | </li> | | 6978 | </li> |
6979 | <li class="listitem"> | | 6979 | <li class="listitem"> |
6980 | <p><code class="varname">NO_SRC_ON_CDROM</code></p> | | 6980 | <p><code class="varname">NO_SRC_ON_CDROM</code></p> |
6981 | <p>Distfiles may not be placed on CD-ROM, together with | | 6981 | <p>Distfiles may not be placed on CD-ROM, together with |
6982 | other distfiles, for which a fee may be charged. In this | | 6982 | other distfiles, for which a fee may be charged. In this |
6983 | case, set this variable to <code class="varname">${RESTRICTED}</code>. | | 6983 | case, set this variable to <code class="varname">${RESTRICTED}</code>. |
6984 | </p> | | 6984 | </p> |
6985 | </li> | | 6985 | </li> |
6986 | <li class="listitem"> | | 6986 | <li class="listitem"> |
6987 | <p><code class="varname">NO_SRC_ON_FTP</code></p> | | 6987 | <p><code class="varname">NO_SRC_ON_FTP</code></p> |
6988 | <p>Distfiles may not made available via FTP at no charge. | | 6988 | <p>Distfiles may not made available via FTP at no charge. |
6989 | In this case, set this variable to | | 6989 | In this case, set this variable to |
6990 | <code class="varname">${RESTRICTED}</code>. If this variable is set, | | 6990 | <code class="varname">${RESTRICTED}</code>. If this variable is set, |
6991 | the distfile(s) will not be mirrored on ftp.NetBSD.org.</p> | | 6991 | the distfile(s) will not be mirrored on ftp.NetBSD.org.</p> |
6992 | </li> | | 6992 | </li> |
6993 | </ul></div> | | 6993 | </ul></div> |
6994 | <p>Please note that packages will be removed from pkgsrc when the | | 6994 | <p>Please note that packages will be removed from pkgsrc when the |
6995 | distfiles are not distributable and cannot be obtained for a period | | 6995 | distfiles are not distributable and cannot be obtained for a period |
6996 | of one full quarter branch. Packages with manual/interactive fetch | | 6996 | of one full quarter branch. Packages with manual/interactive fetch |
6997 | must have a maintainer and it is his/her responsibility to ensure | | 6997 | must have a maintainer and it is his/her responsibility to ensure |
6998 | this.</p> | | 6998 | this.</p> |
6999 | </div> | | 6999 | </div> |
7000 | <div class="sect2"> | | 7000 | <div class="sect2"> |
7001 | <div class="titlepage"><div><div><h3 class="title"> | | 7001 | <div class="titlepage"><div><div><h3 class="title"> |
7002 | <a name="dependencies"></a>19.1.5. Handling dependencies</h3></div></div></div> | | 7002 | <a name="dependencies"></a>19.1.5. Handling dependencies</h3></div></div></div> |
7003 | <p>Your package may depend on some other package being present | | 7003 | <p>Your package may depend on some other package being present |
7004 | - and there are various ways of expressing this dependency. | | 7004 | - and there are various ways of expressing this dependency. |
7005 | pkgsrc supports the <code class="varname">BUILD_DEPENDS</code> and | | 7005 | pkgsrc supports the <code class="varname">BUILD_DEPENDS</code> and |
7006 | <code class="varname">DEPENDS</code> definitions, the | | 7006 | <code class="varname">DEPENDS</code> definitions, the |
7007 | <code class="varname">USE_TOOLS</code> definition, as well as dependencies | | 7007 | <code class="varname">USE_TOOLS</code> definition, as well as dependencies |
7008 | via <code class="filename">buildlink3.mk</code>, which is the preferred way | | 7008 | via <code class="filename">buildlink3.mk</code>, which is the preferred way |
7009 | to handle dependencies, and which uses the variables named above. | | 7009 | to handle dependencies, and which uses the variables named above. |
7010 | See <a class="xref" href="#buildlink" title="Chapter 14. Buildlink methodology">Chapter 14, <i>Buildlink methodology</i></a> for more information.</p> | | 7010 | See <a class="xref" href="#buildlink" title="Chapter 14. Buildlink methodology">Chapter 14, <i>Buildlink methodology</i></a> for more information.</p> |
7011 | <p>The basic difference between the two variables is as | | 7011 | <p>The basic difference between the two variables is as |
7012 | follows: The <code class="varname">DEPENDS</code> definition registers | | 7012 | follows: The <code class="varname">DEPENDS</code> definition registers |
7013 | that pre-requisite in the binary package so it will be pulled in | | 7013 | that pre-requisite in the binary package so it will be pulled in |
7014 | when the binary package is later installed, whilst the | | 7014 | when the binary package is later installed, whilst the |
7015 | <code class="varname">BUILD_DEPENDS</code> definition does not, marking a | | 7015 | <code class="varname">BUILD_DEPENDS</code> definition does not, marking a |
7016 | dependency that is only needed for building the package.</p> | | 7016 | dependency that is only needed for building the package.</p> |
7017 | <p>This means that if you only need a package present whilst | | 7017 | <p>This means that if you only need a package present whilst |
7018 | you are building, it should be noted as a | | 7018 | you are building, it should be noted as a |
7019 | <code class="varname">BUILD_DEPENDS</code>.</p> | | 7019 | <code class="varname">BUILD_DEPENDS</code>.</p> |
7020 | <p>The format for a <code class="varname">BUILD_DEPENDS</code> and a | | 7020 | <p>The format for a <code class="varname">BUILD_DEPENDS</code> and a |
7021 | <code class="varname">DEPENDS</code> definition is:</p> | | 7021 | <code class="varname">DEPENDS</code> definition is:</p> |
7022 | <pre class="programlisting"> | | 7022 | <pre class="programlisting"> |
7023 | <pre-req-package-name>:../../<category>/<pre-req-package> | | 7023 | <pre-req-package-name>:../../<category>/<pre-req-package> |
7024 | </pre> | | 7024 | </pre> |
7025 | <p>Please note that the <span class="quote">“<span class="quote">pre-req-package-name</span>”</span> | | 7025 | <p>Please note that the <span class="quote">“<span class="quote">pre-req-package-name</span>”</span> |
7026 | may include any of the wildcard version numbers recognized by | | 7026 | may include any of the wildcard version numbers recognized by |
7027 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_info+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_info</span>(1)</span></a>.</p> | | 7027 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_info+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_info</span>(1)</span></a>.</p> |
7028 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 7028 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
7029 | <li class="listitem"> | | 7029 | <li class="listitem"> |
7030 | <p>If your package needs another package's binaries or | | 7030 | <p>If your package needs another package's binaries or |
7031 | libraries to build and run, and if that package has a | | 7031 | libraries to build and run, and if that package has a |
7032 | <code class="filename">buildlink3.mk</code> file available, use it:</p> | | 7032 | <code class="filename">buildlink3.mk</code> file available, use it:</p> |
7033 | <pre class="programlisting"> | | 7033 | <pre class="programlisting"> |
7034 | .include "../../graphics/jpeg/buildlink3.mk" | | 7034 | .include "../../graphics/jpeg/buildlink3.mk" |
7035 | </pre> | | 7035 | </pre> |
7036 | </li> | | 7036 | </li> |
7037 | <li class="listitem"> | | 7037 | <li class="listitem"> |
7038 | <p>If your package needs another package's binaries or | | 7038 | <p>If your package needs another package's binaries or |
7039 | libraries only for building, and if that package has a | | 7039 | libraries only for building, and if that package has a |
7040 | <code class="filename">buildlink3.mk</code> file available, use it:</p> | | 7040 | <code class="filename">buildlink3.mk</code> file available, use it:</p> |
7041 | <pre class="programlisting"> | | 7041 | <pre class="programlisting"> |
7042 | .include "../../graphics/jpeg/buildlink3.mk" | | 7042 | .include "../../graphics/jpeg/buildlink3.mk" |
7043 | </pre> | | 7043 | </pre> |
7044 | <p>but set | | 7044 | <p>but set |
7045 | <code class="varname">BUILDLINK_DEPMETHOD.<em class="replaceable"><code>jpeg</code></em>?=build</code> | | 7045 | <code class="varname">BUILDLINK_DEPMETHOD.<em class="replaceable"><code>jpeg</code></em>?=build</code> |
7046 | to make it a build dependency only. This case is rather | | 7046 | to make it a build dependency only. This case is rather |
7047 | rare.</p> | | 7047 | rare.</p> |
7048 | </li> | | 7048 | </li> |
7049 | <li class="listitem"> | | 7049 | <li class="listitem"> |
7050 | <p>If your package needs binaries from another package to build, | | 7050 | <p>If your package needs binaries from another package to build, |
7051 | use the <code class="varname">BUILD_DEPENDS</code> definition:</p> | | 7051 | use the <code class="varname">BUILD_DEPENDS</code> definition:</p> |
7052 | <pre class="programlisting"> | | 7052 | <pre class="programlisting"> |
7053 | BUILD_DEPENDS+= scons-[0-9]*:../../devel/scons | | 7053 | BUILD_DEPENDS+= scons-[0-9]*:../../devel/scons |
7054 | </pre> | | 7054 | </pre> |
7055 | </li> | | 7055 | </li> |
7056 | <li class="listitem"><p>If your package needs a library with which to link and | | 7056 | <li class="listitem"><p>If your package needs a library with which to link and |
7057 | there is no <code class="filename">buildlink3.mk</code> file | | 7057 | there is no <code class="filename">buildlink3.mk</code> file |
7058 | available, create one. Using | | 7058 | available, create one. Using |
7059 | <code class="varname">DEPENDS</code> won't be sufficient because the | | 7059 | <code class="varname">DEPENDS</code> won't be sufficient because the |
7060 | include files and libraries will be hidden from the compiler.</p></li> | | 7060 | include files and libraries will be hidden from the compiler.</p></li> |
7061 | <li class="listitem"> | | 7061 | <li class="listitem"> |
7062 | <p>If your package needs some executable to be able to run | | 7062 | <p>If your package needs some executable to be able to run |
7063 | correctly and if there's no | | 7063 | correctly and if there's no |
7064 | <code class="filename">buildlink3.mk</code> file, this is specified | | 7064 | <code class="filename">buildlink3.mk</code> file, this is specified |
7065 | using the <code class="varname">DEPENDS</code> variable. The | | 7065 | using the <code class="varname">DEPENDS</code> variable. The |
7066 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/print/lyx/README.html" target="_top"><code class="filename">print/lyx</code></a> package needs to | | 7066 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/print/lyx/README.html" target="_top"><code class="filename">print/lyx</code></a> package needs to |
7067 | be able to execute the latex binary from the tex-latex-bin package | | 7067 | be able to execute the latex binary from the tex-latex-bin package |
7068 | when it runs, and that is specified:</p> | | 7068 | when it runs, and that is specified:</p> |
7069 | <pre class="programlisting"> | | 7069 | <pre class="programlisting"> |
7070 | DEPENDS+= tex-latex-bin-[0-9]*:../../print/tex-latex-bin | | 7070 | DEPENDS+= tex-latex-bin-[0-9]*:../../print/tex-latex-bin |
7071 | </pre> | | 7071 | </pre> |
7072 | </li> | | 7072 | </li> |
7073 | <li class="listitem"> | | 7073 | <li class="listitem"> |
7074 | <p>You can use wildcards in package dependencies. Note that | | 7074 | <p>You can use wildcards in package dependencies. Note that |
7075 | such wildcard dependencies are retained when creating binary | | 7075 | such wildcard dependencies are retained when creating binary |
7076 | packages. The dependency is checked when installing the binary | | 7076 | packages. The dependency is checked when installing the binary |
7077 | package and any package which matches the pattern will be | | 7077 | package and any package which matches the pattern will be |
7078 | used. Wildcard dependencies should be used with care.</p> | | 7078 | used. Wildcard dependencies should be used with care.</p> |
7079 | <p>The <span class="quote">“<span class="quote">-[0-9]*</span>”</span> should be used instead of | | 7079 | <p>The <span class="quote">“<span class="quote">-[0-9]*</span>”</span> should be used instead of |
7080 | <span class="quote">“<span class="quote">-*</span>”</span> to avoid potentially ambiguous matches | | 7080 | <span class="quote">“<span class="quote">-*</span>”</span> to avoid potentially ambiguous matches |
7081 | such as <span class="quote">“<span class="quote">tk-postgresql</span>”</span> matching a | | 7081 | such as <span class="quote">“<span class="quote">tk-postgresql</span>”</span> matching a |
7082 | <span class="quote">“<span class="quote">tk-*</span>”</span> <code class="varname">DEPENDS</code>.</p> | | 7082 | <span class="quote">“<span class="quote">tk-*</span>”</span> <code class="varname">DEPENDS</code>.</p> |
7083 | <p>Wildcards can also be used to specify that a package | | 7083 | <p>Wildcards can also be used to specify that a package |
7084 | will only build against a certain minimum version of a | | 7084 | will only build against a certain minimum version of a |
7085 | pre-requisite:</p> | | 7085 | pre-requisite:</p> |
7086 | <pre class="programlisting"> | | 7086 | <pre class="programlisting"> |
7087 | DEPENDS+= ImageMagick>=6.0:../../graphics/ImageMagick | | 7087 | DEPENDS+= ImageMagick>=6.0:../../graphics/ImageMagick |
7088 | </pre> | | 7088 | </pre> |
7089 | <p>This means that the package will build using version 6.0 | | 7089 | <p>This means that the package will build using version 6.0 |
7090 | of ImageMagick or newer. Such a dependency may be warranted | | 7090 | of ImageMagick or newer. Such a dependency may be warranted |
7091 | if, for example, the command line options of an executable | | 7091 | if, for example, the command line options of an executable |
7092 | have changed.</p> | | 7092 | have changed.</p> |
7093 | <p>If you need to depend on minimum versions of libraries, | | 7093 | <p>If you need to depend on minimum versions of libraries, |
7094 | see the buildlink section of the pkgsrc guide.</p> | | 7094 | see the buildlink section of the pkgsrc guide.</p> |
7095 | <p>For security fixes, please update the package | | 7095 | <p>For security fixes, please update the package |
7096 | vulnerabilities file. See <a class="xref" href="#security-handling" title="19.1.9. Handling packages with security problems">Section 19.1.9, “Handling packages with security problems”</a> for more | | 7096 | vulnerabilities file. See <a class="xref" href="#security-handling" title="19.1.9. Handling packages with security problems">Section 19.1.9, “Handling packages with security problems”</a> for more |
7097 | information.</p> | | 7097 | information.</p> |
7098 | </li> | | 7098 | </li> |
7099 | </ol></div> | | 7099 | </ol></div> |
7100 | <p>If your package needs files from another package to build, | | 7100 | <p>If your package needs files from another package to build, |
7101 | add the relevant distribution files to | | 7101 | add the relevant distribution files to |
7102 | <code class="varname">DISTFILES</code>, so they will be extracted | | 7102 | <code class="varname">DISTFILES</code>, so they will be extracted |
7103 | automatically. See the <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/print/ghostscript/README.html" target="_top"><code class="filename">print/ghostscript</code></a> package for an example. | | 7103 | automatically. See the <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/print/ghostscript/README.html" target="_top"><code class="filename">print/ghostscript</code></a> package for an example. |
7104 | (It relies on the jpeg sources being present in source form | | 7104 | (It relies on the jpeg sources being present in source form |
7105 | during the build.)</p> | | 7105 | during the build.)</p> |
7106 | </div> | | 7106 | </div> |
7107 | <div class="sect2"> | | 7107 | <div class="sect2"> |
7108 | <div class="titlepage"><div><div><h3 class="title"> | | 7108 | <div class="titlepage"><div><div><h3 class="title"> |
7109 | <a name="conflicts"></a>19.1.6. Handling conflicts with other packages</h3></div></div></div> | | 7109 | <a name="conflicts"></a>19.1.6. Handling conflicts with other packages</h3></div></div></div> |
7110 | <p>Your package may conflict with other packages a user might | | 7110 | <p>Your package may conflict with other packages a user might |
7111 | already have installed on his system, e.g. if your package | | 7111 | already have installed on his system, e.g. if your package |
7112 | installs the same set of files as another package in the pkgsrc | | 7112 | installs the same set of files as another package in the pkgsrc |
7113 | tree or has the same <code class="varname">PKGNAME</code>.</p> | | 7113 | tree or has the same <code class="varname">PKGNAME</code>.</p> |
7114 | <p>These cases are handled automatically by the packaging tools | | 7114 | <p>These cases are handled automatically by the packaging tools |
7115 | at package installation time and do not need to be handled | | 7115 | at package installation time and do not need to be handled |
7116 | manually.</p> | | 7116 | manually.</p> |
7117 | <p>In case the conflicts can not be recognized automatically | | 7117 | <p>In case the conflicts can not be recognized automatically |
7118 | (e.g., packages using the same config file location but no other | | 7118 | (e.g., packages using the same config file location but no other |
7119 | shared files), you can set <code class="varname">CONFLICTS</code> to a | | 7119 | shared files), you can set <code class="varname">CONFLICTS</code> to a |
7120 | space-separated list of packages (including version string) your | | 7120 | space-separated list of packages (including version string) your |
7121 | package conflicts with.</p> | | 7121 | package conflicts with.</p> |
7122 | <p>For example, if both <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/foo/bar/README.html" target="_top"><code class="filename">foo/bar</code></a> | | 7122 | <p>For example, if both <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/foo/bar/README.html" target="_top"><code class="filename">foo/bar</code></a> |
7123 | and <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/foo/baz/README.html" target="_top"><code class="filename">foo/baz</code></a> | | 7123 | and <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/foo/baz/README.html" target="_top"><code class="filename">foo/baz</code></a> |
7124 | use the same config file, you would set in | | 7124 | use the same config file, you would set in |
7125 | <code class="filename">foo/bar/Makefile</code>:</p> | | 7125 | <code class="filename">foo/bar/Makefile</code>:</p> |
7126 | <pre class="programlisting"> | | 7126 | <pre class="programlisting"> |
7127 | CONFLICTS= baz-[0-9]* | | 7127 | CONFLICTS= baz-[0-9]* |
7128 | </pre> | | 7128 | </pre> |
7129 | <p>and in <code class="filename">pkgsrc/foo/baz/Makefile</code>:</p> | | 7129 | <p>and in <code class="filename">pkgsrc/foo/baz/Makefile</code>:</p> |
7130 | <pre class="programlisting"> | | 7130 | <pre class="programlisting"> |
7131 | CONFLICTS= bar-[0-9]* | | 7131 | CONFLICTS= bar-[0-9]* |
7132 | </pre> | | 7132 | </pre> |
7133 | </div> | | 7133 | </div> |
7134 | <div class="sect2"> | | 7134 | <div class="sect2"> |
7135 | <div class="titlepage"><div><div><h3 class="title"> | | 7135 | <div class="titlepage"><div><div><h3 class="title"> |
7136 | <a name="not-building-packages"></a>19.1.7. Packages that cannot or should not be built</h3></div></div></div> | | 7136 | <a name="not-building-packages"></a>19.1.7. Packages that cannot or should not be built</h3></div></div></div> |
7137 | <p>There are several reasons why a package might be | | 7137 | <p>There are several reasons why a package might be |
7138 | instructed to not build under certain circumstances. If the | | 7138 | instructed to not build under certain circumstances. If the |
7139 | package builds and runs on most platforms, the exceptions | | 7139 | package builds and runs on most platforms, the exceptions |
7140 | should be noted with <code class="varname">BROKEN_ON_PLATFORM</code>. If | | 7140 | should be noted with <code class="varname">BROKEN_ON_PLATFORM</code>. If |
7141 | the package builds and runs on a small handful of platforms, | | 7141 | the package builds and runs on a small handful of platforms, |
7142 | set <code class="varname">BROKEN_EXCEPT_ON_PLATFORM</code> instead. | | 7142 | set <code class="varname">BROKEN_EXCEPT_ON_PLATFORM</code> instead. |
7143 | Both <code class="varname">BROKEN_ON_PLATFORM</code> and | | 7143 | Both <code class="varname">BROKEN_ON_PLATFORM</code> and |
7144 | <code class="varname">BROKEN_EXCEPT_ON_PLATFORM</code> are OS triples | | 7144 | <code class="varname">BROKEN_EXCEPT_ON_PLATFORM</code> are OS triples |
7145 | (OS-version-platform) that can use glob-style | | 7145 | (OS-version-platform) that can use glob-style |
7146 | wildcards.</p> | | 7146 | wildcards.</p> |
7147 | <p>If a package is not appropriate for some platforms (as | | 7147 | <p>If a package is not appropriate for some platforms (as |
7148 | opposed to merely broken), a different set of variables should be | | 7148 | opposed to merely broken), a different set of variables should be |
7149 | used as this affects failure reporting and statistics. | | 7149 | used as this affects failure reporting and statistics. |
7150 | If the package is appropriate for most platforms, the exceptions | | 7150 | If the package is appropriate for most platforms, the exceptions |
7151 | should be noted with <code class="varname">NOT_FOR_PLATFORM</code>. If | | 7151 | should be noted with <code class="varname">NOT_FOR_PLATFORM</code>. If |
7152 | the package is appropriate for only a small handful of platforms | | 7152 | the package is appropriate for only a small handful of platforms |
7153 | (often exactly one), set <code class="varname">ONLY_FOR_PLATFORM</code> instead. | | 7153 | (often exactly one), set <code class="varname">ONLY_FOR_PLATFORM</code> instead. |
7154 | Both <code class="varname">ONLY_FOR_PLATFORM</code> and | | 7154 | Both <code class="varname">ONLY_FOR_PLATFORM</code> and |
7155 | <code class="varname">NOT_FOR_PLATFORM</code> are OS triples | | 7155 | <code class="varname">NOT_FOR_PLATFORM</code> are OS triples |
7156 | (OS-version-platform) that can use glob-style | | 7156 | (OS-version-platform) that can use glob-style |
7157 | wildcards.</p> | | 7157 | wildcards.</p> |
7158 | <p>Some packages are tightly bound to a specific version of an | | 7158 | <p>Some packages are tightly bound to a specific version of an |
7159 | operating system, e.g. LKMs or <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/sysutils/lsof/README.html" target="_top"><code class="filename">sysutils/lsof</code></a>. Such binary packages are not | | 7159 | operating system, e.g. LKMs or <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/sysutils/lsof/README.html" target="_top"><code class="filename">sysutils/lsof</code></a>. Such binary packages are not |
7160 | backwards compatible with other versions of the OS, and should be | | 7160 | backwards compatible with other versions of the OS, and should be |
7161 | uploaded to a version specific directory on the FTP server. Mark | | 7161 | uploaded to a version specific directory on the FTP server. Mark |
7162 | these packages by setting <code class="varname">OSVERSION_SPECIFIC</code> to | | 7162 | these packages by setting <code class="varname">OSVERSION_SPECIFIC</code> to |
7163 | <span class="quote">“<span class="quote">yes</span>”</span>. This variable is not currently used by any of | | 7163 | <span class="quote">“<span class="quote">yes</span>”</span>. This variable is not currently used by any of |
7164 | the package system internals, but may be used in the | | 7164 | the package system internals, but may be used in the |
7165 | future.</p> | | 7165 | future.</p> |
7166 | <p>If the package should be skipped (for example, because it | | 7166 | <p>If the package should be skipped (for example, because it |
7167 | provides functionality already provided by the system), set | | 7167 | provides functionality already provided by the system), set |
7168 | <code class="varname">PKG_SKIP_REASON</code> to a descriptive message. If | | 7168 | <code class="varname">PKG_SKIP_REASON</code> to a descriptive message. If |
7169 | the package should fail because some preconditions are not met, | | 7169 | the package should fail because some preconditions are not met, |
7170 | set <code class="varname">PKG_FAIL_REASON</code> to a descriptive | | 7170 | set <code class="varname">PKG_FAIL_REASON</code> to a descriptive |
7171 | message.</p> | | 7171 | message.</p> |
7172 | </div> | | 7172 | </div> |
7173 | <div class="sect2"> | | 7173 | <div class="sect2"> |
7174 | <div class="titlepage"><div><div><h3 class="title"> | | 7174 | <div class="titlepage"><div><div><h3 class="title"> |
7175 | <a name="undeletable-packages"></a>19.1.8. Packages which should not be deleted, once installed</h3></div></div></div> | | 7175 | <a name="undeletable-packages"></a>19.1.8. Packages which should not be deleted, once installed</h3></div></div></div> |
7176 | <p>To ensure that a package may not be deleted, once it has been | | 7176 | <p>To ensure that a package may not be deleted, once it has been |
7177 | installed, the <code class="varname">PKG_PRESERVE</code> definition should | | 7177 | installed, the <code class="varname">PKG_PRESERVE</code> definition should |
7178 | be set in the package Makefile. This will be carried into any | | 7178 | be set in the package Makefile. This will be carried into any |
7179 | binary package that is made from this pkgsrc entry. A | | 7179 | binary package that is made from this pkgsrc entry. A |
7180 | <span class="quote">“<span class="quote">preserved</span>”</span> package will | | 7180 | <span class="quote">“<span class="quote">preserved</span>”</span> package will |
7181 | not be deleted using <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> unless the | | 7181 | not be deleted using <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_delete+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_delete</span>(1)</span></a> unless the |
7182 | <span class="quote">“<span class="quote">-f</span>”</span> option is used.</p> | | 7182 | <span class="quote">“<span class="quote">-f</span>”</span> option is used.</p> |
7183 | </div> | | 7183 | </div> |
7184 | <div class="sect2"> | | 7184 | <div class="sect2"> |
7185 | <div class="titlepage"><div><div><h3 class="title"> | | 7185 | <div class="titlepage"><div><div><h3 class="title"> |
7186 | <a name="security-handling"></a>19.1.9. Handling packages with security problems</h3></div></div></div> | | 7186 | <a name="security-handling"></a>19.1.9. Handling packages with security problems</h3></div></div></div> |
7187 | <p>When a vulnerability is found, this should be noted in | | 7187 | <p>When a vulnerability is found, this should be noted in |
7188 | <code class="filename">localsrc/security/advisories/pkg-vulnerabilities</code>, | | 7188 | <code class="filename">localsrc/security/advisories/pkg-vulnerabilities</code>, |
7189 | and after committing that file, ask pkgsrc-security@NetBSD.org to | | 7189 | and after committing that file, ask pkgsrc-security@NetBSD.org to |
7190 | update the file on ftp.NetBSD.org.</p> | | 7190 | update the file on ftp.NetBSD.org.</p> |
7191 | <p>After fixing the vulnerability by a patch, its | | 7191 | <p>After fixing the vulnerability by a patch, its |
7192 | <code class="varname">PKGREVISION</code> should be increased (this is of | | 7192 | <code class="varname">PKGREVISION</code> should be increased (this is of |
7193 | course not necessary if the problem is fixed by using a newer | | 7193 | course not necessary if the problem is fixed by using a newer |
7194 | release of the software), and the pattern in the | | 7194 | release of the software), and the pattern in the |
7195 | pkg-vulnerabilities file must be updated.</p> | | 7195 | pkg-vulnerabilities file must be updated.</p> |
7196 | <p>Also, if the fix should be applied to the stable pkgsrc | | 7196 | <p>Also, if the fix should be applied to the stable pkgsrc |
7197 | branch, be sure to submit a pullup request!</p> | | 7197 | branch, be sure to submit a pullup request!</p> |
7198 | <p>Binary packages already on ftp.NetBSD.org will be handled | | 7198 | <p>Binary packages already on ftp.NetBSD.org will be handled |
7199 | semi-automatically by a weekly cron job.</p> | | 7199 | semi-automatically by a weekly cron job.</p> |
7200 | </div> | | 7200 | </div> |
7201 | <div class="sect2"> | | 7201 | <div class="sect2"> |
7202 | <div class="titlepage"><div><div><h3 class="title"> | | 7202 | <div class="titlepage"><div><div><h3 class="title"> |
7203 | <a name="bumping-pkgrevision"></a>19.1.10. How to handle incrementing versions when fixing an existing package</h3></div></div></div> | | 7203 | <a name="bumping-pkgrevision"></a>19.1.10. How to handle incrementing versions when fixing an existing package</h3></div></div></div> |
7204 | <p>When making fixes to an existing package it can be useful | | 7204 | <p>When making fixes to an existing package it can be useful |
7205 | to change the version number in <code class="varname">PKGNAME</code>. To | | 7205 | to change the version number in <code class="varname">PKGNAME</code>. To |
7206 | avoid conflicting with future versions by the original author, a | | 7206 | avoid conflicting with future versions by the original author, a |
7207 | <span class="quote">“<span class="quote">nb1</span>”</span>, <span class="quote">“<span class="quote">nb2</span>”</span>, ... suffix can be used | | 7207 | <span class="quote">“<span class="quote">nb1</span>”</span>, <span class="quote">“<span class="quote">nb2</span>”</span>, ... suffix can be used |
7208 | on package versions by setting <code class="varname">PKGREVISION=1</code> | | 7208 | on package versions by setting <code class="varname">PKGREVISION=1</code> |
7209 | (2, ...). The <span class="quote">“<span class="quote">nb</span>”</span> is treated like a | | 7209 | (2, ...). The <span class="quote">“<span class="quote">nb</span>”</span> is treated like a |
7210 | <span class="quote">“<span class="quote">.</span>”</span> by the package tools. e.g.</p> | | 7210 | <span class="quote">“<span class="quote">.</span>”</span> by the package tools. e.g.</p> |
7211 | <pre class="programlisting"> | | 7211 | <pre class="programlisting"> |
7212 | DISTNAME= foo-17.42 | | 7212 | DISTNAME= foo-17.42 |
7213 | PKGREVISION= 9 | | 7213 | PKGREVISION= 9 |
7214 | </pre> | | 7214 | </pre> |
7215 | <p>will result in a <code class="varname">PKGNAME</code> of | | 7215 | <p>will result in a <code class="varname">PKGNAME</code> of |
7216 | <span class="quote">“<span class="quote">foo-17.42nb9</span>”</span>. If you want to use the original | | 7216 | <span class="quote">“<span class="quote">foo-17.42nb9</span>”</span>. If you want to use the original |
7217 | value of <code class="varname">PKGNAME</code> without the <span class="quote">“<span class="quote">nbX</span>”</span> | | 7217 | value of <code class="varname">PKGNAME</code> without the <span class="quote">“<span class="quote">nbX</span>”</span> |
7218 | suffix, e.g. for setting <code class="varname">DIST_SUBDIR</code>, use | | 7218 | suffix, e.g. for setting <code class="varname">DIST_SUBDIR</code>, use |
7219 | <code class="varname">PKGNAME_NOREV</code>.</p> | | 7219 | <code class="varname">PKGNAME_NOREV</code>.</p> |
7220 | <p>When a new release of the package is released, the | | 7220 | <p>When a new release of the package is released, the |
7221 | <code class="varname">PKGREVISION</code> should be removed, e.g. on a new | | 7221 | <code class="varname">PKGREVISION</code> should be removed, e.g. on a new |
7222 | minor release of the above package, things should be like:</p> | | 7222 | minor release of the above package, things should be like:</p> |
7223 | <pre class="programlisting"> | | 7223 | <pre class="programlisting"> |
7224 | DISTNAME= foo-17.43 | | 7224 | DISTNAME= foo-17.43 |
7225 | </pre> | | 7225 | </pre> |
7226 | <p><code class="varname">PKGREVISION</code> should be incremented for any | | 7226 | <p><code class="varname">PKGREVISION</code> should be incremented for any |
7227 | non-trivial change in the resulting binary package. Without a | | 7227 | non-trivial change in the resulting binary package. Without a |
7228 | <code class="varname">PKGREVISION</code> bump, someone with the previous | | 7228 | <code class="varname">PKGREVISION</code> bump, someone with the previous |
7229 | version installed has no way of knowing that their package is out | | 7229 | version installed has no way of knowing that their package is out |
7230 | of date. Thus, changes without increasing | | 7230 | of date. Thus, changes without increasing |
7231 | <code class="varname">PKGREVISION</code> are essentially labeled "this is so | | 7231 | <code class="varname">PKGREVISION</code> are essentially labeled "this is so |
7232 | trivial that no reasonable person would want to upgrade", and this | | 7232 | trivial that no reasonable person would want to upgrade", and this |
7233 | is the rough test for when increasing | | 7233 | is the rough test for when increasing |
7234 | <code class="varname">PKGREVISION</code> is appropriate. Examples of | | 7234 | <code class="varname">PKGREVISION</code> is appropriate. Examples of |
7235 | changes that do not merit increasing | | 7235 | changes that do not merit increasing |
7236 | <code class="varname">PKGREVISION</code> are:</p> | | 7236 | <code class="varname">PKGREVISION</code> are:</p> |
7237 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 7237 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
7238 | <li class="listitem"><p>Changing <code class="varname">HOMEPAGE</code>, | | 7238 | <li class="listitem"><p>Changing <code class="varname">HOMEPAGE</code>, |
7239 | <code class="varname">MAINTAINER</code>, <code class="varname">OWNER</code>, | | 7239 | <code class="varname">MAINTAINER</code>, <code class="varname">OWNER</code>, |
7240 | or comments in Makefile.</p></li> | | 7240 | or comments in Makefile.</p></li> |
7241 | <li class="listitem"><p> | | 7241 | <li class="listitem"><p> |
7242 | Changing build variables if the resulting binary package is the same.</p></li> | | 7242 | Changing build variables if the resulting binary package is the same.</p></li> |
7243 | <li class="listitem"><p> | | 7243 | <li class="listitem"><p> |
7244 | Changing <code class="filename">DESCR</code>.</p></li> | | 7244 | Changing <code class="filename">DESCR</code>.</p></li> |
7245 | <li class="listitem"><p> | | 7245 | <li class="listitem"><p> |
7246 | Adding <code class="varname">PKG_OPTIONS</code> if the default options don't change.</p></li> | | 7246 | Adding <code class="varname">PKG_OPTIONS</code> if the default options don't change.</p></li> |
7247 | </ul></div> | | 7247 | </ul></div> |
7248 | <p>Examples of changes that do merit an increase to | | 7248 | <p>Examples of changes that do merit an increase to |
7249 | <code class="varname">PKGREVISION</code> include:</p> | | 7249 | <code class="varname">PKGREVISION</code> include:</p> |
7250 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 7250 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
7251 | <li class="listitem"><p> | | 7251 | <li class="listitem"><p> |
7252 | Security fixes</p></li> | | 7252 | Security fixes</p></li> |
7253 | <li class="listitem"><p> | | 7253 | <li class="listitem"><p> |
7254 | Changes or additions to a patch file</p></li> | | 7254 | Changes or additions to a patch file</p></li> |
7255 | <li class="listitem"><p> | | 7255 | <li class="listitem"><p> |
7256 | Changes to the <code class="filename">PLIST</code></p></li> | | 7256 | Changes to the <code class="filename">PLIST</code></p></li> |
7257 | <li class="listitem"><p>A dependency is changed or renamed.</p></li> | | 7257 | <li class="listitem"><p>A dependency is changed or renamed.</p></li> |
7258 | </ul></div> | | 7258 | </ul></div> |
7259 | <p>PKGREVISION must also be incremented when dependencies have ABI | | 7259 | <p>PKGREVISION must also be incremented when dependencies have ABI |
7260 | changes.</p> | | 7260 | changes.</p> |
7261 | </div> | | 7261 | </div> |
7262 | <div class="sect2"> | | 7262 | <div class="sect2"> |
7263 | <div class="titlepage"><div><div><h3 class="title"> | | 7263 | <div class="titlepage"><div><div><h3 class="title"> |
7264 | <a name="fixes.subst"></a>19.1.11. Substituting variable text in the package files (the SUBST framework)</h3></div></div></div> | | 7264 | <a name="fixes.subst"></a>19.1.11. Substituting variable text in the package files (the SUBST framework)</h3></div></div></div> |
7265 | <p>When you want to replace the same text in multiple files | | 7265 | <p>When you want to replace the same text in multiple files |
7266 | or when the replacement text varies, patches alone cannot help. | | 7266 | or when the replacement text varies, patches alone cannot help. |
7267 | This is where the SUBST framework comes in. It provides an | | 7267 | This is where the SUBST framework comes in. It provides an |
7268 | easy-to-use interface for replacing text in files. | | 7268 | easy-to-use interface for replacing text in files. |
7269 | Example:</p> | | 7269 | Example:</p> |
7270 | <pre class="programlisting"> | | 7270 | <pre class="programlisting"> |
7271 | SUBST_CLASSES+= fix-paths | | 7271 | SUBST_CLASSES+= fix-paths |
7272 | SUBST_STAGE.fix-paths= pre-configure | | 7272 | SUBST_STAGE.fix-paths= pre-configure |
7273 | SUBST_MESSAGE.fix-paths= Fixing absolute paths. | | 7273 | SUBST_MESSAGE.fix-paths= Fixing absolute paths. |
7274 | SUBST_FILES.fix-paths= src/*.c | | 7274 | SUBST_FILES.fix-paths= src/*.c |
7275 | SUBST_FILES.fix-paths+= scripts/*.sh | | 7275 | SUBST_FILES.fix-paths+= scripts/*.sh |
7276 | SUBST_SED.fix-paths= -e 's,"/usr/local,"${PREFIX},g' | | 7276 | SUBST_SED.fix-paths= -e 's,"/usr/local,"${PREFIX},g' |
7277 | SUBST_SED.fix-paths+= -e 's,"/var/log,"${VARBASE}/log,g' | | 7277 | SUBST_SED.fix-paths+= -e 's,"/var/log,"${VARBASE}/log,g' |
7278 | </pre> | | 7278 | </pre> |
7279 | <p><code class="varname">SUBST_CLASSES</code> is a list of identifiers | | 7279 | <p><code class="varname">SUBST_CLASSES</code> is a list of identifiers |
7280 | that are used to identify the different SUBST blocks that are | | 7280 | that are used to identify the different SUBST blocks that are |
7281 | defined. The SUBST framework is heavily used by pkgsrc, so it is | | 7281 | defined. The SUBST framework is heavily used by pkgsrc, so it is |
7282 | important to always use the <code class="literal">+=</code> operator with | | 7282 | important to always use the <code class="literal">+=</code> operator with |
7283 | this variable. Otherwise some substitutions may be | | 7283 | this variable. Otherwise some substitutions may be |
7284 | skipped.</p> | | 7284 | skipped.</p> |
7285 | <p>The remaining variables of each SUBST block are | | 7285 | <p>The remaining variables of each SUBST block are |
7286 | parameterized with the identifier from the first line | | 7286 | parameterized with the identifier from the first line |
7287 | (<code class="literal">fix-paths</code> in this case.) They can be seen as | | 7287 | (<code class="literal">fix-paths</code> in this case.) They can be seen as |
7288 | parameters to a function call.</p> | | 7288 | parameters to a function call.</p> |
7289 | <p><code class="varname">SUBST_STAGE.*</code> specifies the stage at | | 7289 | <p><code class="varname">SUBST_STAGE.*</code> specifies the stage at |
7290 | which the replacement will take place. All combinations of | | 7290 | which the replacement will take place. All combinations of |
7291 | <code class="literal">pre-</code>, <code class="literal">do-</code> and | | 7291 | <code class="literal">pre-</code>, <code class="literal">do-</code> and |
7292 | <code class="literal">post-</code> together with a phase name are | | 7292 | <code class="literal">post-</code> together with a phase name are |
7293 | possible, though only few are actually used. Most commonly used | | 7293 | possible, though only few are actually used. Most commonly used |
7294 | are <code class="literal">post-patch</code> and | | 7294 | are <code class="literal">post-patch</code> and |
7295 | <code class="literal">pre-configure</code>. Of these two, | | 7295 | <code class="literal">pre-configure</code>. Of these two, |
7296 | <code class="literal">pre-configure</code> should be preferred because | | 7296 | <code class="literal">pre-configure</code> should be preferred because |
7297 | then it is possible to run <span class="command"><strong>bmake patch</strong></span> and | | 7297 | then it is possible to run <span class="command"><strong>bmake patch</strong></span> and |
7298 | have the state after applying the patches but before making any | | 7298 | have the state after applying the patches but before making any |
7299 | other changes. This is especially useful when you are debugging | | 7299 | other changes. This is especially useful when you are debugging |
7300 | a package in order to create new patches for it. Similarly, | | 7300 | a package in order to create new patches for it. Similarly, |
7301 | <code class="literal">post-build</code> is preferred over | | 7301 | <code class="literal">post-build</code> is preferred over |
7302 | <code class="literal">pre-install</code>, because the install phase should | | 7302 | <code class="literal">pre-install</code>, because the install phase should |
7303 | generally be kept as simple as possible. When you use | | 7303 | generally be kept as simple as possible. When you use |
7304 | <code class="literal">post-build</code>, you have the same files in the | | 7304 | <code class="literal">post-build</code>, you have the same files in the |
7305 | working directory that will be installed later, so you can check | | 7305 | working directory that will be installed later, so you can check |
7306 | if the substitution has succeeded.</p> | | 7306 | if the substitution has succeeded.</p> |
7307 | <p><code class="varname">SUBST_MESSAGE.*</code> is an optional text | | 7307 | <p><code class="varname">SUBST_MESSAGE.*</code> is an optional text |
7308 | that is printed just before the substitution is done.</p> | | 7308 | that is printed just before the substitution is done.</p> |
7309 | <p><code class="varname">SUBST_FILES.*</code> is the list of shell | | 7309 | <p><code class="varname">SUBST_FILES.*</code> is the list of shell |
7310 | globbing patterns that specifies the files in which the | | 7310 | globbing patterns that specifies the files in which the |
7311 | substitution will take place. The patterns are interpreted | | 7311 | substitution will take place. The patterns are interpreted |
7312 | relatively to the <code class="varname">WRKSRC</code> directory.</p> | | 7312 | relatively to the <code class="varname">WRKSRC</code> directory.</p> |
7313 | <p><code class="varname">SUBST_SED.*</code> is a list of arguments to | | 7313 | <p><code class="varname">SUBST_SED.*</code> is a list of arguments to |
7314 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?sed+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">sed</span>(1)</span></a> that specify the actual substitution. Every sed | | 7314 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?sed+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">sed</span>(1)</span></a> that specify the actual substitution. Every sed |
7315 | command should be prefixed with <code class="literal">-e</code>, so that | | 7315 | command should be prefixed with <code class="literal">-e</code>, so that |
7316 | all SUBST blocks look uniform.</p> | | 7316 | all SUBST blocks look uniform.</p> |
7317 | <p>There are some more variables, but they are so seldomly | | 7317 | <p>There are some more variables, but they are so seldomly |
7318 | used that they are only documented in the | | 7318 | used that they are only documented in the |
7319 | <code class="filename">mk/subst.mk</code> file.</p> | | 7319 | <code class="filename">mk/subst.mk</code> file.</p> |
7320 | </div> | | 7320 | </div> |
7321 | </div> | | 7321 | </div> |
7322 | <div class="sect1"> | | 7322 | <div class="sect1"> |
7323 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 7323 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
7324 | <a name="fixes.fetch"></a>19.2. The <span class="emphasis"><em>fetch</em></span> phase</h2></div></div></div> | | 7324 | <a name="fixes.fetch"></a>19.2. The <span class="emphasis"><em>fetch</em></span> phase</h2></div></div></div> |
7325 | <div class="sect2"> | | 7325 | <div class="sect2"> |
7326 | <div class="titlepage"><div><div><h3 class="title"> | | 7326 | <div class="titlepage"><div><div><h3 class="title"> |
7327 | <a name="no-plain-download"></a>19.2.1. Packages whose distfiles aren't available for plain downloading</h3></div></div></div> | | 7327 | <a name="no-plain-download"></a>19.2.1. Packages whose distfiles aren't available for plain downloading</h3></div></div></div> |
7328 | <p>If you need to download from a dynamic URL you can set | | 7328 | <p>If you need to download from a dynamic URL you can set |
7329 | <code class="varname">DYNAMIC_MASTER_SITES</code> and a <span class="command"><strong>make | | 7329 | <code class="varname">DYNAMIC_MASTER_SITES</code> and a <span class="command"><strong>make |
7330 | fetch</strong></span> will call <code class="filename">files/getsite.sh</code> | | 7330 | fetch</strong></span> will call <code class="filename">files/getsite.sh</code> |
7331 | with the name of each file to download as an argument, expecting | | 7331 | with the name of each file to download as an argument, expecting |
7332 | it to output the URL of the directory from which to download | | 7332 | it to output the URL of the directory from which to download |
7333 | it. <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/graphics/ns-cult3d/README.html" target="_top"><code class="filename">graphics/ns-cult3d</code></a> is an | | 7333 | it. <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/graphics/ns-cult3d/README.html" target="_top"><code class="filename">graphics/ns-cult3d</code></a> is an |
7334 | example of this usage.</p> | | 7334 | example of this usage.</p> |
7335 | <p>If the download can't be automated, because the user must | | 7335 | <p>If the download can't be automated, because the user must |
7336 | submit personal information to apply for a password, or must pay | | 7336 | submit personal information to apply for a password, or must pay |
7337 | for the source, or whatever, you can set | | 7337 | for the source, or whatever, you can set |
7338 | <code class="varname">FETCH_MESSAGE</code> to a list of lines that are | | 7338 | <code class="varname">FETCH_MESSAGE</code> to a list of lines that are |
7339 | displayed to the user before aborting the build. Example:</p> | | 7339 | displayed to the user before aborting the build. Example:</p> |
7340 | <pre class="programlisting"> | | 7340 | <pre class="programlisting"> |
7341 | FETCH_MESSAGE= "Please download the files" | | 7341 | FETCH_MESSAGE= "Please download the files" |
7342 | FETCH_MESSAGE+= " "${DISTFILES:Q} | | 7342 | FETCH_MESSAGE+= " "${DISTFILES:Q} |
7343 | FETCH_MESSAGE+= "manually from "${MASTER_SITES:Q}"." | | 7343 | FETCH_MESSAGE+= "manually from "${MASTER_SITES:Q}"." |
7344 | </pre> | | 7344 | </pre> |
7345 | </div> | | 7345 | </div> |
7346 | <div class="sect2"> | | 7346 | <div class="sect2"> |
7347 | <div class="titlepage"><div><div><h3 class="title"> | | 7347 | <div class="titlepage"><div><div><h3 class="title"> |
7348 | <a name="modified-distfiles-same-name"></a>19.2.2. How to handle modified distfiles with the 'old' name</h3></div></div></div> | | 7348 | <a name="modified-distfiles-same-name"></a>19.2.2. How to handle modified distfiles with the 'old' name</h3></div></div></div> |
7349 | <p>Sometimes authors of a software package make some | | 7349 | <p>Sometimes authors of a software package make some |
7350 | modifications after the software was released, and they put up a | | 7350 | modifications after the software was released, and they put up a |
7351 | new distfile without changing the package's version number. If a | | 7351 | new distfile without changing the package's version number. If a |
7352 | package is already in pkgsrc at that time, the checksum will | | 7352 | package is already in pkgsrc at that time, the checksum will |
7353 | no longer match. The contents of the new distfile should be | | 7353 | no longer match. The contents of the new distfile should be |
7354 | compared against the old one before changing anything, to make | | 7354 | compared against the old one before changing anything, to make |
7355 | sure the distfile was really updated on purpose, and that | | 7355 | sure the distfile was really updated on purpose, and that |
7356 | no trojan horse or so crept in. | | 7356 | no trojan horse or so crept in. |
7357 | Please mention that the distfiles were compared and what was found | | 7357 | Please mention that the distfiles were compared and what was found |
7358 | in your commit message.</p> | | 7358 | in your commit message.</p> |
7359 | <p>Then, the correct way to work around this is to set | | 7359 | <p>Then, the correct way to work around this is to set |
7360 | <code class="varname">DIST_SUBDIR</code> to a unique directory name, usually | | 7360 | <code class="varname">DIST_SUBDIR</code> to a unique directory name, usually |
7361 | based on <code class="varname">PKGNAME_NOREV</code> (but take care with | | 7361 | based on <code class="varname">PKGNAME_NOREV</code> (but take care with |
7362 | python or ruby packages, where <code class="varname">PKGNAME</code> includes | | 7362 | python or ruby packages, where <code class="varname">PKGNAME</code> includes |
7363 | a variable prefix). All <code class="varname">DISTFILES</code> and | | 7363 | a variable prefix). All <code class="varname">DISTFILES</code> and |
7364 | <code class="varname">PATCHFILES</code> for this package will be put in that | | 7364 | <code class="varname">PATCHFILES</code> for this package will be put in that |
7365 | subdirectory of the local distfiles directory. (See <a class="xref" href="#bumping-pkgrevision" title="19.1.10. How to handle incrementing versions when fixing an existing package">Section 19.1.10, “How to handle incrementing versions when fixing an existing package”</a> for more details.) In case this | | 7365 | subdirectory of the local distfiles directory. (See <a class="xref" href="#bumping-pkgrevision" title="19.1.10. How to handle incrementing versions when fixing an existing package">Section 19.1.10, “How to handle incrementing versions when fixing an existing package”</a> for more details.) In case this |
7366 | happens more often, <code class="varname">PKGNAME</code> can be used (thus | | 7366 | happens more often, <code class="varname">PKGNAME</code> can be used (thus |
7367 | including the <code class="filename">nbX</code> suffix) or a date stamp can | | 7367 | including the <code class="filename">nbX</code> suffix) or a date stamp can |
7368 | be appended, like | | 7368 | be appended, like |
7369 | <code class="varname">${PKGNAME_NOREV}-YYYYMMDD</code>.</p> | | 7369 | <code class="varname">${PKGNAME_NOREV}-YYYYMMDD</code>.</p> |
7370 | <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> | | 7370 | <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> |
7371 | <p>Do not forget regenerating the <code class="filename">distinfo</code> file | | 7371 | <p>Do not forget regenerating the <code class="filename">distinfo</code> file |
7372 | after that, since it contains the <code class="varname">DIST_SUBDIR</code> | | 7372 | after that, since it contains the <code class="varname">DIST_SUBDIR</code> |
7373 | path in the filenames. | | 7373 | path in the filenames. |
7374 | Also, increase the PKGREVISION if the installed package is different. | | 7374 | Also, increase the PKGREVISION if the installed package is different. |
7375 | Furthermore, a mail to the package's authors seems appropriate | | 7375 | Furthermore, a mail to the package's authors seems appropriate |
7376 | telling them that changing distfiles after releases without | | 7376 | telling them that changing distfiles after releases without |
7377 | changing the file names is not good practice.</p> | | 7377 | changing the file names is not good practice.</p> |
7378 | </div> | | 7378 | </div> |
7379 | <div class="sect2"> | | 7379 | <div class="sect2"> |
7380 | <div class="titlepage"><div><div><h3 class="title"> | | 7380 | <div class="titlepage"><div><div><h3 class="title"> |
7381 | <a name="build.fetch.github"></a>19.2.3. Packages hosted on github.com</h3></div></div></div> | | 7381 | <a name="build.fetch.github"></a>19.2.3. Packages hosted on github.com</h3></div></div></div> |
7382 | <p>Helper methods exist for packages hosted on github.com which will often have distfile names that clash with other packages, for example <code class="filename">1.0.tar.gz</code>. Use one of the three recipes from below: | | 7382 | <p>Helper methods exist for packages hosted on github.com which will often have distfile names that clash with other packages, for example <code class="filename">1.0.tar.gz</code>. Use one of the three recipes from below: |
7383 | </p> | | 7383 | </p> |
7384 | <div class="sect3"> | | 7384 | <div class="sect3"> |
7385 | <div class="titlepage"><div><div><h4 class="title"> | | 7385 | <div class="titlepage"><div><div><h4 class="title"> |
7386 | <a name="build.fetch.github.tag"></a>19.2.3.1. Fetch based on a tagged release</h4></div></div></div> | | 7386 | <a name="build.fetch.github.tag"></a>19.2.3.1. Fetch based on a tagged release</h4></div></div></div> |
7387 | <p> | | 7387 | <p> |
7388 | If your distfile URL looks similar to <code class="literal">http://github.com/username/exampleproject/archive/v1.0.zip</code>, then you are packaging a tagged release. | | 7388 | If your distfile URL looks similar to <code class="literal">http://github.com/username/exampleproject/archive/v1.0.zip</code>, then you are packaging a tagged release. |
7389 | </p> | | 7389 | </p> |
7390 | <pre class="programlisting"> | | 7390 | <pre class="programlisting"> |
7391 | DISTNAME= exampleproject-1.0 | | 7391 | DISTNAME= exampleproject-1.0 |
7392 | MASTER_SITES= ${MASTER_SITE_GITHUB:=username/} | | 7392 | MASTER_SITES= ${MASTER_SITE_GITHUB:=username/} |
7393 | #GITHUB_PROJECT= # can be omitted if same as DISTNAME | | 7393 | #GITHUB_PROJECT= # can be omitted if same as DISTNAME |
7394 | GITHUB_TAG= v${PKGVERSION_NOREV} | | 7394 | GITHUB_TAG= v${PKGVERSION_NOREV} |
7395 | EXTRACT_SUFX= .zip | | 7395 | EXTRACT_SUFX= .zip |
7396 | </pre> | | 7396 | </pre> |
7397 | </div> | | 7397 | </div> |
7398 | <div class="sect3"> | | 7398 | <div class="sect3"> |
7399 | <div class="titlepage"><div><div><h4 class="title"> | | 7399 | <div class="titlepage"><div><div><h4 class="title"> |
7400 | <a name="build.fetch.github.commit"></a>19.2.3.2. Fetch based on a specific commit</h4></div></div></div> | | 7400 | <a name="build.fetch.github.commit"></a>19.2.3.2. Fetch based on a specific commit</h4></div></div></div> |
7401 | <p> | | 7401 | <p> |
7402 | If your distfile URL looks similar to <code class="literal">http://github.com/example/example/archive/988881adc9fc3655077dc2d4d757d480b5ea0e11.tar.gz</code>, then you are packaging a specific commit not tied to a release. | | 7402 | If your distfile URL looks similar to <code class="literal">http://github.com/example/example/archive/988881adc9fc3655077dc2d4d757d480b5ea0e11.tar.gz</code>, then you are packaging a specific commit not tied to a release. |
7403 | </p> | | 7403 | </p> |
7404 | <pre class="programlisting"> | | 7404 | <pre class="programlisting"> |
7405 | DISTNAME= example-1.0 | | 7405 | DISTNAME= example-1.0 |
7406 | MASTER_SITES= ${MASTER_SITE_GITHUB:=example/} | | 7406 | MASTER_SITES= ${MASTER_SITE_GITHUB:=example/} |
7407 | #GITHUB_PROJECT= # can be omitted if same as DISTNAME | | 7407 | #GITHUB_PROJECT= # can be omitted if same as DISTNAME |
7408 | GITHUB_TAG= 988881adc9fc3655077dc2d4d757d480b5ea0e11 | | 7408 | GITHUB_TAG= 988881adc9fc3655077dc2d4d757d480b5ea0e11 |
7409 | </pre> | | 7409 | </pre> |
7410 | </div> | | 7410 | </div> |
7411 | <div class="sect3"> | | 7411 | <div class="sect3"> |
7412 | <div class="titlepage"><div><div><h4 class="title"> | | 7412 | <div class="titlepage"><div><div><h4 class="title"> |
7413 | <a name="build.fetch.github.release"></a>19.2.3.3. Fetch based on release</h4></div></div></div> | | 7413 | <a name="build.fetch.github.release"></a>19.2.3.3. Fetch based on release</h4></div></div></div> |
7414 | <p> | | 7414 | <p> |
7415 | If your distfile URL looks similar to <code class="literal">http://github.com/username/exampleproject/releases/download/rel-1.6/offensive-1.6.zip</code>, then you are packaging a release. | | 7415 | If your distfile URL looks similar to <code class="literal">http://github.com/username/exampleproject/releases/download/rel-1.6/offensive-1.6.zip</code>, then you are packaging a release. |
7416 | </p> | | 7416 | </p> |
7417 | <pre class="programlisting"> | | 7417 | <pre class="programlisting"> |
7418 | DISTNAME= offensive-1.6 | | 7418 | DISTNAME= offensive-1.6 |
7419 | PKGNAME= ${DISTNAME:S/offensive/proper/} | | 7419 | PKGNAME= ${DISTNAME:S/offensive/proper/} |
7420 | MASTER_SITES= ${MASTER_SITE_GITHUB:=username/} | | 7420 | MASTER_SITES= ${MASTER_SITE_GITHUB:=username/} |
7421 | GITHUB_PROJECT= exampleproject | | 7421 | GITHUB_PROJECT= exampleproject |
7422 | GITHUB_RELEASE= rel-${PKGVERSION_NOREV} # usually just set this to ${DISTNAME} | | 7422 | GITHUB_RELEASE= rel-${PKGVERSION_NOREV} # usually just set this to ${DISTNAME} |
7423 | EXTRACT_SUFX= .zip | | 7423 | EXTRACT_SUFX= .zip |
7424 | </pre> | | 7424 | </pre> |
7425 | </div> | | 7425 | </div> |
7426 | </div> | | 7426 | </div> |
7427 | </div> | | 7427 | </div> |
7428 | <div class="sect1"> | | 7428 | <div class="sect1"> |
7429 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 7429 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
7430 | <a name="fixes.configure"></a>19.3. The <span class="emphasis"><em>configure</em></span> phase</h2></div></div></div> | | 7430 | <a name="fixes.configure"></a>19.3. The <span class="emphasis"><em>configure</em></span> phase</h2></div></div></div> |
7431 | <div class="sect2"> | | 7431 | <div class="sect2"> |
7432 | <div class="titlepage"><div><div><h3 class="title"> | | 7432 | <div class="titlepage"><div><div><h3 class="title"> |
7433 | <a name="fixes.libtool"></a>19.3.1. Shared libraries - libtool</h3></div></div></div> | | 7433 | <a name="fixes.libtool"></a>19.3.1. Shared libraries - libtool</h3></div></div></div> |
7434 | <p>pkgsrc supports many different machines, with different | | 7434 | <p>pkgsrc supports many different machines, with different |
7435 | object formats like a.out and ELF, and varying abilities to do | | 7435 | object formats like a.out and ELF, and varying abilities to do |
7436 | shared library and dynamic loading at all. To accompany this, | | 7436 | shared library and dynamic loading at all. To accompany this, |
7437 | varying commands and options have to be passed to the | | 7437 | varying commands and options have to be passed to the |
7438 | compiler, linker, etc. to get the Right Thing, which can be | | 7438 | compiler, linker, etc. to get the Right Thing, which can be |
7439 | pretty annoying especially if you don't have all the machines | | 7439 | pretty annoying especially if you don't have all the machines |
7440 | at your hand to test things. The | | 7440 | at your hand to test things. The |
7441 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/libtool/README.html" target="_top"><code class="filename">devel/libtool</code></a> pkg | | 7441 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/libtool/README.html" target="_top"><code class="filename">devel/libtool</code></a> pkg |
7442 | can help here, as it just <span class="quote">“<span class="quote">knows</span>”</span> how to build | | 7442 | can help here, as it just <span class="quote">“<span class="quote">knows</span>”</span> how to build |
7443 | both static and dynamic libraries from a set of source files, | | 7443 | both static and dynamic libraries from a set of source files, |
7444 | thus being platform-independent.</p> | | 7444 | thus being platform-independent.</p> |
7445 | <p>Here's how to use libtool in a package in seven simple | | 7445 | <p>Here's how to use libtool in a package in seven simple |
7446 | steps:</p> | | 7446 | steps:</p> |
7447 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 7447 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
7448 | <li class="listitem"><p>Add <code class="varname">USE_LIBTOOL=yes</code> to the package | | 7448 | <li class="listitem"><p>Add <code class="varname">USE_LIBTOOL=yes</code> to the package |
7449 | Makefile.</p></li> | | 7449 | Makefile.</p></li> |
7450 | <li class="listitem"><p>For library objects, use <span class="quote">“<span class="quote">${LIBTOOL} --mode=compile | | 7450 | <li class="listitem"><p>For library objects, use <span class="quote">“<span class="quote">${LIBTOOL} --mode=compile |
7451 | ${CC}</span>”</span> in place of <span class="quote">“<span class="quote">${CC}</span>”</span>. You could even | | 7451 | ${CC}</span>”</span> in place of <span class="quote">“<span class="quote">${CC}</span>”</span>. You could even |
7452 | add it to the definition of <code class="varname">CC</code>, if only | | 7452 | add it to the definition of <code class="varname">CC</code>, if only |
7453 | libraries are being built in a given Makefile. This one command | | 7453 | libraries are being built in a given Makefile. This one command |
7454 | will build both PIC and non-PIC library objects, so you need not | | 7454 | will build both PIC and non-PIC library objects, so you need not |
7455 | have separate shared and non-shared library rules.</p></li> | | 7455 | have separate shared and non-shared library rules.</p></li> |
7456 | <li class="listitem"> | | 7456 | <li class="listitem"> |
7457 | <p>For the linking of the library, remove any | | 7457 | <p>For the linking of the library, remove any |
7458 | <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 | | 7458 | <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 |
7459 | -Bshareable</span>”</span> commands, and instead use:</p> | | 7459 | -Bshareable</span>”</span> commands, and instead use:</p> |
7460 | <pre class="programlisting"> | | 7460 | <pre class="programlisting"> |
7461 | ${LIBTOOL} --mode=link \ | | 7461 | ${LIBTOOL} --mode=link \ |
7462 | ${CC} -o ${.TARGET:.a=.la} \ | | 7462 | ${CC} -o ${.TARGET:.a=.la} \ |
7463 | ${OBJS:.o=.lo} \ | | 7463 | ${OBJS:.o=.lo} \ |
7464 | -rpath ${PREFIX}/lib \ | | 7464 | -rpath ${PREFIX}/lib \ |
7465 | -version-info major:minor | | 7465 | -version-info major:minor |
7466 | </pre> | | 7466 | </pre> |
7467 | <p>Note that the library is changed to have a | | 7467 | <p>Note that the library is changed to have a |
7468 | <code class="filename">.la</code> extension, and the objects are | | 7468 | <code class="filename">.la</code> extension, and the objects are |
7469 | changed to have a <code class="filename">.lo</code> | | 7469 | changed to have a <code class="filename">.lo</code> |
7470 | extension. Change <code class="varname">OBJS</code> as | | 7470 | extension. Change <code class="varname">OBJS</code> as |
7471 | necessary. This automatically creates all of the | | 7471 | necessary. This automatically creates all of the |
7472 | <code class="filename">.a</code>, | | 7472 | <code class="filename">.a</code>, |
7473 | <code class="filename">.so.major.minor</code>, and ELF symlinks (if | | 7473 | <code class="filename">.so.major.minor</code>, and ELF symlinks (if |
7474 | necessary) in the build directory. Be sure to include | | 7474 | necessary) in the build directory. Be sure to include |
7475 | <span class="quote">“<span class="quote">-version-info</span>”</span>, especially when major and | | 7475 | <span class="quote">“<span class="quote">-version-info</span>”</span>, especially when major and |
7476 | minor are zero, as libtool will otherwise strip off the | | 7476 | minor are zero, as libtool will otherwise strip off the |
7477 | shared library version.</p> | | 7477 | shared library version.</p> |
7478 | <p>From the libtool manual:</p> | | 7478 | <p>From the libtool manual:</p> |
7479 | <pre class="programlisting"> | | 7479 | <pre class="programlisting"> |
7480 | So, libtool library versions are described by three integers: | | 7480 | So, libtool library versions are described by three integers: |
7481 | | | 7481 | |
7482 | CURRENT | | 7482 | CURRENT |
7483 | The most recent interface number that this library implements. | | 7483 | The most recent interface number that this library implements. |
7484 | | | 7484 | |
7485 | REVISION | | 7485 | REVISION |
7486 | The implementation number of the CURRENT interface. | | 7486 | The implementation number of the CURRENT interface. |
7487 | | | 7487 | |
7488 | AGE | | 7488 | AGE |
7489 | The difference between the newest and oldest interfaces that | | 7489 | The difference between the newest and oldest interfaces that |
7490 | this library implements. In other words, the library implements | | 7490 | this library implements. In other words, the library implements |
7491 | all the interface numbers in the range from number `CURRENT - | | 7491 | all the interface numbers in the range from number `CURRENT - |
7492 | AGE' to `CURRENT'. | | 7492 | AGE' to `CURRENT'. |
7493 | | | 7493 | |
7494 | If two libraries have identical CURRENT and AGE numbers, then the | | 7494 | If two libraries have identical CURRENT and AGE numbers, then the |
7495 | dynamic linker chooses the library with the greater REVISION number. | | 7495 | dynamic linker chooses the library with the greater REVISION number. |
7496 | </pre> | | 7496 | </pre> |
7497 | <p>The <span class="quote">“<span class="quote">-release</span>”</span> option will produce | | 7497 | <p>The <span class="quote">“<span class="quote">-release</span>”</span> option will produce |
7498 | different results for a.out and ELF (excluding symlinks) | | 7498 | different results for a.out and ELF (excluding symlinks) |
7499 | in only one case. An ELF library of the form | | 7499 | in only one case. An ELF library of the form |
7500 | <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> | | 7500 | <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> |
7501 | will have a symlink of | | 7501 | will have a symlink of |
7502 | <span class="quote">“<span class="quote">libfoo.so.<span class="emphasis"><em>x</em></span>.<span class="emphasis"><em>y</em></span></span>”</span> | | 7502 | <span class="quote">“<span class="quote">libfoo.so.<span class="emphasis"><em>x</em></span>.<span class="emphasis"><em>y</em></span></span>”</span> |
7503 | on an a.out platform. This is handled | | 7503 | on an a.out platform. This is handled |
7504 | automatically.</p> | | 7504 | automatically.</p> |
7505 | <p>The <span class="quote">“<span class="quote">-rpath argument</span>”</span> is the install | | 7505 | <p>The <span class="quote">“<span class="quote">-rpath argument</span>”</span> is the install |
7506 | directory of the library being built.</p> | | 7506 | directory of the library being built.</p> |
7507 | <p>In the <code class="filename">PLIST</code>, include only the | | 7507 | <p>In the <code class="filename">PLIST</code>, include only the |
7508 | <code class="filename">.la</code> file, the other files will be | | 7508 | <code class="filename">.la</code> file, the other files will be |
7509 | added automatically.</p> | | 7509 | added automatically.</p> |
7510 | </li> | | 7510 | </li> |
7511 | <li class="listitem"> | | 7511 | <li class="listitem"> |
7512 | <p>When linking shared object (<code class="filename">.so</code>) | | 7512 | <p>When linking shared object (<code class="filename">.so</code>) |
7513 | files, i.e. files that are loaded via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?dlopen+3.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">dlopen</span>(3)</span></a>, NOT | | 7513 | files, i.e. files that are loaded via <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?dlopen+3.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">dlopen</span>(3)</span></a>, NOT |
7514 | shared libraries, use <span class="quote">“<span class="quote">-module | | 7514 | shared libraries, use <span class="quote">“<span class="quote">-module |
7515 | -avoid-version</span>”</span> to prevent them getting version | | 7515 | -avoid-version</span>”</span> to prevent them getting version |
7516 | tacked on.</p> | | 7516 | tacked on.</p> |
7517 | <p>The <code class="filename">PLIST</code> file gets the | | 7517 | <p>The <code class="filename">PLIST</code> file gets the |
7518 | <code class="filename">foo.so</code> entry.</p> | | 7518 | <code class="filename">foo.so</code> entry.</p> |
7519 | </li> | | 7519 | </li> |
7520 | <li class="listitem"> | | 7520 | <li class="listitem"> |
7521 | <p>When linking programs that depend on these libraries | | 7521 | <p>When linking programs that depend on these libraries |
7522 | <span class="emphasis"><em>before</em></span> they are installed, preface | | 7522 | <span class="emphasis"><em>before</em></span> they are installed, preface |
7523 | the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?cc+1.i386+NetBSD-7.1"><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.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">ld</span>(1)</span></a> line with <span class="quote">“<span class="quote">${LIBTOOL} | | 7523 | the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?cc+1.i386+NetBSD-7.1.2"><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.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">ld</span>(1)</span></a> line with <span class="quote">“<span class="quote">${LIBTOOL} |
7524 | --mode=link</span>”</span>, and it will find the correct | | 7524 | --mode=link</span>”</span>, and it will find the correct |
7525 | libraries (static or shared), but please be aware that | | 7525 | libraries (static or shared), but please be aware that |
7526 | libtool will not allow you to specify a relative path in | | 7526 | libtool will not allow you to specify a relative path in |
7527 | -L (such as <span class="quote">“<span class="quote">-L../somelib</span>”</span>), because it | | 7527 | -L (such as <span class="quote">“<span class="quote">-L../somelib</span>”</span>), because it |
7528 | expects you to change that argument to be the | | 7528 | expects you to change that argument to be the |
7529 | <code class="filename">.la</code> file. e.g.</p> | | 7529 | <code class="filename">.la</code> file. e.g.</p> |
7530 | <pre class="programlisting"> | | 7530 | <pre class="programlisting"> |
7531 | ${LIBTOOL} --mode=link ${CC} -o someprog -L../somelib -lsomelib | | 7531 | ${LIBTOOL} --mode=link ${CC} -o someprog -L../somelib -lsomelib |
7532 | </pre> | | 7532 | </pre> |
7533 | <p>should be changed to:</p> | | 7533 | <p>should be changed to:</p> |
7534 | <pre class="programlisting"> | | 7534 | <pre class="programlisting"> |
7535 | ${LIBTOOL} --mode=link ${CC} -o <em class="replaceable"><code>someprog</code></em> <em class="replaceable"><code>../somelib/somelib.la</code></em> | | 7535 | ${LIBTOOL} --mode=link ${CC} -o <em class="replaceable"><code>someprog</code></em> <em class="replaceable"><code>../somelib/somelib.la</code></em> |
7536 | </pre> | | 7536 | </pre> |
7537 | <p>and it will do the right thing with the libraries.</p> | | 7537 | <p>and it will do the right thing with the libraries.</p> |
7538 | </li> | | 7538 | </li> |
7539 | <li class="listitem"> | | 7539 | <li class="listitem"> |
7540 | <p>When installing libraries, preface the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?install+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">install</span>(1)</span></a> | | 7540 | <p>When installing libraries, preface the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?install+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">install</span>(1)</span></a> |
7541 | or <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?cp+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">cp</span>(1)</span></a> command with <span class="quote">“<span class="quote">${LIBTOOL} | | 7541 | or <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?cp+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">cp</span>(1)</span></a> command with <span class="quote">“<span class="quote">${LIBTOOL} |
7542 | --mode=install</span>”</span>, and change the library name to | | 7542 | --mode=install</span>”</span>, and change the library name to |
7543 | <code class="filename">.la</code>. e.g.</p> | | 7543 | <code class="filename">.la</code>. e.g.</p> |
7544 | <pre class="programlisting"> | | 7544 | <pre class="programlisting"> |
7545 | ${LIBTOOL} --mode=install ${BSD_INSTALL_LIB} ${SOMELIB:.a=.la} ${PREFIX}/lib | | 7545 | ${LIBTOOL} --mode=install ${BSD_INSTALL_LIB} ${SOMELIB:.a=.la} ${PREFIX}/lib |
7546 | </pre> | | 7546 | </pre> |
7547 | <p>This will install the static <code class="filename">.a</code>, | | 7547 | <p>This will install the static <code class="filename">.a</code>, |
7548 | shared library, any needed symlinks, and run | | 7548 | shared library, any needed symlinks, and run |
7549 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?ldconfig+8.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">ldconfig</span>(8)</span></a>.</p> | | 7549 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?ldconfig+8.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">ldconfig</span>(8)</span></a>.</p> |
7550 | </li> | | 7550 | </li> |
7551 | <li class="listitem"><p>In your <code class="filename">PLIST</code>, include only | | 7551 | <li class="listitem"><p>In your <code class="filename">PLIST</code>, include only |
7552 | the <code class="filename">.la</code> | | 7552 | the <code class="filename">.la</code> |
7553 | file (this is a change from previous behaviour).</p></li> | | 7553 | file (this is a change from previous behaviour).</p></li> |
7554 | </ol></div> | | 7554 | </ol></div> |
7555 | </div> | | 7555 | </div> |
7556 | <div class="sect2"> | | 7556 | <div class="sect2"> |
7557 | <div class="titlepage"><div><div><h3 class="title"> | | 7557 | <div class="titlepage"><div><div><h3 class="title"> |
7558 | <a name="using-libtool"></a>19.3.2. Using libtool on GNU packages that already support libtool</h3></div></div></div> | | 7558 | <a name="using-libtool"></a>19.3.2. Using libtool on GNU packages that already support libtool</h3></div></div></div> |
7559 | <p>Add <code class="varname">USE_LIBTOOL=yes</code> to the | | 7559 | <p>Add <code class="varname">USE_LIBTOOL=yes</code> to the |
7560 | package Makefile. This will override the package's own libtool | | 7560 | package Makefile. This will override the package's own libtool |
7561 | in most cases. For older libtool using packages, libtool is | | 7561 | in most cases. For older libtool using packages, libtool is |
7562 | made by ltconfig script during the do-configure step; you can | | 7562 | made by ltconfig script during the do-configure step; you can |
7563 | check the libtool script location by doing <span class="command"><strong>make | | 7563 | check the libtool script location by doing <span class="command"><strong>make |
7564 | configure; find work*/ -name libtool</strong></span>.</p> | | 7564 | configure; find work*/ -name libtool</strong></span>.</p> |
7565 | <p><code class="varname">LIBTOOL_OVERRIDE</code> specifies which libtool | | 7565 | <p><code class="varname">LIBTOOL_OVERRIDE</code> specifies which libtool |
7566 | scripts, relative to <code class="varname">WRKSRC</code>, to override. By | | 7566 | scripts, relative to <code class="varname">WRKSRC</code>, to override. By |
7567 | default, it is set to <span class="quote">“<span class="quote">libtool */libtool | | 7567 | default, it is set to <span class="quote">“<span class="quote">libtool */libtool |
7568 | */*/libtool</span>”</span>. If this does not match the location of the | | 7568 | */*/libtool</span>”</span>. If this does not match the location of the |
7569 | package's libtool script(s), set it as appropriate.</p> | | 7569 | package's libtool script(s), set it as appropriate.</p> |
7570 | <p>If you do not need <code class="filename">*.a</code> static | | 7570 | <p>If you do not need <code class="filename">*.a</code> static |
7571 | libraries built and installed, then use | | 7571 | libraries built and installed, then use |
7572 | <code class="varname">SHLIBTOOL_OVERRIDE</code> instead.</p> | | 7572 | <code class="varname">SHLIBTOOL_OVERRIDE</code> instead.</p> |
7573 | <p>If your package makes use of the platform-independent library | | 7573 | <p>If your package makes use of the platform-independent library |
7574 | for loading dynamic shared objects, that comes with libtool | | 7574 | for loading dynamic shared objects, that comes with libtool |
7575 | (libltdl), you should include devel/libltdl/buildlink3.mk.</p> | | 7575 | (libltdl), you should include devel/libltdl/buildlink3.mk.</p> |
7576 | <p>Some packages use libtool incorrectly so that the package | | 7576 | <p>Some packages use libtool incorrectly so that the package |
7577 | may not work or build in some circumstances. Some of the more | | 7577 | may not work or build in some circumstances. Some of the more |
7578 | common errors are:</p> | | 7578 | common errors are:</p> |
7579 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 7579 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
7580 | <li class="listitem"> | | 7580 | <li class="listitem"> |
7581 | <p>The inclusion of a shared object (-module) as a dependent library in an | | 7581 | <p>The inclusion of a shared object (-module) as a dependent library in an |
7582 | executable or library. This in itself isn't a problem if one of two things | | 7582 | executable or library. This in itself isn't a problem if one of two things |
7583 | has been done:</p> | | 7583 | has been done:</p> |
7584 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 7584 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
7585 | <li class="listitem"><p>The shared object is named correctly, i.e. | | 7585 | <li class="listitem"><p>The shared object is named correctly, i.e. |
7586 | <code class="filename">libfoo.la</code>, not | | 7586 | <code class="filename">libfoo.la</code>, not |
7587 | <code class="filename">foo.la</code></p></li> | | 7587 | <code class="filename">foo.la</code></p></li> |
7588 | <li class="listitem"><p>The -dlopen option is used when linking an executable.</p></li> | | 7588 | <li class="listitem"><p>The -dlopen option is used when linking an executable.</p></li> |
7589 | </ol></div> | | 7589 | </ol></div> |
7590 | </li> | | 7590 | </li> |
7591 | <li class="listitem"><p>The use of libltdl without the correct calls to initialisation routines. | | 7591 | <li class="listitem"><p>The use of libltdl without the correct calls to initialisation routines. |
7592 | The function lt_dlinit() should be called and the macro | | 7592 | The function lt_dlinit() should be called and the macro |
7593 | <code class="varname">LTDL_SET_PRELOADED_SYMBOLS</code> included in | | 7593 | <code class="varname">LTDL_SET_PRELOADED_SYMBOLS</code> included in |
7594 | executables.</p></li> | | 7594 | executables.</p></li> |
7595 | </ul></div> | | 7595 | </ul></div> |
7596 | </div> | | 7596 | </div> |
7597 | <div class="sect2"> | | 7597 | <div class="sect2"> |
7598 | <div class="titlepage"><div><div><h3 class="title"> | | 7598 | <div class="titlepage"><div><div><h3 class="title"> |
7599 | <a name="autoconf-automake"></a>19.3.3. GNU Autoconf/Automake</h3></div></div></div> | | 7599 | <a name="autoconf-automake"></a>19.3.3. GNU Autoconf/Automake</h3></div></div></div> |
7600 | <p>If a package needs GNU autoconf or automake to be executed | | 7600 | <p>If a package needs GNU autoconf or automake to be executed |
7601 | to regenerate the configure script and Makefile.in makefile | | 7601 | to regenerate the configure script and Makefile.in makefile |
7602 | templates, then they should be executed in a pre-configure | | 7602 | templates, then they should be executed in a pre-configure |
7603 | target.</p> | | 7603 | target.</p> |
7604 | <p>For packages that need only autoconf:</p> | | 7604 | <p>For packages that need only autoconf:</p> |
7605 | <pre class="programlisting"> | | 7605 | <pre class="programlisting"> |
7606 | AUTOCONF_REQD= 2.50 # if default version is not good enough | | 7606 | AUTOCONF_REQD= 2.50 # if default version is not good enough |
7607 | USE_TOOLS+= autoconf # use "autoconf213" for autoconf-2.13 | | 7607 | USE_TOOLS+= autoconf # use "autoconf213" for autoconf-2.13 |
7608 | ... | | 7608 | ... |
7609 | | | 7609 | |
7610 | pre-configure: | | 7610 | pre-configure: |
7611 | cd ${WRKSRC} && autoconf | | 7611 | cd ${WRKSRC} && autoconf |
7612 | | | 7612 | |
7613 | ... | | 7613 | ... |
7614 | </pre> | | 7614 | </pre> |
7615 | <p>and for packages that need automake and autoconf:</p> | | 7615 | <p>and for packages that need automake and autoconf:</p> |
7616 | <pre class="programlisting"> | | 7616 | <pre class="programlisting"> |
7617 | AUTOMAKE_REQD= 1.7.1 # if default version is not good enough | | 7617 | AUTOMAKE_REQD= 1.7.1 # if default version is not good enough |
7618 | USE_TOOLS+= automake # use "automake14" for automake-1.4 | | 7618 | USE_TOOLS+= automake # use "automake14" for automake-1.4 |
7619 | ... | | 7619 | ... |
7620 | | | 7620 | |
7621 | pre-configure: | | 7621 | pre-configure: |
7622 | set -e; cd ${WRKSRC}; \ | | 7622 | set -e; cd ${WRKSRC}; \ |
7623 | aclocal; autoheader; automake -a --foreign -i; autoconf | | 7623 | aclocal; autoheader; automake -a --foreign -i; autoconf |
7624 | | | 7624 | |
7625 | ... | | 7625 | ... |
7626 | </pre> | | 7626 | </pre> |
7627 | <p>Packages which use GNU Automake will almost certainly | | 7627 | <p>Packages which use GNU Automake will almost certainly |
7628 | require GNU Make.</p> | | 7628 | require GNU Make.</p> |
7629 | <p>There are times when the configure process makes | | 7629 | <p>There are times when the configure process makes |
7630 | additional changes to the generated files, which then causes | | 7630 | additional changes to the generated files, which then causes |
7631 | the build process to try to re-execute the automake sequence. | | 7631 | the build process to try to re-execute the automake sequence. |
7632 | This is prevented by touching various files in the configure | | 7632 | This is prevented by touching various files in the configure |
7633 | stage. If this causes problems with your package you can set | | 7633 | stage. If this causes problems with your package you can set |
7634 | <code class="varname">AUTOMAKE_OVERRIDE=NO</code> in the package | | 7634 | <code class="varname">AUTOMAKE_OVERRIDE=NO</code> in the package |
7635 | Makefile.</p> | | 7635 | Makefile.</p> |
7636 | </div> | | 7636 | </div> |
7637 | </div> | | 7637 | </div> |
7638 | <div class="sect1"> | | 7638 | <div class="sect1"> |
7639 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 7639 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
7640 | <a name="programming-languages"></a>19.4. Programming languages</h2></div></div></div> | | 7640 | <a name="programming-languages"></a>19.4. Programming languages</h2></div></div></div> |
7641 | <div class="sect2"> | | 7641 | <div class="sect2"> |
7642 | <div class="titlepage"><div><div><h3 class="title"> | | 7642 | <div class="titlepage"><div><div><h3 class="title"> |
7643 | <a name="basic-programming-languages"></a>19.4.1. C, C++, and Fortran</h3></div></div></div> | | 7643 | <a name="basic-programming-languages"></a>19.4.1. C, C++, and Fortran</h3></div></div></div> |
7644 | <p>Compilers for the C, C++, and Fortran languages comes with | | 7644 | <p>Compilers for the C, C++, and Fortran languages comes with |
7645 | the NetBSD base system. By default, pkgsrc assumes that a package | | 7645 | the NetBSD base system. By default, pkgsrc assumes that a package |
7646 | is written in C and will hide all other compilers (via the wrapper | | 7646 | is written in C and will hide all other compilers (via the wrapper |
7647 | framework, see <a class="xref" href="#buildlink" title="Chapter 14. Buildlink methodology">Chapter 14, <i>Buildlink methodology</i></a>).</p> | | 7647 | framework, see <a class="xref" href="#buildlink" title="Chapter 14. Buildlink methodology">Chapter 14, <i>Buildlink methodology</i></a>).</p> |
7648 | <p>To declare which language's compiler a package needs, set | | 7648 | <p>To declare which language's compiler a package needs, set |
7649 | the <code class="varname">USE_LANGUAGES</code> variable. Allowed values | | 7649 | the <code class="varname">USE_LANGUAGES</code> variable. Allowed values |
7650 | currently are <span class="quote">“<span class="quote">c</span>”</span>, <span class="quote">“<span class="quote">c++</span>”</span>, and | | 7650 | currently are <span class="quote">“<span class="quote">c</span>”</span>, <span class="quote">“<span class="quote">c++</span>”</span>, and |
7651 | <span class="quote">“<span class="quote">fortran</span>”</span> (and any combination). The default is | | 7651 | <span class="quote">“<span class="quote">fortran</span>”</span> (and any combination). The default is |
7652 | <span class="quote">“<span class="quote">c</span>”</span>. Packages using GNU configure scripts, even if | | 7652 | <span class="quote">“<span class="quote">c</span>”</span>. Packages using GNU configure scripts, even if |
7653 | written in C++, usually need a C compiler for the configure | | 7653 | written in C++, usually need a C compiler for the configure |
7654 | phase.</p> | | 7654 | phase.</p> |
7655 | </div> | | 7655 | </div> |
7656 | <div class="sect2"> | | 7656 | <div class="sect2"> |
7657 | <div class="titlepage"><div><div><h3 class="title"> | | 7657 | <div class="titlepage"><div><div><h3 class="title"> |
7658 | <a name="java-programming-language"></a>19.4.2. Java</h3></div></div></div> | | 7658 | <a name="java-programming-language"></a>19.4.2. Java</h3></div></div></div> |
7659 | <p>If a program is written in Java, use the Java framework in | | 7659 | <p>If a program is written in Java, use the Java framework in |
7660 | pkgsrc. The package must include | | 7660 | pkgsrc. The package must include |
7661 | <code class="filename">../../mk/java-vm.mk</code>. This Makefile fragment | | 7661 | <code class="filename">../../mk/java-vm.mk</code>. This Makefile fragment |
7662 | provides the following variables:</p> | | 7662 | provides the following variables:</p> |
7663 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 7663 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
7664 | <li class="listitem"><p><code class="varname">USE_JAVA</code> defines if a build | | 7664 | <li class="listitem"><p><code class="varname">USE_JAVA</code> defines if a build |
7665 | dependency on the JDK is added. If | | 7665 | dependency on the JDK is added. If |
7666 | <code class="varname">USE_JAVA</code> is set to <span class="quote">“<span class="quote">run</span>”</span>, then | | 7666 | <code class="varname">USE_JAVA</code> is set to <span class="quote">“<span class="quote">run</span>”</span>, then |
7667 | there is only a runtime dependency on the JDK. The default is | | 7667 | there is only a runtime dependency on the JDK. The default is |
7668 | <span class="quote">“<span class="quote">yes</span>”</span>, which also adds a build dependency on the | | 7668 | <span class="quote">“<span class="quote">yes</span>”</span>, which also adds a build dependency on the |
7669 | JDK.</p></li> | | 7669 | JDK.</p></li> |
7670 | <li class="listitem"><p>Set <code class="varname">USE_JAVA2</code> to declare that | | 7670 | <li class="listitem"><p>Set <code class="varname">USE_JAVA2</code> to declare that |
7671 | a package needs a Java2 implementation. The supported values | | 7671 | a package needs a Java2 implementation. The supported values |
7672 | are <span class="quote">“<span class="quote">yes</span>”</span>, <span class="quote">“<span class="quote">1.4</span>”</span>, and | | 7672 | are <span class="quote">“<span class="quote">yes</span>”</span>, <span class="quote">“<span class="quote">1.4</span>”</span>, and |
7673 | <span class="quote">“<span class="quote">1.5</span>”</span>. <span class="quote">“<span class="quote">yes</span>”</span> accepts any Java2 | | 7673 | <span class="quote">“<span class="quote">1.5</span>”</span>. <span class="quote">“<span class="quote">yes</span>”</span> accepts any Java2 |
7674 | implementation, <span class="quote">“<span class="quote">1.4</span>”</span> insists on versions 1.4 or | | 7674 | implementation, <span class="quote">“<span class="quote">1.4</span>”</span> insists on versions 1.4 or |
7675 | above, and <span class="quote">“<span class="quote">1.5</span>”</span> only accepts versions 1.5 or | | 7675 | above, and <span class="quote">“<span class="quote">1.5</span>”</span> only accepts versions 1.5 or |
7676 | above. This variable is not set by default.</p></li> | | 7676 | above. This variable is not set by default.</p></li> |
7677 | <li class="listitem"><p><code class="varname">PKG_JAVA_HOME</code> is | | 7677 | <li class="listitem"><p><code class="varname">PKG_JAVA_HOME</code> is |
7678 | automatically set to the runtime location of the used Java | | 7678 | automatically set to the runtime location of the used Java |
7679 | implementation dependency. It may be used to set | | 7679 | implementation dependency. It may be used to set |
7680 | <code class="varname">JAVA_HOME</code> to a good value if the program | | 7680 | <code class="varname">JAVA_HOME</code> to a good value if the program |
7681 | needs this variable to be defined. | | 7681 | needs this variable to be defined. |
7682 | </p></li> | | 7682 | </p></li> |
7683 | </ul></div> | | 7683 | </ul></div> |
7684 | </div> | | 7684 | </div> |
7685 | <div class="sect2"> | | 7685 | <div class="sect2"> |
7686 | <div class="titlepage"><div><div><h3 class="title"> | | 7686 | <div class="titlepage"><div><div><h3 class="title"> |
7687 | <a name="perl-scripts"></a>19.4.3. Packages containing perl scripts</h3></div></div></div> | | 7687 | <a name="perl-scripts"></a>19.4.3. Packages containing perl scripts</h3></div></div></div> |
7688 | <p>If your package contains interpreted perl scripts, add | | 7688 | <p>If your package contains interpreted perl scripts, add |
7689 | <span class="quote">“<span class="quote">perl</span>”</span> to the <code class="varname">USE_TOOLS</code> variable | | 7689 | <span class="quote">“<span class="quote">perl</span>”</span> to the <code class="varname">USE_TOOLS</code> variable |
7690 | and set <code class="varname">REPLACE_PERL</code> to ensure that the proper | | 7690 | and set <code class="varname">REPLACE_PERL</code> to ensure that the proper |
7691 | interpreter path is set. <code class="varname">REPLACE_PERL</code> should | | 7691 | interpreter path is set. <code class="varname">REPLACE_PERL</code> should |
7692 | contain a list of scripts, relative to <code class="varname">WRKSRC</code>, | | 7692 | contain a list of scripts, relative to <code class="varname">WRKSRC</code>, |
7693 | that you want adjusted. Every occurrence of | | 7693 | that you want adjusted. Every occurrence of |
7694 | <code class="filename">*/bin/perl</code> in a she-bang line will be | | 7694 | <code class="filename">*/bin/perl</code> in a she-bang line will be |
7695 | replaced with the full path to the perl executable.</p> | | 7695 | replaced with the full path to the perl executable.</p> |
7696 | <p>If a particular version of perl is needed, set the | | 7696 | <p>If a particular version of perl is needed, set the |
7697 | <code class="varname">PERL5_REQD</code> variable to the version number. The | | 7697 | <code class="varname">PERL5_REQD</code> variable to the version number. The |
7698 | default is <span class="quote">“<span class="quote">5.0</span>”</span>.</p> | | 7698 | default is <span class="quote">“<span class="quote">5.0</span>”</span>.</p> |
7699 | <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 | | 7699 | <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 |
7700 | about handling perl modules.</p> | | 7700 | about handling perl modules.</p> |
7701 | </div> | | 7701 | </div> |
7702 | <div class="sect2"> | | 7702 | <div class="sect2"> |
7703 | <div class="titlepage"><div><div><h3 class="title"> | | 7703 | <div class="titlepage"><div><div><h3 class="title"> |
7704 | <a name="shell-scripts"></a>19.4.4. Packages containing shell scripts</h3></div></div></div> | | 7704 | <a name="shell-scripts"></a>19.4.4. Packages containing shell scripts</h3></div></div></div> |
7705 | <p><code class="varname">REPLACE_SH</code>, | | 7705 | <p><code class="varname">REPLACE_SH</code>, |
7706 | <code class="varname">REPLACE_BASH</code>, <code class="varname">REPLACE_CSH</code>, | | 7706 | <code class="varname">REPLACE_BASH</code>, <code class="varname">REPLACE_CSH</code>, |
7707 | and <code class="varname">REPLACE_KSH</code> can be used to replace shell | | 7707 | and <code class="varname">REPLACE_KSH</code> can be used to replace shell |
7708 | hash bangs in files. Please use the appropriate one, prefering | | 7708 | hash bangs in files. Please use the appropriate one, prefering |
7709 | <code class="varname">REPLACE_SH</code> in case this shell is sufficient. | | 7709 | <code class="varname">REPLACE_SH</code> in case this shell is sufficient. |
7710 | Each should contain a list of scripts, relative to | | 7710 | Each should contain a list of scripts, relative to |
7711 | <code class="varname">WRKSRC</code>, that you want adjusted. Every | | 7711 | <code class="varname">WRKSRC</code>, that you want adjusted. Every |
7712 | occurrence of the matching shell in a she-bang line will be | | 7712 | occurrence of the matching shell in a she-bang line will be |
7713 | replaced with the full path to the shell executable. | | 7713 | replaced with the full path to the shell executable. |
7714 | When using <code class="varname">REPLACE_BASH</code>, don't forget to add | | 7714 | When using <code class="varname">REPLACE_BASH</code>, don't forget to add |
7715 | <code class="filename">bash</code> to <code class="varname">USE_TOOLS</code>.</p> | | 7715 | <code class="filename">bash</code> to <code class="varname">USE_TOOLS</code>.</p> |
7716 | </div> | | 7716 | </div> |
7717 | <div class="sect2"> | | 7717 | <div class="sect2"> |
7718 | <div class="titlepage"><div><div><h3 class="title"> | | 7718 | <div class="titlepage"><div><div><h3 class="title"> |
7719 | <a name="other-programming-languages"></a>19.4.5. Other programming languages</h3></div></div></div> | | 7719 | <a name="other-programming-languages"></a>19.4.5. Other programming languages</h3></div></div></div> |
7720 | <p>Currently, there is no special handling for other languages | | 7720 | <p>Currently, there is no special handling for other languages |
7721 | in pkgsrc. If a compiler package provides a | | 7721 | in pkgsrc. If a compiler package provides a |
7722 | <code class="filename">buildlink3.mk</code> file, include that, otherwise | | 7722 | <code class="filename">buildlink3.mk</code> file, include that, otherwise |
7723 | just add a (build) dependency on the appropriate compiler | | 7723 | just add a (build) dependency on the appropriate compiler |
7724 | package.</p> | | 7724 | package.</p> |
7725 | </div> | | 7725 | </div> |
7726 | </div> | | 7726 | </div> |
7727 | <div class="sect1"> | | 7727 | <div class="sect1"> |
7728 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 7728 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
7729 | <a name="fixes.build"></a>19.5. The <span class="emphasis"><em>build</em></span> phase</h2></div></div></div> | | 7729 | <a name="fixes.build"></a>19.5. The <span class="emphasis"><em>build</em></span> phase</h2></div></div></div> |
7730 | <p>The most common failures when building a package are that | | 7730 | <p>The most common failures when building a package are that |
7731 | some platforms do not provide certain header files, functions or | | 7731 | some platforms do not provide certain header files, functions or |
7732 | libraries, or they provide the functions in a library that the | | 7732 | libraries, or they provide the functions in a library that the |
7733 | original package author didn't know. To work around this, you | | 7733 | original package author didn't know. To work around this, you |
7734 | can rewrite the source code in most cases so that it does not | | 7734 | can rewrite the source code in most cases so that it does not |
7735 | use the missing functions or provides a replacement function.</p> | | 7735 | use the missing functions or provides a replacement function.</p> |
7736 | <div class="sect2"> | | 7736 | <div class="sect2"> |
7737 | <div class="titlepage"><div><div><h3 class="title"> | | 7737 | <div class="titlepage"><div><div><h3 class="title"> |
7738 | <a name="fixes.build.cpp"></a>19.5.1. Compiling C and C++ code conditionally</h3></div></div></div> | | 7738 | <a name="fixes.build.cpp"></a>19.5.1. Compiling C and C++ code conditionally</h3></div></div></div> |
7739 | <p>If a package already comes with a GNU configure script, the | | 7739 | <p>If a package already comes with a GNU configure script, the |
7740 | preferred way to fix the build failure is to change the | | 7740 | preferred way to fix the build failure is to change the |
7741 | configure script, not the code. In the other cases, you can | | 7741 | configure script, not the code. In the other cases, you can |
7742 | utilize the C preprocessor, which defines certain macros | | 7742 | utilize the C preprocessor, which defines certain macros |
7743 | depending on the operating system and hardware architecture it | | 7743 | depending on the operating system and hardware architecture it |
7744 | compiles for. These macros can be queried using for example | | 7744 | compiles for. These macros can be queried using for example |
7745 | <code class="varname">#if defined(__i386)</code>. Almost every operating | | 7745 | <code class="varname">#if defined(__i386)</code>. Almost every operating |
7746 | system, hardware architecture and compiler has its own macro. | | 7746 | system, hardware architecture and compiler has its own macro. |
7747 | For example, if the macros <code class="varname">__GNUC__</code>, | | 7747 | For example, if the macros <code class="varname">__GNUC__</code>, |
7748 | <code class="varname">__i386__</code> and <code class="varname">__NetBSD__</code> | | 7748 | <code class="varname">__i386__</code> and <code class="varname">__NetBSD__</code> |
7749 | are all defined, you know that you are using NetBSD on an i386 | | 7749 | are all defined, you know that you are using NetBSD on an i386 |
7750 | compatible CPU, and your compiler is GCC.</p> | | 7750 | compatible CPU, and your compiler is GCC.</p> |
7751 | <p>The list of the following macros for hardware and | | 7751 | <p>The list of the following macros for hardware and |
7752 | operating system depends on the compiler that is used. For | | 7752 | operating system depends on the compiler that is used. For |
7753 | example, if you want to conditionally compile code on Solaris, | | 7753 | example, if you want to conditionally compile code on Solaris, |
7754 | don't use <code class="varname">__sun__</code>, as the SunPro compiler | | 7754 | don't use <code class="varname">__sun__</code>, as the SunPro compiler |
7755 | does not define it. Use <code class="varname">__sun</code> instead.</p> | | 7755 | does not define it. Use <code class="varname">__sun</code> instead.</p> |
7756 | <div class="sect3"> | | 7756 | <div class="sect3"> |
7757 | <div class="titlepage"><div><div><h4 class="title"> | | 7757 | <div class="titlepage"><div><div><h4 class="title"> |
7758 | <a name="fixes.build.cpp.os"></a>19.5.1.1. C preprocessor macros to identify the operating system</h4></div></div></div> | | 7758 | <a name="fixes.build.cpp.os"></a>19.5.1.1. C preprocessor macros to identify the operating system</h4></div></div></div> |
7759 | <p>To distinguish between 4.4 BSD-derived systems and the | | 7759 | <p>To distinguish between 4.4 BSD-derived systems and the |
7760 | rest of the world, you should use the following code.</p> | | 7760 | rest of the world, you should use the following code.</p> |
7761 | <pre class="programlisting"> | | 7761 | <pre class="programlisting"> |
7762 | #include <sys/param.h> | | 7762 | #include <sys/param.h> |
7763 | #if (defined(BSD) && BSD >= 199306) | | 7763 | #if (defined(BSD) && BSD >= 199306) |
7764 | /* BSD-specific code goes here */ | | 7764 | /* BSD-specific code goes here */ |
7765 | #else | | 7765 | #else |
7766 | /* non-BSD-specific code goes here */ | | 7766 | /* non-BSD-specific code goes here */ |
7767 | #endif | | 7767 | #endif |
7768 | </pre> | | 7768 | </pre> |
7769 | <p>If this distinction is not fine enough, you can also test | | 7769 | <p>If this distinction is not fine enough, you can also test |
7770 | for the following macros.</p> | | 7770 | for the following macros.</p> |
7771 | <pre class="programlisting"> | | 7771 | <pre class="programlisting"> |
7772 | Cygwin __CYGWIN__ | | 7772 | Cygwin __CYGWIN__ |
7773 | DragonFly __DragonFly__ | | 7773 | DragonFly __DragonFly__ |
7774 | FreeBSD __FreeBSD__ | | 7774 | FreeBSD __FreeBSD__ |
7775 | Haiku __HAIKU__ | | 7775 | Haiku __HAIKU__ |
7776 | Interix __INTERIX | | 7776 | Interix __INTERIX |
7777 | IRIX __sgi (TODO: get a definite source for this) | | 7777 | IRIX __sgi (TODO: get a definite source for this) |
7778 | Linux linux, __linux, __linux__ | | 7778 | Linux linux, __linux, __linux__ |
7779 | Mac OS X __APPLE__ | | 7779 | Mac OS X __APPLE__ |
7780 | MirBSD __MirBSD__ (__OpenBSD__ is also defined) | | 7780 | MirBSD __MirBSD__ (__OpenBSD__ is also defined) |
7781 | Minix3 __minix | | 7781 | Minix3 __minix |
7782 | NetBSD __NetBSD__ | | 7782 | NetBSD __NetBSD__ |
7783 | OpenBSD __OpenBSD__ | | 7783 | OpenBSD __OpenBSD__ |
7784 | Solaris sun, __sun | | 7784 | Solaris sun, __sun |
7785 | </pre> | | 7785 | </pre> |
7786 | </div> | | 7786 | </div> |
7787 | <div class="sect3"> | | 7787 | <div class="sect3"> |
7788 | <div class="titlepage"><div><div><h4 class="title"> | | 7788 | <div class="titlepage"><div><div><h4 class="title"> |
7789 | <a name="fixes.build.cpp.arch"></a>19.5.1.2. C preprocessor macros to identify the hardware architecture</h4></div></div></div> | | 7789 | <a name="fixes.build.cpp.arch"></a>19.5.1.2. C preprocessor macros to identify the hardware architecture</h4></div></div></div> |
7790 | <pre class="programlisting"> | | 7790 | <pre class="programlisting"> |
7791 | i386 i386, __i386, __i386__ | | 7791 | i386 i386, __i386, __i386__ |
7792 | MIPS __mips | | 7792 | MIPS __mips |
7793 | SPARC sparc, __sparc | | 7793 | SPARC sparc, __sparc |
7794 | </pre> | | 7794 | </pre> |
7795 | </div> | | 7795 | </div> |
7796 | <div class="sect3"> | | 7796 | <div class="sect3"> |
7797 | <div class="titlepage"><div><div><h4 class="title"> | | 7797 | <div class="titlepage"><div><div><h4 class="title"> |
7798 | <a name="fixes.build.cpp.compiler"></a>19.5.1.3. C preprocessor macros to identify the compiler</h4></div></div></div> | | 7798 | <a name="fixes.build.cpp.compiler"></a>19.5.1.3. C preprocessor macros to identify the compiler</h4></div></div></div> |
7799 | <pre class="programlisting"> | | 7799 | <pre class="programlisting"> |
7800 | GCC __GNUC__ (major version), __GNUC_MINOR__ | | 7800 | GCC __GNUC__ (major version), __GNUC_MINOR__ |
7801 | MIPSpro _COMPILER_VERSION (0x741 for MIPSpro 7.41) | | 7801 | MIPSpro _COMPILER_VERSION (0x741 for MIPSpro 7.41) |
7802 | SunPro __SUNPRO_C (0x570 for Sun C 5.7) | | 7802 | SunPro __SUNPRO_C (0x570 for Sun C 5.7) |
7803 | SunPro C++ __SUNPRO_CC (0x580 for Sun C++ 5.8) | | 7803 | SunPro C++ __SUNPRO_CC (0x580 for Sun C++ 5.8) |
7804 | </pre> | | 7804 | </pre> |
7805 | </div> | | 7805 | </div> |
7806 | </div> | | 7806 | </div> |
7807 | <div class="sect2"> | | 7807 | <div class="sect2"> |
7808 | <div class="titlepage"><div><div><h3 class="title"> | | 7808 | <div class="titlepage"><div><div><h3 class="title"> |
7809 | <a name="compiler-bugs"></a>19.5.2. How to handle compiler bugs</h3></div></div></div> | | 7809 | <a name="compiler-bugs"></a>19.5.2. How to handle compiler bugs</h3></div></div></div> |
7810 | <p>Some source files trigger bugs in the compiler, based on | | 7810 | <p>Some source files trigger bugs in the compiler, based on |
7811 | combinations of compiler version and architecture and almost | | 7811 | combinations of compiler version and architecture and almost |
7812 | always relation to optimisation being enabled. Common symptoms | | 7812 | always relation to optimisation being enabled. Common symptoms |
7813 | are gcc internal errors or never finishing compiling a | | 7813 | are gcc internal errors or never finishing compiling a |
7814 | file.</p> | | 7814 | file.</p> |
7815 | <p>Typically, a workaround involves testing the | | 7815 | <p>Typically, a workaround involves testing the |
7816 | <code class="varname">MACHINE_ARCH</code> and compiler version, disabling | | 7816 | <code class="varname">MACHINE_ARCH</code> and compiler version, disabling |
7817 | optimisation for that combination of file, | | 7817 | optimisation for that combination of file, |
7818 | <code class="varname">MACHINE_ARCH</code> and compiler.</p> | | 7818 | <code class="varname">MACHINE_ARCH</code> and compiler.</p> |
7819 | <p>This used to be a big problem in the past, but is rarely | | 7819 | <p>This used to be a big problem in the past, but is rarely |
7820 | needed now as compiler technology has matured. If you still need | | 7820 | needed now as compiler technology has matured. If you still need |
7821 | to add a compiler specific workaround, please do so in the file | | 7821 | to add a compiler specific workaround, please do so in the file |
7822 | <code class="filename">hacks.mk</code> and describe the symptom and | | 7822 | <code class="filename">hacks.mk</code> and describe the symptom and |
7823 | compiler version as detailed as possible.</p> | | 7823 | compiler version as detailed as possible.</p> |
7824 | </div> | | 7824 | </div> |
7825 | <div class="sect2"> | | 7825 | <div class="sect2"> |
7826 | <div class="titlepage"><div><div><h3 class="title"> | | 7826 | <div class="titlepage"><div><div><h3 class="title"> |
7827 | <a name="undefined-reference"></a>19.5.3. Undefined reference to <span class="quote">“<span class="quote">...</span>”</span> | | 7827 | <a name="undefined-reference"></a>19.5.3. Undefined reference to <span class="quote">“<span class="quote">...</span>”</span> |
7828 | </h3></div></div></div> | | 7828 | </h3></div></div></div> |
7829 | <p>This error message often means that a package did not | | 7829 | <p>This error message often means that a package did not |
7830 | link to a shared library it needs. The following functions are | | 7830 | link to a shared library it needs. The following functions are |
7831 | known to cause this error message over and over.</p> | | 7831 | known to cause this error message over and over.</p> |
7832 | <div class="informaltable"> | | 7832 | <div class="informaltable"> |
7833 | <a name="undefined-reference-functions"></a><table class="informaltable" border="1"> | | 7833 | <a name="undefined-reference-functions"></a><table class="informaltable" border="1"> |
7834 | <colgroup> | | 7834 | <colgroup> |
7835 | <col> | | 7835 | <col> |
7836 | <col> | | 7836 | <col> |
7837 | <col> | | 7837 | <col> |
7838 | </colgroup> | | 7838 | </colgroup> |
7839 | <thead><tr> | | 7839 | <thead><tr> |
7840 | <th>Function</th> | | 7840 | <th>Function</th> |
7841 | <th>Library</th> | | 7841 | <th>Library</th> |
7842 | <th>Affected platforms</th> | | 7842 | <th>Affected platforms</th> |
7843 | </tr></thead> | | 7843 | </tr></thead> |
7844 | <tbody> | | 7844 | <tbody> |
7845 | <tr> | | 7845 | <tr> |
7846 | <td>accept, bind, connect</td> | | 7846 | <td>accept, bind, connect</td> |
7847 | <td>-lsocket</td> | | 7847 | <td>-lsocket</td> |
7848 | <td>Solaris</td> | | 7848 | <td>Solaris</td> |
7849 | </tr> | | 7849 | </tr> |
7850 | <tr> | | 7850 | <tr> |
7851 | <td>crypt</td> | | 7851 | <td>crypt</td> |
7852 | <td>-lcrypt</td> | | 7852 | <td>-lcrypt</td> |
7853 | <td>DragonFly, NetBSD</td> | | 7853 | <td>DragonFly, NetBSD</td> |
7854 | </tr> | | 7854 | </tr> |
7855 | <tr> | | 7855 | <tr> |
7856 | <td>dlopen, dlsym</td> | | 7856 | <td>dlopen, dlsym</td> |
7857 | <td>-ldl</td> | | 7857 | <td>-ldl</td> |
7858 | <td>Linux</td> | | 7858 | <td>Linux</td> |
7859 | </tr> | | 7859 | </tr> |
7860 | <tr> | | 7860 | <tr> |
7861 | <td>gethost*</td> | | 7861 | <td>gethost*</td> |
7862 | <td>-lnsl</td> | | 7862 | <td>-lnsl</td> |
7863 | <td>Solaris</td> | | 7863 | <td>Solaris</td> |
7864 | </tr> | | 7864 | </tr> |
7865 | <tr> | | 7865 | <tr> |
7866 | <td>inet_aton</td> | | 7866 | <td>inet_aton</td> |
7867 | <td>-lresolv</td> | | 7867 | <td>-lresolv</td> |
7868 | <td>Solaris</td> | | 7868 | <td>Solaris</td> |
7869 | </tr> | | 7869 | </tr> |
7870 | <tr> | | 7870 | <tr> |
7871 | <td>nanosleep, sem_*, timer_*</td> | | 7871 | <td>nanosleep, sem_*, timer_*</td> |
7872 | <td>-lrt</td> | | 7872 | <td>-lrt</td> |
7873 | <td>Solaris</td> | | 7873 | <td>Solaris</td> |
7874 | </tr> | | 7874 | </tr> |
7875 | <tr> | | 7875 | <tr> |
7876 | <td>openpty</td> | | 7876 | <td>openpty</td> |
7877 | <td>-lutil</td> | | 7877 | <td>-lutil</td> |
7878 | <td>Linux</td> | | 7878 | <td>Linux</td> |
7879 | </tr> | | 7879 | </tr> |
7880 | </tbody> | | 7880 | </tbody> |
7881 | </table> | | 7881 | </table> |
7882 | </div> | | 7882 | </div> |
7883 | <p>To fix these linker errors, it is often sufficient to say | | 7883 | <p>To fix these linker errors, it is often sufficient to say |
7884 | <code class="literal">LIBS.<em class="replaceable"><code>OperatingSystem</code></em>+= | | 7884 | <code class="literal">LIBS.<em class="replaceable"><code>OperatingSystem</code></em>+= |
7885 | -l<em class="replaceable"><code>foo</code></em></code> to the package | | 7885 | -l<em class="replaceable"><code>foo</code></em></code> to the package |
7886 | <code class="filename">Makefile</code> and then say <span class="command"><strong>bmake clean; | | 7886 | <code class="filename">Makefile</code> and then say <span class="command"><strong>bmake clean; |
7887 | bmake</strong></span>.</p> | | 7887 | bmake</strong></span>.</p> |
7888 | <div class="sect3"> | | 7888 | <div class="sect3"> |
7889 | <div class="titlepage"><div><div><h4 class="title"> | | 7889 | <div class="titlepage"><div><div><h4 class="title"> |
7890 | <a name="undefined-reference-sunpro"></a>19.5.3.1. Special issue: The SunPro compiler</h4></div></div></div> | | 7890 | <a name="undefined-reference-sunpro"></a>19.5.3.1. Special issue: The SunPro compiler</h4></div></div></div> |
7891 | <p>When you are using the SunPro compiler, there is another | | 7891 | <p>When you are using the SunPro compiler, there is another |
7892 | possibility. That compiler cannot handle the following code:</p> | | 7892 | possibility. That compiler cannot handle the following code:</p> |
7893 | <pre class="programlisting"> | | 7893 | <pre class="programlisting"> |
7894 | extern int extern_func(int); | | 7894 | extern int extern_func(int); |
7895 | | | 7895 | |
7896 | static inline int | | 7896 | static inline int |
7897 | inline_func(int x) | | 7897 | inline_func(int x) |
7898 | { | | 7898 | { |
7899 | return extern_func(x); | | 7899 | return extern_func(x); |
7900 | } | | 7900 | } |
7901 | | | 7901 | |
7902 | int main(void) | | 7902 | int main(void) |
7903 | { | | 7903 | { |
7904 | return 0; | | 7904 | return 0; |
7905 | } | | 7905 | } |
7906 | </pre> | | 7906 | </pre> |
7907 | <p>It generates the code for <code class="function">inline_func</code> even if | | 7907 | <p>It generates the code for <code class="function">inline_func</code> even if |
7908 | that function is never used. This code then refers to | | 7908 | that function is never used. This code then refers to |
7909 | <code class="function">extern_func</code>, which can usually not be resolved. To | | 7909 | <code class="function">extern_func</code>, which can usually not be resolved. To |
7910 | solve this problem you can try to tell the package to disable inlining | | 7910 | solve this problem you can try to tell the package to disable inlining |
7911 | of functions.</p> | | 7911 | of functions.</p> |
7912 | </div> | | 7912 | </div> |
7913 | </div> | | 7913 | </div> |
7914 | <div class="sect2"> | | 7914 | <div class="sect2"> |
7915 | <div class="titlepage"><div><div><h3 class="title"> | | 7915 | <div class="titlepage"><div><div><h3 class="title"> |
7916 | <a name="out-of-memory"></a>19.5.4. Running out of memory</h3></div></div></div> | | 7916 | <a name="out-of-memory"></a>19.5.4. Running out of memory</h3></div></div></div> |
7917 | <p>Sometimes packages fail to build because the compiler runs | | 7917 | <p>Sometimes packages fail to build because the compiler runs |
7918 | into an operating system specific soft limit. With the | | 7918 | into an operating system specific soft limit. With the |
7919 | <code class="varname">UNLIMIT_RESOURCES</code> variable pkgsrc can be told | | 7919 | <code class="varname">UNLIMIT_RESOURCES</code> variable pkgsrc can be told |
7920 | to unlimit the resources. Currently, the allowed values are any combination of | | 7920 | to unlimit the resources. Currently, the allowed values are any combination of |
7921 | <span class="quote">“<span class="quote">cputime</span>”</span>, <span class="quote">“<span class="quote">datasize</span>”</span>, | | 7921 | <span class="quote">“<span class="quote">cputime</span>”</span>, <span class="quote">“<span class="quote">datasize</span>”</span>, |
7922 | <span class="quote">“<span class="quote">memorysize</span>”</span>, and <span class="quote">“<span class="quote">stacksize</span>”</span>. | | 7922 | <span class="quote">“<span class="quote">memorysize</span>”</span>, and <span class="quote">“<span class="quote">stacksize</span>”</span>. |
7923 | Setting this variable is similar to running the shell builtin | | 7923 | Setting this variable is similar to running the shell builtin |
7924 | <span class="command"><strong>ulimit</strong></span> command to raise the maximum data | | 7924 | <span class="command"><strong>ulimit</strong></span> command to raise the maximum data |
7925 | segment size or maximum stack size of a process, respectively, to | | 7925 | segment size or maximum stack size of a process, respectively, to |
7926 | their hard limits.</p> | | 7926 | their hard limits.</p> |
7927 | </div> | | 7927 | </div> |
7928 | </div> | | 7928 | </div> |
7929 | <div class="sect1"> | | 7929 | <div class="sect1"> |
7930 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 7930 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
7931 | <a name="fixes.install"></a>19.6. The <span class="emphasis"><em>install</em></span> phase</h2></div></div></div> | | 7931 | <a name="fixes.install"></a>19.6. The <span class="emphasis"><em>install</em></span> phase</h2></div></div></div> |
7932 | <div class="sect2"> | | 7932 | <div class="sect2"> |
7933 | <div class="titlepage"><div><div><h3 class="title"> | | 7933 | <div class="titlepage"><div><div><h3 class="title"> |
7934 | <a name="install-scripts"></a>19.6.1. Creating needed directories</h3></div></div></div> | | 7934 | <a name="install-scripts"></a>19.6.1. Creating needed directories</h3></div></div></div> |
7935 | <p>The BSD-compatible <span class="command"><strong>install</strong></span> supplied | | 7935 | <p>The BSD-compatible <span class="command"><strong>install</strong></span> supplied |
7936 | with some operating systems cannot create more than one | | 7936 | with some operating systems cannot create more than one |
7937 | directory at a time. As such, you should call | | 7937 | directory at a time. As such, you should call |
7938 | <code class="literal">${INSTALL_*_DIR}</code> like this:</p> | | 7938 | <code class="literal">${INSTALL_*_DIR}</code> like this:</p> |
7939 | <pre class="programlisting"> | | 7939 | <pre class="programlisting"> |
7940 | ${INSTALL_DATA_DIR} ${PREFIX}/dir1 | | 7940 | ${INSTALL_DATA_DIR} ${PREFIX}/dir1 |
7941 | ${INSTALL_DATA_DIR} ${PREFIX}/dir2 | | 7941 | ${INSTALL_DATA_DIR} ${PREFIX}/dir2 |
7942 | </pre> | | 7942 | </pre> |
7943 | <p>You can also just append <span class="quote">“<span class="quote"><code class="literal">dir1 | | 7943 | <p>You can also just append <span class="quote">“<span class="quote"><code class="literal">dir1 |
7944 | dir2</code></span>”</span> to the | | 7944 | dir2</code></span>”</span> to the |
7945 | <code class="varname">INSTALLATION_DIRS</code> variable, which will | | 7945 | <code class="varname">INSTALLATION_DIRS</code> variable, which will |
7946 | automatically do the right thing.</p> | | 7946 | automatically do the right thing.</p> |
7947 | </div> | | 7947 | </div> |
7948 | <div class="sect2"> | | 7948 | <div class="sect2"> |
7949 | <div class="titlepage"><div><div><h3 class="title"> | | 7949 | <div class="titlepage"><div><div><h3 class="title"> |
7950 | <a name="where-to-install-documentation"></a>19.6.2. Where to install documentation</h3></div></div></div> | | 7950 | <a name="where-to-install-documentation"></a>19.6.2. Where to install documentation</h3></div></div></div> |
7951 | <p>In general, documentation should be installed into | | 7951 | <p>In general, documentation should be installed into |
7952 | <code class="filename">${PREFIX}/share/doc/${PKGBASE}</code> or | | 7952 | <code class="filename">${PREFIX}/share/doc/${PKGBASE}</code> or |
7953 | <code class="filename">${PREFIX}/share/doc/${PKGNAME}</code> (the latter | | 7953 | <code class="filename">${PREFIX}/share/doc/${PKGNAME}</code> (the latter |
7954 | includes the version number of the package).</p> | | 7954 | includes the version number of the package).</p> |
7955 | <p>Many modern packages using GNU autoconf allow to set the | | 7955 | <p>Many modern packages using GNU autoconf allow to set the |
7956 | directory where HTML documentation is installed with the | | 7956 | directory where HTML documentation is installed with the |
7957 | <span class="quote">“<span class="quote">--with-html-dir</span>”</span> option. Sometimes using this flag | | 7957 | <span class="quote">“<span class="quote">--with-html-dir</span>”</span> option. Sometimes using this flag |
7958 | is needed because otherwise the documentation ends up in | | 7958 | is needed because otherwise the documentation ends up in |
7959 | <code class="filename">${PREFIX}/share/doc/html</code> or other | | 7959 | <code class="filename">${PREFIX}/share/doc/html</code> or other |
7960 | places.</p> | | 7960 | places.</p> |
7961 | <p>An exception to the above is that library API documentation | | 7961 | <p>An exception to the above is that library API documentation |
7962 | generated with the <a href="http://cdn.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 | | 7962 | generated with the <a href="https://cdn.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 |
7963 | browsers (devhelp) should be left at their default location, which | | 7963 | browsers (devhelp) should be left at their default location, which |
7964 | is <code class="filename">${PREFIX}/share/gtk-doc</code>. Such | | 7964 | is <code class="filename">${PREFIX}/share/gtk-doc</code>. Such |
7965 | documentation can be recognized from files ending in | | 7965 | documentation can be recognized from files ending in |
7966 | <code class="filename">.devhelp</code> or <code class="filename">.devhelp2</code>. | | 7966 | <code class="filename">.devhelp</code> or <code class="filename">.devhelp2</code>. |
7967 | (It is also acceptable to install such files in | | 7967 | (It is also acceptable to install such files in |
7968 | <code class="filename">${PREFIX}/share/doc/${PKGBASE}</code> or | | 7968 | <code class="filename">${PREFIX}/share/doc/${PKGBASE}</code> or |
7969 | <code class="filename">${PREFIX}/share/doc/${PKGNAME}</code>; the | | 7969 | <code class="filename">${PREFIX}/share/doc/${PKGNAME}</code>; the |
7970 | <code class="filename">.devhelp*</code> file must be directly in that | | 7970 | <code class="filename">.devhelp*</code> file must be directly in that |
7971 | directory then, no additional subdirectory level is allowed in | | 7971 | directory then, no additional subdirectory level is allowed in |
7972 | this case. This is usually achieved by using | | 7972 | this case. This is usually achieved by using |
7973 | <span class="quote">“<span class="quote">--with-html-dir=${PREFIX}/share/doc</span>”</span>. | | 7973 | <span class="quote">“<span class="quote">--with-html-dir=${PREFIX}/share/doc</span>”</span>. |
7974 | <code class="filename">${PREFIX}/share/gtk-doc</code> is preferred | | 7974 | <code class="filename">${PREFIX}/share/gtk-doc</code> is preferred |
7975 | though.)</p> | | 7975 | though.)</p> |
7976 | </div> | | 7976 | </div> |
7977 | <div class="sect2"> | | 7977 | <div class="sect2"> |
7978 | <div class="titlepage"><div><div><h3 class="title"> | | 7978 | <div class="titlepage"><div><div><h3 class="title"> |
7979 | <a name="installing-score-files"></a>19.6.3. Installing highscore files</h3></div></div></div> | | 7979 | <a name="installing-score-files"></a>19.6.3. Installing highscore files</h3></div></div></div> |
7980 | <p>Certain packages, most of them in the games category, install | | 7980 | <p>Certain packages, most of them in the games category, install |
7981 | a score file that allows all users on the system to record their | | 7981 | a score file that allows all users on the system to record their |
7982 | highscores. In order for this to work, the binaries need to be | | 7982 | highscores. In order for this to work, the binaries need to be |
7983 | installed setgid and the score files owned by the appropriate | | 7983 | installed setgid and the score files owned by the appropriate |
7984 | group and/or owner (traditionally the "games" user/group). Set | | 7984 | group and/or owner (traditionally the "games" user/group). Set |
7985 | <code class="varname">USE_GAMESGROUP</code> to yes to support this. The | | 7985 | <code class="varname">USE_GAMESGROUP</code> to yes to support this. The |
7986 | following variables, documented in more detail in | | 7986 | following variables, documented in more detail in |
7987 | <code class="filename">mk/defaults/mk.conf</code>, control this | | 7987 | <code class="filename">mk/defaults/mk.conf</code>, control this |
7988 | behaviour: <code class="varname">GAMEDATAMODE</code>, | | 7988 | behaviour: <code class="varname">GAMEDATAMODE</code>, |
7989 | <code class="varname">GAMEDIRMODE</code>, <code class="varname">GAMES_GROUP</code>, | | 7989 | <code class="varname">GAMEDIRMODE</code>, <code class="varname">GAMES_GROUP</code>, |
7990 | <code class="varname">GAMEMODE</code>, <code class="varname">GAME_USER</code>. | | 7990 | <code class="varname">GAMEMODE</code>, <code class="varname">GAME_USER</code>. |
7991 | Other useful variables are: <code class="varname">GAMEDIR_PERMS</code>, | | 7991 | Other useful variables are: <code class="varname">GAMEDIR_PERMS</code>, |
7992 | <code class="varname">GAMEDATA_PERMS</code> and | | 7992 | <code class="varname">GAMEDATA_PERMS</code> and |
7993 | <code class="varname">SETGID_GAMES_PERMS</code>.</p> | | 7993 | <code class="varname">SETGID_GAMES_PERMS</code>.</p> |
7994 | <p>An example that illustrates some of the variables described above is | | 7994 | <p>An example that illustrates some of the variables described above is |
7995 | <code class="filename">games/moon-buggy</code>. <code class="varname">OWN_DIRS_PERMS</code> is | | 7995 | <code class="filename">games/moon-buggy</code>. <code class="varname">OWN_DIRS_PERMS</code> is |
7996 | used to properly set directory permissions of the directory where the | | 7996 | used to properly set directory permissions of the directory where the |
7997 | scorefile is saved, <code class="varname">REQD_FILES_PERMS</code> is used to create a | | 7997 | scorefile is saved, <code class="varname">REQD_FILES_PERMS</code> is used to create a |
7998 | dummy scorefile (<code class="filename">mbscore</code>) with the proper permissions | | 7998 | dummy scorefile (<code class="filename">mbscore</code>) with the proper permissions |
7999 | and <code class="varname">SPECIAL_PERMS</code> is used to install setgid the game | | 7999 | and <code class="varname">SPECIAL_PERMS</code> is used to install setgid the game |
8000 | binary:</p> | | 8000 | binary:</p> |
8001 | <pre class="programlisting"> | | 8001 | <pre class="programlisting"> |
8002 | USE_GAMESGROUP= yes | | 8002 | USE_GAMESGROUP= yes |
8003 | | | 8003 | |
8004 | BUILD_DEFS+= VARBASE | | 8004 | BUILD_DEFS+= VARBASE |
8005 | | | 8005 | |
8006 | OWN_DIRS_PERMS+= ${VARBASE}/games/moon-buggy ${GAMEDIR_PERMS} | | 8006 | OWN_DIRS_PERMS+= ${VARBASE}/games/moon-buggy ${GAMEDIR_PERMS} |
8007 | REQD_FILES_PERMS+= /dev/null ${VARBASE}/games/moon-buggy/mbscore ${GAMEDATA_PERMS} | | 8007 | REQD_FILES_PERMS+= /dev/null ${VARBASE}/games/moon-buggy/mbscore ${GAMEDATA_PERMS} |
8008 | SPECIAL_PERMS+= ${PREFIX}/bin/moon-buggy ${SETGID_GAMES_PERMS} | | 8008 | SPECIAL_PERMS+= ${PREFIX}/bin/moon-buggy ${SETGID_GAMES_PERMS} |
8009 | </pre> | | 8009 | </pre> |
8010 | <p>Various <code class="varname">INSTALL_*</code> variables are also available: | | 8010 | <p>Various <code class="varname">INSTALL_*</code> variables are also available: |
8011 | <code class="varname">INSTALL_GAME</code> to install setgid game binaries, | | 8011 | <code class="varname">INSTALL_GAME</code> to install setgid game binaries, |
8012 | <code class="varname">INSTALL_GAME_DIR</code> to install game directories that are | | 8012 | <code class="varname">INSTALL_GAME_DIR</code> to install game directories that are |
8013 | needed to be accessed by setgid games and | | 8013 | needed to be accessed by setgid games and |
8014 | <code class="varname">INSTALL_GAME_DATA</code> to install scorefiles.</p> | | 8014 | <code class="varname">INSTALL_GAME_DATA</code> to install scorefiles.</p> |
8015 | <p>A package should therefore never hard code file ownership or | | 8015 | <p>A package should therefore never hard code file ownership or |
8016 | access permissions but rely on <code class="varname">*_PERMS</code> as described above | | 8016 | access permissions but rely on <code class="varname">*_PERMS</code> as described above |
8017 | or alternatively on <code class="varname">INSTALL_GAME</code>, | | 8017 | or alternatively on <code class="varname">INSTALL_GAME</code>, |
8018 | <code class="varname">INSTALL_GAME_DATA</code> and | | 8018 | <code class="varname">INSTALL_GAME_DATA</code> and |
8019 | <code class="varname">INSTALL_GAME_DIR</code> to set these correctly.</p> | | 8019 | <code class="varname">INSTALL_GAME_DIR</code> to set these correctly.</p> |
8020 | </div> | | 8020 | </div> |
8021 | <div class="sect2"> | | 8021 | <div class="sect2"> |
8022 | <div class="titlepage"><div><div><h3 class="title"> | | 8022 | <div class="titlepage"><div><div><h3 class="title"> |
8023 | <a name="destdir-support"></a>19.6.4. Adding DESTDIR support to packages</h3></div></div></div> | | 8023 | <a name="destdir-support"></a>19.6.4. Adding DESTDIR support to packages</h3></div></div></div> |
8024 | <p><code class="varname">DESTDIR</code> support means that a package | | 8024 | <p><code class="varname">DESTDIR</code> support means that a package |
8025 | installs into a staging directory, not the final location of the | | 8025 | installs into a staging directory, not the final location of the |
8026 | files. Then a binary package is created which can be used for | | 8026 | files. Then a binary package is created which can be used for |
8027 | installation as usual. There are two ways: Either the package must | | 8027 | installation as usual. There are two ways: Either the package must |
8028 | install as root (<span class="quote">“<span class="quote">destdir</span>”</span>) or the package can | | 8028 | install as root (<span class="quote">“<span class="quote">destdir</span>”</span>) or the package can |
8029 | install as non-root user (<span class="quote">“<span class="quote">user-destdir</span>”</span>).</p> | | 8029 | install as non-root user (<span class="quote">“<span class="quote">user-destdir</span>”</span>).</p> |
8030 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 8030 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
8031 | <li class="listitem"><p><code class="varname">PKG_DESTDIR_SUPPORT</code> has to be | | 8031 | <li class="listitem"><p><code class="varname">PKG_DESTDIR_SUPPORT</code> has to be |
8032 | set to <span class="quote">“<span class="quote">destdir</span>”</span> or <span class="quote">“<span class="quote">user-destdir</span>”</span>. | | 8032 | set to <span class="quote">“<span class="quote">destdir</span>”</span> or <span class="quote">“<span class="quote">user-destdir</span>”</span>. |
8033 | By default <code class="varname">PKG_DESTDIR_SUPPORT</code> | | 8033 | By default <code class="varname">PKG_DESTDIR_SUPPORT</code> |
8034 | is set to <span class="quote">“<span class="quote">user-destdir</span>”</span> to help catching more | | 8034 | is set to <span class="quote">“<span class="quote">user-destdir</span>”</span> to help catching more |
8035 | potential packaging problems. If bsd.prefs.mk is included in the Makefile, | | 8035 | potential packaging problems. If bsd.prefs.mk is included in the Makefile, |
8036 | <code class="varname">PKG_DESTDIR_SUPPORT</code> needs to be set before | | 8036 | <code class="varname">PKG_DESTDIR_SUPPORT</code> needs to be set before |
8037 | the inclusion.</p></li> | | 8037 | the inclusion.</p></li> |
8038 | <li class="listitem"><p>All installation operations have to be prefixed with | | 8038 | <li class="listitem"><p>All installation operations have to be prefixed with |
8039 | <code class="filename">${DESTDIR}</code>.</p></li> | | 8039 | <code class="filename">${DESTDIR}</code>.</p></li> |
8040 | <li class="listitem"><p>automake gets this DESTDIR mostly right | | 8040 | <li class="listitem"><p>automake gets this DESTDIR mostly right |
8041 | automatically. Many manual rules and pre/post-install often are | | 8041 | automatically. Many manual rules and pre/post-install often are |
8042 | incorrect; fix them.</p></li> | | 8042 | incorrect; fix them.</p></li> |
8043 | <li class="listitem"><p>If files are installed with special owner/group | | 8043 | <li class="listitem"><p>If files are installed with special owner/group |
8044 | use <code class="varname">SPECIAL_PERMS</code>.</p></li> | | 8044 | use <code class="varname">SPECIAL_PERMS</code>.</p></li> |
8045 | <li class="listitem"><p>In general, packages should support | | 8045 | <li class="listitem"><p>In general, packages should support |
8046 | <code class="varname">UNPRIVILEGED</code> to be able to use | | 8046 | <code class="varname">UNPRIVILEGED</code> to be able to use |
8047 | DESTDIR.</p></li> | | 8047 | DESTDIR.</p></li> |
8048 | </ul></div> | | 8048 | </ul></div> |
8049 | </div> | | 8049 | </div> |
8050 | <div class="sect2"> | | 8050 | <div class="sect2"> |
8051 | <div class="titlepage"><div><div><h3 class="title"> | | 8051 | <div class="titlepage"><div><div><h3 class="title"> |
8052 | <a name="hardcoded-paths"></a>19.6.5. Packages with hardcoded paths to other interpreters</h3></div></div></div> | | 8052 | <a name="hardcoded-paths"></a>19.6.5. Packages with hardcoded paths to other interpreters</h3></div></div></div> |
8053 | <p>Your package may also contain scripts with hardcoded paths to | | 8053 | <p>Your package may also contain scripts with hardcoded paths to |
8054 | other interpreters besides (or as well as) perl. To correct the | | 8054 | other interpreters besides (or as well as) perl. To correct the |
8055 | full pathname to the script interpreter, you need to set the | | 8055 | full pathname to the script interpreter, you need to set the |
8056 | following definitions in your <code class="filename">Makefile</code> (we | | 8056 | following definitions in your <code class="filename">Makefile</code> (we |
8057 | shall use <span class="command"><strong>tclsh</strong></span> in this example):</p> | | 8057 | shall use <span class="command"><strong>tclsh</strong></span> in this example):</p> |
8058 | <pre class="programlisting"> | | 8058 | <pre class="programlisting"> |
8059 | REPLACE_INTERPRETER+= tcl | | 8059 | REPLACE_INTERPRETER+= tcl |
8060 | REPLACE.tcl.old= .*/bin/tclsh | | 8060 | REPLACE.tcl.old= .*/bin/tclsh |
8061 | REPLACE.tcl.new= ${PREFIX}/bin/tclsh | | 8061 | REPLACE.tcl.new= ${PREFIX}/bin/tclsh |
8062 | REPLACE_FILES.tcl= # list of tcl scripts which need to be fixed, | | 8062 | REPLACE_FILES.tcl= # list of tcl scripts which need to be fixed, |
8063 | # relative to ${WRKSRC}, just as in REPLACE_PERL | | 8063 | # relative to ${WRKSRC}, just as in REPLACE_PERL |
8064 | </pre> | | 8064 | </pre> |
8065 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 8065 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
8066 | <h3 class="title">Note</h3> | | 8066 | <h3 class="title">Note</h3> |
8067 | <p>Before March 2006, these variables were called | | 8067 | <p>Before March 2006, these variables were called |
8068 | <code class="varname">_REPLACE.*</code> and | | 8068 | <code class="varname">_REPLACE.*</code> and |
8069 | <code class="varname">_REPLACE_FILES.*</code>.</p> | | 8069 | <code class="varname">_REPLACE_FILES.*</code>.</p> |
8070 | </div> | | 8070 | </div> |
8071 | </div> | | 8071 | </div> |
8072 | <div class="sect2"> | | 8072 | <div class="sect2"> |
8073 | <div class="titlepage"><div><div><h3 class="title"> | | 8073 | <div class="titlepage"><div><div><h3 class="title"> |
8074 | <a name="perl-modules"></a>19.6.6. Packages installing perl modules</h3></div></div></div> | | 8074 | <a name="perl-modules"></a>19.6.6. Packages installing perl modules</h3></div></div></div> |
8075 | <p>Makefiles of packages providing perl5 modules should include | | 8075 | <p>Makefiles of packages providing perl5 modules should include |
8076 | the Makefile fragment | | 8076 | the Makefile fragment |
8077 | <code class="filename">../../lang/perl5/module.mk</code>. It provides a | | 8077 | <code class="filename">../../lang/perl5/module.mk</code>. It provides a |
8078 | <span class="command"><strong>do-configure</strong></span> target for the standard perl | | 8078 | <span class="command"><strong>do-configure</strong></span> target for the standard perl |
8079 | configuration for such modules as well as various hooks to tune | | 8079 | configuration for such modules as well as various hooks to tune |
8080 | this configuration. See comments in this file for | | 8080 | this configuration. See comments in this file for |
8081 | details.</p> | | 8081 | details.</p> |
8082 | <p>Perl5 modules will install into different places depending | | 8082 | <p>Perl5 modules will install into different places depending |
8083 | on the version of perl used during the build process. To | | 8083 | on the version of perl used during the build process. To |
8084 | address this, pkgsrc will append lines to the | | 8084 | address this, pkgsrc will append lines to the |
8085 | <code class="filename">PLIST</code> corresponding to the files listed in | | 8085 | <code class="filename">PLIST</code> corresponding to the files listed in |
8086 | the installed <code class="filename">.packlist</code> file generated by | | 8086 | the installed <code class="filename">.packlist</code> file generated by |
8087 | most perl5 modules. This is invoked by defining | | 8087 | most perl5 modules. This is invoked by defining |
8088 | <code class="varname">PERL5_PACKLIST</code> to a space-separated list of | | 8088 | <code class="varname">PERL5_PACKLIST</code> to a space-separated list of |
8089 | packlist files relative to <code class="varname">PERL5_PACKLIST_DIR</code> | | 8089 | packlist files relative to <code class="varname">PERL5_PACKLIST_DIR</code> |
8090 | (<code class="varname">PERL5_INSTALLVENDORARCH</code> by default), | | 8090 | (<code class="varname">PERL5_INSTALLVENDORARCH</code> by default), |
8091 | e.g.:</p> | | 8091 | e.g.:</p> |
8092 | <pre class="programlisting"> | | 8092 | <pre class="programlisting"> |
8093 | PERL5_PACKLIST= auto/Pg/.packlist | | 8093 | PERL5_PACKLIST= auto/Pg/.packlist |
8094 | </pre> | | 8094 | </pre> |
8095 | <p>The perl5 config variables | | 8095 | <p>The perl5 config variables |
8096 | <code class="varname">installarchlib</code>, | | 8096 | <code class="varname">installarchlib</code>, |
8097 | <code class="varname">installscript</code>, | | 8097 | <code class="varname">installscript</code>, |
8098 | <code class="varname">installvendorbin</code>, | | 8098 | <code class="varname">installvendorbin</code>, |
8099 | <code class="varname">installvendorscript</code>, | | 8099 | <code class="varname">installvendorscript</code>, |
8100 | <code class="varname">installvendorarch</code>, | | 8100 | <code class="varname">installvendorarch</code>, |
8101 | <code class="varname">installvendorlib</code>, | | 8101 | <code class="varname">installvendorlib</code>, |
8102 | <code class="varname">installvendorman1dir</code>, and | | 8102 | <code class="varname">installvendorman1dir</code>, and |
8103 | <code class="varname">installvendorman3dir</code> represent those | | 8103 | <code class="varname">installvendorman3dir</code> represent those |
8104 | locations in which components of perl5 modules may be installed, | | 8104 | locations in which components of perl5 modules may be installed, |
8105 | provided as variable with uppercase and prefixed with | | 8105 | provided as variable with uppercase and prefixed with |
8106 | <code class="varname">PERL5_</code>, e.g. <code class="varname">PERL5_INSTALLARCHLIB</code> | | 8106 | <code class="varname">PERL5_</code>, e.g. <code class="varname">PERL5_INSTALLARCHLIB</code> |
8107 | and may be used by perl5 packages that don't have a packlist. | | 8107 | and may be used by perl5 packages that don't have a packlist. |
8108 | These variables are also substituted for in the | | 8108 | These variables are also substituted for in the |
8109 | <code class="filename">PLIST</code> as uppercase prefixed with | | 8109 | <code class="filename">PLIST</code> as uppercase prefixed with |
8110 | <code class="varname">PERL5_SUB_</code>.</p> | | 8110 | <code class="varname">PERL5_SUB_</code>.</p> |
8111 | </div> | | 8111 | </div> |
8112 | <div class="sect2"> | | 8112 | <div class="sect2"> |
8113 | <div class="titlepage"><div><div><h3 class="title"> | | 8113 | <div class="titlepage"><div><div><h3 class="title"> |
8114 | <a name="faq.info-files"></a>19.6.7. Packages installing info files</h3></div></div></div> | | 8114 | <a name="faq.info-files"></a>19.6.7. Packages installing info files</h3></div></div></div> |
8115 | <p>Some packages install info files or use the | | 8115 | <p>Some packages install info files or use the |
8116 | <span class="quote">“<span class="quote">makeinfo</span>”</span> or <span class="quote">“<span class="quote">install-info</span>”</span> | | 8116 | <span class="quote">“<span class="quote">makeinfo</span>”</span> or <span class="quote">“<span class="quote">install-info</span>”</span> |
8117 | commands. <code class="varname">INFO_FILES</code> should be defined in | | 8117 | commands. <code class="varname">INFO_FILES</code> should be defined in |
8118 | the package Makefile so that <code class="filename">INSTALL</code> and | | 8118 | the package Makefile so that <code class="filename">INSTALL</code> and |
8119 | <code class="filename">DEINSTALL</code> scripts will be generated to | | 8119 | <code class="filename">DEINSTALL</code> scripts will be generated to |
8120 | handle registration of the info files in the Info directory | | 8120 | handle registration of the info files in the Info directory |
8121 | file. The <span class="quote">“<span class="quote">install-info</span>”</span> command used for the info | | 8121 | file. The <span class="quote">“<span class="quote">install-info</span>”</span> command used for the info |
8122 | files registration is either provided by the system, or by a | | 8122 | files registration is either provided by the system, or by a |
8123 | special purpose package automatically added as dependency if | | 8123 | special purpose package automatically added as dependency if |
8124 | needed.</p> | | 8124 | needed.</p> |
8125 | <p><code class="varname">PKGINFODIR</code> is the directory under | | 8125 | <p><code class="varname">PKGINFODIR</code> is the directory under |
8126 | <code class="filename">${PREFIX}</code> where info files are primarily | | 8126 | <code class="filename">${PREFIX}</code> where info files are primarily |
8127 | located. <code class="varname">PKGINFODIR</code> defaults to | | 8127 | located. <code class="varname">PKGINFODIR</code> defaults to |
8128 | <span class="quote">“<span class="quote">info</span>”</span> and can be overridden by the user.</p> | | 8128 | <span class="quote">“<span class="quote">info</span>”</span> and can be overridden by the user.</p> |
8129 | <p>The info files for the package should be listed in the | | 8129 | <p>The info files for the package should be listed in the |
8130 | package <code class="filename">PLIST</code>; however any split info files | | 8130 | package <code class="filename">PLIST</code>; however any split info files |
8131 | need not be listed.</p> | | 8131 | need not be listed.</p> |
8132 | <p>A package which needs the <span class="quote">“<span class="quote">makeinfo</span>”</span> command | | 8132 | <p>A package which needs the <span class="quote">“<span class="quote">makeinfo</span>”</span> command |
8133 | at build time must add <span class="quote">“<span class="quote">makeinfo</span>”</span> to | | 8133 | at build time must add <span class="quote">“<span class="quote">makeinfo</span>”</span> to |
8134 | <code class="varname">USE_TOOLS</code> in its Makefile. If a minimum | | 8134 | <code class="varname">USE_TOOLS</code> in its Makefile. If a minimum |
8135 | version of the <span class="quote">“<span class="quote">makeinfo</span>”</span> command is needed it | | 8135 | version of the <span class="quote">“<span class="quote">makeinfo</span>”</span> command is needed it |
8136 | should be noted with the <code class="varname">TEXINFO_REQD</code> | | 8136 | should be noted with the <code class="varname">TEXINFO_REQD</code> |
8137 | variable in the package <code class="filename">Makefile</code>. By | | 8137 | variable in the package <code class="filename">Makefile</code>. By |
8138 | default, a minimum version of 3.12 is required. If the system | | 8138 | default, a minimum version of 3.12 is required. If the system |
8139 | does not provide a <span class="command"><strong>makeinfo</strong></span> command or if it | | 8139 | does not provide a <span class="command"><strong>makeinfo</strong></span> command or if it |
8140 | does not match the required minimum, a build dependency on the | | 8140 | does not match the required minimum, a build dependency on the |
8141 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/gtexinfo/README.html" target="_top"><code class="filename">devel/gtexinfo</code></a> package will | | 8141 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/devel/gtexinfo/README.html" target="_top"><code class="filename">devel/gtexinfo</code></a> package will |
8142 | be added automatically.</p> | | 8142 | be added automatically.</p> |
8143 | <p>The build and installation process of the software provided | | 8143 | <p>The build and installation process of the software provided |
8144 | by the package should not use the | | 8144 | by the package should not use the |
8145 | <span class="command"><strong>install-info</strong></span> command as the registration of | | 8145 | <span class="command"><strong>install-info</strong></span> command as the registration of |
8146 | info files is the task of the package | | 8146 | info files is the task of the package |
8147 | <code class="filename">INSTALL</code> script, and it must use the | | 8147 | <code class="filename">INSTALL</code> script, and it must use the |
8148 | appropriate <span class="command"><strong>makeinfo</strong></span> command.</p> | | 8148 | appropriate <span class="command"><strong>makeinfo</strong></span> command.</p> |
8149 | <p>To achieve this goal, the pkgsrc infrastructure creates | | 8149 | <p>To achieve this goal, the pkgsrc infrastructure creates |
8150 | overriding scripts for the <span class="command"><strong>install-info</strong></span> and | | 8150 | overriding scripts for the <span class="command"><strong>install-info</strong></span> and |
8151 | <span class="command"><strong>makeinfo</strong></span> commands in a directory listed early | | 8151 | <span class="command"><strong>makeinfo</strong></span> commands in a directory listed early |
8152 | in <code class="varname">PATH</code>.</p> | | 8152 | in <code class="varname">PATH</code>.</p> |
8153 | <p>The script overriding <span class="command"><strong>install-info</strong></span> has | | 8153 | <p>The script overriding <span class="command"><strong>install-info</strong></span> has |
8154 | no effect except the logging of a message. The script overriding | | 8154 | no effect except the logging of a message. The script overriding |
8155 | <span class="command"><strong>makeinfo</strong></span> logs a message and according to the | | 8155 | <span class="command"><strong>makeinfo</strong></span> logs a message and according to the |
8156 | value of <code class="varname">TEXINFO_REQD</code> either runs the appropriate | | 8156 | value of <code class="varname">TEXINFO_REQD</code> either runs the appropriate |
8157 | <span class="command"><strong>makeinfo</strong></span> command or exit on error.</p> | | 8157 | <span class="command"><strong>makeinfo</strong></span> command or exit on error.</p> |
8158 | </div> | | 8158 | </div> |
8159 | <div class="sect2"> | | 8159 | <div class="sect2"> |
8160 | <div class="titlepage"><div><div><h3 class="title"> | | 8160 | <div class="titlepage"><div><div><h3 class="title"> |
8161 | <a name="manpages"></a>19.6.8. Packages installing man pages</h3></div></div></div> | | 8161 | <a name="manpages"></a>19.6.8. Packages installing man pages</h3></div></div></div> |
8162 | <p>All packages that install manual pages should install them | | 8162 | <p>All packages that install manual pages should install them |
8163 | into the same directory, so that there is one common place to look | | 8163 | into the same directory, so that there is one common place to look |
8164 | for them. In pkgsrc, this place is | | 8164 | for them. In pkgsrc, this place is |
8165 | <code class="literal">${PREFIX}/${PKGMANDIR}</code>, and this expression | | 8165 | <code class="literal">${PREFIX}/${PKGMANDIR}</code>, and this expression |
8166 | should be used in packages. The default for | | 8166 | should be used in packages. The default for |
8167 | <code class="varname">PKGMANDIR</code> is | | 8167 | <code class="varname">PKGMANDIR</code> is |
8168 | <span class="quote">“<span class="quote"><code class="filename">man</code></span>”</span>. Another often-used value | | 8168 | <span class="quote">“<span class="quote"><code class="filename">man</code></span>”</span>. Another often-used value |
8169 | is <span class="quote">“<span class="quote"><code class="filename">share/man</code></span>”</span>.</p> | | 8169 | is <span class="quote">“<span class="quote"><code class="filename">share/man</code></span>”</span>.</p> |
8170 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 8170 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
8171 | <h3 class="title">Note</h3> | | 8171 | <h3 class="title">Note</h3> |
8172 | <p>The support for a custom <code class="varname">PKGMANDIR</code> | | 8172 | <p>The support for a custom <code class="varname">PKGMANDIR</code> |
8173 | is far from complete.</p> | | 8173 | is far from complete.</p> |
8174 | </div> | | 8174 | </div> |
8175 | <p>The <code class="filename">PLIST</code> files can just use | | 8175 | <p>The <code class="filename">PLIST</code> files can just use |
8176 | <code class="filename">man/</code> as the top level directory for the man | | 8176 | <code class="filename">man/</code> as the top level directory for the man |
8177 | page file entries, and the pkgsrc framework will convert as | | 8177 | page file entries, and the pkgsrc framework will convert as |
8178 | needed. In all other places, the correct | | 8178 | needed. In all other places, the correct |
8179 | <code class="varname">PKGMANDIR</code> must be used.</p> | | 8179 | <code class="varname">PKGMANDIR</code> must be used.</p> |
8180 | <p>Packages that are | | 8180 | <p>Packages that are |
8181 | configured with <code class="varname">GNU_CONFIGURE</code> set as | | 8181 | configured with <code class="varname">GNU_CONFIGURE</code> set as |
8182 | <span class="quote">“<span class="quote">yes</span>”</span>, by default will use the | | 8182 | <span class="quote">“<span class="quote">yes</span>”</span>, by default will use the |
8183 | <code class="filename">./configure</code> | | 8183 | <code class="filename">./configure</code> |
8184 | --mandir switch to set where the man pages should be installed. | | 8184 | --mandir switch to set where the man pages should be installed. |
8185 | The path is <code class="varname">GNU_CONFIGURE_MANDIR</code> which defaults | | 8185 | The path is <code class="varname">GNU_CONFIGURE_MANDIR</code> which defaults |
8186 | to <code class="varname">${PREFIX}/${PKGMANDIR}</code>.</p> | | 8186 | to <code class="varname">${PREFIX}/${PKGMANDIR}</code>.</p> |
8187 | <p>Packages that use <code class="varname">GNU_CONFIGURE</code> but do not | | 8187 | <p>Packages that use <code class="varname">GNU_CONFIGURE</code> but do not |
8188 | use --mandir, can set <code class="varname">CONFIGURE_HAS_MANDIR</code> | | 8188 | use --mandir, can set <code class="varname">CONFIGURE_HAS_MANDIR</code> |
8189 | to <span class="quote">“<span class="quote">no</span>”</span>. | | 8189 | to <span class="quote">“<span class="quote">no</span>”</span>. |
8190 | Or if the <code class="filename">./configure</code> script uses | | 8190 | Or if the <code class="filename">./configure</code> script uses |
8191 | a non-standard use of --mandir, you can set | | 8191 | a non-standard use of --mandir, you can set |
8192 | <code class="varname">GNU_CONFIGURE_MANDIR</code> as needed.</p> | | 8192 | <code class="varname">GNU_CONFIGURE_MANDIR</code> as needed.</p> |
8193 | <p>See <a class="xref" href="#manpage-compression" title="13.5. Man page compression">Section 13.5, “Man page compression”</a> for | | 8193 | <p>See <a class="xref" href="#manpage-compression" title="13.5. Man page compression">Section 13.5, “Man page compression”</a> for |
8194 | information on installation of compressed manual pages.</p> | | 8194 | information on installation of compressed manual pages.</p> |
8195 | </div> | | 8195 | </div> |
8196 | <div class="sect2"> | | 8196 | <div class="sect2"> |
8197 | <div class="titlepage"><div><div><h3 class="title"> | | 8197 | <div class="titlepage"><div><div><h3 class="title"> |
8198 | <a name="gconf-data-files"></a>19.6.9. Packages installing GConf data files</h3></div></div></div> | | 8198 | <a name="gconf-data-files"></a>19.6.9. Packages installing GConf data files</h3></div></div></div> |
8199 | <p>If a package installs <code class="filename">.schemas</code> or | | 8199 | <p>If a package installs <code class="filename">.schemas</code> or |
8200 | <code class="filename">.entries</code> files, used by GConf, | | 8200 | <code class="filename">.entries</code> files, used by GConf, |
8201 | you need to take some extra steps to make sure they get registered | | 8201 | you need to take some extra steps to make sure they get registered |
8202 | in the database:</p> | | 8202 | in the database:</p> |
8203 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8203 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8204 | <li class="listitem"><p>Include <code class="filename">../../devel/GConf/schemas.mk</code> | | 8204 | <li class="listitem"><p>Include <code class="filename">../../devel/GConf/schemas.mk</code> |
8205 | instead of its <code class="filename">buildlink3.mk</code> file. This | | 8205 | instead of its <code class="filename">buildlink3.mk</code> file. This |
8206 | takes care of rebuilding the GConf database at installation and | | 8206 | takes care of rebuilding the GConf database at installation and |
8207 | deinstallation time, and tells the package where to install | | 8207 | deinstallation time, and tells the package where to install |
8208 | GConf data files using some standard configure arguments. It | | 8208 | GConf data files using some standard configure arguments. It |
8209 | also disallows any access to the database directly from the | | 8209 | also disallows any access to the database directly from the |
8210 | package.</p></li> | | 8210 | package.</p></li> |
8211 | <li class="listitem"><p>Ensure that the package installs its | | 8211 | <li class="listitem"><p>Ensure that the package installs its |
8212 | <code class="filename">.schemas</code> files under | | 8212 | <code class="filename">.schemas</code> files under |
8213 | <code class="filename">${PREFIX}/share/gconf/schemas</code>. If they get | | 8213 | <code class="filename">${PREFIX}/share/gconf/schemas</code>. If they get |
8214 | installed under <code class="filename">${PREFIX}/etc</code>, you will | | 8214 | installed under <code class="filename">${PREFIX}/etc</code>, you will |
8215 | need to manually patch the package.</p></li> | | 8215 | need to manually patch the package.</p></li> |
8216 | <li class="listitem"><p>Check the PLIST and remove any entries under the etc/gconf | | 8216 | <li class="listitem"><p>Check the PLIST and remove any entries under the etc/gconf |
8217 | directory, as they will be handled automatically. See | | 8217 | directory, as they will be handled automatically. See |
8218 | <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> | | 8218 | <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> |
8219 | <li class="listitem"><p>Define the <code class="varname">GCONF_SCHEMAS</code> variable in | | 8219 | <li class="listitem"><p>Define the <code class="varname">GCONF_SCHEMAS</code> variable in |
8220 | your <code class="filename">Makefile</code> with a list of all | | 8220 | your <code class="filename">Makefile</code> with a list of all |
8221 | <code class="filename">.schemas</code> files installed by the package, if | | 8221 | <code class="filename">.schemas</code> files installed by the package, if |
8222 | any. Names must not contain any directories in them.</p></li> | | 8222 | any. Names must not contain any directories in them.</p></li> |
8223 | <li class="listitem"><p>Define the <code class="varname">GCONF_ENTRIES</code> variable in | | 8223 | <li class="listitem"><p>Define the <code class="varname">GCONF_ENTRIES</code> variable in |
8224 | your <code class="filename">Makefile</code> with a | | 8224 | your <code class="filename">Makefile</code> with a |
8225 | list of all <code class="filename">.entries</code> files installed by the | | 8225 | list of all <code class="filename">.entries</code> files installed by the |
8226 | package, if any. Names must not contain any directories in | | 8226 | package, if any. Names must not contain any directories in |
8227 | them.</p></li> | | 8227 | them.</p></li> |
8228 | </ol></div> | | 8228 | </ol></div> |
8229 | </div> | | 8229 | </div> |
8230 | <div class="sect2"> | | 8230 | <div class="sect2"> |
8231 | <div class="titlepage"><div><div><h3 class="title"> | | 8231 | <div class="titlepage"><div><div><h3 class="title"> |
8232 | <a name="scrollkeeper-data-files"></a>19.6.10. Packages installing scrollkeeper/rarian data files</h3></div></div></div> | | 8232 | <a name="scrollkeeper-data-files"></a>19.6.10. Packages installing scrollkeeper/rarian data files</h3></div></div></div> |
8233 | <p>If a package installs <code class="filename">.omf</code> files, used by | | 8233 | <p>If a package installs <code class="filename">.omf</code> files, used by |
8234 | scrollkeeper/rarian, you need to take some extra steps to make sure they | | 8234 | scrollkeeper/rarian, you need to take some extra steps to make sure they |
8235 | get registered in the database:</p> | | 8235 | get registered in the database:</p> |
8236 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8236 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8237 | <li class="listitem"><p>Include | | 8237 | <li class="listitem"><p>Include |
8238 | <code class="filename">../../mk/omf-scrollkeeper.mk</code> | | 8238 | <code class="filename">../../mk/omf-scrollkeeper.mk</code> |
8239 | instead of rarian's <code class="filename">buildlink3.mk</code> file. This | | 8239 | instead of rarian's <code class="filename">buildlink3.mk</code> file. This |
8240 | takes care of rebuilding the scrollkeeper database at | | 8240 | takes care of rebuilding the scrollkeeper database at |
8241 | installation and deinstallation time, and disallows any access | | 8241 | installation and deinstallation time, and disallows any access |
8242 | to it directly from the package.</p></li> | | 8242 | to it directly from the package.</p></li> |
8243 | <li class="listitem"><p>Check the PLIST and remove any entries under the | | 8243 | <li class="listitem"><p>Check the PLIST and remove any entries under the |
8244 | <code class="filename">libdata/scrollkeeper</code> directory, as they | | 8244 | <code class="filename">libdata/scrollkeeper</code> directory, as they |
8245 | will be handled automatically.</p></li> | | 8245 | will be handled automatically.</p></li> |
8246 | <li class="listitem"><p>Remove the <code class="filename">share/omf</code> directory from | | 8246 | <li class="listitem"><p>Remove the <code class="filename">share/omf</code> directory from |
8247 | the PLIST. It will be handled by rarian. (<span class="command"><strong>make | | 8247 | the PLIST. It will be handled by rarian. (<span class="command"><strong>make |
8248 | print-PLIST</strong></span> does this automatically.)</p></li> | | 8248 | print-PLIST</strong></span> does this automatically.)</p></li> |
8249 | </ol></div> | | 8249 | </ol></div> |
8250 | </div> | | 8250 | </div> |
8251 | <div class="sect2"> | | 8251 | <div class="sect2"> |
8252 | <div class="titlepage"><div><div><h3 class="title"> | | 8252 | <div class="titlepage"><div><div><h3 class="title"> |
8253 | <a name="x11-fonts"></a>19.6.11. Packages installing X11 fonts</h3></div></div></div> | | 8253 | <a name="x11-fonts"></a>19.6.11. Packages installing X11 fonts</h3></div></div></div> |
8254 | <p>If a package installs font files, you will need to rebuild | | 8254 | <p>If a package installs font files, you will need to rebuild |
8255 | the fonts database in the directory where they get installed at | | 8255 | the fonts database in the directory where they get installed at |
8256 | installation and deinstallation time. This can be automatically | | 8256 | installation and deinstallation time. This can be automatically |
8257 | done by using the pkginstall framework.</p> | | 8257 | done by using the pkginstall framework.</p> |
8258 | <p>You can list the directories where fonts are installed in the | | 8258 | <p>You can list the directories where fonts are installed in the |
8259 | <code class="varname">FONTS_DIRS.<em class="replaceable"><code>type</code></em></code> | | 8259 | <code class="varname">FONTS_DIRS.<em class="replaceable"><code>type</code></em></code> |
8260 | variables, where <em class="replaceable"><code>type</code></em> can be one of | | 8260 | variables, where <em class="replaceable"><code>type</code></em> can be one of |
8261 | <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>. | | 8261 | <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>. |
8262 | Also make sure that the database file | | 8262 | Also make sure that the database file |
8263 | <code class="filename">fonts.dir</code> is not listed in the PLIST.</p> | | 8263 | <code class="filename">fonts.dir</code> is not listed in the PLIST.</p> |
8264 | <p>Note that you should not create new directories for fonts; | | 8264 | <p>Note that you should not create new directories for fonts; |
8265 | instead use the standard ones to avoid that the user needs to | | 8265 | instead use the standard ones to avoid that the user needs to |
8266 | manually configure his X server to find them.</p> | | 8266 | manually configure his X server to find them.</p> |
8267 | </div> | | 8267 | </div> |
8268 | <div class="sect2"> | | 8268 | <div class="sect2"> |
8269 | <div class="titlepage"><div><div><h3 class="title"> | | 8269 | <div class="titlepage"><div><div><h3 class="title"> |
8270 | <a name="gtk2-modules"></a>19.6.12. Packages installing GTK2 modules</h3></div></div></div> | | 8270 | <a name="gtk2-modules"></a>19.6.12. Packages installing GTK2 modules</h3></div></div></div> |
8271 | <p>If a package installs GTK2 immodules or loaders, you need to | | 8271 | <p>If a package installs GTK2 immodules or loaders, you need to |
8272 | take some extra steps to get them registered in the GTK2 database | | 8272 | take some extra steps to get them registered in the GTK2 database |
8273 | properly:</p> | | 8273 | properly:</p> |
8274 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8274 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8275 | <li class="listitem"><p>Include | | 8275 | <li class="listitem"><p>Include |
8276 | <code class="filename">../../x11/gtk2/modules.mk</code> instead of its | | 8276 | <code class="filename">../../x11/gtk2/modules.mk</code> instead of its |
8277 | <code class="filename">buildlink3.mk</code> file. This takes care of | | 8277 | <code class="filename">buildlink3.mk</code> file. This takes care of |
8278 | rebuilding the database at installation and deinstallation time.</p></li> | | 8278 | rebuilding the database at installation and deinstallation time.</p></li> |
8279 | <li class="listitem"><p>Set <code class="varname">GTK2_IMMODULES=YES</code> if | | 8279 | <li class="listitem"><p>Set <code class="varname">GTK2_IMMODULES=YES</code> if |
8280 | your package installs GTK2 immodules.</p></li> | | 8280 | your package installs GTK2 immodules.</p></li> |
8281 | <li class="listitem"><p>Set <code class="varname">GTK2_LOADERS=YES</code> if your package installs | | 8281 | <li class="listitem"><p>Set <code class="varname">GTK2_LOADERS=YES</code> if your package installs |
8282 | GTK2 loaders.</p></li> | | 8282 | GTK2 loaders.</p></li> |
8283 | <li class="listitem"> | | 8283 | <li class="listitem"> |
8284 | <p>Patch the package to not touch any of the GTK2 | | 8284 | <p>Patch the package to not touch any of the GTK2 |
8285 | databases directly. These are:</p> | | 8285 | databases directly. These are:</p> |
8286 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 8286 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
8287 | <li class="listitem"><p><code class="filename">libdata/gtk-2.0/gdk-pixbuf.loaders</code></p></li> | | 8287 | <li class="listitem"><p><code class="filename">libdata/gtk-2.0/gdk-pixbuf.loaders</code></p></li> |
8288 | <li class="listitem"><p><code class="filename">libdata/gtk-2.0/gtk.immodules</code></p></li> | | 8288 | <li class="listitem"><p><code class="filename">libdata/gtk-2.0/gtk.immodules</code></p></li> |
8289 | </ul></div> | | 8289 | </ul></div> |
8290 | </li> | | 8290 | </li> |
8291 | <li class="listitem"><p>Check the <code class="filename">PLIST</code> and remove | | 8291 | <li class="listitem"><p>Check the <code class="filename">PLIST</code> and remove |
8292 | any entries under the <code class="filename">libdata/gtk-2.0</code> | | 8292 | any entries under the <code class="filename">libdata/gtk-2.0</code> |
8293 | directory, as they will be handled automatically.</p></li> | | 8293 | directory, as they will be handled automatically.</p></li> |
8294 | </ol></div> | | 8294 | </ol></div> |
8295 | </div> | | 8295 | </div> |
8296 | <div class="sect2"> | | 8296 | <div class="sect2"> |
8297 | <div class="titlepage"><div><div><h3 class="title"> | | 8297 | <div class="titlepage"><div><div><h3 class="title"> |
8298 | <a name="sgml-xml-data"></a>19.6.13. Packages installing SGML or XML data</h3></div></div></div> | | 8298 | <a name="sgml-xml-data"></a>19.6.13. Packages installing SGML or XML data</h3></div></div></div> |
8299 | <p>If a package installs SGML or XML data files that need to be | | 8299 | <p>If a package installs SGML or XML data files that need to be |
8300 | registered in system-wide catalogs (like DTDs, sub-catalogs, | | 8300 | registered in system-wide catalogs (like DTDs, sub-catalogs, |
8301 | etc.), you need to take some extra steps:</p> | | 8301 | etc.), you need to take some extra steps:</p> |
8302 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8302 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8303 | <li class="listitem"><p>Include | | 8303 | <li class="listitem"><p>Include |
8304 | <code class="filename">../../textproc/xmlcatmgr/catalogs.mk</code> in | | 8304 | <code class="filename">../../textproc/xmlcatmgr/catalogs.mk</code> in |
8305 | your <code class="filename">Makefile</code>, which takes care of | | 8305 | your <code class="filename">Makefile</code>, which takes care of |
8306 | registering those files in system-wide catalogs at | | 8306 | registering those files in system-wide catalogs at |
8307 | installation and deinstallation time.</p></li> | | 8307 | installation and deinstallation time.</p></li> |
8308 | <li class="listitem"><p>Set <code class="varname">SGML_CATALOGS</code> to the full path of | | 8308 | <li class="listitem"><p>Set <code class="varname">SGML_CATALOGS</code> to the full path of |
8309 | any SGML catalogs installed by the package.</p></li> | | 8309 | any SGML catalogs installed by the package.</p></li> |
8310 | <li class="listitem"><p>Set <code class="varname">XML_CATALOGS</code> to the full path of | | 8310 | <li class="listitem"><p>Set <code class="varname">XML_CATALOGS</code> to the full path of |
8311 | any XML catalogs installed by the package.</p></li> | | 8311 | any XML catalogs installed by the package.</p></li> |
8312 | <li class="listitem"><p>Set <code class="varname">SGML_ENTRIES</code> to individual entries | | 8312 | <li class="listitem"><p>Set <code class="varname">SGML_ENTRIES</code> to individual entries |
8313 | to be added to the SGML catalog. These come in groups of | | 8313 | to be added to the SGML catalog. These come in groups of |
8314 | three strings; see xmlcatmgr(1) for more information | | 8314 | three strings; see xmlcatmgr(1) for more information |
8315 | (specifically, arguments recognized by the 'add' action). | | 8315 | (specifically, arguments recognized by the 'add' action). |
8316 | Note that you will normally not use this variable.</p></li> | | 8316 | Note that you will normally not use this variable.</p></li> |
8317 | <li class="listitem"><p>Set <code class="varname">XML_ENTRIES</code> to individual entries | | 8317 | <li class="listitem"><p>Set <code class="varname">XML_ENTRIES</code> to individual entries |
8318 | to be added to the XML catalog. These come in groups of three | | 8318 | to be added to the XML catalog. These come in groups of three |
8319 | strings; see xmlcatmgr(1) for more information (specifically, | | 8319 | strings; see xmlcatmgr(1) for more information (specifically, |
8320 | arguments recognized by the 'add' action). Note that you will | | 8320 | arguments recognized by the 'add' action). Note that you will |
8321 | normally not use this variable.</p></li> | | 8321 | normally not use this variable.</p></li> |
8322 | </ol></div> | | 8322 | </ol></div> |
8323 | </div> | | 8323 | </div> |
8324 | <div class="sect2"> | | 8324 | <div class="sect2"> |
8325 | <div class="titlepage"><div><div><h3 class="title"> | | 8325 | <div class="titlepage"><div><div><h3 class="title"> |
8326 | <a name="mime-database"></a>19.6.14. Packages installing extensions to the MIME database</h3></div></div></div> | | 8326 | <a name="mime-database"></a>19.6.14. Packages installing extensions to the MIME database</h3></div></div></div> |
8327 | <p>If a package provides extensions to the MIME database by | | 8327 | <p>If a package provides extensions to the MIME database by |
8328 | installing <code class="filename">.xml</code> files inside | | 8328 | installing <code class="filename">.xml</code> files inside |
8329 | <code class="filename">${PREFIX}/share/mime/packages</code>, you | | 8329 | <code class="filename">${PREFIX}/share/mime/packages</code>, you |
8330 | need to take some extra steps to ensure that the database is kept | | 8330 | need to take some extra steps to ensure that the database is kept |
8331 | consistent with respect to these new files:</p> | | 8331 | consistent with respect to these new files:</p> |
8332 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8332 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8333 | <li class="listitem"><p>Include | | 8333 | <li class="listitem"><p>Include |
8334 | <code class="filename">../../databases/shared-mime-info/mimedb.mk</code> | | 8334 | <code class="filename">../../databases/shared-mime-info/mimedb.mk</code> |
8335 | (avoid using the <code class="filename">buildlink3.mk</code> file from | | 8335 | (avoid using the <code class="filename">buildlink3.mk</code> file from |
8336 | this same directory, which is reserved for inclusion from | | 8336 | this same directory, which is reserved for inclusion from |
8337 | other <code class="filename">buildlink3.mk</code> files). It takes | | 8337 | other <code class="filename">buildlink3.mk</code> files). It takes |
8338 | care of rebuilding the MIME database at installation and | | 8338 | care of rebuilding the MIME database at installation and |
8339 | deinstallation time, and disallows any access to it directly | | 8339 | deinstallation time, and disallows any access to it directly |
8340 | from the package.</p></li> | | 8340 | from the package.</p></li> |
8341 | <li class="listitem"><p>Check the PLIST and remove any entries under the | | 8341 | <li class="listitem"><p>Check the PLIST and remove any entries under the |
8342 | <code class="filename">share/mime</code> directory, | | 8342 | <code class="filename">share/mime</code> directory, |
8343 | <span class="emphasis"><em>except</em></span> for files saved under | | 8343 | <span class="emphasis"><em>except</em></span> for files saved under |
8344 | <code class="filename">share/mime/packages</code>. The former are | | 8344 | <code class="filename">share/mime/packages</code>. The former are |
8345 | handled automatically by | | 8345 | handled automatically by |
8346 | the update-mime-database program, but the latter are | | 8346 | the update-mime-database program, but the latter are |
8347 | package-dependent and must be removed by the package that | | 8347 | package-dependent and must be removed by the package that |
8348 | installed them in the first place.</p></li> | | 8348 | installed them in the first place.</p></li> |
8349 | <li class="listitem"><p>Remove any <code class="filename">share/mime/*</code> directories | | 8349 | <li class="listitem"><p>Remove any <code class="filename">share/mime/*</code> directories |
8350 | from the PLIST. They will be handled by the shared-mime-info | | 8350 | from the PLIST. They will be handled by the shared-mime-info |
8351 | package.</p></li> | | 8351 | package.</p></li> |
8352 | </ol></div> | | 8352 | </ol></div> |
8353 | </div> | | 8353 | </div> |
8354 | <div class="sect2"> | | 8354 | <div class="sect2"> |
8355 | <div class="titlepage"><div><div><h3 class="title"> | | 8355 | <div class="titlepage"><div><div><h3 class="title"> |
8356 | <a name="intltool"></a>19.6.15. Packages using intltool</h3></div></div></div> | | 8356 | <a name="intltool"></a>19.6.15. Packages using intltool</h3></div></div></div> |
8357 | <p>If a package uses intltool during its build, add | | 8357 | <p>If a package uses intltool during its build, add |
8358 | <code class="literal">intltool</code> to the <code class="varname">USE_TOOLS</code>, | | 8358 | <code class="literal">intltool</code> to the <code class="varname">USE_TOOLS</code>, |
8359 | which forces it to use the intltool package provided by pkgsrc, | | 8359 | which forces it to use the intltool package provided by pkgsrc, |
8360 | instead of the one bundled with the distribution file.</p> | | 8360 | instead of the one bundled with the distribution file.</p> |
8361 | <p>This tracks intltool's build-time dependencies and uses the | | 8361 | <p>This tracks intltool's build-time dependencies and uses the |
8362 | latest available version; this way, the package benefits of any | | 8362 | latest available version; this way, the package benefits of any |
8363 | bug fixes that may have appeared since it was released.</p> | | 8363 | bug fixes that may have appeared since it was released.</p> |
8364 | </div> | | 8364 | </div> |
8365 | <div class="sect2"> | | 8365 | <div class="sect2"> |
8366 | <div class="titlepage"><div><div><h3 class="title"> | | 8366 | <div class="titlepage"><div><div><h3 class="title"> |
8367 | <a name="startup-scripts"></a>19.6.16. Packages installing startup scripts</h3></div></div></div> | | 8367 | <a name="startup-scripts"></a>19.6.16. Packages installing startup scripts</h3></div></div></div> |
8368 | <p>If a package contains a rc.d script, it won't be copied into | | 8368 | <p>If a package contains a rc.d script, it won't be copied into |
8369 | the startup directory by default, but you can enable it, by adding | | 8369 | the startup directory by default, but you can enable it, by adding |
8370 | the option <code class="varname">PKG_RCD_SCRIPTS=YES</code> in | | 8370 | the option <code class="varname">PKG_RCD_SCRIPTS=YES</code> in |
8371 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. This option will copy the scripts | | 8371 | <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. This option will copy the scripts |
8372 | into <code class="filename">/etc/rc.d</code> when a package is installed, and | | 8372 | into <code class="filename">/etc/rc.d</code> when a package is installed, and |
8373 | it will automatically remove the scripts when the package is | | 8373 | it will automatically remove the scripts when the package is |
8374 | deinstalled.</p> | | 8374 | deinstalled.</p> |
8375 | </div> | | 8375 | </div> |
8376 | <div class="sect2"> | | 8376 | <div class="sect2"> |
8377 | <div class="titlepage"><div><div><h3 class="title"> | | 8377 | <div class="titlepage"><div><div><h3 class="title"> |
8378 | <a name="tex-packages"></a>19.6.17. Packages installing TeX modules</h3></div></div></div> | | 8378 | <a name="tex-packages"></a>19.6.17. Packages installing TeX modules</h3></div></div></div> |
8379 | <p>If a package installs TeX packages into the texmf tree, | | 8379 | <p>If a package installs TeX packages into the texmf tree, |
8380 | the <code class="filename">ls-R</code> database of the tree needs to be | | 8380 | the <code class="filename">ls-R</code> database of the tree needs to be |
8381 | updated.</p> | | 8381 | updated.</p> |
8382 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 8382 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
8383 | <h3 class="title">Note</h3> | | 8383 | <h3 class="title">Note</h3> |
8384 | <p>Except the main TeX packages such as kpathsea, | | 8384 | <p>Except the main TeX packages such as kpathsea, |
8385 | packages should install files | | 8385 | packages should install files |
8386 | into <code class="filename">${PREFIX}/share/texmf-dist</code>, | | 8386 | into <code class="filename">${PREFIX}/share/texmf-dist</code>, |
8387 | not <code class="filename">${PREFIX}/share/texmf</code>.</p> | | 8387 | not <code class="filename">${PREFIX}/share/texmf</code>.</p> |
8388 | </div> | | 8388 | </div> |
8389 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8389 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8390 | <li class="listitem"><p>Include | | 8390 | <li class="listitem"><p>Include |
8391 | <code class="filename">../../print/kpathsea/texmf.mk</code>. This | | 8391 | <code class="filename">../../print/kpathsea/texmf.mk</code>. This |
8392 | takes care of rebuilding the <code class="filename">ls-R</code> | | 8392 | takes care of rebuilding the <code class="filename">ls-R</code> |
8393 | database at installation and deinstallation time.</p></li> | | 8393 | database at installation and deinstallation time.</p></li> |
8394 | <li class="listitem"> | | 8394 | <li class="listitem"> |
8395 | <p>If your package installs files into a texmf | | 8395 | <p>If your package installs files into a texmf |
8396 | tree other than the one | | 8396 | tree other than the one |
8397 | at <code class="filename">${PREFIX}/share/texmf-dist</code>, | | 8397 | at <code class="filename">${PREFIX}/share/texmf-dist</code>, |
8398 | set <code class="varname">TEX_TEXMF_DIRS</code> to the list of all texmf | | 8398 | set <code class="varname">TEX_TEXMF_DIRS</code> to the list of all texmf |
8399 | trees that need database update.</p> | | 8399 | trees that need database update.</p> |
8400 | <p>If your package also installs font map files that need | | 8400 | <p>If your package also installs font map files that need |
8401 | to be registered using <span class="command"><strong>updmap</strong></span>, | | 8401 | to be registered using <span class="command"><strong>updmap</strong></span>, |
8402 | include <code class="filename">../../print/tex-tetex/map.mk</code> and | | 8402 | include <code class="filename">../../print/tex-tetex/map.mk</code> and |
8403 | set <code class="varname">TEX_MAP_FILES</code> and/or | | 8403 | set <code class="varname">TEX_MAP_FILES</code> and/or |
8404 | <code class="varname">TEX_MIXEDMAP_FILES</code> to the list of all | | 8404 | <code class="varname">TEX_MIXEDMAP_FILES</code> to the list of all |
8405 | such font map files. Then <span class="command"><strong>updmap</strong></span> will | | 8405 | such font map files. Then <span class="command"><strong>updmap</strong></span> will |
8406 | be run automatically at installation/deinstallation to | | 8406 | be run automatically at installation/deinstallation to |
8407 | enable/disable font map files for TeX output | | 8407 | enable/disable font map files for TeX output |
8408 | drivers.</p> | | 8408 | drivers.</p> |
8409 | </li> | | 8409 | </li> |
8410 | <li class="listitem"><p>Make sure that none of <code class="filename">ls-R</code> | | 8410 | <li class="listitem"><p>Make sure that none of <code class="filename">ls-R</code> |
8411 | databases are included in <code class="filename">PLIST</code>, as | | 8411 | databases are included in <code class="filename">PLIST</code>, as |
8412 | they will be removed only by the kpathsea package.</p></li> | | 8412 | they will be removed only by the kpathsea package.</p></li> |
8413 | </ol></div> | | 8413 | </ol></div> |
8414 | </div> | | 8414 | </div> |
8415 | <div class="sect2"> | | 8415 | <div class="sect2"> |
8416 | <div class="titlepage"><div><div><h3 class="title"> | | 8416 | <div class="titlepage"><div><div><h3 class="title"> |
8417 | <a name="emulation-packages"></a>19.6.18. Packages supporting running binaries in | | 8417 | <a name="emulation-packages"></a>19.6.18. Packages supporting running binaries in |
8418 | emulation</h3></div></div></div> | | 8418 | emulation</h3></div></div></div> |
8419 | <p>There are some packages that provide libraries and | | 8419 | <p>There are some packages that provide libraries and |
8420 | executables for running binaries from a one operating system | | 8420 | executables for running binaries from a one operating system |
8421 | on a different one (if the latter supports it). One example | | 8421 | on a different one (if the latter supports it). One example |
8422 | is running Linux binaries on NetBSD.</p> | | 8422 | is running Linux binaries on NetBSD.</p> |
8423 | <p>The <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/rpm2pkg/README.html" target="_top"><code class="filename">pkgtools/rpm2pkg</code></a> | | 8423 | <p>The <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/rpm2pkg/README.html" target="_top"><code class="filename">pkgtools/rpm2pkg</code></a> |
8424 | helps in extracting and packaging Linux rpm packages.</p> | | 8424 | helps in extracting and packaging Linux rpm packages.</p> |
8425 | <p>The <code class="varname">CHECK_SHLIBS</code> can be set to no to | | 8425 | <p>The <code class="varname">CHECK_SHLIBS</code> can be set to no to |
8426 | avoid the <span class="command"><strong>check-shlibs</strong></span> target, which tests | | 8426 | avoid the <span class="command"><strong>check-shlibs</strong></span> target, which tests |
8427 | if all libraries for each installed executable can be found by | | 8427 | if all libraries for each installed executable can be found by |
8428 | the dynamic linker. Since the standard dynamic linker is run, | | 8428 | the dynamic linker. Since the standard dynamic linker is run, |
8429 | this fails for emulation packages, because the libraries used | | 8429 | this fails for emulation packages, because the libraries used |
8430 | by the emulation are not in the standard directories.</p> | | 8430 | by the emulation are not in the standard directories.</p> |
8431 | </div> | | 8431 | </div> |
8432 | <div class="sect2"> | | 8432 | <div class="sect2"> |
8433 | <div class="titlepage"><div><div><h3 class="title"> | | 8433 | <div class="titlepage"><div><div><h3 class="title"> |
8434 | <a name="hicolor-theme"></a>19.6.19. Packages installing hicolor theme icons</h3></div></div></div> | | 8434 | <a name="hicolor-theme"></a>19.6.19. Packages installing hicolor theme icons</h3></div></div></div> |
8435 | <p>If a package installs images under the | | 8435 | <p>If a package installs images under the |
8436 | <code class="filename">share/icons/hicolor</code> and/or updates the | | 8436 | <code class="filename">share/icons/hicolor</code> and/or updates the |
8437 | <code class="filename">share/icons/hicolor/icon-theme.cache</code> | | 8437 | <code class="filename">share/icons/hicolor/icon-theme.cache</code> |
8438 | database, you need to take some extra steps to make sure that the | | 8438 | database, you need to take some extra steps to make sure that the |
8439 | shared theme directory is handled appropriately and that the cache | | 8439 | shared theme directory is handled appropriately and that the cache |
8440 | database is rebuilt:</p> | | 8440 | database is rebuilt:</p> |
8441 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8441 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8442 | <li class="listitem"><p>Include | | 8442 | <li class="listitem"><p>Include |
8443 | <code class="filename">../../graphics/hicolor-icon-theme/buildlink3.mk</code>.</p></li> | | 8443 | <code class="filename">../../graphics/hicolor-icon-theme/buildlink3.mk</code>.</p></li> |
8444 | <li class="listitem"><p>Check the <code class="filename">PLIST</code> and remove the | | 8444 | <li class="listitem"><p>Check the <code class="filename">PLIST</code> and remove the |
8445 | entry that refers to the theme cache.</p></li> | | 8445 | entry that refers to the theme cache.</p></li> |
8446 | <li class="listitem"><p>Ensure that the PLIST does not remove the shared icon | | 8446 | <li class="listitem"><p>Ensure that the PLIST does not remove the shared icon |
8447 | directories from the <code class="filename">share/icons/hicolor</code> | | 8447 | directories from the <code class="filename">share/icons/hicolor</code> |
8448 | hierarchy because they will be handled automatically.</p></li> | | 8448 | hierarchy because they will be handled automatically.</p></li> |
8449 | </ol></div> | | 8449 | </ol></div> |
8450 | <p>The best way to verify that the PLIST is correct with | | 8450 | <p>The best way to verify that the PLIST is correct with |
8451 | respect to the last two points is to regenerate it using | | 8451 | respect to the last two points is to regenerate it using |
8452 | <span class="command"><strong>make print-PLIST</strong></span>.</p> | | 8452 | <span class="command"><strong>make print-PLIST</strong></span>.</p> |
8453 | </div> | | 8453 | </div> |
8454 | <div class="sect2"> | | 8454 | <div class="sect2"> |
8455 | <div class="titlepage"><div><div><h3 class="title"> | | 8455 | <div class="titlepage"><div><div><h3 class="title"> |
8456 | <a name="desktop-files"></a>19.6.20. Packages installing desktop files</h3></div></div></div> | | 8456 | <a name="desktop-files"></a>19.6.20. Packages installing desktop files</h3></div></div></div> |
8457 | <p>If a package installs <code class="filename">.desktop</code> files | | 8457 | <p>If a package installs <code class="filename">.desktop</code> files |
8458 | under <code class="filename">share/applications</code> and these include | | 8458 | under <code class="filename">share/applications</code> and these include |
8459 | MIME information (MimeType key), you need to take extra steps to | | 8459 | MIME information (MimeType key), you need to take extra steps to |
8460 | ensure that they are registered into the MIME database:</p> | | 8460 | ensure that they are registered into the MIME database:</p> |
8461 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8461 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8462 | <li class="listitem"><p>Include | | 8462 | <li class="listitem"><p>Include |
8463 | <code class="filename">../../sysutils/desktop-file-utils/desktopdb.mk</code>.</p></li> | | 8463 | <code class="filename">../../sysutils/desktop-file-utils/desktopdb.mk</code>.</p></li> |
8464 | <li class="listitem"><p>Check the PLIST and remove the entry that refers to the | | 8464 | <li class="listitem"><p>Check the PLIST and remove the entry that refers to the |
8465 | <code class="filename">share/applications/mimeinfo.cache</code> file. | | 8465 | <code class="filename">share/applications/mimeinfo.cache</code> file. |
8466 | It will be handled automatically.</p></li> | | 8466 | It will be handled automatically.</p></li> |
8467 | </ol></div> | | 8467 | </ol></div> |
8468 | <p>The best way to verify that the PLIST is correct with | | 8468 | <p>The best way to verify that the PLIST is correct with |
8469 | respect to the last point is to regenerate it using <span class="command"><strong>make | | 8469 | respect to the last point is to regenerate it using <span class="command"><strong>make |
8470 | print-PLIST</strong></span>.</p> | | 8470 | print-PLIST</strong></span>.</p> |
8471 | </div> | | 8471 | </div> |
8472 | </div> | | 8472 | </div> |
8473 | <div class="sect1"> | | 8473 | <div class="sect1"> |
8474 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 8474 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
8475 | <a name="punting"></a>19.7. Marking packages as having problems</h2></div></div></div> | | 8475 | <a name="punting"></a>19.7. Marking packages as having problems</h2></div></div></div> |
8476 | <p>In some cases one does not have the time to solve a problem | | 8476 | <p>In some cases one does not have the time to solve a problem |
8477 | immediately. In this case, one can plainly mark a package as broken. For | | 8477 | immediately. In this case, one can plainly mark a package as broken. For |
8478 | this, one just sets the variable <code class="varname">BROKEN</code> to the | | 8478 | this, one just sets the variable <code class="varname">BROKEN</code> to the |
8479 | reason why the package is broken (similar to the | | 8479 | reason why the package is broken (similar to the |
8480 | <code class="varname">RESTRICTED</code> variable). A user trying to build | | 8480 | <code class="varname">RESTRICTED</code> variable). A user trying to build |
8481 | the package will immediately be shown this message, and the build | | 8481 | the package will immediately be shown this message, and the build |
8482 | will not be even tried.</p> | | 8482 | will not be even tried.</p> |
8483 | <p><code class="varname">BROKEN</code> packages are removed from pkgsrc in irregular | | 8483 | <p><code class="varname">BROKEN</code> packages are removed from pkgsrc in irregular |
8484 | intervals.</p> | | 8484 | intervals.</p> |
8485 | </div> | | 8485 | </div> |
8486 | </div> | | 8486 | </div> |
8487 | <div class="chapter"> | | 8487 | <div class="chapter"> |
8488 | <div class="titlepage"><div><div><h2 class="title"> | | 8488 | <div class="titlepage"><div><div><h2 class="title"> |
8489 | <a name="debug"></a>Chapter 20. Debugging</h2></div></div></div> | | 8489 | <a name="debug"></a>Chapter 20. Debugging</h2></div></div></div> |
8490 | <p>To check out all the gotchas when building a package, here are | | 8490 | <p>To check out all the gotchas when building a package, here are |
8491 | the steps that I do in order to get a package working. Please note | | 8491 | the steps that I do in order to get a package working. Please note |
8492 | this is basically the same as what was explained in the previous | | 8492 | this is basically the same as what was explained in the previous |
8493 | sections, only with some debugging aids.</p> | | 8493 | sections, only with some debugging aids.</p> |
8494 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 8494 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
8495 | <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> | | 8495 | <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> |
8496 | <li class="listitem"> | | 8496 | <li class="listitem"> |
8497 | <p>Install <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/url2pkg/README.html" target="_top"><code class="filename">pkgtools/url2pkg</code></a>, | | 8497 | <p>Install <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/url2pkg/README.html" target="_top"><code class="filename">pkgtools/url2pkg</code></a>, |
8498 | create a directory for a new package, change into it, then run | | 8498 | create a directory for a new package, change into it, then run |
8499 | <span class="command"><strong>url2pkg</strong></span>:</p> | | 8499 | <span class="command"><strong>url2pkg</strong></span>:</p> |
8500 | <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> | | 8500 | <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> |
8501 | <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> | | 8501 | <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> |
8502 | <code class="prompt">%</code> <strong class="userinput"><code>url2pkg http://www.example.com/path/to/distfile.tar.gz</code></strong></pre> | | 8502 | <code class="prompt">%</code> <strong class="userinput"><code>url2pkg http://www.example.com/path/to/distfile.tar.gz</code></strong></pre> |
8503 | </li> | | 8503 | </li> |
8504 | <li class="listitem"><p>Edit the <code class="filename">Makefile</code> as requested.</p></li> | | 8504 | <li class="listitem"><p>Edit the <code class="filename">Makefile</code> as requested.</p></li> |
8505 | <li class="listitem"><p>Fill in the <code class="filename">DESCR</code> file</p></li> | | 8505 | <li class="listitem"><p>Fill in the <code class="filename">DESCR</code> file</p></li> |
8506 | <li class="listitem"><p>Run <span class="command"><strong>make configure</strong></span></p></li> | | 8506 | <li class="listitem"><p>Run <span class="command"><strong>make configure</strong></span></p></li> |
8507 | <li class="listitem"><p>Add any dependencies glimpsed from documentation and the | | 8507 | <li class="listitem"><p>Add any dependencies glimpsed from documentation and the |
8508 | configure step to the package's | | 8508 | configure step to the package's |
8509 | <code class="filename">Makefile</code>.</p></li> | | 8509 | <code class="filename">Makefile</code>.</p></li> |
8510 | <li class="listitem"> | | 8510 | <li class="listitem"> |
8511 | <p>Make the package compile, doing multiple rounds of</p> | | 8511 | <p>Make the package compile, doing multiple rounds of</p> |
8512 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make</code></strong> | | 8512 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>make</code></strong> |
8513 | <code class="prompt">%</code> <strong class="userinput"><code>pkgvi ${WRKSRC}/some/file/that/does/not/compile</code></strong> | | 8513 | <code class="prompt">%</code> <strong class="userinput"><code>pkgvi ${WRKSRC}/some/file/that/does/not/compile</code></strong> |
8514 | <code class="prompt">%</code> <strong class="userinput"><code>mkpatches</code></strong> | | 8514 | <code class="prompt">%</code> <strong class="userinput"><code>mkpatches</code></strong> |
8515 | <code class="prompt">%</code> <strong class="userinput"><code>patchdiff</code></strong> | | 8515 | <code class="prompt">%</code> <strong class="userinput"><code>patchdiff</code></strong> |
8516 | <code class="prompt">%</code> <strong class="userinput"><code>mv ${WRKDIR}/.newpatches/* patches</code></strong> | | 8516 | <code class="prompt">%</code> <strong class="userinput"><code>mv ${WRKDIR}/.newpatches/* patches</code></strong> |
8517 | <code class="prompt">%</code> <strong class="userinput"><code>make mps</code></strong> | | 8517 | <code class="prompt">%</code> <strong class="userinput"><code>make mps</code></strong> |
8518 | <code class="prompt">%</code> <strong class="userinput"><code>make clean</code></strong></pre> | | 8518 | <code class="prompt">%</code> <strong class="userinput"><code>make clean</code></strong></pre> |
8519 | <p>Doing this step as non-root user will ensure that no files | | 8519 | <p>Doing this step as non-root user will ensure that no files |
8520 | are modified that shouldn't be, especially during the build | | 8520 | are modified that shouldn't be, especially during the build |
8521 | phase. <span class="command"><strong>mkpatches</strong></span>, | | 8521 | phase. <span class="command"><strong>mkpatches</strong></span>, |
8522 | <span class="command"><strong>patchdiff</strong></span> and <span class="command"><strong>pkgvi</strong></span> are | | 8522 | <span class="command"><strong>patchdiff</strong></span> and <span class="command"><strong>pkgvi</strong></span> are |
8523 | from the <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a> | | 8523 | from the <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkgdiff/README.html" target="_top"><code class="filename">pkgtools/pkgdiff</code></a> |
8524 | package.</p> | | 8524 | package.</p> |
8525 | </li> | | 8525 | </li> |
8526 | <li class="listitem"><p>Look at the <code class="filename">Makefile</code>, fix if | | 8526 | <li class="listitem"><p>Look at the <code class="filename">Makefile</code>, fix if |
8527 | necessary; see <a class="xref" href="#components.Makefile" title="11.1. Makefile">Section 11.1, “<code class="filename">Makefile</code>”</a>.</p></li> | | 8527 | necessary; see <a class="xref" href="#components.Makefile" title="11.1. Makefile">Section 11.1, “<code class="filename">Makefile</code>”</a>.</p></li> |
8528 | <li class="listitem"> | | 8528 | <li class="listitem"> |
8529 | <p>Generate a <code class="filename">PLIST</code>:</p> | | 8529 | <p>Generate a <code class="filename">PLIST</code>:</p> |
8530 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make install</code></strong> | | 8530 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make install</code></strong> |
8531 | <code class="prompt">#</code> <strong class="userinput"><code>make print-PLIST >PLIST</code></strong> | | 8531 | <code class="prompt">#</code> <strong class="userinput"><code>make print-PLIST >PLIST</code></strong> |
8532 | <code class="prompt">#</code> <strong class="userinput"><code>make deinstall</code></strong> | | 8532 | <code class="prompt">#</code> <strong class="userinput"><code>make deinstall</code></strong> |
8533 | <code class="prompt">#</code> <strong class="userinput"><code>make install</code></strong> | | 8533 | <code class="prompt">#</code> <strong class="userinput"><code>make install</code></strong> |
8534 | <code class="prompt">#</code> <strong class="userinput"><code>make deinstall</code></strong></pre> | | 8534 | <code class="prompt">#</code> <strong class="userinput"><code>make deinstall</code></strong></pre> |
8535 | <p>You usually need to be <code class="username">root</code> to do | | 8535 | <p>You usually need to be <code class="username">root</code> to do |
8536 | this. Look if there are any files left:</p> | | 8536 | this. Look if there are any files left:</p> |
8537 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make print-PLIST</code></strong></pre> | | 8537 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make print-PLIST</code></strong></pre> |
8538 | <p>If this reveals any files that are missing in | | 8538 | <p>If this reveals any files that are missing in |
8539 | <code class="filename">PLIST</code>, add them.</p> | | 8539 | <code class="filename">PLIST</code>, add them.</p> |
8540 | </li> | | 8540 | </li> |
8541 | <li class="listitem"> | | 8541 | <li class="listitem"> |
8542 | <p>Now that the <code class="filename">PLIST</code> is OK, install the | | 8542 | <p>Now that the <code class="filename">PLIST</code> is OK, install the |
8543 | package again and make a binary package:</p> | | 8543 | package again and make a binary package:</p> |
8544 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make reinstall</code></strong> | | 8544 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make reinstall</code></strong> |
8545 | <code class="prompt">#</code> <strong class="userinput"><code>make package</code></strong></pre> | | 8545 | <code class="prompt">#</code> <strong class="userinput"><code>make package</code></strong></pre> |
8546 | </li> | | 8546 | </li> |
8547 | <li class="listitem"> | | 8547 | <li class="listitem"> |
8548 | <p>Delete the installed package:</p> | | 8548 | <p>Delete the installed package:</p> |
8549 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>pkg_delete <em class="replaceable"><code>examplepkg</code></em></code></strong></pre> | | 8549 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>pkg_delete <em class="replaceable"><code>examplepkg</code></em></code></strong></pre> |
8550 | </li> | | 8550 | </li> |
8551 | <li class="listitem"> | | 8551 | <li class="listitem"> |
8552 | <p>Repeat the above <span class="command"><strong>make print-PLIST</strong></span> | | 8552 | <p>Repeat the above <span class="command"><strong>make print-PLIST</strong></span> |
8553 | command, which shouldn't find anything now:</p> | | 8553 | command, which shouldn't find anything now:</p> |
8554 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make print-PLIST</code></strong></pre> | | 8554 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make print-PLIST</code></strong></pre> |
8555 | </li> | | 8555 | </li> |
8556 | <li class="listitem"> | | 8556 | <li class="listitem"> |
8557 | <p>Reinstall the binary package:</p> | | 8557 | <p>Reinstall the binary package:</p> |
8558 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>pkg_add .../<em class="replaceable"><code>examplepkg</code></em>.tgz</code></strong></pre> | | 8558 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>pkg_add .../<em class="replaceable"><code>examplepkg</code></em>.tgz</code></strong></pre> |
8559 | </li> | | 8559 | </li> |
8560 | <li class="listitem"><p>Play with it. Make sure everything works.</p></li> | | 8560 | <li class="listitem"><p>Play with it. Make sure everything works.</p></li> |
8561 | <li class="listitem"> | | 8561 | <li class="listitem"> |
8562 | <p>Run <span class="command"><strong>pkglint</strong></span> from <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>, and fix the problems it | | 8562 | <p>Run <span class="command"><strong>pkglint</strong></span> from <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a>, and fix the problems it |
8563 | reports:</p> | | 8563 | reports:</p> |
8564 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>pkglint</code></strong></pre> | | 8564 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>pkglint</code></strong></pre> |
8565 | </li> | | 8565 | </li> |
8566 | <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> | | 8566 | <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> |
8567 | </ul></div> | | 8567 | </ul></div> |
8568 | </div> | | 8568 | </div> |
8569 | <div class="chapter"> | | 8569 | <div class="chapter"> |
8570 | <div class="titlepage"><div><div><h2 class="title"> | | 8570 | <div class="titlepage"><div><div><h2 class="title"> |
8571 | <a name="submit"></a>Chapter 21. Submitting and Committing</h2></div></div></div> | | 8571 | <a name="submit"></a>Chapter 21. Submitting and Committing</h2></div></div></div> |
8572 | <div class="toc"> | | 8572 | <div class="toc"> |
8573 | <p><b>Table of Contents</b></p> | | 8573 | <p><b>Table of Contents</b></p> |
8574 | <dl class="toc"> | | 8574 | <dl class="toc"> |
8575 | <dt><span class="sect1"><a href="#submitting-binary-packages">21.1. Submitting binary packages</a></span></dt> | | 8575 | <dt><span class="sect1"><a href="#submitting-binary-packages">21.1. Submitting binary packages</a></span></dt> |
8576 | <dt><span class="sect1"><a href="#submitting-your-package">21.2. Submitting source packages (for non-NetBSD-developers)</a></span></dt> | | 8576 | <dt><span class="sect1"><a href="#submitting-your-package">21.2. Submitting source packages (for non-NetBSD-developers)</a></span></dt> |
8577 | <dt><span class="sect1"><a href="#general-notes-for-changes">21.3. General notes when adding, updating, or removing packages</a></span></dt> | | 8577 | <dt><span class="sect1"><a href="#general-notes-for-changes">21.3. General notes when adding, updating, or removing packages</a></span></dt> |
8578 | <dt><span class="sect1"><a href="#commit-messages">21.4. Commit Messages</a></span></dt> | | 8578 | <dt><span class="sect1"><a href="#commit-messages">21.4. Commit Messages</a></span></dt> |
8579 | <dt><span class="sect1"><a href="#committing-importing">21.5. Committing: Adding a package to CVS</a></span></dt> | | 8579 | <dt><span class="sect1"><a href="#committing-importing">21.5. Committing: Adding a package to CVS</a></span></dt> |
8580 | <dt><span class="sect1"><a href="#updating-package">21.6. Updating a package to a newer version</a></span></dt> | | 8580 | <dt><span class="sect1"><a href="#updating-package">21.6. Updating a package to a newer version</a></span></dt> |
8581 | <dt><span class="sect1"><a href="#renaming-package">21.7. Renaming a package in pkgsrc</a></span></dt> | | 8581 | <dt><span class="sect1"><a href="#renaming-package">21.7. Renaming a package in pkgsrc</a></span></dt> |
8582 | <dt><span class="sect1"><a href="#moving-package">21.8. Moving a package in pkgsrc</a></span></dt> | | 8582 | <dt><span class="sect1"><a href="#moving-package">21.8. Moving a package in pkgsrc</a></span></dt> |
8583 | </dl> | | 8583 | </dl> |
8584 | </div> | | 8584 | </div> |
8585 | <div class="sect1"> | | 8585 | <div class="sect1"> |
8586 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 8586 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
8587 | <a name="submitting-binary-packages"></a>21.1. Submitting binary packages</h2></div></div></div> | | 8587 | <a name="submitting-binary-packages"></a>21.1. Submitting binary packages</h2></div></div></div> |
8588 | <p>Our policy is that we accept binaries only from pkgsrc | | 8588 | <p>Our policy is that we accept binaries only from pkgsrc |
8589 | developers to guarantee that the packages don't contain any | | 8589 | developers to guarantee that the packages don't contain any |
8590 | trojan horses etc. This is not to annoy anyone but rather to | | 8590 | trojan horses etc. This is not to annoy anyone but rather to |
8591 | protect our users! You're still free to put up your home-made | | 8591 | protect our users! You're still free to put up your home-made |
8592 | binary packages and tell the world where to get them. NetBSD | | 8592 | binary packages and tell the world where to get them. NetBSD |
8593 | developers doing bulk builds and wanting to upload them please | | 8593 | developers doing bulk builds and wanting to upload them please |
8594 | 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 | | 8594 | 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 |
8595 | builds)</i></a>.</p> | | 8595 | builds)</i></a>.</p> |
8596 | </div> | | 8596 | </div> |
8597 | <div class="sect1"> | | 8597 | <div class="sect1"> |
8598 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 8598 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
8599 | <a name="submitting-your-package"></a>21.2. Submitting source packages (for non-NetBSD-developers)</h2></div></div></div> | | 8599 | <a name="submitting-your-package"></a>21.2. Submitting source packages (for non-NetBSD-developers)</h2></div></div></div> |
8600 | <p>First, check that your package is complete, compiles and | | 8600 | <p>First, check that your package is complete, compiles and |
8601 | runs well; see <a class="xref" href="#debug" title="Chapter 20. Debugging">Chapter 20, <i>Debugging</i></a> and the rest of this | | 8601 | runs well; see <a class="xref" href="#debug" title="Chapter 20. Debugging">Chapter 20, <i>Debugging</i></a> and the rest of this |
8602 | document. Next, generate an uuencoded gzipped <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?tar+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">tar</span>(1)</span></a> | | 8602 | document. Next, generate an uuencoded gzipped <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?tar+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">tar</span>(1)</span></a> |
8603 | archive that contains all files that make up the package. | | 8603 | archive that contains all files that make up the package. |
8604 | Finally, send this package to the pkgsrc bug tracking system, | | 8604 | Finally, send this package to the pkgsrc bug tracking system, |
8605 | either with the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?send-pr+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">send-pr</span>(1)</span></a> command, or if you don't have | | 8605 | either with the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?send-pr+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">send-pr</span>(1)</span></a> command, or if you don't have |
8606 | that, go to the web page | | 8606 | that, go to the web page |
8607 | <a class="ulink" href="http://www.NetBSD.org/support/send-pr.html" target="_top">http://www.NetBSD.org/support/send-pr.html</a>, | | 8607 | <a class="ulink" href="http://www.NetBSD.org/support/send-pr.html" target="_top">http://www.NetBSD.org/support/send-pr.html</a>, |
8608 | which contains some instructions and a link to a form where you | | 8608 | which contains some instructions and a link to a form where you |
8609 | can submit packages. The | | 8609 | can submit packages. The |
8610 | <a href="http://cdn.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 | | 8610 | <a href="https://cdn.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 |
8611 | also available as a substitute for either of the above two tools. | | 8611 | also available as a substitute for either of the above two tools. |
8612 | </p> | | 8612 | </p> |
8613 | <p>In the form of the problem report, the category should be | | 8613 | <p>In the form of the problem report, the category should be |
8614 | <span class="quote">“<span class="quote">pkg</span>”</span>, the synopsis should include the package name | | 8614 | <span class="quote">“<span class="quote">pkg</span>”</span>, the synopsis should include the package name |
8615 | and version number, and the description field should contain a | | 8615 | and version number, and the description field should contain a |
8616 | short description of your package (contents of the COMMENT | | 8616 | short description of your package (contents of the COMMENT |
8617 | variable or DESCR file are OK). The uuencoded package data should | | 8617 | variable or DESCR file are OK). The uuencoded package data should |
8618 | go into the <span class="quote">“<span class="quote">fix</span>”</span> field.</p> | | 8618 | go into the <span class="quote">“<span class="quote">fix</span>”</span> field.</p> |
8619 | <p>If you want to submit several packages, please send a | | 8619 | <p>If you want to submit several packages, please send a |
8620 | separate PR for each one, it's easier for us to track things | | 8620 | separate PR for each one, it's easier for us to track things |
8621 | that way.</p> | | 8621 | that way.</p> |
8622 | <p>Alternatively, you can also import new packages into | | 8622 | <p>Alternatively, you can also import new packages into |
8623 | pkgsrc-wip (<span class="quote">“<span class="quote">pkgsrc work-in-progress</span>”</span>); see the | | 8623 | pkgsrc-wip (<span class="quote">“<span class="quote">pkgsrc work-in-progress</span>”</span>); see the |
8624 | homepage at <a class="ulink" href="http://pkgsrc.org/wip/" target="_top">http://pkgsrc.org/wip/</a> | | 8624 | homepage at <a class="ulink" href="http://pkgsrc.org/wip/" target="_top">http://pkgsrc.org/wip/</a> |
8625 | for details.</p> | | 8625 | for details.</p> |
8626 | </div> | | 8626 | </div> |
8627 | <div class="sect1"> | | 8627 | <div class="sect1"> |
8628 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 8628 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
8629 | <a name="general-notes-for-changes"></a>21.3. General notes when adding, updating, or removing packages</h2></div></div></div> | | 8629 | <a name="general-notes-for-changes"></a>21.3. General notes when adding, updating, or removing packages</h2></div></div></div> |
8630 | <p>Please note all package additions, updates, moves, and | | 8630 | <p>Please note all package additions, updates, moves, and |
8631 | removals in <code class="filename">pkgsrc/doc/CHANGES-<em class="replaceable"><code>YYYY</code></em></code>. It's very | | 8631 | removals in <code class="filename">pkgsrc/doc/CHANGES-<em class="replaceable"><code>YYYY</code></em></code>. It's very |
8632 | important to keep this file up to date and conforming to the | | 8632 | important to keep this file up to date and conforming to the |
8633 | existing format, because it will be used by scripts to | | 8633 | existing format, because it will be used by scripts to |
8634 | automatically update pages on <a class="ulink" href="http://www.NetBSD.org/" target="_top">www.NetBSD.org</a> and other | | 8634 | automatically update pages on <a class="ulink" href="http://www.NetBSD.org/" target="_top">www.NetBSD.org</a> and other |
8635 | sites. Additionally, check the | | 8635 | sites. Additionally, check the |
8636 | <code class="filename">pkgsrc/doc/TODO</code> file and remove the entry | | 8636 | <code class="filename">pkgsrc/doc/TODO</code> file and remove the entry |
8637 | for the package you updated or removed, in case it was mentioned | | 8637 | for the package you updated or removed, in case it was mentioned |
8638 | there.</p> | | 8638 | there.</p> |
8639 | <p>When the <code class="varname">PKGREVISION</code> of a package is | | 8639 | <p>When the <code class="varname">PKGREVISION</code> of a package is |
8640 | bumped, the change should appear in | | 8640 | bumped, the change should appear in |
8641 | <code class="filename">pkgsrc/doc/CHANGES-<em class="replaceable"><code>YYYY</code></em></code> if it is security | | 8641 | <code class="filename">pkgsrc/doc/CHANGES-<em class="replaceable"><code>YYYY</code></em></code> if it is security |
8642 | related or otherwise relevant. Mass bumps that result from a | | 8642 | related or otherwise relevant. Mass bumps that result from a |
8643 | dependency being updated should not be mentioned. In all other | | 8643 | dependency being updated should not be mentioned. In all other |
8644 | cases it's the developer's decision.</p> | | 8644 | cases it's the developer's decision.</p> |
8645 | <p>There is a make target that helps in creating proper | | 8645 | <p>There is a make target that helps in creating proper |
8646 | <code class="filename">CHANGES-<em class="replaceable"><code>YYYY</code></em></code> entries: <span class="command"><strong>make | | 8646 | <code class="filename">CHANGES-<em class="replaceable"><code>YYYY</code></em></code> entries: <span class="command"><strong>make |
8647 | changes-entry</strong></span>. It uses the optional <code class="varname">CTYPE</code> | | 8647 | changes-entry</strong></span>. It uses the optional <code class="varname">CTYPE</code> |
8648 | and <code class="varname">NETBSD_LOGIN_NAME</code> variables. The general | | 8648 | and <code class="varname">NETBSD_LOGIN_NAME</code> variables. The general |
8649 | usage is to first make sure that your <code class="filename">CHANGES-<em class="replaceable"><code>YYYY</code></em></code> | | 8649 | usage is to first make sure that your <code class="filename">CHANGES-<em class="replaceable"><code>YYYY</code></em></code> |
8650 | file is up-to-date (to avoid having to resolve conflicts later-on) | | 8650 | file is up-to-date (to avoid having to resolve conflicts later-on) |
8651 | and then to <span class="command"><strong>cd</strong></span> to the package directory. For | | 8651 | and then to <span class="command"><strong>cd</strong></span> to the package directory. For |
8652 | package updates, <span class="command"><strong>make changes-entry</strong></span> is enough. | | 8652 | package updates, <span class="command"><strong>make changes-entry</strong></span> is enough. |
8653 | For new packages, or package moves or removals, set the | | 8653 | For new packages, or package moves or removals, set the |
8654 | <code class="varname">CTYPE</code> variable on the command line to "Added", | | 8654 | <code class="varname">CTYPE</code> variable on the command line to "Added", |
8655 | "Moved", or "Removed". You can set <code class="varname">NETBSD_LOGIN_NAME</code> | | 8655 | "Moved", or "Removed". You can set <code class="varname">NETBSD_LOGIN_NAME</code> |
8656 | in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> if your local login name is | | 8656 | in <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a> if your local login name is |
8657 | not the same as your NetBSD login name. The target also automatically | | 8657 | not the same as your NetBSD login name. The target also automatically |
8658 | removes possibly existing entries for the package in the | | 8658 | removes possibly existing entries for the package in the |
8659 | <code class="filename">TODO</code> file. Don't forget to commit | | 8659 | <code class="filename">TODO</code> file. Don't forget to commit |
8660 | the changes, e.g. by using <span class="command"><strong>make commit-changes-entry</strong></span>! | | 8660 | the changes, e.g. by using <span class="command"><strong>make commit-changes-entry</strong></span>! |
8661 | If you are not using a checkout directly from cvs.NetBSD.org, but e.g. | | 8661 | If you are not using a checkout directly from cvs.NetBSD.org, but e.g. |
8662 | a local copy of the repository, you can set USE_NETBSD_REPO=yes. This | | 8662 | a local copy of the repository, you can set USE_NETBSD_REPO=yes. This |
8663 | makes the cvs commands use the main repository. | | 8663 | makes the cvs commands use the main repository. |
8664 | </p> | | 8664 | </p> |
8665 | </div> | | 8665 | </div> |
8666 | <div class="sect1"> | | 8666 | <div class="sect1"> |
8667 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 8667 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
8668 | <a name="commit-messages"></a>21.4. Commit Messages</h2></div></div></div> | | 8668 | <a name="commit-messages"></a>21.4. Commit Messages</h2></div></div></div> |
8669 | <p>For several years, there have been mirrors of pkgsrc in | | 8669 | <p>For several years, there have been mirrors of pkgsrc in |
8670 | fossil, git, and hg. Standard practise when using these tools is to | | 8670 | fossil, git, and hg. Standard practise when using these tools is to |
8671 | make the first line of a commit message function as a summary that | | 8671 | make the first line of a commit message function as a summary that |
8672 | can be read without the rest, such as is commonly done with "git log | | 8672 | can be read without the rest, such as is commonly done with "git log |
8673 | --oneline". For this reason, we have the following guidelines for | | 8673 | --oneline". For this reason, we have the following guidelines for |
8674 | pkgsrc commit messages:</p> | | 8674 | pkgsrc commit messages:</p> |
8675 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 8675 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
8676 | <li class="listitem"><p>Start the commit message with a line that explains the | | 8676 | <li class="listitem"><p>Start the commit message with a line that explains the |
8677 | big picture in 65 characters or less. When a commit is for one | | 8677 | big picture in 65 characters or less. When a commit is for one |
8678 | package, include the name of the package. For updates, include the | | 8678 | package, include the name of the package. For updates, include the |
8679 | version to which it is updated.</p></li> | | 8679 | version to which it is updated.</p></li> |
8680 | <li class="listitem"><p>Leave the next line empty.</p></li> | | 8680 | <li class="listitem"><p>Leave the next line empty.</p></li> |
8681 | <li class="listitem"><p>Then come the details for the commit (changes in that | | 8681 | <li class="listitem"><p>Then come the details for the commit (changes in that |
8682 | package, reason for a change) and any relevant PRs. Wrap this | | 8682 | package, reason for a change) and any relevant PRs. Wrap this |
8683 | section.</p></li> | | 8683 | section.</p></li> |
8684 | </ul></div> | | 8684 | </ul></div> |
8685 | <p>Here is an example: | | 8685 | <p>Here is an example: |
8686 | </p> | | 8686 | </p> |
8687 | <pre class="programlisting"> | | 8687 | <pre class="programlisting"> |
8688 | libxslt: update to 1.0.30 | | 8688 | libxslt: update to 1.0.30 |
8689 | | | 8689 | |
8690 | Changes since 1.0.29: | | 8690 | Changes since 1.0.29: |
8691 | ... | | 8691 | ... |
8692 | </pre> | | 8692 | </pre> |
8693 | <p> | | 8693 | <p> |
8694 | </p> | | 8694 | </p> |
8695 | <p>Here is another example: | | 8695 | <p>Here is another example: |
8696 | </p> | | 8696 | </p> |
8697 | <pre class="programlisting"> | | 8697 | <pre class="programlisting"> |
8698 | mk/bsd.pkg.mk: enable SSP by default on NetBSD | | 8698 | mk/bsd.pkg.mk: enable SSP by default on NetBSD |
8699 | | | 8699 | |
8700 | (rationale) | | 8700 | (rationale) |
8701 | </pre> | | 8701 | </pre> |
8702 | <p> | | 8702 | <p> |
8703 | </p> | | 8703 | </p> |
8704 | <p>Commit messages are final: no <span class="quote">“<span class="quote">cvs admin</span>”</span> is | | 8704 | <p>Commit messages are final: no <span class="quote">“<span class="quote">cvs admin</span>”</span> is |
8705 | allowed on the pkgsrc repository to change commit messages.</p> | | 8705 | allowed on the pkgsrc repository to change commit messages.</p> |
8706 | </div> | | 8706 | </div> |
8707 | <div class="sect1"> | | 8707 | <div class="sect1"> |
8708 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 8708 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
8709 | <a name="committing-importing"></a>21.5. Committing: Adding a package to CVS</h2></div></div></div> | | 8709 | <a name="committing-importing"></a>21.5. Committing: Adding a package to CVS</h2></div></div></div> |
8710 | <p>This section is only of interest for pkgsrc developers with write | | 8710 | <p>This section is only of interest for pkgsrc developers with write |
8711 | access to the pkgsrc repository.</p> | | 8711 | access to the pkgsrc repository.</p> |
8712 | <p>When the package is finished, <span class="quote">“<span class="quote">cvs add</span>”</span> the files. | | 8712 | <p>When the package is finished, <span class="quote">“<span class="quote">cvs add</span>”</span> the files. |
8713 | Start by adding the directory and then files in the directory. Don't | | 8713 | Start by adding the directory and then files in the directory. Don't |
8714 | forget to add the new package to the category's | | 8714 | forget to add the new package to the category's |
8715 | <code class="filename">Makefile</code>. Make sure you don't forget any files; | | 8715 | <code class="filename">Makefile</code>. Make sure you don't forget any files; |
8716 | you can check by running <span class="quote">“<span class="quote">cvs status</span>”</span>. An example:</p> | | 8716 | you can check by running <span class="quote">“<span class="quote">cvs status</span>”</span>. An example:</p> |
8717 | <pre class="programlisting"> | | 8717 | <pre class="programlisting"> |
8718 | <code class="prompt">$</code> cd .../pkgsrc/category | | 8718 | <code class="prompt">$</code> cd .../pkgsrc/category |
8719 | <code class="prompt">$</code> cvs add pkgname | | 8719 | <code class="prompt">$</code> cvs add pkgname |
8720 | <code class="prompt">$</code> cd pkgname | | 8720 | <code class="prompt">$</code> cd pkgname |
8721 | <code class="prompt">$</code> cvs add DESCR Makefile PLIST distinfo buildlink3.mk patches | | 8721 | <code class="prompt">$</code> cvs add DESCR Makefile PLIST distinfo buildlink3.mk patches |
8722 | <code class="prompt">$</code> cvs add patches/p* | | 8722 | <code class="prompt">$</code> cvs add patches/p* |
8723 | <code class="prompt">$</code> cvs status | less | | 8723 | <code class="prompt">$</code> cvs status | less |
8724 | <code class="prompt">$</code> cvs commit | | 8724 | <code class="prompt">$</code> cvs commit |
8725 | <code class="prompt">$</code> cd .. | | 8725 | <code class="prompt">$</code> cd .. |
8726 | <code class="prompt">$</code> vi Makefile # add SUBDIRS+=pkgname line | | 8726 | <code class="prompt">$</code> vi Makefile # add SUBDIRS+=pkgname line |
8727 | <code class="prompt">$</code> cvs commit Makefile | | 8727 | <code class="prompt">$</code> cvs commit Makefile |
8728 | <code class="prompt">$</code> cd pkgname | | 8728 | <code class="prompt">$</code> cd pkgname |
8729 | <code class="prompt">$</code> make CTYPE=Added commit-changes-entry | | 8729 | <code class="prompt">$</code> make CTYPE=Added commit-changes-entry |
8730 | </pre> | | 8730 | </pre> |
8731 | <p>The commit message of the initial import should include part of the | | 8731 | <p>The commit message of the initial import should include part of the |
8732 | <code class="filename">DESCR</code> file, so people reading the mailing lists know | | 8732 | <code class="filename">DESCR</code> file, so people reading the mailing lists know |
8733 | what the package is/does.</p> | | 8733 | what the package is/does.</p> |
8734 | <p>Also mention the new package in | | 8734 | <p>Also mention the new package in |
8735 | <code class="filename">pkgsrc/doc/CHANGES-20xx</code>.</p> | | 8735 | <code class="filename">pkgsrc/doc/CHANGES-20xx</code>.</p> |
8736 | <p>Previously, <span class="quote">“<span class="quote">cvs import</span>”</span> was suggested, but it was | | 8736 | <p>Previously, <span class="quote">“<span class="quote">cvs import</span>”</span> was suggested, but it was |
8737 | much easier to get wrong than <span class="quote">“<span class="quote">cvs add</span>”</span>.</p> | | 8737 | much easier to get wrong than <span class="quote">“<span class="quote">cvs add</span>”</span>.</p> |
8738 | </div> | | 8738 | </div> |
8739 | <div class="sect1"> | | 8739 | <div class="sect1"> |
8740 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 8740 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
8741 | <a name="updating-package"></a>21.6. Updating a package to a newer version</h2></div></div></div> | | 8741 | <a name="updating-package"></a>21.6. Updating a package to a newer version</h2></div></div></div> |
8742 | <p>Please always put a concise, appropriate and relevant summary of the | | 8742 | <p>Please always put a concise, appropriate and relevant summary of the |
8743 | changes between old and new versions into the commit log when updating | | 8743 | changes between old and new versions into the commit log when updating |
8744 | a package. There are various reasons for this:</p> | | 8744 | a package. There are various reasons for this:</p> |
8745 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 8745 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
8746 | <li class="listitem"><p>A URL is volatile, and can change over time. It may go away completely | | 8746 | <li class="listitem"><p>A URL is volatile, and can change over time. It may go away completely |
8747 | or its information may be overwritten by newer information.</p></li> | | 8747 | or its information may be overwritten by newer information.</p></li> |
8748 | <li class="listitem"><p>Having the change information between old and new versions in our CVS | | 8748 | <li class="listitem"><p>Having the change information between old and new versions in our CVS |
8749 | repository is very useful for people who use either cvs or anoncvs.</p></li> | | 8749 | repository is very useful for people who use either cvs or anoncvs.</p></li> |
8750 | <li class="listitem"><p>Having the change information between old and new versions in our CVS | | 8750 | <li class="listitem"><p>Having the change information between old and new versions in our CVS |
8751 | repository is very useful for people who read the pkgsrc-changes mailing | | 8751 | repository is very useful for people who read the pkgsrc-changes mailing |
8752 | list, so that they can make tactical decisions about when to upgrade | | 8752 | list, so that they can make tactical decisions about when to upgrade |
8753 | the package.</p></li> | | 8753 | the package.</p></li> |
8754 | </ul></div> | | 8754 | </ul></div> |
8755 | <p>Please also recognize that, just because a new version of a package | | 8755 | <p>Please also recognize that, just because a new version of a package |
8756 | has been released, it should not automatically be upgraded in the CVS | | 8756 | has been released, it should not automatically be upgraded in the CVS |
8757 | repository. We prefer to be conservative in the packages that are | | 8757 | repository. We prefer to be conservative in the packages that are |
8758 | included in pkgsrc - development or beta packages are not really the | | 8758 | included in pkgsrc - development or beta packages are not really the |
8759 | best thing for most places in which pkgsrc is used. Please use your | | 8759 | best thing for most places in which pkgsrc is used. Please use your |
8760 | judgement about what should go into pkgsrc, and bear in mind that | | 8760 | judgement about what should go into pkgsrc, and bear in mind that |
8761 | stability is to be preferred above new and possibly untested features.</p> | | 8761 | stability is to be preferred above new and possibly untested features.</p> |
8762 | </div> | | 8762 | </div> |
8763 | <div class="sect1"> | | 8763 | <div class="sect1"> |
8764 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 8764 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
8765 | <a name="renaming-package"></a>21.7. Renaming a package in pkgsrc</h2></div></div></div> | | 8765 | <a name="renaming-package"></a>21.7. Renaming a package in pkgsrc</h2></div></div></div> |
8766 | <p>Renaming packages is not recommended.</p> | | 8766 | <p>Renaming packages is not recommended.</p> |
8767 | <p>When renaming packages, be sure to fix any references to old name | | 8767 | <p>When renaming packages, be sure to fix any references to old name |
8768 | in other Makefiles, options, buildlink files, etc.</p> | | 8768 | in other Makefiles, options, buildlink files, etc.</p> |
8769 | <p>Also When renaming a package, please define | | 8769 | <p>Also When renaming a package, please define |
8770 | <code class="varname">SUPERSEDES</code> to the package name and dewey version | | 8770 | <code class="varname">SUPERSEDES</code> to the package name and dewey version |
8771 | pattern(s) of the previous package name. | | 8771 | pattern(s) of the previous package name. |
8772 | This may be repeated for multiple renames. | | 8772 | This may be repeated for multiple renames. |
8773 | The new package would be an exact replacement. | | 8773 | The new package would be an exact replacement. |
8774 | </p> | | 8774 | </p> |
8775 | <p>Note that <span class="quote">“<span class="quote">successor</span>”</span> in the | | 8775 | <p>Note that <span class="quote">“<span class="quote">successor</span>”</span> in the |
8776 | CHANGES-<em class="replaceable"><code>YYYY</code></em> file doesn't necessarily | | 8776 | CHANGES-<em class="replaceable"><code>YYYY</code></em> file doesn't necessarily |
8777 | mean that it <span class="emphasis"><em>supersedes</em></span>, as that successor may | | 8777 | mean that it <span class="emphasis"><em>supersedes</em></span>, as that successor may |
8778 | not be an exact replacement but is a suggestion for the replaced | | 8778 | not be an exact replacement but is a suggestion for the replaced |
8779 | functionality.</p> | | 8779 | functionality.</p> |
8780 | </div> | | 8780 | </div> |
8781 | <div class="sect1"> | | 8781 | <div class="sect1"> |
8782 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 8782 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
8783 | <a name="moving-package"></a>21.8. Moving a package in pkgsrc</h2></div></div></div> | | 8783 | <a name="moving-package"></a>21.8. Moving a package in pkgsrc</h2></div></div></div> |
8784 | <p>It is preferred that packages are not renamed or moved, but if needed | | 8784 | <p>It is preferred that packages are not renamed or moved, but if needed |
8785 | please follow these steps. | | 8785 | please follow these steps. |
8786 | </p> | | 8786 | </p> |
8787 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 8787 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
8788 | <li class="listitem"><p>Make a copy of the directory somewhere else.</p></li> | | 8788 | <li class="listitem"><p>Make a copy of the directory somewhere else.</p></li> |
8789 | <li class="listitem"> | | 8789 | <li class="listitem"> |
8790 | <p>Remove all CVS dirs.</p> | | 8790 | <p>Remove all CVS dirs.</p> |
8791 | <p>Alternatively to the first two steps you can also do:</p> | | 8791 | <p>Alternatively to the first two steps you can also do:</p> |
8792 | <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> | | 8792 | <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> |
8793 | <p>and use that for further work.</p> | | 8793 | <p>and use that for further work.</p> |
8794 | </li> | | 8794 | </li> |
8795 | <li class="listitem"><p>Fix <code class="varname">CATEGORIES</code> and any | | 8795 | <li class="listitem"><p>Fix <code class="varname">CATEGORIES</code> and any |
8796 | <code class="varname">DEPENDS</code> paths that just did <span class="quote">“<span class="quote">../package</span>”</span> | | 8796 | <code class="varname">DEPENDS</code> paths that just did <span class="quote">“<span class="quote">../package</span>”</span> |
8797 | instead of <span class="quote">“<span class="quote">../../category/package</span>”</span>.</p></li> | | 8797 | instead of <span class="quote">“<span class="quote">../../category/package</span>”</span>.</p></li> |
8798 | <li class="listitem"><p>In the modified package's Makefile, consider setting | | 8798 | <li class="listitem"><p>In the modified package's Makefile, consider setting |
8799 | <code class="varname">PREV_PKGPATH</code> to the previous category/package | | 8799 | <code class="varname">PREV_PKGPATH</code> to the previous category/package |
8800 | pathname. The <code class="varname">PREV_PKGPATH</code> can be used by tools | | 8800 | pathname. The <code class="varname">PREV_PKGPATH</code> can be used by tools |
8801 | for doing an update using pkgsrc building; for example, it can | | 8801 | for doing an update using pkgsrc building; for example, it can |
8802 | search the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_summary+5.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">pkg_summary</span>(5)</span></a> database for <code class="varname">PREV_PKGPATH</code> | | 8802 | search the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?pkg_summary+5.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">pkg_summary</span>(5)</span></a> database for <code class="varname">PREV_PKGPATH</code> |
8803 | (if no <code class="varname">SUPERSEDES</code>) and then use the corresponding | | 8803 | (if no <code class="varname">SUPERSEDES</code>) and then use the corresponding |
8804 | new <code class="varname">PKGPATH</code> for that moved package. Note that | | 8804 | new <code class="varname">PKGPATH</code> for that moved package. Note that |
8805 | it may have multiple matches, so the tool should also check on the | | 8805 | it may have multiple matches, so the tool should also check on the |
8806 | <code class="varname">PKGBASE</code> too. The <code class="varname">PREV_PKGPATH</code> | | 8806 | <code class="varname">PKGBASE</code> too. The <code class="varname">PREV_PKGPATH</code> |
8807 | probably has no value unless <code class="varname">SUPERSEDES</code> is not | | 8807 | probably has no value unless <code class="varname">SUPERSEDES</code> is not |
8808 | set, i.e. <code class="varname">PKGBASE</code> stays the same. </p></li> | | 8808 | set, i.e. <code class="varname">PKGBASE</code> stays the same. </p></li> |
8809 | <li class="listitem"><p><span class="command"><strong>cvs import</strong></span> the modified package in the new | | 8809 | <li class="listitem"><p><span class="command"><strong>cvs import</strong></span> the modified package in the new |
8810 | place.</p></li> | | 8810 | place.</p></li> |
8811 | <li class="listitem"> | | 8811 | <li class="listitem"> |
8812 | <p>Check if any package depends on it: | | 8812 | <p>Check if any package depends on it: |
8813 | </p> | | 8813 | </p> |
8814 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cd /usr/pkgsrc</code></strong> | | 8814 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cd /usr/pkgsrc</code></strong> |
8815 | <code class="prompt">%</code> <strong class="userinput"><code>grep /package */*/Makefile* */*/buildlink*</code></strong></pre> | | 8815 | <code class="prompt">%</code> <strong class="userinput"><code>grep /package */*/Makefile* */*/buildlink*</code></strong></pre> |
8816 | </li> | | 8816 | </li> |
8817 | <li class="listitem"><p>Fix paths in packages from step 5 to point to new location.</p></li> | | 8817 | <li class="listitem"><p>Fix paths in packages from step 5 to point to new location.</p></li> |
8818 | <li class="listitem"><p><span class="command"><strong>cvs rm (-f)</strong></span> the package at the old location.</p></li> | | 8818 | <li class="listitem"><p><span class="command"><strong>cvs rm (-f)</strong></span> the package at the old location.</p></li> |
8819 | <li class="listitem"><p>Remove from <code class="filename">oldcategory/Makefile</code>.</p></li> | | 8819 | <li class="listitem"><p>Remove from <code class="filename">oldcategory/Makefile</code>.</p></li> |
8820 | <li class="listitem"><p>Add to <code class="filename">newcategory/Makefile</code>.</p></li> | | 8820 | <li class="listitem"><p>Add to <code class="filename">newcategory/Makefile</code>.</p></li> |
8821 | <li class="listitem"> | | 8821 | <li class="listitem"> |
8822 | <p>Commit the changed and removed files:</p> | | 8822 | <p>Commit the changed and removed files:</p> |
8823 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cvs commit oldcategory/package oldcategory/Makefile newcategory/Makefile</code></strong></pre> | | 8823 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>cvs commit oldcategory/package oldcategory/Makefile newcategory/Makefile</code></strong></pre> |
8824 | <p>(and any packages from step 5, of course).</p> | | 8824 | <p>(and any packages from step 5, of course).</p> |
8825 | </li> | | 8825 | </li> |
8826 | </ol></div> | | 8826 | </ol></div> |
8827 | </div> | | 8827 | </div> |
8828 | </div> | | 8828 | </div> |
8829 | <div class="chapter"> | | 8829 | <div class="chapter"> |
8830 | <div class="titlepage"><div><div><h2 class="title"> | | 8830 | <div class="titlepage"><div><div><h2 class="title"> |
8831 | <a name="devfaq"></a>Chapter 22. Frequently Asked Questions</h2></div></div></div> | | 8831 | <a name="devfaq"></a>Chapter 22. Frequently Asked Questions</h2></div></div></div> |
8832 | <p>This section contains the answers to questions that may | | 8832 | <p>This section contains the answers to questions that may |
8833 | arise when you are writing a package. If you don't find your | | 8833 | arise when you are writing a package. If you don't find your |
8834 | question answered here, first have a look in the other chapters, | | 8834 | question answered here, first have a look in the other chapters, |
8835 | and if you still don't have the answer, ask on the | | 8835 | and if you still don't have the answer, ask on the |
8836 | <code class="literal">pkgsrc-users</code> mailing list.</p> | | 8836 | <code class="literal">pkgsrc-users</code> mailing list.</p> |
8837 | <div class="qandaset"> | | 8837 | <div class="qandaset"> |
8838 | <a name="idm79078192"></a><dl> | | 8838 | <a name="idm80785232"></a><dl> |
8839 | <dt>22.1. <a href="#devfaq.makeflags">What is the difference between | | 8839 | <dt>22.1. <a href="#devfaq.makeflags">What is the difference between |
8840 | MAKEFLAGS, .MAKEFLAGS and | | 8840 | MAKEFLAGS, .MAKEFLAGS and |
8841 | MAKE_FLAGS?</a> | | 8841 | MAKE_FLAGS?</a> |
8842 | </dt> | | 8842 | </dt> |
8843 | <dt>22.2. <a href="#devfaq.make">What is the difference between | | 8843 | <dt>22.2. <a href="#devfaq.make">What is the difference between |
8844 | MAKE, GMAKE and | | 8844 | MAKE, GMAKE and |
8845 | MAKE_PROGRAM?</a> | | 8845 | MAKE_PROGRAM?</a> |
8846 | </dt> | | 8846 | </dt> |
8847 | <dt>22.3. <a href="#devfaq.cc">What is the difference between | | 8847 | <dt>22.3. <a href="#devfaq.cc">What is the difference between |
8848 | CC, PKG_CC and | | 8848 | CC, PKG_CC and |
8849 | PKGSRC_COMPILER?</a> | | 8849 | PKGSRC_COMPILER?</a> |
8850 | </dt> | | 8850 | </dt> |
8851 | <dt>22.4. <a href="#devfaq.bl3flags">What is the difference between | | 8851 | <dt>22.4. <a href="#devfaq.bl3flags">What is the difference between |
8852 | BUILDLINK_LDFLAGS, | | 8852 | BUILDLINK_LDFLAGS, |
8853 | BUILDLINK_LDADD and | | 8853 | BUILDLINK_LDADD and |
8854 | BUILDLINK_LIBS?</a> | | 8854 | BUILDLINK_LIBS?</a> |
8855 | </dt> | | 8855 | </dt> |
8856 | <dt>22.5. <a href="#devfaq.bl3prefix">Why does make show-var | | 8856 | <dt>22.5. <a href="#devfaq.bl3prefix">Why does make show-var |
8857 | VARNAME=BUILDLINK_PREFIX.foo | | 8857 | VARNAME=BUILDLINK_PREFIX.foo |
8858 | say it's empty?</a> | | 8858 | say it's empty?</a> |
8859 | </dt> | | 8859 | </dt> |
8860 | <dt>22.6. <a href="#devfaq.master_sites">What does | | 8860 | <dt>22.6. <a href="#devfaq.master_sites">What does |
8861 | ${MASTER_SITE_SOURCEFORGE:=package/} mean? I | | 8861 | ${MASTER_SITE_SOURCEFORGE:=package/} mean? I |
8862 | don't understand the := inside | | 8862 | don't understand the := inside |
8863 | it.</a> | | 8863 | it.</a> |
8864 | </dt> | | 8864 | </dt> |
8865 | <dt>22.7. <a href="#devfaq.mailinglists">Which mailing lists are there for package | | 8865 | <dt>22.7. <a href="#devfaq.mailinglists">Which mailing lists are there for package |
8866 | developers?</a> | | 8866 | developers?</a> |
8867 | </dt> | | 8867 | </dt> |
8868 | <dt>22.8. <a href="#devfaq.documentation">Where is the pkgsrc | | 8868 | <dt>22.8. <a href="#devfaq.documentation">Where is the pkgsrc |
8869 | documentation?</a> | | 8869 | documentation?</a> |
8870 | </dt> | | 8870 | </dt> |
8871 | <dt>22.9. <a href="#devfaq.too-much-time">I have a little time to kill. What shall I | | 8871 | <dt>22.9. <a href="#devfaq.too-much-time">I have a little time to kill. What shall I |
8872 | do?</a> | | 8872 | do?</a> |
8873 | </dt> | | 8873 | </dt> |
8874 | </dl> | | 8874 | </dl> |
8875 | <table border="0" style="width: 100%;"> | | 8875 | <table border="0" style="width: 100%;"> |
8876 | <colgroup> | | 8876 | <colgroup> |
8877 | <col align="left" width="1%"> | | 8877 | <col align="left" width="1%"> |
8878 | <col> | | 8878 | <col> |
8879 | </colgroup> | | 8879 | </colgroup> |
8880 | <tbody> | | 8880 | <tbody> |
8881 | <tr class="question"> | | 8881 | <tr class="question"> |
8882 | <td align="left" valign="top"> | | 8882 | <td align="left" valign="top"> |
8883 | <a name="devfaq.makeflags"></a><a name="idm79077808"></a><p><b>22.1.</b></p> | | 8883 | <a name="devfaq.makeflags"></a><a name="idm80784848"></a><p><b>22.1.</b></p> |
8884 | </td> | | 8884 | </td> |
8885 | <td align="left" valign="top"><p>What is the difference between | | 8885 | <td align="left" valign="top"><p>What is the difference between |
8886 | <code class="varname">MAKEFLAGS</code>, <code class="varname">.MAKEFLAGS</code> and | | 8886 | <code class="varname">MAKEFLAGS</code>, <code class="varname">.MAKEFLAGS</code> and |
8887 | <code class="varname">MAKE_FLAGS</code>?</p></td> | | 8887 | <code class="varname">MAKE_FLAGS</code>?</p></td> |
8888 | </tr> | | 8888 | </tr> |
8889 | <tr class="answer"> | | 8889 | <tr class="answer"> |
8890 | <td align="left" valign="top"></td> | | 8890 | <td align="left" valign="top"></td> |
8891 | <td align="left" valign="top"><p><code class="varname">MAKEFLAGS</code> are the flags passed | | 8891 | <td align="left" valign="top"><p><code class="varname">MAKEFLAGS</code> are the flags passed |
8892 | to the pkgsrc-internal invocations of <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a>, while | | 8892 | to the pkgsrc-internal invocations of <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a>, while |
8893 | <code class="varname">MAKE_FLAGS</code> are the flags that are passed to | | 8893 | <code class="varname">MAKE_FLAGS</code> are the flags that are passed to |
8894 | the <code class="varname">MAKE_PROGRAM</code> when building the | | 8894 | the <code class="varname">MAKE_PROGRAM</code> when building the |
8895 | package. [FIXME: What is .MAKEFLAGS for?]</p></td> | | 8895 | package. [FIXME: What is .MAKEFLAGS for?]</p></td> |
8896 | </tr> | | 8896 | </tr> |
8897 | <tr class="question"> | | 8897 | <tr class="question"> |
8898 | <td align="left" valign="top"> | | 8898 | <td align="left" valign="top"> |
8899 | <a name="devfaq.make"></a><a name="idm79073712"></a><p><b>22.2.</b></p> | | 8899 | <a name="devfaq.make"></a><a name="idm80780880"></a><p><b>22.2.</b></p> |
8900 | </td> | | 8900 | </td> |
8901 | <td align="left" valign="top"><p>What is the difference between | | 8901 | <td align="left" valign="top"><p>What is the difference between |
8902 | <code class="varname">MAKE</code>, <code class="varname">GMAKE</code> and | | 8902 | <code class="varname">MAKE</code>, <code class="varname">GMAKE</code> and |
8903 | <code class="varname">MAKE_PROGRAM</code>?</p></td> | | 8903 | <code class="varname">MAKE_PROGRAM</code>?</p></td> |
8904 | </tr> | | 8904 | </tr> |
8905 | <tr class="answer"> | | 8905 | <tr class="answer"> |
8906 | <td align="left" valign="top"></td> | | 8906 | <td align="left" valign="top"></td> |
8907 | <td align="left" valign="top"><p><code class="varname">MAKE</code> is the path to the | | 8907 | <td align="left" valign="top"><p><code class="varname">MAKE</code> is the path to the |
8908 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> program that is used in the pkgsrc | | 8908 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> program that is used in the pkgsrc |
8909 | infrastructure. <code class="varname">GMAKE</code> is the path to GNU | | 8909 | infrastructure. <code class="varname">GMAKE</code> is the path to GNU |
8910 | Make, but you need to say <code class="varname">USE_TOOLS+=gmake</code> to | | 8910 | Make, but you need to say <code class="varname">USE_TOOLS+=gmake</code> to |
8911 | use that. <code class="varname">MAKE_PROGRAM</code> is the path to the | | 8911 | use that. <code class="varname">MAKE_PROGRAM</code> is the path to the |
8912 | Make program that is used for building the | | 8912 | Make program that is used for building the |
8913 | package.</p></td> | | 8913 | package.</p></td> |
8914 | </tr> | | 8914 | </tr> |
8915 | <tr class="question"> | | 8915 | <tr class="question"> |
8916 | <td align="left" valign="top"> | | 8916 | <td align="left" valign="top"> |
8917 | <a name="devfaq.cc"></a><a name="idm79069360"></a><p><b>22.3.</b></p> | | 8917 | <a name="devfaq.cc"></a><a name="idm80776400"></a><p><b>22.3.</b></p> |
8918 | </td> | | 8918 | </td> |
8919 | <td align="left" valign="top"><p>What is the difference between | | 8919 | <td align="left" valign="top"><p>What is the difference between |
8920 | <code class="varname">CC</code>, <code class="varname">PKG_CC</code> and | | 8920 | <code class="varname">CC</code>, <code class="varname">PKG_CC</code> and |
8921 | <code class="varname">PKGSRC_COMPILER</code>?</p></td> | | 8921 | <code class="varname">PKGSRC_COMPILER</code>?</p></td> |
8922 | </tr> | | 8922 | </tr> |
8923 | <tr class="answer"> | | 8923 | <tr class="answer"> |
8924 | <td align="left" valign="top"></td> | | 8924 | <td align="left" valign="top"></td> |
8925 | <td align="left" valign="top"><p><code class="varname">CC</code> is the path to the real C | | 8925 | <td align="left" valign="top"><p><code class="varname">CC</code> is the path to the real C |
8926 | compiler, which can be configured by the pkgsrc user. | | 8926 | compiler, which can be configured by the pkgsrc user. |
8927 | <code class="varname">PKG_CC</code> is the path to the compiler wrapper. | | 8927 | <code class="varname">PKG_CC</code> is the path to the compiler wrapper. |
8928 | <code class="varname">PKGSRC_COMPILER</code> is <span class="emphasis"><em>not</em></span> a | | 8928 | <code class="varname">PKGSRC_COMPILER</code> is <span class="emphasis"><em>not</em></span> a |
8929 | path to a compiler, but the type of compiler that should be | | 8929 | path to a compiler, but the type of compiler that should be |
8930 | used. See <code class="filename">mk/compiler.mk</code> for more | | 8930 | used. See <code class="filename">mk/compiler.mk</code> for more |
8931 | information about the latter variable.</p></td> | | 8931 | information about the latter variable.</p></td> |
8932 | </tr> | | 8932 | </tr> |
8933 | <tr class="question"> | | 8933 | <tr class="question"> |
8934 | <td align="left" valign="top"> | | 8934 | <td align="left" valign="top"> |
8935 | <a name="devfaq.bl3flags"></a><a name="idm79065136"></a><p><b>22.4.</b></p> | | 8935 | <a name="devfaq.bl3flags"></a><a name="idm80772304"></a><p><b>22.4.</b></p> |
8936 | </td> | | 8936 | </td> |
8937 | <td align="left" valign="top"><p>What is the difference between | | 8937 | <td align="left" valign="top"><p>What is the difference between |
8938 | <code class="varname">BUILDLINK_LDFLAGS</code>, | | 8938 | <code class="varname">BUILDLINK_LDFLAGS</code>, |
8939 | <code class="varname">BUILDLINK_LDADD</code> and | | 8939 | <code class="varname">BUILDLINK_LDADD</code> and |
8940 | <code class="varname">BUILDLINK_LIBS</code>?</p></td> | | 8940 | <code class="varname">BUILDLINK_LIBS</code>?</p></td> |
8941 | </tr> | | 8941 | </tr> |
8942 | <tr class="answer"> | | 8942 | <tr class="answer"> |
8943 | <td align="left" valign="top"></td> | | 8943 | <td align="left" valign="top"></td> |
8944 | <td align="left" valign="top"><p>[FIXME]</p></td> | | 8944 | <td align="left" valign="top"><p>[FIXME]</p></td> |
8945 | </tr> | | 8945 | </tr> |
8946 | <tr class="question"> | | 8946 | <tr class="question"> |
8947 | <td align="left" valign="top"> | | 8947 | <td align="left" valign="top"> |
8948 | <a name="devfaq.bl3prefix"></a><a name="idm79062960"></a><p><b>22.5.</b></p> | | 8948 | <a name="devfaq.bl3prefix"></a><a name="idm80770000"></a><p><b>22.5.</b></p> |
8949 | </td> | | 8949 | </td> |
8950 | <td align="left" valign="top"><p>Why does <span class="command"><strong>make show-var | | 8950 | <td align="left" valign="top"><p>Why does <span class="command"><strong>make show-var |
8951 | VARNAME=BUILDLINK_PREFIX.<em class="replaceable"><code>foo</code></em></strong></span> | | 8951 | VARNAME=BUILDLINK_PREFIX.<em class="replaceable"><code>foo</code></em></strong></span> |
8952 | say it's empty?</p></td> | | 8952 | say it's empty?</p></td> |
8953 | </tr> | | 8953 | </tr> |
8954 | <tr class="answer"> | | 8954 | <tr class="answer"> |
8955 | <td align="left" valign="top"></td> | | 8955 | <td align="left" valign="top"></td> |
8956 | <td align="left" valign="top"><p>For optimization reasons, some variables are only | | 8956 | <td align="left" valign="top"><p>For optimization reasons, some variables are only |
8957 | available in the <span class="quote">“<span class="quote">wrapper</span>”</span> phase and later. To | | 8957 | available in the <span class="quote">“<span class="quote">wrapper</span>”</span> phase and later. To |
8958 | <span class="quote">“<span class="quote">simulate</span>”</span> the wrapper phase, append | | 8958 | <span class="quote">“<span class="quote">simulate</span>”</span> the wrapper phase, append |
8959 | <span class="command"><strong>PKG_PHASE=wrapper</strong></span> to the above | | 8959 | <span class="command"><strong>PKG_PHASE=wrapper</strong></span> to the above |
8960 | command.</p></td> | | 8960 | command.</p></td> |
8961 | </tr> | | 8961 | </tr> |
8962 | <tr class="question"> | | 8962 | <tr class="question"> |
8963 | <td align="left" valign="top"> | | 8963 | <td align="left" valign="top"> |
8964 | <a name="devfaq.master_sites"></a><a name="idm79059888"></a><p><b>22.6.</b></p> | | 8964 | <a name="devfaq.master_sites"></a><a name="idm80766928"></a><p><b>22.6.</b></p> |
8965 | </td> | | 8965 | </td> |
8966 | <td align="left" valign="top"><p>What does | | 8966 | <td align="left" valign="top"><p>What does |
8967 | <code class="code">${MASTER_SITE_SOURCEFORGE:=package/}</code> mean? I | | 8967 | <code class="code">${MASTER_SITE_SOURCEFORGE:=package/}</code> mean? I |
8968 | don't understand the <code class="code">:=</code> inside | | 8968 | don't understand the <code class="code">:=</code> inside |
8969 | it.</p></td> | | 8969 | it.</p></td> |
8970 | </tr> | | 8970 | </tr> |
8971 | <tr class="answer"> | | 8971 | <tr class="answer"> |
8972 | <td align="left" valign="top"></td> | | 8972 | <td align="left" valign="top"></td> |
8973 | <td align="left" valign="top"><p>The <code class="code">:=</code> is not really an | | 8973 | <td align="left" valign="top"><p>The <code class="code">:=</code> is not really an |
8974 | assignment operator, although it looks like it. | | 8974 | assignment operator, although it looks like it. |
8975 | Instead, it is a degenerate form of | | 8975 | Instead, it is a degenerate form of |
8976 | <code class="code">${LIST:<em class="replaceable"><code>old_string</code></em>=<em class="replaceable"><code>new_string</code></em>}</code>, | | 8976 | <code class="code">${LIST:<em class="replaceable"><code>old_string</code></em>=<em class="replaceable"><code>new_string</code></em>}</code>, |
8977 | which is documented in the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> man page and which is | | 8977 | which is documented in the <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?make+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">make</span>(1)</span></a> man page and which is |
8978 | commonly used in the form <code class="code">${SRCS:.c=.o}</code>. In the | | 8978 | commonly used in the form <code class="code">${SRCS:.c=.o}</code>. In the |
8979 | case of <code class="varname">MASTER_SITE_*</code>, | | 8979 | case of <code class="varname">MASTER_SITE_*</code>, |
8980 | <em class="replaceable"><code>old_string</code></em> is the empty string and | | 8980 | <em class="replaceable"><code>old_string</code></em> is the empty string and |
8981 | <em class="replaceable"><code>new_string</code></em> is | | 8981 | <em class="replaceable"><code>new_string</code></em> is |
8982 | <code class="code">package/</code>. That's where the | | 8982 | <code class="code">package/</code>. That's where the |
8983 | <code class="code">:</code> and the <code class="code">=</code> fall | | 8983 | <code class="code">:</code> and the <code class="code">=</code> fall |
8984 | together.</p></td> | | 8984 | together.</p></td> |
8985 | </tr> | | 8985 | </tr> |
8986 | <tr class="question"> | | 8986 | <tr class="question"> |
8987 | <td align="left" valign="top"> | | 8987 | <td align="left" valign="top"> |
8988 | <a name="devfaq.mailinglists"></a><a name="idm79044784"></a><p><b>22.7.</b></p> | | 8988 | <a name="devfaq.mailinglists"></a><a name="idm80760016"></a><p><b>22.7.</b></p> |
8989 | </td> | | 8989 | </td> |
8990 | <td align="left" valign="top"><p>Which mailing lists are there for package | | 8990 | <td align="left" valign="top"><p>Which mailing lists are there for package |
8991 | developers?</p></td> | | 8991 | developers?</p></td> |
8992 | </tr> | | 8992 | </tr> |
8993 | <tr class="answer"> | | 8993 | <tr class="answer"> |
8994 | <td align="left" valign="top"></td> | | 8994 | <td align="left" valign="top"></td> |
8995 | <td align="left" valign="top"><div class="variablelist"><dl class="variablelist"> | | 8995 | <td align="left" valign="top"><div class="variablelist"><dl class="variablelist"> |
8996 | <dt><span class="term"><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#tech-pkg" target="_top">tech-pkg</a></span></dt> | | 8996 | <dt><span class="term"><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#tech-pkg" target="_top">tech-pkg</a></span></dt> |
8997 | <dd><p>This is a list for technical discussions related | | 8997 | <dd><p>This is a list for technical discussions related |
8998 | to pkgsrc development, e.g. soliciting feedback for changes to | | 8998 | to pkgsrc development, e.g. soliciting feedback for changes to |
8999 | pkgsrc infrastructure, proposed new features, questions related | | 8999 | pkgsrc infrastructure, proposed new features, questions related |
9000 | to porting pkgsrc to a new platform, advice for maintaining a | | 9000 | to porting pkgsrc to a new platform, advice for maintaining a |
9001 | package, patches that affect many packages, help requests moved | | 9001 | package, patches that affect many packages, help requests moved |
9002 | from pkgsrc-users when an infrastructure bug is found, | | 9002 | from pkgsrc-users when an infrastructure bug is found, |
9003 | etc.</p></dd> | | 9003 | etc.</p></dd> |
9004 | <dt><span class="term"><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-bugs" target="_top">pkgsrc-bugs</a></span></dt> | | 9004 | <dt><span class="term"><a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#pkgsrc-bugs" target="_top">pkgsrc-bugs</a></span></dt> |
9005 | <dd><p>All bug reports in category "pkg" sent with | | 9005 | <dd><p>All bug reports in category "pkg" sent with |
9006 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?send-pr+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">send-pr</span>(1)</span></a> appear here. Please do not report your bugs here | | 9006 | <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?send-pr+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">send-pr</span>(1)</span></a> appear here. Please do not report your bugs here |
9007 | directly; use one of the other mailing | | 9007 | directly; use one of the other mailing |
9008 | lists.</p></dd> | | 9008 | lists.</p></dd> |
9009 | </dl></div></td> | | 9009 | </dl></div></td> |
9010 | </tr> | | 9010 | </tr> |
9011 | <tr class="question"> | | 9011 | <tr class="question"> |
9012 | <td align="left" valign="top"> | | 9012 | <td align="left" valign="top"> |
9013 | <a name="devfaq.documentation"></a><a name="idm79040944"></a><p><b>22.8.</b></p> | | 9013 | <a name="devfaq.documentation"></a><a name="idm80756304"></a><p><b>22.8.</b></p> |
9014 | </td> | | 9014 | </td> |
9015 | <td align="left" valign="top"><p>Where is the pkgsrc | | 9015 | <td align="left" valign="top"><p>Where is the pkgsrc |
9016 | documentation?</p></td> | | 9016 | documentation?</p></td> |
9017 | </tr> | | 9017 | </tr> |
9018 | <tr class="answer"> | | 9018 | <tr class="answer"> |
9019 | <td align="left" valign="top"></td> | | 9019 | <td align="left" valign="top"></td> |
9020 | <td align="left" valign="top"> | | 9020 | <td align="left" valign="top"> |
9021 | <p>There are many places where you can find | | 9021 | <p>There are many places where you can find |
9022 | documentation about pkgsrc:</p> | | 9022 | documentation about pkgsrc:</p> |
9023 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 9023 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
9024 | <li class="listitem"><p>The pkgsrc guide (this document) is a collection | | 9024 | <li class="listitem"><p>The pkgsrc guide (this document) is a collection |
9025 | of chapters that explain large parts of pkgsrc, but some | | 9025 | of chapters that explain large parts of pkgsrc, but some |
9026 | chapters tend to be outdated. Which ones they are is hard to | | 9026 | chapters tend to be outdated. Which ones they are is hard to |
9027 | say.</p></li> | | 9027 | say.</p></li> |
9028 | <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 | | 9028 | <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 |
9029 | about certain features, announcements of new parts of the pkgsrc | | 9029 | about certain features, announcements of new parts of the pkgsrc |
9030 | infrastructure and sometimes even announcements that a certain | | 9030 | infrastructure and sometimes even announcements that a certain |
9031 | feature has been marked as obsolete. The benefit here is that | | 9031 | feature has been marked as obsolete. The benefit here is that |
9032 | each message has a date appended to it.</p></li> | | 9032 | each message has a date appended to it.</p></li> |
9033 | <li class="listitem"><p>Many of the files in the | | 9033 | <li class="listitem"><p>Many of the files in the |
9034 | <code class="filename">mk/</code> directory start with a comment that | | 9034 | <code class="filename">mk/</code> directory start with a comment that |
9035 | describes the purpose of the file and how it can be used by the | | 9035 | describes the purpose of the file and how it can be used by the |
9036 | pkgsrc user and package authors. An easy way to find this | | 9036 | pkgsrc user and package authors. An easy way to find this |
9037 | documentation is to run <span class="command"><strong>bmake | | 9037 | documentation is to run <span class="command"><strong>bmake |
9038 | help</strong></span>.</p></li> | | 9038 | help</strong></span>.</p></li> |
9039 | <li class="listitem"><p>The CVS log messages are a rich source of | | 9039 | <li class="listitem"><p>The CVS log messages are a rich source of |
9040 | information, but they tend to be highly abbreviated, especially | | 9040 | information, but they tend to be highly abbreviated, especially |
9041 | for actions that occur often. Some contain a detailed | | 9041 | for actions that occur often. Some contain a detailed |
9042 | description of what has changed, but they are geared towards the | | 9042 | description of what has changed, but they are geared towards the |
9043 | other pkgsrc developers, not towards an average pkgsrc user. | | 9043 | other pkgsrc developers, not towards an average pkgsrc user. |
9044 | They also only document <span class="emphasis"><em>changes</em></span>, so if you | | 9044 | They also only document <span class="emphasis"><em>changes</em></span>, so if you |
9045 | don't know what has been before, these messages may not be worth | | 9045 | don't know what has been before, these messages may not be worth |
9046 | too much to you.</p></li> | | 9046 | too much to you.</p></li> |
9047 | <li class="listitem"><p>Some parts of pkgsrc are only <span class="quote">“<span class="quote">implicitly | | 9047 | <li class="listitem"><p>Some parts of pkgsrc are only <span class="quote">“<span class="quote">implicitly |
9048 | documented</span>”</span>, that is the documentation exists only in the | | 9048 | documented</span>”</span>, that is the documentation exists only in the |
9049 | mind of the developer who wrote the code. To get this | | 9049 | mind of the developer who wrote the code. To get this |
9050 | information, use the <span class="command"><strong>cvs annotate</strong></span> command | | 9050 | information, use the <span class="command"><strong>cvs annotate</strong></span> command |
9051 | to see who has written it and ask on the | | 9051 | to see who has written it and ask on the |
9052 | <code class="literal">tech-pkg</code> mailing list, so that others can | | 9052 | <code class="literal">tech-pkg</code> mailing list, so that others can |
9053 | find your questions later (see above). To be sure that the | | 9053 | find your questions later (see above). To be sure that the |
9054 | developer in charge reads the mail, you may CC him or | | 9054 | developer in charge reads the mail, you may CC him or |
9055 | her.</p></li> | | 9055 | her.</p></li> |
9056 | </ul></div> | | 9056 | </ul></div> |
9057 | </td> | | 9057 | </td> |
9058 | </tr> | | 9058 | </tr> |
9059 | <tr class="question"> | | 9059 | <tr class="question"> |
9060 | <td align="left" valign="top"> | | 9060 | <td align="left" valign="top"> |
9061 | <a name="devfaq.too-much-time"></a><a name="idm79034416"></a><p><b>22.9.</b></p> | | 9061 | <a name="devfaq.too-much-time"></a><a name="idm80749776"></a><p><b>22.9.</b></p> |
9062 | </td> | | 9062 | </td> |
9063 | <td align="left" valign="top"><p>I have a little time to kill. What shall I | | 9063 | <td align="left" valign="top"><p>I have a little time to kill. What shall I |
9064 | do?</p></td> | | 9064 | do?</p></td> |
9065 | </tr> | | 9065 | </tr> |
9066 | <tr class="answer"> | | 9066 | <tr class="answer"> |
9067 | <td align="left" valign="top"></td> | | 9067 | <td align="left" valign="top"></td> |
9068 | <td align="left" valign="top"> | | 9068 | <td align="left" valign="top"> |
9069 | <p>This is not really an FAQ yet, but here's the answer | | 9069 | <p>This is not really an FAQ yet, but here's the answer |
9070 | anyway.</p> | | 9070 | anyway.</p> |
9071 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 9071 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
9072 | <li class="listitem"><p>Run <span class="command"><strong>pkg_chk -N</strong></span> (from the | | 9072 | <li class="listitem"><p>Run <span class="command"><strong>pkg_chk -N</strong></span> (from the |
9073 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_chk/README.html" target="_top"><code class="filename">pkgtools/pkg_chk</code></a> package). It | | 9073 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_chk/README.html" target="_top"><code class="filename">pkgtools/pkg_chk</code></a> package). It |
9074 | will tell you about newer versions of installed packages that are | | 9074 | will tell you about newer versions of installed packages that are |
9075 | available, but not yet updated in pkgsrc.</p></li> | | 9075 | available, but not yet updated in pkgsrc.</p></li> |
9076 | <li class="listitem"><p>Browse <code class="filename">pkgsrc/doc/TODO</code> | | 9076 | <li class="listitem"><p>Browse <code class="filename">pkgsrc/doc/TODO</code> |
9077 | — it contains a list of suggested new packages and a list of | | 9077 | — it contains a list of suggested new packages and a list of |
9078 | cleanups and enhancements for pkgsrc that would be nice to | | 9078 | cleanups and enhancements for pkgsrc that would be nice to |
9079 | have.</p></li> | | 9079 | have.</p></li> |
9080 | <li class="listitem"><p>Review packages for which review was requested on | | 9080 | <li class="listitem"><p>Review packages for which review was requested on |
9081 | the <a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#tech-pkg" target="_top">tech-pkg</a> | | 9081 | the <a class="ulink" href="http://www.NetBSD.org/mailinglists/index.html#tech-pkg" target="_top">tech-pkg</a> |
9082 | mailing list.</p></li> | | 9082 | mailing list.</p></li> |
9083 | </ul></div> | | 9083 | </ul></div> |
9084 | </td> | | 9084 | </td> |
9085 | </tr> | | 9085 | </tr> |
9086 | </tbody> | | 9086 | </tbody> |
9087 | </table> | | 9087 | </table> |
9088 | </div> | | 9088 | </div> |
9089 | </div> | | 9089 | </div> |
9090 | <div class="chapter"> | | 9090 | <div class="chapter"> |
9091 | <div class="titlepage"><div><div><h2 class="title"> | | 9091 | <div class="titlepage"><div><div><h2 class="title"> |
9092 | <a name="gnome"></a>Chapter 23. GNOME packaging and porting</h2></div></div></div> | | 9092 | <a name="gnome"></a>Chapter 23. GNOME packaging and porting</h2></div></div></div> |
9093 | <div class="toc"> | | 9093 | <div class="toc"> |
9094 | <p><b>Table of Contents</b></p> | | 9094 | <p><b>Table of Contents</b></p> |
9095 | <dl class="toc"> | | 9095 | <dl class="toc"> |
9096 | <dt><span class="sect1"><a href="#meta-packages">23.1. Meta packages</a></span></dt> | | 9096 | <dt><span class="sect1"><a href="#meta-packages">23.1. Meta packages</a></span></dt> |
9097 | <dt><span class="sect1"><a href="#new-package">23.2. Packaging a GNOME application</a></span></dt> | | 9097 | <dt><span class="sect1"><a href="#new-package">23.2. Packaging a GNOME application</a></span></dt> |
9098 | <dt><span class="sect1"><a href="#full-update">23.3. Updating GNOME to a newer version</a></span></dt> | | 9098 | <dt><span class="sect1"><a href="#full-update">23.3. Updating GNOME to a newer version</a></span></dt> |
9099 | <dt><span class="sect1"><a href="#patching">23.4. Patching guidelines</a></span></dt> | | 9099 | <dt><span class="sect1"><a href="#patching">23.4. Patching guidelines</a></span></dt> |
9100 | </dl> | | 9100 | </dl> |
9101 | </div> | | 9101 | </div> |
9102 | <p>Quoting <a class="ulink" href="http://www.gnome.org/" target="_top">GNOME's web | | 9102 | <p>Quoting <a class="ulink" href="http://www.gnome.org/" target="_top">GNOME's web |
9103 | site</a>:</p> | | 9103 | site</a>:</p> |
9104 | <div class="blockquote"><blockquote class="blockquote"><p>The GNOME project provides two things: The GNOME desktop | | 9104 | <div class="blockquote"><blockquote class="blockquote"><p>The GNOME project provides two things: The GNOME desktop |
9105 | environment, an intuitive and attractive desktop for users, and the | | 9105 | environment, an intuitive and attractive desktop for users, and the |
9106 | GNOME development platform, an extensive framework for building | | 9106 | GNOME development platform, an extensive framework for building |
9107 | applications that integrate into the rest of the desktop.</p></blockquote></div> | | 9107 | applications that integrate into the rest of the desktop.</p></blockquote></div> |
9108 | <p>pkgsrc provides a seamless way to automatically build and install | | 9108 | <p>pkgsrc provides a seamless way to automatically build and install |
9109 | a complete GNOME environment <span class="emphasis"><em>under many different | | 9109 | a complete GNOME environment <span class="emphasis"><em>under many different |
9110 | platforms</em></span>. We can say with confidence that pkgsrc is one of | | 9110 | platforms</em></span>. We can say with confidence that pkgsrc is one of |
9111 | the most advanced build and packaging systems for GNOME due to its | | 9111 | the most advanced build and packaging systems for GNOME due to its |
9112 | included technologies buildlink3, the wrappers and tools framework and | | 9112 | included technologies buildlink3, the wrappers and tools framework and |
9113 | automatic configuration file management. Lots of efforts are put into | | 9113 | automatic configuration file management. Lots of efforts are put into |
9114 | achieving a completely clean deinstallation of installed software | | 9114 | achieving a completely clean deinstallation of installed software |
9115 | components.</p> | | 9115 | components.</p> |
9116 | <p>Given that pkgsrc is <a class="ulink" href="http://www.NetBSD.org/" target="_top">NetBSD</a>'s official packaging system, | | 9116 | <p>Given that pkgsrc is <a class="ulink" href="http://www.NetBSD.org/" target="_top">NetBSD</a>'s official packaging system, |
9117 | the above also means that great efforts are put into making GNOME work | | 9117 | the above also means that great efforts are put into making GNOME work |
9118 | under this operating system. Recently, <a class="ulink" href="http://www.dragonflybsd.org/" target="_top">DragonFly BSD</a> also adopted | | 9118 | under this operating system. Recently, <a class="ulink" href="http://www.dragonflybsd.org/" target="_top">DragonFly BSD</a> also adopted |
9119 | pkgsrc as its preferred packaging system, contributing lots of | | 9119 | pkgsrc as its preferred packaging system, contributing lots of |
9120 | portability fixes to make GNOME build and install under it.</p> | | 9120 | portability fixes to make GNOME build and install under it.</p> |
9121 | <p>This chapter is aimed at pkgsrc developers and other people | | 9121 | <p>This chapter is aimed at pkgsrc developers and other people |
9122 | interested in helping our GNOME porting and packaging efforts. It | | 9122 | interested in helping our GNOME porting and packaging efforts. It |
9123 | provides instructions on how to manage the existing packages and some | | 9123 | provides instructions on how to manage the existing packages and some |
9124 | important information regarding their internals.</p> | | 9124 | important information regarding their internals.</p> |
9125 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 9125 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
9126 | <h3 class="title">We need your help!</h3> | | 9126 | <h3 class="title">We need your help!</h3> |
9127 | <p>Should you have some spare cycles to devote to NetBSD, pkgsrc | | 9127 | <p>Should you have some spare cycles to devote to NetBSD, pkgsrc |
9128 | and GNOME and are willing to learn new exciting stuff, please jump | | 9128 | and GNOME and are willing to learn new exciting stuff, please jump |
9129 | straight to the <a class="ulink" href="http://www.NetBSD.org/contrib/projects.html#gnome" target="_top">pending | | 9129 | straight to the <a class="ulink" href="http://www.NetBSD.org/contrib/projects.html#gnome" target="_top">pending |
9130 | work</a> list! There is still a long way to go to get a | | 9130 | work</a> list! There is still a long way to go to get a |
9131 | fully-functional GNOME desktop under NetBSD and we need your help to | | 9131 | fully-functional GNOME desktop under NetBSD and we need your help to |
9132 | achieve it!</p> | | 9132 | achieve it!</p> |
9133 | </div> | | 9133 | </div> |
9134 | <div class="sect1"> | | 9134 | <div class="sect1"> |
9135 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9135 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9136 | <a name="meta-packages"></a>23.1. Meta packages</h2></div></div></div> | | 9136 | <a name="meta-packages"></a>23.1. Meta packages</h2></div></div></div> |
9137 | <p>pkgsrc includes three GNOME-related meta packages:</p> | | 9137 | <p>pkgsrc includes three GNOME-related meta packages:</p> |
9138 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 9138 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
9139 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome-base/README.html" target="_top"><code class="filename">meta-pkgs/gnome-base</code></a>: Provides | | 9139 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome-base/README.html" target="_top"><code class="filename">meta-pkgs/gnome-base</code></a>: Provides |
9140 | the core GNOME desktop environment. It only includes the necessary | | 9140 | the core GNOME desktop environment. It only includes the necessary |
9141 | bits to get it to boot correctly, although it may lack important | | 9141 | bits to get it to boot correctly, although it may lack important |
9142 | functionality for daily operation. The idea behind this package is | | 9142 | functionality for daily operation. The idea behind this package is |
9143 | to let end users build their own configurations on top of this one, | | 9143 | to let end users build their own configurations on top of this one, |
9144 | first installing this meta package to achieve a functional setup and | | 9144 | first installing this meta package to achieve a functional setup and |
9145 | then adding individual applications.</p></li> | | 9145 | then adding individual applications.</p></li> |
9146 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome/README.html" target="_top"><code class="filename">meta-pkgs/gnome</code></a>: Provides a | | 9146 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome/README.html" target="_top"><code class="filename">meta-pkgs/gnome</code></a>: Provides a |
9147 | complete installation of the GNOME platform and desktop as defined | | 9147 | complete installation of the GNOME platform and desktop as defined |
9148 | by the GNOME project; this is based on the components distributed in | | 9148 | by the GNOME project; this is based on the components distributed in |
9149 | the <code class="filename">platform/x.y/x.y.z/sources</code> and | | 9149 | the <code class="filename">platform/x.y/x.y.z/sources</code> and |
9150 | <code class="filename">desktop/x.y/x.y.z/sources</code> directories of the | | 9150 | <code class="filename">desktop/x.y/x.y.z/sources</code> directories of the |
9151 | official FTP server. Developer-only tools found in those | | 9151 | official FTP server. Developer-only tools found in those |
9152 | directories are not installed unless required by some other | | 9152 | directories are not installed unless required by some other |
9153 | component to work properly. Similarly, packages from the bindings | | 9153 | component to work properly. Similarly, packages from the bindings |
9154 | set (<code class="filename">bindings/x.y/x.y.z/sources</code>) are not pulled | | 9154 | set (<code class="filename">bindings/x.y/x.y.z/sources</code>) are not pulled |
9155 | in unless required as a dependency for an end-user component. This | | 9155 | in unless required as a dependency for an end-user component. This |
9156 | package "extends" <a href="http://cdn.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> | | 9156 | package "extends" <a href="https://cdn.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> |
9157 | <li class="listitem"><p><a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome-devel/README.html" target="_top"><code class="filename">meta-pkgs/gnome-devel</code></a>: | | 9157 | <li class="listitem"><p><a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/gnome-devel/README.html" target="_top"><code class="filename">meta-pkgs/gnome-devel</code></a>: |
9158 | Installs all the tools required to build a GNOME component when | | 9158 | Installs all the tools required to build a GNOME component when |
9159 | fetched from the CVS repository. These are required to let the | | 9159 | fetched from the CVS repository. These are required to let the |
9160 | <span class="command"><strong>autogen.sh</strong></span> scripts work appropriately.</p></li> | | 9160 | <span class="command"><strong>autogen.sh</strong></span> scripts work appropriately.</p></li> |
9161 | </ul></div> | | 9161 | </ul></div> |
9162 | <p>In all these packages, the <code class="varname">DEPENDS</code> lines are | | 9162 | <p>In all these packages, the <code class="varname">DEPENDS</code> lines are |
9163 | sorted in a way that eases updates: a package may depend on other | | 9163 | sorted in a way that eases updates: a package may depend on other |
9164 | packages listed before it but not on any listed after it. It is very | | 9164 | packages listed before it but not on any listed after it. It is very |
9165 | important to keep this order to ease updates so... <span class="emphasis"><em>do not | | 9165 | important to keep this order to ease updates so... <span class="emphasis"><em>do not |
9166 | change it to alphabetical sorting!</em></span></p> | | 9166 | change it to alphabetical sorting!</em></span></p> |
9167 | </div> | | 9167 | </div> |
9168 | <div class="sect1"> | | 9168 | <div class="sect1"> |
9169 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9169 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9170 | <a name="new-package"></a>23.2. Packaging a GNOME application</h2></div></div></div> | | 9170 | <a name="new-package"></a>23.2. Packaging a GNOME application</h2></div></div></div> |
9171 | <p>Almost all GNOME applications are written in C and use a common | | 9171 | <p>Almost all GNOME applications are written in C and use a common |
9172 | set of tools as their build system. Things get different with the new | | 9172 | set of tools as their build system. Things get different with the new |
9173 | bindings to other languages (such as Python), but the following will | | 9173 | bindings to other languages (such as Python), but the following will |
9174 | give you a general idea on the minimum required tools:</p> | | 9174 | give you a general idea on the minimum required tools:</p> |
9175 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 9175 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
9176 | <li class="listitem"> | | 9176 | <li class="listitem"> |
9177 | <p>Almost all GNOME applications use the GNU Autotools as their | | 9177 | <p>Almost all GNOME applications use the GNU Autotools as their |
9178 | build system. As a general rule you will need to tell this to your | | 9178 | build system. As a general rule you will need to tell this to your |
9179 | package:</p> | | 9179 | package:</p> |
9180 | <pre class="programlisting"> | | 9180 | <pre class="programlisting"> |
9181 | GNU_CONFIGURE=yes | | 9181 | GNU_CONFIGURE=yes |
9182 | USE_LIBTOOL=yes | | 9182 | USE_LIBTOOL=yes |
9183 | USE_TOOLS+=gmake | | 9183 | USE_TOOLS+=gmake |
9184 | </pre> | | 9184 | </pre> |
9185 | </li> | | 9185 | </li> |
9186 | <li class="listitem"> | | 9186 | <li class="listitem"> |
9187 | <p>If the package uses pkg-config to detect dependencies, add this | | 9187 | <p>If the package uses pkg-config to detect dependencies, add this |
9188 | tool to the list of required utilities:</p> | | 9188 | tool to the list of required utilities:</p> |
9189 | <pre class="programlisting"> | | 9189 | <pre class="programlisting"> |
9190 | USE_TOOLS+=pkg-config | | 9190 | USE_TOOLS+=pkg-config |
9191 | </pre> | | 9191 | </pre> |
9192 | <p>Also use <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/verifypc/README.html" target="_top"><code class="filename">pkgtools/verifypc</code></a> at | | 9192 | <p>Also use <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/verifypc/README.html" target="_top"><code class="filename">pkgtools/verifypc</code></a> at |
9193 | the end of the build process to ensure that you did not miss to | | 9193 | the end of the build process to ensure that you did not miss to |
9194 | specify any dependency in your package and that the version | | 9194 | specify any dependency in your package and that the version |
9195 | requirements are all correct.</p> | | 9195 | requirements are all correct.</p> |
9196 | </li> | | 9196 | </li> |
9197 | <li class="listitem"><p>If the package uses intltool, be sure to add | | 9197 | <li class="listitem"><p>If the package uses intltool, be sure to add |
9198 | <code class="literal">intltool</code> to the <code class="varname">USE_TOOLS</code> | | 9198 | <code class="literal">intltool</code> to the <code class="varname">USE_TOOLS</code> |
9199 | to handle dependencies and to force the package to use the latest | | 9199 | to handle dependencies and to force the package to use the latest |
9200 | available version.</p></li> | | 9200 | available version.</p></li> |
9201 | <li class="listitem"> | | 9201 | <li class="listitem"> |
9202 | <p>If the package uses gtk-doc (a documentation generation | | 9202 | <p>If the package uses gtk-doc (a documentation generation |
9203 | utility), do <span class="emphasis"><em>not</em></span> add a dependency on it. The | | 9203 | utility), do <span class="emphasis"><em>not</em></span> add a dependency on it. The |
9204 | tool is rather big and the distfile should come with pregenerated | | 9204 | tool is rather big and the distfile should come with pregenerated |
9205 | documentation anyway; if it does not, it is a bug that you ought to | | 9205 | documentation anyway; if it does not, it is a bug that you ought to |
9206 | report. For such packages you should disable gtk-doc (unless it is | | 9206 | report. For such packages you should disable gtk-doc (unless it is |
9207 | the default):</p> | | 9207 | the default):</p> |
9208 | <pre class="programlisting"> | | 9208 | <pre class="programlisting"> |
9209 | CONFIGURE_ARGS+=--disable-gtk-doc | | 9209 | CONFIGURE_ARGS+=--disable-gtk-doc |
9210 | </pre> | | 9210 | </pre> |
9211 | <p>The default location of installed HTML files | | 9211 | <p>The default location of installed HTML files |
9212 | (<code class="filename">share/gtk-doc/<package-name></code>) is correct | | 9212 | (<code class="filename">share/gtk-doc/<package-name></code>) is correct |
9213 | and should not be changed unless the package insists on installing | | 9213 | and should not be changed unless the package insists on installing |
9214 | them somewhere else. Otherwise programs as | | 9214 | them somewhere else. Otherwise programs as |
9215 | <span class="command"><strong>devhelp</strong></span> will not be able to open them. You can | | 9215 | <span class="command"><strong>devhelp</strong></span> will not be able to open them. You can |
9216 | do that with an entry similar to:</p> | | 9216 | do that with an entry similar to:</p> |
9217 | <pre class="programlisting"> | | 9217 | <pre class="programlisting"> |
9218 | CONFIGURE_ARGS+=--with-html-dir=${PREFIX}/share/gtk-doc/... | | 9218 | CONFIGURE_ARGS+=--with-html-dir=${PREFIX}/share/gtk-doc/... |
9219 | </pre> | | 9219 | </pre> |
9220 | </li> | | 9220 | </li> |
9221 | </ul></div> | | 9221 | </ul></div> |
9222 | <p>GNOME uses multiple <span class="emphasis"><em>shared</em></span> directories and | | 9222 | <p>GNOME uses multiple <span class="emphasis"><em>shared</em></span> directories and |
9223 | files under the installation prefix to maintain databases. In this | | 9223 | files under the installation prefix to maintain databases. In this |
9224 | context, shared means that those exact same directories and files are | | 9224 | context, shared means that those exact same directories and files are |
9225 | used among several different packages, leading to conflicts in the | | 9225 | used among several different packages, leading to conflicts in the |
9226 | <code class="filename">PLIST</code>. pkgsrc currently includes functionality to | | 9226 | <code class="filename">PLIST</code>. pkgsrc currently includes functionality to |
9227 | handle the most common cases, so you have to forget about using | | 9227 | handle the most common cases, so you have to forget about using |
9228 | <code class="literal">@unexec ${RMDIR}</code> lines in your file lists and | | 9228 | <code class="literal">@unexec ${RMDIR}</code> lines in your file lists and |
9229 | omitting shared files from them. If you find yourself doing those, | | 9229 | omitting shared files from them. If you find yourself doing those, |
9230 | <span class="emphasis"><em>your package is most likely incorrect</em></span>.</p> | | 9230 | <span class="emphasis"><em>your package is most likely incorrect</em></span>.</p> |
9231 | <p>The following table lists the common situations that result in | | 9231 | <p>The following table lists the common situations that result in |
9232 | using shared directories or files. For each of them, the appropriate | | 9232 | using shared directories or files. For each of them, the appropriate |
9233 | solution is given. After applying the solution be sure to | | 9233 | solution is given. After applying the solution be sure to |
9234 | <span class="emphasis"><em>regenerate the package's file list</em></span> with | | 9234 | <span class="emphasis"><em>regenerate the package's file list</em></span> with |
9235 | <span class="command"><strong>make print-PLIST</strong></span> and ensure it is correct.</p> | | 9235 | <span class="command"><strong>make print-PLIST</strong></span> and ensure it is correct.</p> |
9236 | <div class="table"> | | 9236 | <div class="table"> |
9237 | <a name="plist-handling"></a><p class="title"><b>Table 23.1. PLIST handling for GNOME packages</b></p> | | 9237 | <a name="plist-handling"></a><p class="title"><b>Table 23.1. PLIST handling for GNOME packages</b></p> |
9238 | <div class="table-contents"><table class="table" summary="PLIST handling for GNOME packages" border="1"> | | 9238 | <div class="table-contents"><table class="table" summary="PLIST handling for GNOME packages" border="1"> |
9239 | <colgroup> | | 9239 | <colgroup> |
9240 | <col> | | 9240 | <col> |
9241 | <col> | | 9241 | <col> |
9242 | </colgroup> | | 9242 | </colgroup> |
9243 | <thead><tr> | | 9243 | <thead><tr> |
9244 | <th>If the package...</th> | | 9244 | <th>If the package...</th> |
9245 | <th>Then...</th> | | 9245 | <th>Then...</th> |
9246 | </tr></thead> | | 9246 | </tr></thead> |
9247 | <tbody> | | 9247 | <tbody> |
9248 | <tr> | | 9248 | <tr> |
9249 | <td>Installs OMF files under <code class="filename">share/omf</code>.</td> | | 9249 | <td>Installs OMF files under <code class="filename">share/omf</code>.</td> |
9250 | <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> | | 9250 | <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> |
9251 | </tr> | | 9251 | </tr> |
9252 | <tr> | | 9252 | <tr> |
9253 | <td>Installs icons under the | | 9253 | <td>Installs icons under the |
9254 | <code class="filename">share/icons/hicolor</code> hierarchy or updates | | 9254 | <code class="filename">share/icons/hicolor</code> hierarchy or updates |
9255 | <code class="filename">share/icons/hicolor/icon-theme.cache</code>.</td> | | 9255 | <code class="filename">share/icons/hicolor/icon-theme.cache</code>.</td> |
9256 | <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> | | 9256 | <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> |
9257 | </tr> | | 9257 | </tr> |
9258 | <tr> | | 9258 | <tr> |
9259 | <td>Installs files under | | 9259 | <td>Installs files under |
9260 | <code class="filename">share/mime/packages</code>.</td> | | 9260 | <code class="filename">share/mime/packages</code>.</td> |
9261 | <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> | | 9261 | <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> |
9262 | </tr> | | 9262 | </tr> |
9263 | <tr> | | 9263 | <tr> |
9264 | <td>Installs <code class="filename">.desktop</code> files under | | 9264 | <td>Installs <code class="filename">.desktop</code> files under |
9265 | <code class="filename">share/applications</code> and these include MIME | | 9265 | <code class="filename">share/applications</code> and these include MIME |
9266 | information.</td> | | 9266 | information.</td> |
9267 | <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> | | 9267 | <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> |
9268 | </tr> | | 9268 | </tr> |
9269 | </tbody> | | 9269 | </tbody> |
9270 | </table></div> | | 9270 | </table></div> |
9271 | </div> | | 9271 | </div> |
9272 | <br class="table-break"> | | 9272 | <br class="table-break"> |
9273 | </div> | | 9273 | </div> |
9274 | <div class="sect1"> | | 9274 | <div class="sect1"> |
9275 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9275 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9276 | <a name="full-update"></a>23.3. Updating GNOME to a newer version</h2></div></div></div> | | 9276 | <a name="full-update"></a>23.3. Updating GNOME to a newer version</h2></div></div></div> |
9277 | <p>When seeing GNOME as a whole, there are two kinds of | | 9277 | <p>When seeing GNOME as a whole, there are two kinds of |
9278 | updates:</p> | | 9278 | updates:</p> |
9279 | <div class="variablelist"><dl class="variablelist"> | | 9279 | <div class="variablelist"><dl class="variablelist"> |
9280 | <dt><span class="term">Major update</span></dt> | | 9280 | <dt><span class="term">Major update</span></dt> |
9281 | <dd> | | 9281 | <dd> |
9282 | <p>Given that there is still a very long way for GNOME 3 (if it | | 9282 | <p>Given that there is still a very long way for GNOME 3 (if it |
9283 | ever appears), we consider a major update one that goes from a | | 9283 | ever appears), we consider a major update one that goes from a |
9284 | <code class="literal">2.X</code> version to a <code class="literal">2.Y</code> one, | | 9284 | <code class="literal">2.X</code> version to a <code class="literal">2.Y</code> one, |
9285 | where <code class="literal">Y</code> is even and greater than | | 9285 | where <code class="literal">Y</code> is even and greater than |
9286 | <code class="literal">X</code>. These are hard to achieve because they | | 9286 | <code class="literal">X</code>. These are hard to achieve because they |
9287 | introduce lots of changes in the components' code and almost all | | 9287 | introduce lots of changes in the components' code and almost all |
9288 | GNOME distfiles are updated to newer versions. Some of them can | | 9288 | GNOME distfiles are updated to newer versions. Some of them can |
9289 | even break API and ABI compatibility with the previous major | | 9289 | even break API and ABI compatibility with the previous major |
9290 | version series. As a result, the update needs to be done all at | | 9290 | version series. As a result, the update needs to be done all at |
9291 | once to minimize breakage.</p> | | 9291 | once to minimize breakage.</p> |
9292 | <p>A major update typically consists of around 80 package | | 9292 | <p>A major update typically consists of around 80 package |
9293 | updates and the addition of some new ones.</p> | | 9293 | updates and the addition of some new ones.</p> |
9294 | </dd> | | 9294 | </dd> |
9295 | <dt><span class="term">Minor update</span></dt> | | 9295 | <dt><span class="term">Minor update</span></dt> |
9296 | <dd> | | 9296 | <dd> |
9297 | <p>We consider a minor update one that goes from a | | 9297 | <p>We consider a minor update one that goes from a |
9298 | <code class="literal">2.A.X</code> version to a <code class="literal">2.A.Y</code> | | 9298 | <code class="literal">2.A.X</code> version to a <code class="literal">2.A.Y</code> |
9299 | one where <code class="literal">Y</code> is greater than | | 9299 | one where <code class="literal">Y</code> is greater than |
9300 | <code class="literal">X</code>. These are easy to achieve because they do | | 9300 | <code class="literal">X</code>. These are easy to achieve because they do |
9301 | not update all GNOME components, can be done in an incremental way | | 9301 | not update all GNOME components, can be done in an incremental way |
9302 | and do not break API nor ABI compatibility.</p> | | 9302 | and do not break API nor ABI compatibility.</p> |
9303 | <p>A minor update typically consists of around 50 package | | 9303 | <p>A minor update typically consists of around 50 package |
9304 | updates, although the numbers here may vary a lot.</p> | | 9304 | updates, although the numbers here may vary a lot.</p> |
9305 | </dd> | | 9305 | </dd> |
9306 | </dl></div> | | 9306 | </dl></div> |
9307 | <p>In order to update the GNOME components in pkgsrc to a new stable | | 9307 | <p>In order to update the GNOME components in pkgsrc to a new stable |
9308 | release (either major or minor), the following steps should be | | 9308 | release (either major or minor), the following steps should be |
9309 | followed:</p> | | 9309 | followed:</p> |
9310 | <div class="orderedlist"><ol class="orderedlist" type="1"> | | 9310 | <div class="orderedlist"><ol class="orderedlist" type="1"> |
9311 | <li class="listitem"> | | 9311 | <li class="listitem"> |
9312 | <p>Get a list of all the tarballs that form the new release by | | 9312 | <p>Get a list of all the tarballs that form the new release by |
9313 | using the following commands. These will leave the full list of the | | 9313 | using the following commands. These will leave the full list of the |
9314 | components' distfiles into the <code class="filename">list.txt</code> | | 9314 | components' distfiles into the <code class="filename">list.txt</code> |
9315 | file:</p> | | 9315 | file:</p> |
9316 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>echo ls "*.tar.bz2" | \ | | 9316 | <pre class="screen"><code class="prompt">%</code> <strong class="userinput"><code>echo ls "*.tar.bz2" | \ |
9317 | ftp -V ftp://ftp.gnome.org/pub/gnome/platform/x.y/x.y.z/sources/ | \ | | 9317 | ftp -V ftp://ftp.gnome.org/pub/gnome/platform/x.y/x.y.z/sources/ | \ |
9318 | awk '{ print $9 }' >list.txt</code></strong> | | 9318 | awk '{ print $9 }' >list.txt</code></strong> |
9319 | <code class="prompt">%</code> <strong class="userinput"><code>echo ls "*.tar.bz2" | \ | | 9319 | <code class="prompt">%</code> <strong class="userinput"><code>echo ls "*.tar.bz2" | \ |
9320 | ftp -V ftp://ftp.gnome.org/pub/gnome/desktop/x.y/x.y.z/sources/ | \ | | 9320 | ftp -V ftp://ftp.gnome.org/pub/gnome/desktop/x.y/x.y.z/sources/ | \ |
9321 | awk '{ print $9 }' >>list.txt</code></strong></pre> | | 9321 | awk '{ print $9 }' >>list.txt</code></strong></pre> |
9322 | </li> | | 9322 | </li> |
9323 | <li class="listitem"><p>Open each meta package's <code class="filename">Makefile</code> and | | 9323 | <li class="listitem"><p>Open each meta package's <code class="filename">Makefile</code> and |
9324 | bump their version to the release you are updating them to. The | | 9324 | bump their version to the release you are updating them to. The |
9325 | three meta packages should be always consistent with versioning. | | 9325 | three meta packages should be always consistent with versioning. |
9326 | Obviously remove any <code class="varname">PKGREVISION</code>s that might be | | 9326 | Obviously remove any <code class="varname">PKGREVISION</code>s that might be |
9327 | in them.</p></li> | | 9327 | in them.</p></li> |
9328 | <li class="listitem"> | | 9328 | <li class="listitem"> |
9329 | <p>For each meta package, update all its | | 9329 | <p>For each meta package, update all its |
9330 | <code class="varname">DEPENDS</code> lines to match the latest versions as | | 9330 | <code class="varname">DEPENDS</code> lines to match the latest versions as |
9331 | shown by the above commands. Do <span class="emphasis"><em>not</em></span> list any | | 9331 | shown by the above commands. Do <span class="emphasis"><em>not</em></span> list any |
9332 | newer version (even if found in the FTP) because the meta packages | | 9332 | newer version (even if found in the FTP) because the meta packages |
9333 | are supposed to list the exact versions that form a specific GNOME | | 9333 | are supposed to list the exact versions that form a specific GNOME |
9334 | release. Exceptions are permitted here if a newer version solves a | | 9334 | release. Exceptions are permitted here if a newer version solves a |
9335 | serious issue in the overall desktop experience; these typically | | 9335 | serious issue in the overall desktop experience; these typically |
9336 | come in the form of a revision bump in pkgsrc, not in newer versions | | 9336 | come in the form of a revision bump in pkgsrc, not in newer versions |
9337 | from the developers.</p> | | 9337 | from the developers.</p> |
9338 | <p>Packages not listed in the <code class="filename">list.txt</code> file | | 9338 | <p>Packages not listed in the <code class="filename">list.txt</code> file |
9339 | should be updated to the latest version available (if found in | | 9339 | should be updated to the latest version available (if found in |
9340 | pkgsrc). This is the case, for example, of the dependencies on the | | 9340 | pkgsrc). This is the case, for example, of the dependencies on the |
9341 | GNU Autotools in the <a href="http://cdn.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> | | 9341 | GNU Autotools in the <a href="https://cdn.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> |
9342 | </li> | | 9342 | </li> |
9343 | <li class="listitem"> | | 9343 | <li class="listitem"> |
9344 | <p>Generate a patch from the modified meta packages and extract the | | 9344 | <p>Generate a patch from the modified meta packages and extract the |
9345 | list of "new" lines. This will provide you an outline on what | | 9345 | list of "new" lines. This will provide you an outline on what |
9346 | packages need to be updated in pkgsrc and in what order:</p> | | 9346 | packages need to be updated in pkgsrc and in what order:</p> |
9347 | <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> | | 9347 | <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> |
9348 | </li> | | 9348 | </li> |
9349 | <li class="listitem"><p>For major desktop updates it is recommended to zap all your | | 9349 | <li class="listitem"><p>For major desktop updates it is recommended to zap all your |
9350 | installed packages and start over from scratch at this point.</p></li> | | 9350 | installed packages and start over from scratch at this point.</p></li> |
9351 | <li class="listitem"><p>Now comes the longest step by far: iterate over the contents | | 9351 | <li class="listitem"><p>Now comes the longest step by far: iterate over the contents |
9352 | of <code class="filename">todo.txt</code> and update the packages listed in | | 9352 | of <code class="filename">todo.txt</code> and update the packages listed in |
9353 | it in order. For major desktop updates none of these should be | | 9353 | it in order. For major desktop updates none of these should be |
9354 | committed until the entire set is completed because there are chances | | 9354 | committed until the entire set is completed because there are chances |
9355 | of breaking not-yet-updated packages.</p></li> | | 9355 | of breaking not-yet-updated packages.</p></li> |
9356 | <li class="listitem"><p>Once the packages are up to date and working, commit them to | | 9356 | <li class="listitem"><p>Once the packages are up to date and working, commit them to |
9357 | the tree one by one with appropriate log messages. At the end, | | 9357 | the tree one by one with appropriate log messages. At the end, |
9358 | commit the three meta package updates and all the corresponding | | 9358 | commit the three meta package updates and all the corresponding |
9359 | changes to the <code class="filename">doc/CHANGES-<YEAR></code> and | | 9359 | changes to the <code class="filename">doc/CHANGES-<YEAR></code> and |
9360 | <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> | | 9360 | <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> |
9361 | </ol></div> | | 9361 | </ol></div> |
9362 | </div> | | 9362 | </div> |
9363 | <div class="sect1"> | | 9363 | <div class="sect1"> |
9364 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9364 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9365 | <a name="patching"></a>23.4. Patching guidelines</h2></div></div></div> | | 9365 | <a name="patching"></a>23.4. Patching guidelines</h2></div></div></div> |
9366 | <p>GNOME is a very big component in pkgsrc which approaches 100 | | 9366 | <p>GNOME is a very big component in pkgsrc which approaches 100 |
9367 | packages. Please, it is very important that you always, always, | | 9367 | packages. Please, it is very important that you always, always, |
9368 | <span class="strong"><strong>always</strong></span> feed back any portability | | 9368 | <span class="strong"><strong>always</strong></span> feed back any portability |
9369 | 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 | | 9369 | 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 |
9370 | their attention on portability issues and to ensure that future versions | | 9370 | their attention on portability issues and to ensure that future versions |
9371 | can be built out-of-the box on NetBSD. The less custom patches in | | 9371 | can be built out-of-the box on NetBSD. The less custom patches in |
9372 | pkgsrc, the easier further updates are. Those developers in charge of | | 9372 | pkgsrc, the easier further updates are. Those developers in charge of |
9373 | issuing major GNOME updates will be grateful if you do that.</p> | | 9373 | issuing major GNOME updates will be grateful if you do that.</p> |
9374 | <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 | | 9374 | <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 |
9375 | Bugzilla</a>. Not all components use these to track bugs, but most | | 9375 | Bugzilla</a>. Not all components use these to track bugs, but most |
9376 | of them do. Do not be short on your reports: always provide detailed | | 9376 | of them do. Do not be short on your reports: always provide detailed |
9377 | explanations of the current failure, how it can be improved to achieve | | 9377 | explanations of the current failure, how it can be improved to achieve |
9378 | maximum portability and, if at all possible, provide a patch against CVS | | 9378 | maximum portability and, if at all possible, provide a patch against CVS |
9379 | head. The more verbose you are, the higher chances of your patch being | | 9379 | head. The more verbose you are, the higher chances of your patch being |
9380 | accepted.</p> | | 9380 | accepted.</p> |
9381 | <p>Also, please avoid using preprocessor magic to fix portability | | 9381 | <p>Also, please avoid using preprocessor magic to fix portability |
9382 | issues. While the FreeBSD GNOME people are doing a great job in porting | | 9382 | issues. While the FreeBSD GNOME people are doing a great job in porting |
9383 | GNOME to their operating system, the official GNOME sources are now | | 9383 | GNOME to their operating system, the official GNOME sources are now |
9384 | plagued by conditionals that check for <code class="varname">__FreeBSD__</code> | | 9384 | plagued by conditionals that check for <code class="varname">__FreeBSD__</code> |
9385 | and similar macros. This hurts portability. Please see our patching | | 9385 | and similar macros. This hurts portability. Please see our patching |
9386 | guidelines (<a class="xref" href="#components.patches.guidelines" title="11.3.4. Patching guidelines">Section 11.3.4, “Patching guidelines”</a>) for more | | 9386 | guidelines (<a class="xref" href="#components.patches.guidelines" title="11.3.4. Patching guidelines">Section 11.3.4, “Patching guidelines”</a>) for more |
9387 | details.</p> | | 9387 | details.</p> |
9388 | </div> | | 9388 | </div> |
9389 | </div> | | 9389 | </div> |
9390 | </div> | | 9390 | </div> |
9391 | <div class="part"> | | 9391 | <div class="part"> |
9392 | <div class="titlepage"><div><div><h1 class="title"> | | 9392 | <div class="titlepage"><div><div><h1 class="title"> |
9393 | <a name="infrastructure"></a>Part III. The pkgsrc infrastructure internals</h1></div></div></div> | | 9393 | <a name="infrastructure"></a>Part III. The pkgsrc infrastructure internals</h1></div></div></div> |
9394 | <div class="partintro"> | | 9394 | <div class="partintro"> |
9395 | <div></div> | | 9395 | <div></div> |
9396 | <p>This part of the guide deals with everything | | 9396 | <p>This part of the guide deals with everything |
9397 | from the infrastructure that is behind the interfaces described | | 9397 | from the infrastructure that is behind the interfaces described |
9398 | in the developer's guide. A casual package maintainer should not | | 9398 | in the developer's guide. A casual package maintainer should not |
9399 | need anything from this part.</p> | | 9399 | need anything from this part.</p> |
9400 | <div class="toc"> | | 9400 | <div class="toc"> |
9401 | <p><b>Table of Contents</b></p> | | 9401 | <p><b>Table of Contents</b></p> |
9402 | <dl class="toc"> | | 9402 | <dl class="toc"> |
9403 | <dt><span class="chapter"><a href="#infr.design">24. Design of the pkgsrc infrastructure</a></span></dt> | | 9403 | <dt><span class="chapter"><a href="#infr.design">24. Design of the pkgsrc infrastructure</a></span></dt> |
9404 | <dd><dl> | | 9404 | <dd><dl> |
9405 | <dt><span class="sect1"><a href="#infr.vardef">24.1. The meaning of variable definitions</a></span></dt> | | 9405 | <dt><span class="sect1"><a href="#infr.vardef">24.1. The meaning of variable definitions</a></span></dt> |
9406 | <dt><span class="sect1"><a href="#infr.vardef.problems">24.2. Avoiding problems before they arise</a></span></dt> | | 9406 | <dt><span class="sect1"><a href="#infr.vardef.problems">24.2. Avoiding problems before they arise</a></span></dt> |
9407 | <dt><span class="sect1"><a href="#infr.var">24.3. Variable evaluation</a></span></dt> | | 9407 | <dt><span class="sect1"><a href="#infr.var">24.3. Variable evaluation</a></span></dt> |
9408 | <dd><dl> | | 9408 | <dd><dl> |
9409 | <dt><span class="sect2"><a href="#infr.var.load">24.3.1. At load time</a></span></dt> | | 9409 | <dt><span class="sect2"><a href="#infr.var.load">24.3.1. At load time</a></span></dt> |
9410 | <dt><span class="sect2"><a href="#infr.var.run">24.3.2. At runtime</a></span></dt> | | 9410 | <dt><span class="sect2"><a href="#infr.var.run">24.3.2. At runtime</a></span></dt> |
9411 | </dl></dd> | | 9411 | </dl></dd> |
9412 | <dt><span class="sect1"><a href="#infr.varspec">24.4. How can variables be specified?</a></span></dt> | | 9412 | <dt><span class="sect1"><a href="#infr.varspec">24.4. How can variables be specified?</a></span></dt> |
9413 | <dt><span class="sect1"><a href="#infr.design.intf">24.5. Designing interfaces for Makefile fragments</a></span></dt> | | 9413 | <dt><span class="sect1"><a href="#infr.design.intf">24.5. Designing interfaces for Makefile fragments</a></span></dt> |
9414 | <dd><dl> | | 9414 | <dd><dl> |
9415 | <dt><span class="sect2"><a href="#infr.design.intf.proc">24.5.1. Procedures with parameters</a></span></dt> | | 9415 | <dt><span class="sect2"><a href="#infr.design.intf.proc">24.5.1. Procedures with parameters</a></span></dt> |
9416 | <dt><span class="sect2"><a href="#infr.design.intf.action">24.5.2. Actions taken on behalf of parameters</a></span></dt> | | 9416 | <dt><span class="sect2"><a href="#infr.design.intf.action">24.5.2. Actions taken on behalf of parameters</a></span></dt> |
9417 | </dl></dd> | | 9417 | </dl></dd> |
9418 | <dt><span class="sect1"><a href="#infr.order">24.6. The order in which files are loaded</a></span></dt> | | 9418 | <dt><span class="sect1"><a href="#infr.order">24.6. The order in which files are loaded</a></span></dt> |
9419 | <dd><dl> | | 9419 | <dd><dl> |
9420 | <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> | | 9420 | <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> |
9421 | <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> | | 9421 | <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> |
9422 | </dl></dd> | | 9422 | </dl></dd> |
9423 | </dl></dd> | | 9423 | </dl></dd> |
9424 | <dt><span class="chapter"><a href="#regression">25. Regression tests</a></span></dt> | | 9424 | <dt><span class="chapter"><a href="#regression">25. Regression tests</a></span></dt> |
9425 | <dd><dl> | | 9425 | <dd><dl> |
9426 | <dt><span class="sect1"><a href="#regression.run">25.1. Running the regression tests</a></span></dt> | | 9426 | <dt><span class="sect1"><a href="#regression.run">25.1. Running the regression tests</a></span></dt> |
9427 | <dt><span class="sect1"><a href="#regression.new">25.2. Adding a new regression test</a></span></dt> | | 9427 | <dt><span class="sect1"><a href="#regression.new">25.2. Adding a new regression test</a></span></dt> |
9428 | <dd><dl> | | 9428 | <dd><dl> |
9429 | <dt><span class="sect2"><a href="#regression.fun.override">25.2.1. Overridable functions</a></span></dt> | | 9429 | <dt><span class="sect2"><a href="#regression.fun.override">25.2.1. Overridable functions</a></span></dt> |
9430 | <dt><span class="sect2"><a href="#regression.fun.helper">25.2.2. Helper functions</a></span></dt> | | 9430 | <dt><span class="sect2"><a href="#regression.fun.helper">25.2.2. Helper functions</a></span></dt> |
9431 | </dl></dd> | | 9431 | </dl></dd> |
9432 | </dl></dd> | | 9432 | </dl></dd> |
9433 | <dt><span class="chapter"><a href="#porting">26. Porting pkgsrc</a></span></dt> | | 9433 | <dt><span class="chapter"><a href="#porting">26. Porting pkgsrc</a></span></dt> |
9434 | <dd><dl><dt><span class="sect1"><a href="#porting.opsys">26.1. Porting pkgsrc to a new operating system</a></span></dt></dl></dd> | | 9434 | <dd><dl><dt><span class="sect1"><a href="#porting.opsys">26.1. Porting pkgsrc to a new operating system</a></span></dt></dl></dd> |
9435 | </dl> | | 9435 | </dl> |
9436 | </div> | | 9436 | </div> |
9437 | </div> | | 9437 | </div> |
9438 | <div class="chapter"> | | 9438 | <div class="chapter"> |
9439 | <div class="titlepage"><div><div><h2 class="title"> | | 9439 | <div class="titlepage"><div><div><h2 class="title"> |
9440 | <a name="infr.design"></a>Chapter 24. Design of the pkgsrc infrastructure</h2></div></div></div> | | 9440 | <a name="infr.design"></a>Chapter 24. Design of the pkgsrc infrastructure</h2></div></div></div> |
9441 | <div class="toc"> | | 9441 | <div class="toc"> |
9442 | <p><b>Table of Contents</b></p> | | 9442 | <p><b>Table of Contents</b></p> |
9443 | <dl class="toc"> | | 9443 | <dl class="toc"> |
9444 | <dt><span class="sect1"><a href="#infr.vardef">24.1. The meaning of variable definitions</a></span></dt> | | 9444 | <dt><span class="sect1"><a href="#infr.vardef">24.1. The meaning of variable definitions</a></span></dt> |
9445 | <dt><span class="sect1"><a href="#infr.vardef.problems">24.2. Avoiding problems before they arise</a></span></dt> | | 9445 | <dt><span class="sect1"><a href="#infr.vardef.problems">24.2. Avoiding problems before they arise</a></span></dt> |
9446 | <dt><span class="sect1"><a href="#infr.var">24.3. Variable evaluation</a></span></dt> | | 9446 | <dt><span class="sect1"><a href="#infr.var">24.3. Variable evaluation</a></span></dt> |
9447 | <dd><dl> | | 9447 | <dd><dl> |
9448 | <dt><span class="sect2"><a href="#infr.var.load">24.3.1. At load time</a></span></dt> | | 9448 | <dt><span class="sect2"><a href="#infr.var.load">24.3.1. At load time</a></span></dt> |
9449 | <dt><span class="sect2"><a href="#infr.var.run">24.3.2. At runtime</a></span></dt> | | 9449 | <dt><span class="sect2"><a href="#infr.var.run">24.3.2. At runtime</a></span></dt> |
9450 | </dl></dd> | | 9450 | </dl></dd> |
9451 | <dt><span class="sect1"><a href="#infr.varspec">24.4. How can variables be specified?</a></span></dt> | | 9451 | <dt><span class="sect1"><a href="#infr.varspec">24.4. How can variables be specified?</a></span></dt> |
9452 | <dt><span class="sect1"><a href="#infr.design.intf">24.5. Designing interfaces for Makefile fragments</a></span></dt> | | 9452 | <dt><span class="sect1"><a href="#infr.design.intf">24.5. Designing interfaces for Makefile fragments</a></span></dt> |
9453 | <dd><dl> | | 9453 | <dd><dl> |
9454 | <dt><span class="sect2"><a href="#infr.design.intf.proc">24.5.1. Procedures with parameters</a></span></dt> | | 9454 | <dt><span class="sect2"><a href="#infr.design.intf.proc">24.5.1. Procedures with parameters</a></span></dt> |
9455 | <dt><span class="sect2"><a href="#infr.design.intf.action">24.5.2. Actions taken on behalf of parameters</a></span></dt> | | 9455 | <dt><span class="sect2"><a href="#infr.design.intf.action">24.5.2. Actions taken on behalf of parameters</a></span></dt> |
9456 | </dl></dd> | | 9456 | </dl></dd> |
9457 | <dt><span class="sect1"><a href="#infr.order">24.6. The order in which files are loaded</a></span></dt> | | 9457 | <dt><span class="sect1"><a href="#infr.order">24.6. The order in which files are loaded</a></span></dt> |
9458 | <dd><dl> | | 9458 | <dd><dl> |
9459 | <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> | | 9459 | <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> |
9460 | <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> | | 9460 | <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> |
9461 | </dl></dd> | | 9461 | </dl></dd> |
9462 | </dl> | | 9462 | </dl> |
9463 | </div> | | 9463 | </div> |
9464 | <p>The pkgsrc infrastructure consists of many small Makefile | | 9464 | <p>The pkgsrc infrastructure consists of many small Makefile |
9465 | fragments. Each such fragment needs a properly specified | | 9465 | fragments. Each such fragment needs a properly specified |
9466 | interface. This chapter explains how such an interface looks | | 9466 | interface. This chapter explains how such an interface looks |
9467 | like.</p> | | 9467 | like.</p> |
9468 | <div class="sect1"> | | 9468 | <div class="sect1"> |
9469 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9469 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9470 | <a name="infr.vardef"></a>24.1. The meaning of variable definitions</h2></div></div></div> | | 9470 | <a name="infr.vardef"></a>24.1. The meaning of variable definitions</h2></div></div></div> |
9471 | <p>Whenever a variable is defined in the pkgsrc | | 9471 | <p>Whenever a variable is defined in the pkgsrc |
9472 | infrastructure, the location and the way of definition provide | | 9472 | infrastructure, the location and the way of definition provide |
9473 | much information about the intended use of that variable. | | 9473 | much information about the intended use of that variable. |
9474 | Additionally, more documentation may be found in a header | | 9474 | Additionally, more documentation may be found in a header |
9475 | comment or in this pkgsrc guide.</p> | | 9475 | comment or in this pkgsrc guide.</p> |
9476 | <p>A special file is | | 9476 | <p>A special file is |
9477 | <code class="filename">mk/defaults/mk.conf</code>, which lists all | | 9477 | <code class="filename">mk/defaults/mk.conf</code>, which lists all |
9478 | variables that are intended to be user-defined. They are either | | 9478 | variables that are intended to be user-defined. They are either |
9479 | defined using the <code class="literal">?=</code> operator or they are | | 9479 | defined using the <code class="literal">?=</code> operator or they are |
9480 | left undefined because defining them to anything would | | 9480 | left undefined because defining them to anything would |
9481 | effectively mean <span class="quote">“<span class="quote">yes</span>”</span>. All these variables may be | | 9481 | effectively mean <span class="quote">“<span class="quote">yes</span>”</span>. All these variables may be |
9482 | overridden by the pkgsrc user in the <code class="varname">MAKECONF</code> | | 9482 | overridden by the pkgsrc user in the <code class="varname">MAKECONF</code> |
9483 | file.</p> | | 9483 | file.</p> |
9484 | <p>Outside this file, the following conventions apply: | | 9484 | <p>Outside this file, the following conventions apply: |
9485 | Variables that are defined using the <code class="literal">?=</code> | | 9485 | Variables that are defined using the <code class="literal">?=</code> |
9486 | operator may be overridden by a package.</p> | | 9486 | operator may be overridden by a package.</p> |
9487 | <p>Variables that are defined using the <code class="literal">=</code> | | 9487 | <p>Variables that are defined using the <code class="literal">=</code> |
9488 | operator may be used read-only at run-time.</p> | | 9488 | operator may be used read-only at run-time.</p> |
9489 | <p>Variables whose name starts with an underscore must not be | | 9489 | <p>Variables whose name starts with an underscore must not be |
9490 | accessed outside the pkgsrc infrastructure at all. They may | | 9490 | accessed outside the pkgsrc infrastructure at all. They may |
9491 | change without further notice.</p> | | 9491 | change without further notice.</p> |
9492 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 9492 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
9493 | <h3 class="title">Note</h3> | | 9493 | <h3 class="title">Note</h3> |
9494 | <p>These conventions are currently not applied | | 9494 | <p>These conventions are currently not applied |
9495 | consistently to the complete pkgsrc | | 9495 | consistently to the complete pkgsrc |
9496 | infrastructure.</p> | | 9496 | infrastructure.</p> |
9497 | </div> | | 9497 | </div> |
9498 | </div> | | 9498 | </div> |
9499 | <div class="sect1"> | | 9499 | <div class="sect1"> |
9500 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9500 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9501 | <a name="infr.vardef.problems"></a>24.2. Avoiding problems before they arise</h2></div></div></div> | | 9501 | <a name="infr.vardef.problems"></a>24.2. Avoiding problems before they arise</h2></div></div></div> |
9502 | <p>All variables that contain lists of things should default | | 9502 | <p>All variables that contain lists of things should default |
9503 | to being empty. Two examples that do not follow this rule are | | 9503 | to being empty. Two examples that do not follow this rule are |
9504 | <code class="varname">USE_LANGUAGES</code> and | | 9504 | <code class="varname">USE_LANGUAGES</code> and |
9505 | <code class="varname">DISTFILES</code>. These variables cannot simply be | | 9505 | <code class="varname">DISTFILES</code>. These variables cannot simply be |
9506 | modified using the <code class="literal">+=</code> operator in package | | 9506 | modified using the <code class="literal">+=</code> operator in package |
9507 | <code class="filename">Makefile</code>s (or other files included by | | 9507 | <code class="filename">Makefile</code>s (or other files included by |
9508 | them), since there is no guarantee whether the variable is | | 9508 | them), since there is no guarantee whether the variable is |
9509 | already set or not, and what its value is. In the case of | | 9509 | already set or not, and what its value is. In the case of |
9510 | <code class="varname">DISTFILES</code>, the packages <span class="quote">“<span class="quote">know</span>”</span> | | 9510 | <code class="varname">DISTFILES</code>, the packages <span class="quote">“<span class="quote">know</span>”</span> |
9511 | the default value and just define it as in the following | | 9511 | the default value and just define it as in the following |
9512 | example.</p> | | 9512 | example.</p> |
9513 | <pre class="programlisting"> | | 9513 | <pre class="programlisting"> |
9514 | DISTFILES= ${DISTNAME}${EXTRACT_SUFX} additional-files.tar.gz | | 9514 | DISTFILES= ${DISTNAME}${EXTRACT_SUFX} additional-files.tar.gz |
9515 | </pre> | | 9515 | </pre> |
9516 | <p>Because of the selection of this default value, the same | | 9516 | <p>Because of the selection of this default value, the same |
9517 | value appears in many package Makefiles. Similarly for | | 9517 | value appears in many package Makefiles. Similarly for |
9518 | <code class="varname">USE_LANGUAGES</code>, but in this case the default | | 9518 | <code class="varname">USE_LANGUAGES</code>, but in this case the default |
9519 | value (<span class="quote">“<span class="quote"><code class="literal">c</code></span>”</span>) is so short that it | | 9519 | value (<span class="quote">“<span class="quote"><code class="literal">c</code></span>”</span>) is so short that it |
9520 | doesn't stand out. Nevertheless it is mentioned in many | | 9520 | doesn't stand out. Nevertheless it is mentioned in many |
9521 | files.</p> | | 9521 | files.</p> |
9522 | </div> | | 9522 | </div> |
9523 | <div class="sect1"> | | 9523 | <div class="sect1"> |
9524 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9524 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9525 | <a name="infr.var"></a>24.3. Variable evaluation</h2></div></div></div> | | 9525 | <a name="infr.var"></a>24.3. Variable evaluation</h2></div></div></div> |
9526 | <div class="sect2"> | | 9526 | <div class="sect2"> |
9527 | <div class="titlepage"><div><div><h3 class="title"> | | 9527 | <div class="titlepage"><div><div><h3 class="title"> |
9528 | <a name="infr.var.load"></a>24.3.1. At load time</h3></div></div></div> | | 9528 | <a name="infr.var.load"></a>24.3.1. At load time</h3></div></div></div> |
9529 | <p>Variable evaluation takes place either at load time or at | | 9529 | <p>Variable evaluation takes place either at load time or at |
9530 | runtime, depending on the context in which they occur. The | | 9530 | runtime, depending on the context in which they occur. The |
9531 | contexts where variables are evaluated at load time are:</p> | | 9531 | contexts where variables are evaluated at load time are:</p> |
9532 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 9532 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
9533 | <li class="listitem"><p>The right hand side of the <code class="literal">:=</code> | | 9533 | <li class="listitem"><p>The right hand side of the <code class="literal">:=</code> |
9534 | and <code class="literal">!=</code> operators,</p></li> | | 9534 | and <code class="literal">!=</code> operators,</p></li> |
9535 | <li class="listitem"><p>Make directives like <code class="literal">.if</code> or | | 9535 | <li class="listitem"><p>Make directives like <code class="literal">.if</code> or |
9536 | <code class="literal">.for</code>,</p></li> | | 9536 | <code class="literal">.for</code>,</p></li> |
9537 | <li class="listitem"><p>Dependency lines.</p></li> | | 9537 | <li class="listitem"><p>Dependency lines.</p></li> |
9538 | </ul></div> | | 9538 | </ul></div> |
9539 | <p>A special exception are references to the iteration | | 9539 | <p>A special exception are references to the iteration |
9540 | variables of <code class="literal">.for</code> loops, which are expanded | | 9540 | variables of <code class="literal">.for</code> loops, which are expanded |
9541 | inline, no matter in which context they appear.</p> | | 9541 | inline, no matter in which context they appear.</p> |
9542 | <p>As the values of variables may change during load time, | | 9542 | <p>As the values of variables may change during load time, |
9543 | care must be taken not to evaluate them by accident. Typical | | 9543 | care must be taken not to evaluate them by accident. Typical |
9544 | examples for variables that should not be evaluated at load time | | 9544 | examples for variables that should not be evaluated at load time |
9545 | are <code class="varname">DEPENDS</code> and | | 9545 | are <code class="varname">DEPENDS</code> and |
9546 | <code class="varname">CONFIGURE_ARGS</code>. To make the effect more | | 9546 | <code class="varname">CONFIGURE_ARGS</code>. To make the effect more |
9547 | clear, here is an example:</p> | | 9547 | clear, here is an example:</p> |
9548 | <pre class="programlisting"> | | 9548 | <pre class="programlisting"> |
9549 | CONFIGURE_ARGS= # none | | 9549 | CONFIGURE_ARGS= # none |
9550 | CFLAGS= -O | | 9550 | CFLAGS= -O |
9551 | CONFIGURE_ARGS+= CFLAGS=${CFLAGS:Q} | | 9551 | CONFIGURE_ARGS+= CFLAGS=${CFLAGS:Q} |
9552 | | | 9552 | |
9553 | CONFIGURE_ARGS:= ${CONFIGURE_ARGS} | | 9553 | CONFIGURE_ARGS:= ${CONFIGURE_ARGS} |
9554 | | | 9554 | |
9555 | CFLAGS+= -Wall | | 9555 | CFLAGS+= -Wall |
9556 | </pre> | | 9556 | </pre> |
9557 | <p>This code shows how the use of the <code class="literal">:=</code> | | 9557 | <p>This code shows how the use of the <code class="literal">:=</code> |
9558 | operator can quickly lead to unexpected results. The first | | 9558 | operator can quickly lead to unexpected results. The first |
9559 | paragraph is fairly common code. The second paragraph evaluates | | 9559 | paragraph is fairly common code. The second paragraph evaluates |
9560 | the <code class="varname">CONFIGURE_ARGS</code> variable, which results in | | 9560 | the <code class="varname">CONFIGURE_ARGS</code> variable, which results in |
9561 | <code class="literal">CFLAGS=-O</code>. In the third paragraph, the | | 9561 | <code class="literal">CFLAGS=-O</code>. In the third paragraph, the |
9562 | <code class="literal">-Wall</code> is appended to the | | 9562 | <code class="literal">-Wall</code> is appended to the |
9563 | <code class="varname">CFLAGS</code>, but this addition will not appear in | | 9563 | <code class="varname">CFLAGS</code>, but this addition will not appear in |
9564 | <code class="varname">CONFIGURE_ARGS</code>. In actual code, the three | | 9564 | <code class="varname">CONFIGURE_ARGS</code>. In actual code, the three |
9565 | paragraphs from above typically occur in completely unrelated | | 9565 | paragraphs from above typically occur in completely unrelated |
9566 | files.</p> | | 9566 | files.</p> |
9567 | </div> | | 9567 | </div> |
9568 | <div class="sect2"> | | 9568 | <div class="sect2"> |
9569 | <div class="titlepage"><div><div><h3 class="title"> | | 9569 | <div class="titlepage"><div><div><h3 class="title"> |
9570 | <a name="infr.var.run"></a>24.3.2. At runtime</h3></div></div></div> | | 9570 | <a name="infr.var.run"></a>24.3.2. At runtime</h3></div></div></div> |
9571 | <p>After all the files have been loaded, the values of the | | 9571 | <p>After all the files have been loaded, the values of the |
9572 | variables cannot be changed anymore. Variables that are used in | | 9572 | variables cannot be changed anymore. Variables that are used in |
9573 | the shell commands are expanded at this point.</p> | | 9573 | the shell commands are expanded at this point.</p> |
9574 | </div> | | 9574 | </div> |
9575 | </div> | | 9575 | </div> |
9576 | <div class="sect1"> | | 9576 | <div class="sect1"> |
9577 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9577 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9578 | <a name="infr.varspec"></a>24.4. How can variables be specified?</h2></div></div></div> | | 9578 | <a name="infr.varspec"></a>24.4. How can variables be specified?</h2></div></div></div> |
9579 | <p>There are many ways in which the definition and use of a | | 9579 | <p>There are many ways in which the definition and use of a |
9580 | variable can be restricted in order to detect bugs and violations | | 9580 | variable can be restricted in order to detect bugs and violations |
9581 | of the (mostly unwritten) policies. A package can be checked with | | 9581 | of the (mostly unwritten) policies. A package can be checked with |
9582 | <code class="literal">pkglint -Wall</code> to see whether it meets these | | 9582 | <code class="literal">pkglint -Wall</code> to see whether it meets these |
9583 | rules.</p> | | 9583 | rules.</p> |
9584 | </div> | | 9584 | </div> |
9585 | <div class="sect1"> | | 9585 | <div class="sect1"> |
9586 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9586 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9587 | <a name="infr.design.intf"></a>24.5. Designing interfaces for Makefile fragments</h2></div></div></div> | | 9587 | <a name="infr.design.intf"></a>24.5. Designing interfaces for Makefile fragments</h2></div></div></div> |
9588 | <p>Most of the <code class="filename">.mk</code> files fall into one | | 9588 | <p>Most of the <code class="filename">.mk</code> files fall into one |
9589 | of the following classes. Cases where a file falls into more | | 9589 | of the following classes. Cases where a file falls into more |
9590 | than one class should be avoided as it often leads to subtle | | 9590 | than one class should be avoided as it often leads to subtle |
9591 | bugs.</p> | | 9591 | bugs.</p> |
9592 | <div class="sect2"> | | 9592 | <div class="sect2"> |
9593 | <div class="titlepage"><div><div><h3 class="title"> | | 9593 | <div class="titlepage"><div><div><h3 class="title"> |
9594 | <a name="infr.design.intf.proc"></a>24.5.1. Procedures with parameters</h3></div></div></div> | | 9594 | <a name="infr.design.intf.proc"></a>24.5.1. Procedures with parameters</h3></div></div></div> |
9595 | <p>In a traditional imperative programming language some of | | 9595 | <p>In a traditional imperative programming language some of |
9596 | the <code class="filename">.mk</code> files could be described as | | 9596 | the <code class="filename">.mk</code> files could be described as |
9597 | procedures. They take some input parameters and—after | | 9597 | procedures. They take some input parameters and—after |
9598 | inclusion—provide a result in output parameters. Since all | | 9598 | inclusion—provide a result in output parameters. Since all |
9599 | variables in <code class="filename">Makefile</code>s have global scope | | 9599 | variables in <code class="filename">Makefile</code>s have global scope |
9600 | care must be taken not to use parameter names that have already | | 9600 | care must be taken not to use parameter names that have already |
9601 | another meaning. For example, <code class="varname">PKGNAME</code> is a | | 9601 | another meaning. For example, <code class="varname">PKGNAME</code> is a |
9602 | bad choice for a parameter name.</p> | | 9602 | bad choice for a parameter name.</p> |
9603 | <p>Procedures are completely evaluated at preprocessing time. | | 9603 | <p>Procedures are completely evaluated at preprocessing time. |
9604 | That is, when calling a procedure all input parameters must be | | 9604 | That is, when calling a procedure all input parameters must be |
9605 | completely resolvable. For example, | | 9605 | completely resolvable. For example, |
9606 | <code class="varname">CONFIGURE_ARGS</code> should never be an input | | 9606 | <code class="varname">CONFIGURE_ARGS</code> should never be an input |
9607 | parameter since it is very likely that further text will be | | 9607 | parameter since it is very likely that further text will be |
9608 | added after calling the procedure, which would effectively apply | | 9608 | added after calling the procedure, which would effectively apply |
9609 | the procedure to only a part of the variable. Also, references | | 9609 | the procedure to only a part of the variable. Also, references |
9610 | to other variables will be modified after calling the | | 9610 | to other variables will be modified after calling the |
9611 | procedure.</p> | | 9611 | procedure.</p> |
9612 | <p>A procedure can declare its output parameters either as | | 9612 | <p>A procedure can declare its output parameters either as |
9613 | suitable for use in preprocessing directives or as only | | 9613 | suitable for use in preprocessing directives or as only |
9614 | available at runtime. The latter alternative is for variables | | 9614 | available at runtime. The latter alternative is for variables |
9615 | that contain references to other runtime variables.</p> | | 9615 | that contain references to other runtime variables.</p> |
9616 | <p>Procedures shall be written such that it is possible to | | 9616 | <p>Procedures shall be written such that it is possible to |
9617 | call the procedure more than once. That is, the file must not | | 9617 | call the procedure more than once. That is, the file must not |
9618 | contain multiple-inclusion guards.</p> | | 9618 | contain multiple-inclusion guards.</p> |
9619 | <p>Examples for procedures are | | 9619 | <p>Examples for procedures are |
9620 | <code class="filename">mk/bsd.options.mk</code> and | | 9620 | <code class="filename">mk/bsd.options.mk</code> and |
9621 | <code class="filename">mk/buildlink3/bsd.builtin.mk</code>. To express | | 9621 | <code class="filename">mk/buildlink3/bsd.builtin.mk</code>. To express |
9622 | that the parameters are evaluated at load time, they should be | | 9622 | that the parameters are evaluated at load time, they should be |
9623 | assigned using the <code class="literal">:=</code> operator, which should | | 9623 | assigned using the <code class="literal">:=</code> operator, which should |
9624 | be used only for this purpose.</p> | | 9624 | be used only for this purpose.</p> |
9625 | </div> | | 9625 | </div> |
9626 | <div class="sect2"> | | 9626 | <div class="sect2"> |
9627 | <div class="titlepage"><div><div><h3 class="title"> | | 9627 | <div class="titlepage"><div><div><h3 class="title"> |
9628 | <a name="infr.design.intf.action"></a>24.5.2. Actions taken on behalf of parameters</h3></div></div></div> | | 9628 | <a name="infr.design.intf.action"></a>24.5.2. Actions taken on behalf of parameters</h3></div></div></div> |
9629 | <p>Action files take some input parameters and may define | | 9629 | <p>Action files take some input parameters and may define |
9630 | runtime variables. They shall not define loadtime variables. | | 9630 | runtime variables. They shall not define loadtime variables. |
9631 | There are action files that are included implicitly by the | | 9631 | There are action files that are included implicitly by the |
9632 | pkgsrc infrastructure, while other must be included | | 9632 | pkgsrc infrastructure, while other must be included |
9633 | explicitly.</p> | | 9633 | explicitly.</p> |
9634 | <p>An example for action files is | | 9634 | <p>An example for action files is |
9635 | <code class="filename">mk/subst.mk</code>.</p> | | 9635 | <code class="filename">mk/subst.mk</code>.</p> |
9636 | </div> | | 9636 | </div> |
9637 | </div> | | 9637 | </div> |
9638 | <div class="sect1"> | | 9638 | <div class="sect1"> |
9639 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9639 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9640 | <a name="infr.order"></a>24.6. The order in which files are loaded</h2></div></div></div> | | 9640 | <a name="infr.order"></a>24.6. The order in which files are loaded</h2></div></div></div> |
9641 | <p>Package <code class="filename">Makefile</code>s usually consist of | | 9641 | <p>Package <code class="filename">Makefile</code>s usually consist of |
9642 | a set of variable definitions, and include the file | | 9642 | a set of variable definitions, and include the file |
9643 | <code class="filename">../../mk/bsd.pkg.mk</code> in the very last line. | | 9643 | <code class="filename">../../mk/bsd.pkg.mk</code> in the very last line. |
9644 | Before that, they may also include various other | | 9644 | Before that, they may also include various other |
9645 | <code class="filename">*.mk</code> files if they need to query the | | 9645 | <code class="filename">*.mk</code> files if they need to query the |
9646 | availability of certain features like the type of compiler or | | 9646 | availability of certain features like the type of compiler or |
9647 | the X11 implementation. Due to the heavy use of preprocessor | | 9647 | the X11 implementation. Due to the heavy use of preprocessor |
9648 | directives like <code class="literal">.if</code> and | | 9648 | directives like <code class="literal">.if</code> and |
9649 | <code class="literal">.for</code>, the order in which the files are loaded | | 9649 | <code class="literal">.for</code>, the order in which the files are loaded |
9650 | matters.</p> | | 9650 | matters.</p> |
9651 | <p>This section describes at which point the various files | | 9651 | <p>This section describes at which point the various files |
9652 | are loaded and gives reasons for that order.</p> | | 9652 | are loaded and gives reasons for that order.</p> |
9653 | <div class="sect2"> | | 9653 | <div class="sect2"> |
9654 | <div class="titlepage"><div><div><h3 class="title"> | | 9654 | <div class="titlepage"><div><div><h3 class="title"> |
9655 | <a name="infr.order.prefs"></a>24.6.1. The order in <code class="filename">bsd.prefs.mk</code> | | 9655 | <a name="infr.order.prefs"></a>24.6.1. The order in <code class="filename">bsd.prefs.mk</code> |
9656 | </h3></div></div></div> | | 9656 | </h3></div></div></div> |
9657 | <p>The very first action in <code class="filename">bsd.prefs.mk</code> | | 9657 | <p>The very first action in <code class="filename">bsd.prefs.mk</code> |
9658 | is to define some essential variables like | | 9658 | is to define some essential variables like |
9659 | <code class="varname">OPSYS</code>, <code class="varname">OS_VERSION</code> and | | 9659 | <code class="varname">OPSYS</code>, <code class="varname">OS_VERSION</code> and |
9660 | <code class="varname">MACHINE_ARCH</code>.</p> | | 9660 | <code class="varname">MACHINE_ARCH</code>.</p> |
9661 | <p>Then, the user settings are loaded from the file specified | | 9661 | <p>Then, the user settings are loaded from the file specified |
9662 | in <code class="varname">MAKECONF</code>, which is usually <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. | | 9662 | in <code class="varname">MAKECONF</code>, which is usually <a class="link" href="#mk.conf"><code class="filename">mk.conf</code></a>. |
9663 | After that, those variables | | 9663 | After that, those variables |
9664 | that have not been overridden by the user are loaded from | | 9664 | that have not been overridden by the user are loaded from |
9665 | <code class="filename">mk/defaults/mk.conf</code>.</p> | | 9665 | <code class="filename">mk/defaults/mk.conf</code>.</p> |
9666 | <p>After the user settings, the system settings and platform | | 9666 | <p>After the user settings, the system settings and platform |
9667 | settings are loaded, which may override the user | | 9667 | settings are loaded, which may override the user |
9668 | settings.</p> | | 9668 | settings.</p> |
9669 | <p>Then, the tool definitions are loaded. The tool wrappers | | 9669 | <p>Then, the tool definitions are loaded. The tool wrappers |
9670 | are not yet in effect. This only happens when building a | | 9670 | are not yet in effect. This only happens when building a |
9671 | package, so the proper variables must be used instead of the | | 9671 | package, so the proper variables must be used instead of the |
9672 | direct tool names.</p> | | 9672 | direct tool names.</p> |
9673 | <p>As the last steps, some essential variables from the | | 9673 | <p>As the last steps, some essential variables from the |
9674 | wrapper and the package system flavor are loaded, as well as the | | 9674 | wrapper and the package system flavor are loaded, as well as the |
9675 | variables that have been cached in earlier phases of a package | | 9675 | variables that have been cached in earlier phases of a package |
9676 | build.</p> | | 9676 | build.</p> |
9677 | </div> | | 9677 | </div> |
9678 | <div class="sect2"> | | 9678 | <div class="sect2"> |
9679 | <div class="titlepage"><div><div><h3 class="title"> | | 9679 | <div class="titlepage"><div><div><h3 class="title"> |
9680 | <a name="infr.order.pkg"></a>24.6.2. The order in <code class="filename">bsd.pkg.mk</code> | | 9680 | <a name="infr.order.pkg"></a>24.6.2. The order in <code class="filename">bsd.pkg.mk</code> |
9681 | </h3></div></div></div> | | 9681 | </h3></div></div></div> |
9682 | <p>First, <code class="filename">bsd.prefs.mk</code> is loaded.</p> | | 9682 | <p>First, <code class="filename">bsd.prefs.mk</code> is loaded.</p> |
9683 | <p>Then, the various <code class="filename">*-vars.mk</code> files are | | 9683 | <p>Then, the various <code class="filename">*-vars.mk</code> files are |
9684 | loaded, which fill default values for those variables that have | | 9684 | loaded, which fill default values for those variables that have |
9685 | not been defined by the package. These variables may later | | 9685 | not been defined by the package. These variables may later |
9686 | be used even in unrelated files.</p> | | 9686 | be used even in unrelated files.</p> |
9687 | <p>Then, the file <code class="filename">bsd.pkg.error.mk</code> | | 9687 | <p>Then, the file <code class="filename">bsd.pkg.error.mk</code> |
9688 | provides the target <code class="literal">error-check</code> that is added | | 9688 | provides the target <code class="literal">error-check</code> that is added |
9689 | as a special dependency to all other targets that use | | 9689 | as a special dependency to all other targets that use |
9690 | <code class="varname">DELAYED_ERROR_MSG</code> or | | 9690 | <code class="varname">DELAYED_ERROR_MSG</code> or |
9691 | <code class="varname">DELAYED_WARNING_MSG</code>.</p> | | 9691 | <code class="varname">DELAYED_WARNING_MSG</code>.</p> |
9692 | <p>Then, the package-specific hacks from | | 9692 | <p>Then, the package-specific hacks from |
9693 | <code class="filename">hacks.mk</code> are included.</p> | | 9693 | <code class="filename">hacks.mk</code> are included.</p> |
9694 | <p>Then, various other files follow. Most of them don't have | | 9694 | <p>Then, various other files follow. Most of them don't have |
9695 | any dependencies on what they need to have included before or | | 9695 | any dependencies on what they need to have included before or |
9696 | after them, though some do.</p> | | 9696 | after them, though some do.</p> |
9697 | <p>The code to check <code class="varname">PKG_FAIL_REASON</code> and | | 9697 | <p>The code to check <code class="varname">PKG_FAIL_REASON</code> and |
9698 | <code class="varname">PKG_SKIP_REASON</code> is then executed, which | | 9698 | <code class="varname">PKG_SKIP_REASON</code> is then executed, which |
9699 | restricts the use of these variables to all the files that have | | 9699 | restricts the use of these variables to all the files that have |
9700 | been included before. Appearances in later files will be | | 9700 | been included before. Appearances in later files will be |
9701 | silently ignored.</p> | | 9701 | silently ignored.</p> |
9702 | <p>Then, the files for the main targets are included, in the | | 9702 | <p>Then, the files for the main targets are included, in the |
9703 | order of later execution, though the actual order should not | | 9703 | order of later execution, though the actual order should not |
9704 | matter.</p> | | 9704 | matter.</p> |
9705 | <p>At last, some more files are included that don't set any | | 9705 | <p>At last, some more files are included that don't set any |
9706 | interesting variables but rather just define make targets to be | | 9706 | interesting variables but rather just define make targets to be |
9707 | executed.</p> | | 9707 | executed.</p> |
9708 | </div> | | 9708 | </div> |
9709 | </div> | | 9709 | </div> |
9710 | </div> | | 9710 | </div> |
9711 | <div class="chapter"> | | 9711 | <div class="chapter"> |
9712 | <div class="titlepage"><div><div><h2 class="title"> | | 9712 | <div class="titlepage"><div><div><h2 class="title"> |
9713 | <a name="regression"></a>Chapter 25. Regression tests</h2></div></div></div> | | 9713 | <a name="regression"></a>Chapter 25. Regression tests</h2></div></div></div> |
9714 | <div class="toc"> | | 9714 | <div class="toc"> |
9715 | <p><b>Table of Contents</b></p> | | 9715 | <p><b>Table of Contents</b></p> |
9716 | <dl class="toc"> | | 9716 | <dl class="toc"> |
9717 | <dt><span class="sect1"><a href="#regression.run">25.1. Running the regression tests</a></span></dt> | | 9717 | <dt><span class="sect1"><a href="#regression.run">25.1. Running the regression tests</a></span></dt> |
9718 | <dt><span class="sect1"><a href="#regression.new">25.2. Adding a new regression test</a></span></dt> | | 9718 | <dt><span class="sect1"><a href="#regression.new">25.2. Adding a new regression test</a></span></dt> |
9719 | <dd><dl> | | 9719 | <dd><dl> |
9720 | <dt><span class="sect2"><a href="#regression.fun.override">25.2.1. Overridable functions</a></span></dt> | | 9720 | <dt><span class="sect2"><a href="#regression.fun.override">25.2.1. Overridable functions</a></span></dt> |
9721 | <dt><span class="sect2"><a href="#regression.fun.helper">25.2.2. Helper functions</a></span></dt> | | 9721 | <dt><span class="sect2"><a href="#regression.fun.helper">25.2.2. Helper functions</a></span></dt> |
9722 | </dl></dd> | | 9722 | </dl></dd> |
9723 | </dl> | | 9723 | </dl> |
9724 | </div> | | 9724 | </div> |
9725 | <p>The pkgsrc infrastructure consists of a large codebase, | | 9725 | <p>The pkgsrc infrastructure consists of a large codebase, |
9726 | and there are many corners where every little bit of a file is | | 9726 | and there are many corners where every little bit of a file is |
9727 | well thought out, making pkgsrc likely to fail as soon as | | 9727 | well thought out, making pkgsrc likely to fail as soon as |
9728 | anything is changed near those parts. To prevent most changes | | 9728 | anything is changed near those parts. To prevent most changes |
9729 | from breaking anything, a suite of regression tests should go | | 9729 | from breaking anything, a suite of regression tests should go |
9730 | along with every important part of the pkgsrc infrastructure. | | 9730 | along with every important part of the pkgsrc infrastructure. |
9731 | This chapter describes how regression tests work in pkgsrc and | | 9731 | This chapter describes how regression tests work in pkgsrc and |
9732 | how you can add new tests.</p> | | 9732 | how you can add new tests.</p> |
9733 | <div class="sect1"> | | 9733 | <div class="sect1"> |
9734 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9734 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9735 | <a name="regression.run"></a>25.1. Running the regression tests</h2></div></div></div> | | 9735 | <a name="regression.run"></a>25.1. Running the regression tests</h2></div></div></div> |
9736 | <p>You first need to install the <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_regress/README.html" target="_top"><code class="filename">pkgtools/pkg_regress</code></a> package, which | | 9736 | <p>You first need to install the <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkg_regress/README.html" target="_top"><code class="filename">pkgtools/pkg_regress</code></a> package, which |
9737 | provides the <span class="command"><strong>pkg_regress</strong></span> command. Then you | | 9737 | provides the <span class="command"><strong>pkg_regress</strong></span> command. Then you |
9738 | can simply run that command, which will run all tests in the | | 9738 | can simply run that command, which will run all tests in the |
9739 | <code class="filename">regress</code> category.</p> | | 9739 | <code class="filename">regress</code> category.</p> |
9740 | </div> | | 9740 | </div> |
9741 | <div class="sect1"> | | 9741 | <div class="sect1"> |
9742 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9742 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9743 | <a name="regression.new"></a>25.2. Adding a new regression test</h2></div></div></div> | | 9743 | <a name="regression.new"></a>25.2. Adding a new regression test</h2></div></div></div> |
9744 | <p>Every directory in the <code class="filename">regress</code> | | 9744 | <p>Every directory in the <code class="filename">regress</code> |
9745 | category that contains a file called <code class="filename">spec</code> | | 9745 | category that contains a file called <code class="filename">spec</code> |
9746 | is considered a regression test. This file is a shell program | | 9746 | is considered a regression test. This file is a shell program |
9747 | that is included by the <span class="command"><strong>pkg_regress</strong></span> command. | | 9747 | that is included by the <span class="command"><strong>pkg_regress</strong></span> command. |
9748 | The following functions can be overridden to suit your | | 9748 | The following functions can be overridden to suit your |
9749 | needs.</p> | | 9749 | needs.</p> |
9750 | <div class="sect2"> | | 9750 | <div class="sect2"> |
9751 | <div class="titlepage"><div><div><h3 class="title"> | | 9751 | <div class="titlepage"><div><div><h3 class="title"> |
9752 | <a name="regression.fun.override"></a>25.2.1. Overridable functions</h3></div></div></div> | | 9752 | <a name="regression.fun.override"></a>25.2.1. Overridable functions</h3></div></div></div> |
9753 | <p>These functions do not take any parameters. Although they | | 9753 | <p>These functions do not take any parameters. Although they |
9754 | are called in <span class="quote">“<span class="quote">set -e</span>”</span> mode, they don't stop at the | | 9754 | are called in <span class="quote">“<span class="quote">set -e</span>”</span> mode, they don't stop at the |
9755 | first failing command. See <a class="ulink" href="http://stackoverflow.com/q/4072984" target="_top">this StackOverflow | | 9755 | first failing command. See <a class="ulink" href="http://stackoverflow.com/q/4072984" target="_top">this StackOverflow |
9756 | question</a> for details.</p> | | 9756 | question</a> for details.</p> |
9757 | <div class="variablelist"><dl class="variablelist"> | | 9757 | <div class="variablelist"><dl class="variablelist"> |
9758 | <dt><span class="term"><code class="varname">do_setup</code></span></dt> | | 9758 | <dt><span class="term"><code class="varname">do_setup</code></span></dt> |
9759 | <dd><p>This function prepares the environment for the | | 9759 | <dd><p>This function prepares the environment for the |
9760 | test. By default it does nothing.</p></dd> | | 9760 | test. By default it does nothing.</p></dd> |
9761 | <dt><span class="term"><code class="varname">do_test</code></span></dt> | | 9761 | <dt><span class="term"><code class="varname">do_test</code></span></dt> |
9762 | <dd> | | 9762 | <dd> |
9763 | <p>This function runs the actual test. By default, | | 9763 | <p>This function runs the actual test. By default, |
9764 | it calls <code class="varname">TEST_MAKE</code> with the arguments | | 9764 | it calls <code class="varname">TEST_MAKE</code> with the arguments |
9765 | <code class="varname">MAKEARGS_TEST</code> and writes its output including | | 9765 | <code class="varname">MAKEARGS_TEST</code> and writes its output including |
9766 | error messages into the file | | 9766 | error messages into the file |
9767 | <code class="varname">TEST_OUTFILE</code>.</p> | | 9767 | <code class="varname">TEST_OUTFILE</code>.</p> |
9768 | <p>When defining this function, make sure that all output that | | 9768 | <p>When defining this function, make sure that all output that |
9769 | needs to be checked is written to the correct output file. | | 9769 | needs to be checked is written to the correct output file. |
9770 | Example:</p> | | 9770 | Example:</p> |
9771 | <pre class="programlisting"> | | 9771 | <pre class="programlisting"> |
9772 | do_test() { | | 9772 | do_test() { |
9773 | echo "Example output" | | 9773 | echo "Example output" |
9774 | } 1>$TEST_OUTFILE 2>&1 | | 9774 | } 1>$TEST_OUTFILE 2>&1 |
9775 | </pre> | | 9775 | </pre> |
9776 | </dd> | | 9776 | </dd> |
9777 | <dt><span class="term"><code class="varname">check_result</code></span></dt> | | 9777 | <dt><span class="term"><code class="varname">check_result</code></span></dt> |
9778 | <dd> | | 9778 | <dd> |
9779 | <p>This function is run after the test and is | | 9779 | <p>This function is run after the test and is |
9780 | typically used to compare the actual output from the one that is | | 9780 | typically used to compare the actual output from the one that is |
9781 | expected. It can make use of the various helper functions from | | 9781 | expected. It can make use of the various helper functions from |
9782 | the next section. Example:</p> | | 9782 | the next section. Example:</p> |
9783 | <pre class="programlisting"> | | 9783 | <pre class="programlisting"> |
9784 | check_result() { | | 9784 | check_result() { |
9785 | exit_status 0 | | 9785 | exit_status 0 |
9786 | output_require "Example" | | 9786 | output_require "Example" |
9787 | output_require "^[[:alpha:]+[[:space:]][[:alpha:]]{6}$" | | 9787 | output_require "^[[:alpha:]+[[:space:]][[:alpha:]]{6}$" |
9788 | output_prohibit "no such file or directory" | | 9788 | output_prohibit "no such file or directory" |
9789 | } | | 9789 | } |
9790 | </pre> | | 9790 | </pre> |
9791 | </dd> | | 9791 | </dd> |
9792 | <dt><span class="term"><code class="varname">do_cleanup</code></span></dt> | | 9792 | <dt><span class="term"><code class="varname">do_cleanup</code></span></dt> |
9793 | <dd><p>This function cleans everything up after the | | 9793 | <dd><p>This function cleans everything up after the |
9794 | test has been run. By default it does nothing.</p></dd> | | 9794 | test has been run. By default it does nothing.</p></dd> |
9795 | </dl></div> | | 9795 | </dl></div> |
9796 | </div> | | 9796 | </div> |
9797 | <div class="sect2"> | | 9797 | <div class="sect2"> |
9798 | <div class="titlepage"><div><div><h3 class="title"> | | 9798 | <div class="titlepage"><div><div><h3 class="title"> |
9799 | <a name="regression.fun.helper"></a>25.2.2. Helper functions</h3></div></div></div> | | 9799 | <a name="regression.fun.helper"></a>25.2.2. Helper functions</h3></div></div></div> |
9800 | <div class="variablelist"><dl class="variablelist"> | | 9800 | <div class="variablelist"><dl class="variablelist"> |
9801 | <dt><span class="term"><code class="varname">exit_status expected</code></span></dt> | | 9801 | <dt><span class="term"><code class="varname">exit_status expected</code></span></dt> |
9802 | <dd><p>This function compares the exitcode of the | | 9802 | <dd><p>This function compares the exitcode of the |
9803 | <span class="command"><strong>do_test</strong></span> function with its first parameter. | | 9803 | <span class="command"><strong>do_test</strong></span> function with its first parameter. |
9804 | If they differ, the test will fail.</p></dd> | | 9804 | If they differ, the test will fail.</p></dd> |
9805 | <dt><span class="term"><code class="varname">output_require regex...</code></span></dt> | | 9805 | <dt><span class="term"><code class="varname">output_require regex...</code></span></dt> |
9806 | <dd> | | 9806 | <dd> |
9807 | <p>This function checks for each of its parameters | | 9807 | <p>This function checks for each of its parameters |
9808 | if the output from <span class="command"><strong>do_test</strong></span> matches the | | 9808 | if the output from <span class="command"><strong>do_test</strong></span> matches the |
9809 | extended regular expression. If it does not, the test will | | 9809 | extended regular expression. If it does not, the test will |
9810 | fail. Example:</p> | | 9810 | fail. Example:</p> |
9811 | <pre class="programlisting"> | | 9811 | <pre class="programlisting"> |
9812 | output_require "looks fine" | | 9812 | output_require "looks fine" |
9813 | output_require "^[[:alpha:]+[[:space:]][[:alpha:]]{6}$" | | 9813 | output_require "^[[:alpha:]+[[:space:]][[:alpha:]]{6}$" |
9814 | </pre> | | 9814 | </pre> |
9815 | </dd> | | 9815 | </dd> |
9816 | <dt><span class="term"><code class="varname">output_prohibit(regex...)</code></span></dt> | | 9816 | <dt><span class="term"><code class="varname">output_prohibit(regex...)</code></span></dt> |
9817 | <dd><p>This function checks for each of its parameters | | 9817 | <dd><p>This function checks for each of its parameters |
9818 | if the output from <span class="command"><strong>do_test()</strong></span> does | | 9818 | if the output from <span class="command"><strong>do_test()</strong></span> does |
9819 | <span class="emphasis"><em>not</em></span> match the extended regular expression. | | 9819 | <span class="emphasis"><em>not</em></span> match the extended regular expression. |
9820 | If any of the regular expressions matches, the test will | | 9820 | If any of the regular expressions matches, the test will |
9821 | fail.</p></dd> | | 9821 | fail.</p></dd> |
9822 | </dl></div> | | 9822 | </dl></div> |
9823 | </div> | | 9823 | </div> |
9824 | </div> | | 9824 | </div> |
9825 | </div> | | 9825 | </div> |
9826 | <div class="chapter"> | | 9826 | <div class="chapter"> |
9827 | <div class="titlepage"><div><div><h2 class="title"> | | 9827 | <div class="titlepage"><div><div><h2 class="title"> |
9828 | <a name="porting"></a>Chapter 26. Porting pkgsrc</h2></div></div></div> | | 9828 | <a name="porting"></a>Chapter 26. Porting pkgsrc</h2></div></div></div> |
9829 | <div class="toc"> | | 9829 | <div class="toc"> |
9830 | <p><b>Table of Contents</b></p> | | 9830 | <p><b>Table of Contents</b></p> |
9831 | <dl class="toc"><dt><span class="sect1"><a href="#porting.opsys">26.1. Porting pkgsrc to a new operating system</a></span></dt></dl> | | 9831 | <dl class="toc"><dt><span class="sect1"><a href="#porting.opsys">26.1. Porting pkgsrc to a new operating system</a></span></dt></dl> |
9832 | </div> | | 9832 | </div> |
9833 | <p>The pkgsrc system has already been ported to many | | 9833 | <p>The pkgsrc system has already been ported to many |
9834 | operating systems, hardware architectures and compilers. This | | 9834 | operating systems, hardware architectures and compilers. This |
9835 | chapter explains the necessary steps to make pkgsrc even more | | 9835 | chapter explains the necessary steps to make pkgsrc even more |
9836 | portable.</p> | | 9836 | portable.</p> |
9837 | <div class="sect1"> | | 9837 | <div class="sect1"> |
9838 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9838 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9839 | <a name="porting.opsys"></a>26.1. Porting pkgsrc to a new operating system</h2></div></div></div> | | 9839 | <a name="porting.opsys"></a>26.1. Porting pkgsrc to a new operating system</h2></div></div></div> |
9840 | <p>To port pkgsrc to a new operating system (called | | 9840 | <p>To port pkgsrc to a new operating system (called |
9841 | <code class="literal">MyOS</code> in this example), you need to touch the | | 9841 | <code class="literal">MyOS</code> in this example), you need to touch the |
9842 | following files:</p> | | 9842 | following files:</p> |
9843 | <div class="variablelist"><dl class="variablelist"> | | 9843 | <div class="variablelist"><dl class="variablelist"> |
9844 | <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> | | 9844 | <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> |
9845 | <dd><p>This file contains some basic definitions, for | | 9845 | <dd><p>This file contains some basic definitions, for |
9846 | example the name of the C | | 9846 | example the name of the C |
9847 | compiler.</p></dd> | | 9847 | compiler.</p></dd> |
9848 | <dt><span class="term"><code class="filename">mk/bsd.prefs.mk</code></span></dt> | | 9848 | <dt><span class="term"><code class="filename">mk/bsd.prefs.mk</code></span></dt> |
9849 | <dd><p>Insert code that defines the variables | | 9849 | <dd><p>Insert code that defines the variables |
9850 | <code class="varname">OPSYS</code>, <code class="varname">OS_VERSION</code>, | | 9850 | <code class="varname">OPSYS</code>, <code class="varname">OS_VERSION</code>, |
9851 | <code class="varname">LOWER_OS_VERSION</code>, | | 9851 | <code class="varname">LOWER_OS_VERSION</code>, |
9852 | <code class="varname">LOWER_VENDOR</code>, | | 9852 | <code class="varname">LOWER_VENDOR</code>, |
9853 | <code class="varname">MACHINE_ARCH</code>, <code class="varname">OBJECT_FMT</code>, | | 9853 | <code class="varname">MACHINE_ARCH</code>, <code class="varname">OBJECT_FMT</code>, |
9854 | <code class="varname">APPEND_ELF</code>, and the other variables that | | 9854 | <code class="varname">APPEND_ELF</code>, and the other variables that |
9855 | appear in this file.</p></dd> | | 9855 | appear in this file.</p></dd> |
9856 | <dt><span class="term"><code class="filename">mk/platform/<em class="replaceable"><code>MyOS</code></em>.mk</code></span></dt> | | 9856 | <dt><span class="term"><code class="filename">mk/platform/<em class="replaceable"><code>MyOS</code></em>.mk</code></span></dt> |
9857 | <dd><p>This file contains the platform-specific | | 9857 | <dd><p>This file contains the platform-specific |
9858 | definitions that are used by pkgsrc. Start by copying one of the | | 9858 | definitions that are used by pkgsrc. Start by copying one of the |
9859 | other files and edit it to your | | 9859 | other files and edit it to your |
9860 | needs.</p></dd> | | 9860 | needs.</p></dd> |
9861 | <dt><span class="term"><code class="filename">mk/tools/tools.<em class="replaceable"><code>MyOS</code></em>.mk</code></span></dt> | | 9861 | <dt><span class="term"><code class="filename">mk/tools/tools.<em class="replaceable"><code>MyOS</code></em>.mk</code></span></dt> |
9862 | <dd><p>This file defines the paths to all the tools | | 9862 | <dd><p>This file defines the paths to all the tools |
9863 | that are needed by one or the other package in pkgsrc, as well | | 9863 | that are needed by one or the other package in pkgsrc, as well |
9864 | as by pkgsrc itself. Find out where these tools are on your | | 9864 | as by pkgsrc itself. Find out where these tools are on your |
9865 | platform and add them.</p></dd> | | 9865 | platform and add them.</p></dd> |
9866 | </dl></div> | | 9866 | </dl></div> |
9867 | <p>Now, you should be able to build some basic packages, like | | 9867 | <p>Now, you should be able to build some basic packages, like |
9868 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/lang/perl5/README.html" target="_top"><code class="filename">lang/perl5</code></a>, <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/shells/bash/README.html" target="_top"><code class="filename">shells/bash</code></a>.</p> | | 9868 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/lang/perl5/README.html" target="_top"><code class="filename">lang/perl5</code></a>, <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/shells/bash/README.html" target="_top"><code class="filename">shells/bash</code></a>.</p> |
9869 | </div> | | 9869 | </div> |
9870 | </div> | | 9870 | </div> |
9871 | </div> | | 9871 | </div> |
9872 | <div class="appendix"> | | 9872 | <div class="appendix"> |
9873 | <div class="titlepage"><div><div><h1 class="title"> | | 9873 | <div class="titlepage"><div><div><h1 class="title"> |
9874 | <a name="examples"></a>Appendix A. A simple example package: bison</h1></div></div></div> | | 9874 | <a name="examples"></a>Appendix A. A simple example package: bison</h1></div></div></div> |
9875 | <div class="toc"> | | 9875 | <div class="toc"> |
9876 | <p><b>Table of Contents</b></p> | | 9876 | <p><b>Table of Contents</b></p> |
9877 | <dl class="toc"> | | 9877 | <dl class="toc"> |
9878 | <dt><span class="sect1"><a href="#example-files">A.1. files</a></span></dt> | | 9878 | <dt><span class="sect1"><a href="#example-files">A.1. files</a></span></dt> |
9879 | <dd><dl> | | 9879 | <dd><dl> |
9880 | <dt><span class="sect2"><a href="#example-Makefile">A.1.1. Makefile</a></span></dt> | | 9880 | <dt><span class="sect2"><a href="#example-Makefile">A.1.1. Makefile</a></span></dt> |
9881 | <dt><span class="sect2"><a href="#example-descr">A.1.2. DESCR</a></span></dt> | | 9881 | <dt><span class="sect2"><a href="#example-descr">A.1.2. DESCR</a></span></dt> |
9882 | <dt><span class="sect2"><a href="#example-plist">A.1.3. PLIST</a></span></dt> | | 9882 | <dt><span class="sect2"><a href="#example-plist">A.1.3. PLIST</a></span></dt> |
9883 | <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> | | 9883 | <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> |
9884 | </dl></dd> | | 9884 | </dl></dd> |
9885 | <dt><span class="sect1"><a href="#steps-for-b-i-p">A.2. Steps for building, installing, packaging</a></span></dt> | | 9885 | <dt><span class="sect1"><a href="#steps-for-b-i-p">A.2. Steps for building, installing, packaging</a></span></dt> |
9886 | </dl> | | 9886 | </dl> |
9887 | </div> | | 9887 | </div> |
9888 | <p>We checked to find a piece of software that wasn't in the packages | | 9888 | <p>We checked to find a piece of software that wasn't in the packages |
9889 | collection, and picked GNU bison. Quite why someone would want to have | | 9889 | collection, and picked GNU bison. Quite why someone would want to have |
9890 | <span class="command"><strong>bison</strong></span> when Berkeley <span class="command"><strong>yacc</strong></span> is already | | 9890 | <span class="command"><strong>bison</strong></span> when Berkeley <span class="command"><strong>yacc</strong></span> is already |
9891 | present in the tree is beyond us, but it's useful for the purposes of | | 9891 | present in the tree is beyond us, but it's useful for the purposes of |
9892 | this exercise.</p> | | 9892 | this exercise.</p> |
9893 | <div class="sect1"> | | 9893 | <div class="sect1"> |
9894 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9894 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9895 | <a name="example-files"></a>A.1. files</h2></div></div></div> | | 9895 | <a name="example-files"></a>A.1. files</h2></div></div></div> |
9896 | <div class="sect2"> | | 9896 | <div class="sect2"> |
9897 | <div class="titlepage"><div><div><h3 class="title"> | | 9897 | <div class="titlepage"><div><div><h3 class="title"> |
9898 | <a name="example-Makefile"></a>A.1.1. Makefile</h3></div></div></div> | | 9898 | <a name="example-Makefile"></a>A.1.1. Makefile</h3></div></div></div> |
9899 | <pre class="programlisting"> | | 9899 | <pre class="programlisting"> |
9900 | # $NetBSD$ | | 9900 | # $NetBSD$ |
9901 | # | | 9901 | # |
9902 | | | 9902 | |
9903 | DISTNAME= bison-1.25 | | 9903 | DISTNAME= bison-1.25 |
9904 | CATEGORIES= devel | | 9904 | CATEGORIES= devel |
9905 | MASTER_SITES= ${MASTER_SITE_GNU} | | 9905 | MASTER_SITES= ${MASTER_SITE_GNU} |
9906 | | | 9906 | |
9907 | MAINTAINER= pkgsrc-users@NetBSD.org | | 9907 | MAINTAINER= pkgsrc-users@NetBSD.org |
9908 | HOMEPAGE= http://www.gnu.org/software/bison/bison.html | | 9908 | HOMEPAGE= http://www.gnu.org/software/bison/bison.html |
9909 | COMMENT= GNU yacc clone | | 9909 | COMMENT= GNU yacc clone |
9910 | | | 9910 | |
9911 | GNU_CONFIGURE= yes | | 9911 | GNU_CONFIGURE= yes |
9912 | INFO_FILES= yes | | 9912 | INFO_FILES= yes |
9913 | | | 9913 | |
9914 | .include "../../mk/bsd.pkg.mk" | | 9914 | .include "../../mk/bsd.pkg.mk" |
9915 | </pre> | | 9915 | </pre> |
9916 | </div> | | 9916 | </div> |
9917 | <div class="sect2"> | | 9917 | <div class="sect2"> |
9918 | <div class="titlepage"><div><div><h3 class="title"> | | 9918 | <div class="titlepage"><div><div><h3 class="title"> |
9919 | <a name="example-descr"></a>A.1.2. DESCR</h3></div></div></div> | | 9919 | <a name="example-descr"></a>A.1.2. DESCR</h3></div></div></div> |
9920 | <pre class="programlisting"> | | 9920 | <pre class="programlisting"> |
9921 | GNU version of yacc. Can make re-entrant parsers, and numerous other | | 9921 | GNU version of yacc. Can make re-entrant parsers, and numerous other |
9922 | improvements. Why you would want this when Berkeley <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?yacc+1.i386+NetBSD-7.1"><span class="citerefentry"><span class="refentrytitle">yacc</span>(1)</span></a> is part | | 9922 | improvements. Why you would want this when Berkeley <a class="citerefentry" href="http://netbsd.gw.com/cgi-bin/man-cgi?yacc+1.i386+NetBSD-7.1.2"><span class="citerefentry"><span class="refentrytitle">yacc</span>(1)</span></a> is part |
9923 | of the NetBSD source tree is beyond me. | | 9923 | of the NetBSD source tree is beyond me. |
9924 | </pre> | | 9924 | </pre> |
9925 | </div> | | 9925 | </div> |
9926 | <div class="sect2"> | | 9926 | <div class="sect2"> |
9927 | <div class="titlepage"><div><div><h3 class="title"> | | 9927 | <div class="titlepage"><div><div><h3 class="title"> |
9928 | <a name="example-plist"></a>A.1.3. PLIST</h3></div></div></div> | | 9928 | <a name="example-plist"></a>A.1.3. PLIST</h3></div></div></div> |
9929 | <pre class="programlisting"> | | 9929 | <pre class="programlisting"> |
9930 | @comment $NetBSD$ | | 9930 | @comment $NetBSD$ |
9931 | bin/bison | | 9931 | bin/bison |
9932 | man/man1/bison.1.gz | | 9932 | man/man1/bison.1.gz |
9933 | share/bison.simple | | 9933 | share/bison.simple |
9934 | share/bison.hairy | | 9934 | share/bison.hairy |
9935 | </pre> | | 9935 | </pre> |
9936 | </div> | | 9936 | </div> |
9937 | <div class="sect2"> | | 9937 | <div class="sect2"> |
9938 | <div class="titlepage"><div><div><h3 class="title"> | | 9938 | <div class="titlepage"><div><div><h3 class="title"> |
9939 | <a name="checking-package-with-pkglint"></a>A.1.4. Checking a package with <span class="command"><strong>pkglint</strong></span> | | 9939 | <a name="checking-package-with-pkglint"></a>A.1.4. Checking a package with <span class="command"><strong>pkglint</strong></span> |
9940 | </h3></div></div></div> | | 9940 | </h3></div></div></div> |
9941 | <p>The NetBSD package system comes with | | 9941 | <p>The NetBSD package system comes with |
9942 | <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a> | | 9942 | <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/pkgtools/pkglint/README.html" target="_top"><code class="filename">pkgtools/pkglint</code></a> |
9943 | which helps to check the contents of these | | 9943 | which helps to check the contents of these |
9944 | files. After installation it is quite easy to use, just change to the | | 9944 | files. After installation it is quite easy to use, just change to the |
9945 | directory of the package you wish to examine and execute | | 9945 | directory of the package you wish to examine and execute |
9946 | <span class="command"><strong>pkglint</strong></span>:</p> | | 9946 | <span class="command"><strong>pkglint</strong></span>:</p> |
9947 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>pkglint</code></strong> | | 9947 | <pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>pkglint</code></strong> |
9948 | looks fine.</pre> | | 9948 | looks fine.</pre> |
9949 | <p>Depending on the supplied command line arguments (see pkglint(1)), | | 9949 | <p>Depending on the supplied command line arguments (see pkglint(1)), |
9950 | more checks will be performed. Use e.g. <span class="command"><strong>pkglint -Call | | 9950 | more checks will be performed. Use e.g. <span class="command"><strong>pkglint -Call |
9951 | -Wall</strong></span> for a very thorough check.</p> | | 9951 | -Wall</strong></span> for a very thorough check.</p> |
9952 | </div> | | 9952 | </div> |
9953 | </div> | | 9953 | </div> |
9954 | <div class="sect1"> | | 9954 | <div class="sect1"> |
9955 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 9955 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
9956 | <a name="steps-for-b-i-p"></a>A.2. Steps for building, installing, packaging</h2></div></div></div> | | 9956 | <a name="steps-for-b-i-p"></a>A.2. Steps for building, installing, packaging</h2></div></div></div> |
9957 | <p>Create the directory where the package lives, | | 9957 | <p>Create the directory where the package lives, |
9958 | plus any auxiliary directories:</p> | | 9958 | plus any auxiliary directories:</p> |
9959 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>cd /usr/pkgsrc/lang</code></strong> | | 9959 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>cd /usr/pkgsrc/lang</code></strong> |
9960 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir bison</code></strong> | | 9960 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir bison</code></strong> |
9961 | <code class="prompt">#</code> <strong class="userinput"><code>cd bison</code></strong> | | 9961 | <code class="prompt">#</code> <strong class="userinput"><code>cd bison</code></strong> |
9962 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir patches</code></strong></pre> | | 9962 | <code class="prompt">#</code> <strong class="userinput"><code>mkdir patches</code></strong></pre> |
9963 | <p>Create <code class="filename">Makefile</code>, <code class="filename">DESCR</code> and | | 9963 | <p>Create <code class="filename">Makefile</code>, <code class="filename">DESCR</code> and |
9964 | <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>) | | 9964 | <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>) |
9965 | then continue with fetching the distfile:</p> | | 9965 | then continue with fetching the distfile:</p> |
9966 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make fetch</code></strong> | | 9966 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make fetch</code></strong> |
9967 | >> bison-1.25.tar.gz doesn't seem to exist on this system. | | 9967 | >> bison-1.25.tar.gz doesn't seem to exist on this system. |
9968 | >> Attempting to fetch from ftp://prep.ai.mit.edu/pub/gnu//. | | 9968 | >> Attempting to fetch from ftp://prep.ai.mit.edu/pub/gnu//. |
9969 | Requesting ftp://prep.ai.mit.edu/pub/gnu//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/) | | 9969 | Requesting ftp://prep.ai.mit.edu/pub/gnu//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/) |
9970 | ftp: Error retrieving file: 500 Internal error | | 9970 | ftp: Error retrieving file: 500 Internal error |
9971 | | | 9971 | |
9972 | >> Attempting to fetch from ftp://wuarchive.wustl.edu/systems/gnu//. | | 9972 | >> Attempting to fetch from ftp://wuarchive.wustl.edu/systems/gnu//. |
9973 | Requesting ftp://wuarchive.wustl.edu/systems/gnu//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/) | | 9973 | Requesting ftp://wuarchive.wustl.edu/systems/gnu//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/) |
9974 | ftp: Error retrieving file: 500 Internal error | | 9974 | ftp: Error retrieving file: 500 Internal error |
9975 | | | 9975 | |
9976 | >> Attempting to fetch from ftp://ftp.freebsd.org/pub/FreeBSD/distfiles//. | | 9976 | >> Attempting to fetch from ftp://ftp.freebsd.org/pub/FreeBSD/distfiles//. |
9977 | Requesting ftp://ftp.freebsd.org/pub/FreeBSD/distfiles//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/) | | 9977 | Requesting ftp://ftp.freebsd.org/pub/FreeBSD/distfiles//bison-1.25.tar.gz (via ftp://orpheus.amdahl.com:80/) |
9978 | Successfully retrieved file.</pre> | | 9978 | Successfully retrieved file.</pre> |
9979 | <p>Generate the checksum of the distfile into | | 9979 | <p>Generate the checksum of the distfile into |
9980 | <code class="filename">distinfo</code>:</p> | | 9980 | <code class="filename">distinfo</code>:</p> |
9981 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make makedistinfo</code></strong></pre> | | 9981 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make makedistinfo</code></strong></pre> |
9982 | <p>Now compile:</p> | | 9982 | <p>Now compile:</p> |
9983 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make</code></strong> | | 9983 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make</code></strong> |
9984 | >> Checksum OK for bison-1.25.tar.gz. | | 9984 | >> Checksum OK for bison-1.25.tar.gz. |
9985 | ===> Extracting for bison-1.25 | | 9985 | ===> Extracting for bison-1.25 |
9986 | ===> Patching for bison-1.25 | | 9986 | ===> Patching for bison-1.25 |
9987 | ===> Ignoring empty patch directory | | 9987 | ===> Ignoring empty patch directory |
9988 | ===> Configuring for bison-1.25 | | 9988 | ===> Configuring for bison-1.25 |
9989 | creating cache ./config.cache | | 9989 | creating cache ./config.cache |
9990 | checking for gcc... cc | | 9990 | checking for gcc... cc |
9991 | checking whether we are using GNU C... yes | | 9991 | checking whether we are using GNU C... yes |
9992 | checking for a BSD compatible install... /usr/bin/install -c -o bin -g bin | | 9992 | checking for a BSD compatible install... /usr/bin/install -c -o bin -g bin |
9993 | checking how to run the C preprocessor... cc -E | | 9993 | checking how to run the C preprocessor... cc -E |
9994 | checking for minix/config.h... no | | 9994 | checking for minix/config.h... no |
9995 | checking for POSIXized ISC... no | | 9995 | checking for POSIXized ISC... no |
9996 | checking whether cross-compiling... no | | 9996 | checking whether cross-compiling... no |
9997 | checking for ANSI C header files... yes | | 9997 | checking for ANSI C header files... yes |
9998 | checking for string.h... yes | | 9998 | checking for string.h... yes |
9999 | checking for stdlib.h... yes | | 9999 | checking for stdlib.h... yes |
10000 | checking for memory.h... yes | | 10000 | checking for memory.h... yes |
10001 | checking for working const... yes | | 10001 | checking for working const... yes |
10002 | checking for working alloca.h... no | | 10002 | checking for working alloca.h... no |
10003 | checking for alloca... yes | | 10003 | checking for alloca... yes |
10004 | checking for strerror... yes | | 10004 | checking for strerror... yes |
10005 | updating cache ./config.cache | | 10005 | updating cache ./config.cache |
10006 | creating ./config.status | | 10006 | creating ./config.status |
10007 | creating Makefile | | 10007 | creating Makefile |
10008 | ===> Building for bison-1.25 | | 10008 | ===> Building for bison-1.25 |
10009 | 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 | | 10009 | 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 |
10010 | 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 | | 10010 | 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 |
10011 | 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 | | 10011 | 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 |
10012 | 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 | | 10012 | 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 |
10013 | 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 | | 10013 | 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 |
10014 | 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 | | 10014 | 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 |
10015 | 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 | | 10015 | 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 |
10016 | 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 | | 10016 | 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 |
10017 | 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 | | 10017 | 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 |
10018 | 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 | | 10018 | 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 |
10019 | 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 | | 10019 | 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 |
10020 | 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 | | 10020 | 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 |
10021 | 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 | | 10021 | 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 |
10022 | 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 | | 10022 | 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 |
10023 | 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 | | 10023 | 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 |
10024 | 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 | | 10024 | 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 |
10025 | 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 | | 10025 | 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 |
10026 | 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 | | 10026 | 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 |
10027 | 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 | | 10027 | 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 |
10028 | 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 | | 10028 | 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 |
10029 | 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 | | 10029 | 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 |
10030 | 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 | | 10030 | 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 |
10031 | ./files.c:240: warning: mktemp() possibly used unsafely, consider using mkstemp() | | 10031 | ./files.c:240: warning: mktemp() possibly used unsafely, consider using mkstemp() |
10032 | rm -f bison.s1 | | 10032 | rm -f bison.s1 |
10033 | sed -e "/^#line/ s|bison|/usr/pkg/share/bison|" < ./bison.simple > bison.s1</pre> | | 10033 | sed -e "/^#line/ s|bison|/usr/pkg/share/bison|" < ./bison.simple > bison.s1</pre> |
10034 | <p>Everything seems OK, so install the files:</p> | | 10034 | <p>Everything seems OK, so install the files:</p> |
10035 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make install</code></strong> | | 10035 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make install</code></strong> |
10036 | >> Checksum OK for bison-1.25.tar.gz. | | 10036 | >> Checksum OK for bison-1.25.tar.gz. |
10037 | ===> Installing for bison-1.25 | | 10037 | ===> Installing for bison-1.25 |
10038 | sh ./mkinstalldirs /usr/pkg/bin /usr/pkg/share /usr/pkg/info /usr/pkg/man/man1 | | 10038 | sh ./mkinstalldirs /usr/pkg/bin /usr/pkg/share /usr/pkg/info /usr/pkg/man/man1 |
10039 | rm -f /usr/pkg/bin/bison | | 10039 | rm -f /usr/pkg/bin/bison |
10040 | cd /usr/pkg/share; rm -f bison.simple bison.hairy | | 10040 | cd /usr/pkg/share; rm -f bison.simple bison.hairy |
10041 | rm -f /usr/pkg/man/man1/bison.1 /usr/pkg/info/bison.info* | | 10041 | rm -f /usr/pkg/man/man1/bison.1 /usr/pkg/info/bison.info* |
10042 | install -c -o bin -g bin -m 555 bison /usr/pkg/bin/bison | | 10042 | install -c -o bin -g bin -m 555 bison /usr/pkg/bin/bison |
10043 | /usr/bin/install -c -o bin -g bin -m 644 bison.s1 /usr/pkg/share/bison.simple | | 10043 | /usr/bin/install -c -o bin -g bin -m 644 bison.s1 /usr/pkg/share/bison.simple |
10044 | /usr/bin/install -c -o bin -g bin -m 644 ./bison.hairy /usr/pkg/share/bison.hairy | | 10044 | /usr/bin/install -c -o bin -g bin -m 644 ./bison.hairy /usr/pkg/share/bison.hairy |
10045 | cd .; for f in bison.info*; do /usr/bin/install -c -o bin -g bin -m 644 $f /usr/pkg/info/$f; done | | 10045 | cd .; for f in bison.info*; do /usr/bin/install -c -o bin -g bin -m 644 $f /usr/pkg/info/$f; done |
10046 | /usr/bin/install -c -o bin -g bin -m 644 ./bison.1 /usr/pkg/man/man1/bison.1 | | 10046 | /usr/bin/install -c -o bin -g bin -m 644 ./bison.1 /usr/pkg/man/man1/bison.1 |
10047 | ===> Registering installation for bison-1.25</pre> | | 10047 | ===> Registering installation for bison-1.25</pre> |
10048 | <p>You can now use bison, and also - if you decide so - remove it with | | 10048 | <p>You can now use bison, and also - if you decide so - remove it with |
10049 | <span class="command"><strong>pkg_delete bison</strong></span>. Should you decide that you want a | | 10049 | <span class="command"><strong>pkg_delete bison</strong></span>. Should you decide that you want a |
10050 | binary package, do this now:</p> | | 10050 | binary package, do this now:</p> |
10051 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make package</code></strong> | | 10051 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make package</code></strong> |
10052 | >> Checksum OK for bison-1.25.tar.gz. | | 10052 | >> Checksum OK for bison-1.25.tar.gz. |
10053 | ===> Building package for bison-1.25 | | 10053 | ===> Building package for bison-1.25 |
10054 | Creating package bison-1.25.tgz | | 10054 | Creating package bison-1.25.tgz |
10055 | Registering depends:. | | 10055 | Registering depends:. |
10056 | Creating gzip'd tar ball in '/u/pkgsrc/lang/bison/bison-1.25.tgz'</pre> | | 10056 | Creating gzip'd tar ball in '/u/pkgsrc/lang/bison/bison-1.25.tgz'</pre> |
10057 | <p>Now that you don't need the source and object files | | 10057 | <p>Now that you don't need the source and object files |
10058 | any more, clean up:</p> | | 10058 | any more, clean up:</p> |
10059 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make clean</code></strong> | | 10059 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make clean</code></strong> |
10060 | ===> Cleaning for bison-1.25</pre> | | 10060 | ===> Cleaning for bison-1.25</pre> |
10061 | </div> | | 10061 | </div> |
10062 | </div> | | 10062 | </div> |
10063 | <div class="appendix"> | | 10063 | <div class="appendix"> |
10064 | <div class="titlepage"><div><div><h1 class="title"> | | 10064 | <div class="titlepage"><div><div><h1 class="title"> |
10065 | <a name="logs"></a>Appendix B. Build logs</h1></div></div></div> | | 10065 | <a name="logs"></a>Appendix B. Build logs</h1></div></div></div> |
10066 | <div class="toc"> | | 10066 | <div class="toc"> |
10067 | <p><b>Table of Contents</b></p> | | 10067 | <p><b>Table of Contents</b></p> |
10068 | <dl class="toc"> | | 10068 | <dl class="toc"> |
10069 | <dt><span class="sect1"><a href="#logs.building">B.1. Building figlet</a></span></dt> | | 10069 | <dt><span class="sect1"><a href="#logs.building">B.1. Building figlet</a></span></dt> |
10070 | <dt><span class="sect1"><a href="#logs.package">B.2. Packaging figlet</a></span></dt> | | 10070 | <dt><span class="sect1"><a href="#logs.package">B.2. Packaging figlet</a></span></dt> |
10071 | </dl> | | 10071 | </dl> |
10072 | </div> | | 10072 | </div> |
10073 | <div class="sect1"> | | 10073 | <div class="sect1"> |
10074 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10074 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10075 | <a name="logs.building"></a>B.1. Building figlet</h2></div></div></div> | | 10075 | <a name="logs.building"></a>B.1. Building figlet</h2></div></div></div> |
10076 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make</code></strong> | | 10076 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make</code></strong> |
10077 | ===> Checking for vulnerabilities in figlet-2.2.1nb2 | | 10077 | ===> Checking for vulnerabilities in figlet-2.2.1nb2 |
10078 | => figlet221.tar.gz doesn't seem to exist on this system. | | 10078 | => figlet221.tar.gz doesn't seem to exist on this system. |
10079 | => Attempting to fetch figlet221.tar.gz from ftp://ftp.figlet.org/pub/figlet/program/unix/. | | 10079 | => Attempting to fetch figlet221.tar.gz from ftp://ftp.figlet.org/pub/figlet/program/unix/. |
10080 | => [172219 bytes] | | 10080 | => [172219 bytes] |
10081 | Connected to ftp.plig.net. | | 10081 | Connected to ftp.plig.net. |
10082 | 220 ftp.plig.org NcFTPd Server (licensed copy) ready. | | 10082 | 220 ftp.plig.org NcFTPd Server (licensed copy) ready. |
10083 | 331 Guest login ok, send your complete e-mail address as password. | | 10083 | 331 Guest login ok, send your complete e-mail address as password. |
10084 | 230-You are user #5 of 500 simultaneous users allowed. | | 10084 | 230-You are user #5 of 500 simultaneous users allowed. |
10085 | 230- | | 10085 | 230- |
10086 | 230- ___ _ _ _ | | 10086 | 230- ___ _ _ _ |
10087 | 230- | _| |_ ___ ___| |_|___ ___ ___ ___ | | 10087 | 230- | _| |_ ___ ___| |_|___ ___ ___ ___ |
10088 | 230- | _| _| . |_| . | | | . |_| . | _| . | | | 10088 | 230- | _| _| . |_| . | | | . |_| . | _| . | |
10089 | 230- |_| |_| | _|_| _|_|_|_ |_|___|_| |_ | | | 10089 | 230- |_| |_| | _|_| _|_|_|_ |_|___|_| |_ | |
10090 | 230- |_| |_| |___| |___| | | 10090 | 230- |_| |_| |___| |___| |
10091 | 230- | | 10091 | 230- |
10092 | 230-** Welcome to ftp.plig.org ** | | 10092 | 230-** Welcome to ftp.plig.org ** |
10093 | 230- | | 10093 | 230- |
10094 | 230-Please note that all transfers from this FTP site are logged. If you | | 10094 | 230-Please note that all transfers from this FTP site are logged. If you |
10095 | 230-do not like this, please disconnect now. | | 10095 | 230-do not like this, please disconnect now. |
10096 | 230- | | 10096 | 230- |
10097 | 230-This archive is available via | | 10097 | 230-This archive is available via |
10098 | 230- | | 10098 | 230- |
10099 | 230-HTTP: http://ftp.plig.org/ | | 10099 | 230-HTTP: http://ftp.plig.org/ |
10100 | 230-FTP: ftp://ftp.plig.org/ (max 500 connections) | | 10100 | 230-FTP: ftp://ftp.plig.org/ (max 500 connections) |
10101 | 230-RSYNC: rsync://ftp.plig.org/ (max 30 connections) | | 10101 | 230-RSYNC: rsync://ftp.plig.org/ (max 30 connections) |
10102 | 230- | | 10102 | 230- |
10103 | 230-Please email comments, bug reports and requests for packages to be | | 10103 | 230-Please email comments, bug reports and requests for packages to be |
10104 | 230-mirrored to ftp-admin@plig.org. | | 10104 | 230-mirrored to ftp-admin@plig.org. |
10105 | 230- | | 10105 | 230- |
10106 | 230- | | 10106 | 230- |
10107 | 230 Logged in anonymously. | | 10107 | 230 Logged in anonymously. |
10108 | Remote system type is UNIX. | | 10108 | Remote system type is UNIX. |
10109 | Using binary mode to transfer files. | | 10109 | Using binary mode to transfer files. |
10110 | 200 Type okay. | | 10110 | 200 Type okay. |
10111 | 250 "/pub" is new cwd. | | 10111 | 250 "/pub" is new cwd. |
10112 | 250-"/pub/figlet" is new cwd. | | 10112 | 250-"/pub/figlet" is new cwd. |
10113 | 250- | | 10113 | 250- |
10114 | 250-Welcome to the figlet archive at ftp.figlet.org | | 10114 | 250-Welcome to the figlet archive at ftp.figlet.org |
10115 | 250- | | 10115 | 250- |
10116 | 250- ftp://ftp.figlet.org/pub/figlet/ | | 10116 | 250- ftp://ftp.figlet.org/pub/figlet/ |
10117 | 250- | | 10117 | 250- |
10118 | 250-The official FIGlet web page is: | | 10118 | 250-The official FIGlet web page is: |
10119 | 250- http://www.figlet.org/ | | 10119 | 250- http://www.figlet.org/ |
10120 | 250- | | 10120 | 250- |
10121 | 250-If you have questions, please mailto:info@figlet.org. If you want to | | 10121 | 250-If you have questions, please mailto:info@figlet.org. If you want to |
10122 | 250-contribute a font or something else, you can email us. | | 10122 | 250-contribute a font or something else, you can email us. |
10123 | 250 | | 10123 | 250 |
10124 | 250 "/pub/figlet/program" is new cwd. | | 10124 | 250 "/pub/figlet/program" is new cwd. |
10125 | 250 "/pub/figlet/program/unix" is new cwd. | | 10125 | 250 "/pub/figlet/program/unix" is new cwd. |
10126 | local: figlet221.tar.gz remote: figlet221.tar.gz | | 10126 | local: figlet221.tar.gz remote: figlet221.tar.gz |
10127 | 502 Unimplemented command. | | 10127 | 502 Unimplemented command. |
10128 | 227 Entering Passive Mode (195,40,6,41,246,104) | | 10128 | 227 Entering Passive Mode (195,40,6,41,246,104) |
10129 | 150 Data connection accepted from 84.128.86.72:65131; transfer starting for figlet221.tar.gz (172219 bytes). | | 10129 | 150 Data connection accepted from 84.128.86.72:65131; transfer starting for figlet221.tar.gz (172219 bytes). |
10130 | 38% |************** | 65800 64.16 KB/s 00:01 ETA | | 10130 | 38% |************** | 65800 64.16 KB/s 00:01 ETA |
10131 | 226 Transfer completed. | | 10131 | 226 Transfer completed. |
10132 | 172219 bytes received in 00:02 (75.99 KB/s) | | 10132 | 172219 bytes received in 00:02 (75.99 KB/s) |
10133 | 221 Goodbye. | | 10133 | 221 Goodbye. |
10134 | => Checksum OK for figlet221.tar.gz. | | 10134 | => Checksum OK for figlet221.tar.gz. |
10135 | ===> Extracting for figlet-2.2.1nb2 | | 10135 | ===> Extracting for figlet-2.2.1nb2 |
10136 | ===> Required installed package ccache-[0-9]*: ccache-2.3nb1 found | | 10136 | ===> Required installed package ccache-[0-9]*: ccache-2.3nb1 found |
10137 | ===> Patching for figlet-2.2.1nb2 | | 10137 | ===> Patching for figlet-2.2.1nb2 |
10138 | ===> Applying pkgsrc patches for figlet-2.2.1nb2 | | 10138 | ===> Applying pkgsrc patches for figlet-2.2.1nb2 |
10139 | ===> Overriding tools for figlet-2.2.1nb2 | | 10139 | ===> Overriding tools for figlet-2.2.1nb2 |
10140 | ===> Creating toolchain wrappers for figlet-2.2.1nb2 | | 10140 | ===> Creating toolchain wrappers for figlet-2.2.1nb2 |
10141 | ===> Configuring for figlet-2.2.1nb2 | | 10141 | ===> Configuring for figlet-2.2.1nb2 |
10142 | ===> Building for figlet-2.2.1nb2 | | 10142 | ===> Building for figlet-2.2.1nb2 |
10143 | gcc -O2 -DDEFAULTFONTDIR=\"/usr/pkg/share/figlet\" -DDEFAULTFONTFILE=\"standard.flf\" figlet.c zipio.c crc.c inflate.c -o figlet | | 10143 | gcc -O2 -DDEFAULTFONTDIR=\"/usr/pkg/share/figlet\" -DDEFAULTFONTFILE=\"standard.flf\" figlet.c zipio.c crc.c inflate.c -o figlet |
10144 | chmod a+x figlet | | 10144 | chmod a+x figlet |
10145 | gcc -O2 -o chkfont chkfont.c | | 10145 | gcc -O2 -o chkfont chkfont.c |
10146 | => Unwrapping files-to-be-installed. | | 10146 | => Unwrapping files-to-be-installed. |
10147 | <code class="prompt">#</code> | | 10147 | <code class="prompt">#</code> |
10148 | <code class="prompt">#</code> <strong class="userinput"><code>make install</code></strong> | | 10148 | <code class="prompt">#</code> <strong class="userinput"><code>make install</code></strong> |
10149 | ===> Checking for vulnerabilities in figlet-2.2.1nb2 | | 10149 | ===> Checking for vulnerabilities in figlet-2.2.1nb2 |
10150 | ===> Installing for figlet-2.2.1nb2 | | 10150 | ===> Installing for figlet-2.2.1nb2 |
10151 | install -d -o root -g wheel -m 755 /usr/pkg/bin | | 10151 | install -d -o root -g wheel -m 755 /usr/pkg/bin |
10152 | install -d -o root -g wheel -m 755 /usr/pkg/man/man6 | | 10152 | install -d -o root -g wheel -m 755 /usr/pkg/man/man6 |
10153 | mkdir -p /usr/pkg/share/figlet | | 10153 | mkdir -p /usr/pkg/share/figlet |
10154 | cp figlet /usr/pkg/bin | | 10154 | cp figlet /usr/pkg/bin |
10155 | cp chkfont /usr/pkg/bin | | 10155 | cp chkfont /usr/pkg/bin |
10156 | chmod 555 figlist showfigfonts | | 10156 | chmod 555 figlist showfigfonts |
10157 | cp figlist /usr/pkg/bin | | 10157 | cp figlist /usr/pkg/bin |
10158 | cp showfigfonts /usr/pkg/bin | | 10158 | cp showfigfonts /usr/pkg/bin |
10159 | cp fonts/*.flf /usr/pkg/share/figlet | | 10159 | cp fonts/*.flf /usr/pkg/share/figlet |
10160 | cp fonts/*.flc /usr/pkg/share/figlet | | 10160 | cp fonts/*.flc /usr/pkg/share/figlet |
10161 | cp figlet.6 /usr/pkg/man/man6 | | 10161 | cp figlet.6 /usr/pkg/man/man6 |
10162 | ===> Registering installation for figlet-2.2.1nb2 | | 10162 | ===> Registering installation for figlet-2.2.1nb2 |
10163 | <code class="prompt">#</code></pre> | | 10163 | <code class="prompt">#</code></pre> |
10164 | </div> | | 10164 | </div> |
10165 | <div class="sect1"> | | 10165 | <div class="sect1"> |
10166 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10166 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10167 | <a name="logs.package"></a>B.2. Packaging figlet</h2></div></div></div> | | 10167 | <a name="logs.package"></a>B.2. Packaging figlet</h2></div></div></div> |
10168 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make package</code></strong> | | 10168 | <pre class="screen"><code class="prompt">#</code> <strong class="userinput"><code>make package</code></strong> |
10169 | ===> Checking for vulnerabilities in figlet-2.2.1nb2 | | 10169 | ===> Checking for vulnerabilities in figlet-2.2.1nb2 |
10170 | ===> Packaging figlet-2.2.1nb2 | | 10170 | ===> Packaging figlet-2.2.1nb2 |
10171 | ===> Building binary package for figlet-2.2.1nb2 | | 10171 | ===> Building binary package for figlet-2.2.1nb2 |
10172 | Creating package /home/cvs/pkgsrc/packages/i386/All/figlet-2.2.1nb2.tgz | | 10172 | Creating package /home/cvs/pkgsrc/packages/i386/All/figlet-2.2.1nb2.tgz |
10173 | Using SrcDir value of /usr/pkg | | 10173 | Using SrcDir value of /usr/pkg |
10174 | Registering depends:. | | 10174 | Registering depends:. |
10175 | <code class="prompt">#</code></pre> | | 10175 | <code class="prompt">#</code></pre> |
10176 | </div> | | 10176 | </div> |
10177 | </div> | | 10177 | </div> |
10178 | <div class="appendix"> | | 10178 | <div class="appendix"> |
10179 | <div class="titlepage"><div><div><h1 class="title"> | | 10179 | <div class="titlepage"><div><div><h1 class="title"> |
10180 | <a name="ftp-layout"></a>Appendix C. Directory layout of the pkgsrc FTP server</h1></div></div></div> | | 10180 | <a name="ftp-layout"></a>Appendix C. Directory layout of the pkgsrc FTP server</h1></div></div></div> |
10181 | <div class="toc"> | | 10181 | <div class="toc"> |
10182 | <p><b>Table of Contents</b></p> | | 10182 | <p><b>Table of Contents</b></p> |
10183 | <dl class="toc"> | | 10183 | <dl class="toc"> |
10184 | <dt><span class="sect1"><a href="#ftp-distfiles">C.1. <code class="filename">distfiles</code>: The distributed source files</a></span></dt> | | 10184 | <dt><span class="sect1"><a href="#ftp-distfiles">C.1. <code class="filename">distfiles</code>: The distributed source files</a></span></dt> |
10185 | <dt><span class="sect1"><a href="#ftp-misc">C.2. <code class="filename">misc</code>: Miscellaneous things</a></span></dt> | | 10185 | <dt><span class="sect1"><a href="#ftp-misc">C.2. <code class="filename">misc</code>: Miscellaneous things</a></span></dt> |
10186 | <dt><span class="sect1"><a href="#ftp-packages">C.3. <code class="filename">packages</code>: Binary packages</a></span></dt> | | 10186 | <dt><span class="sect1"><a href="#ftp-packages">C.3. <code class="filename">packages</code>: Binary packages</a></span></dt> |
10187 | <dt><span class="sect1"><a href="#ftp-reports">C.4. <code class="filename">reports</code>: Bulk build reports</a></span></dt> | | 10187 | <dt><span class="sect1"><a href="#ftp-reports">C.4. <code class="filename">reports</code>: Bulk build reports</a></span></dt> |
10188 | <dt><span class="sect1"><a href="#ftp-source">C.5. <code class="filename">current</code>, | | 10188 | <dt><span class="sect1"><a href="#ftp-source">C.5. <code class="filename">current</code>, |
10189 | <code class="filename">pkgsrc-20<em class="replaceable"><code>xx</code></em>Q<em class="replaceable"><code>y</code></em></code>: | | 10189 | <code class="filename">pkgsrc-20<em class="replaceable"><code>xx</code></em>Q<em class="replaceable"><code>y</code></em></code>: |
10190 | source packages</a></span></dt> | | 10190 | source packages</a></span></dt> |
10191 | </dl> | | 10191 | </dl> |
10192 | </div> | | 10192 | </div> |
10193 | <p>As in other big projects, the directory layout of pkgsrc | | 10193 | <p>As in other big projects, the directory layout of pkgsrc |
10194 | is quite complex for newbies. This chapter explains where you | | 10194 | is quite complex for newbies. This chapter explains where you |
10195 | find things on the FTP server. The base directory on | | 10195 | find things on the FTP server. The base directory on |
10196 | <code class="filename">ftp.NetBSD.org</code> is <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/" target="_top"><code class="filename">/pub/pkgsrc/</code></a>. | | 10196 | <code class="filename">ftp.NetBSD.org</code> is <a class="ulink" href="ftp://ftp.NetBSD.org/pub/pkgsrc/" target="_top"><code class="filename">/pub/pkgsrc/</code></a>. |
10197 | On other servers it may be different, but inside this directory, | | 10197 | On other servers it may be different, but inside this directory, |
10198 | everything should look the same, no matter on which server you | | 10198 | everything should look the same, no matter on which server you |
10199 | are. This directory contains some subdirectories, which are | | 10199 | are. This directory contains some subdirectories, which are |
10200 | explained below.</p> | | 10200 | explained below.</p> |
10201 | <div class="sect1"> | | 10201 | <div class="sect1"> |
10202 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10202 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10203 | <a name="ftp-distfiles"></a>C.1. <code class="filename">distfiles</code>: The distributed source files</h2></div></div></div> | | 10203 | <a name="ftp-distfiles"></a>C.1. <code class="filename">distfiles</code>: The distributed source files</h2></div></div></div> |
10204 | <p>The directory <code class="filename">distfiles</code> contains lots | | 10204 | <p>The directory <code class="filename">distfiles</code> contains lots |
10205 | of archive files from all pkgsrc packages, which are mirrored | | 10205 | of archive files from all pkgsrc packages, which are mirrored |
10206 | here. The subdirectories are called after their package names | | 10206 | here. The subdirectories are called after their package names |
10207 | and are used when the distributed files have names that don't | | 10207 | and are used when the distributed files have names that don't |
10208 | explicitly contain a version number or are otherwise too generic | | 10208 | explicitly contain a version number or are otherwise too generic |
10209 | (for example <code class="filename">release.tar.gz</code>).</p> | | 10209 | (for example <code class="filename">release.tar.gz</code>).</p> |
10210 | </div> | | 10210 | </div> |
10211 | <div class="sect1"> | | 10211 | <div class="sect1"> |
10212 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10212 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10213 | <a name="ftp-misc"></a>C.2. <code class="filename">misc</code>: Miscellaneous things</h2></div></div></div> | | 10213 | <a name="ftp-misc"></a>C.2. <code class="filename">misc</code>: Miscellaneous things</h2></div></div></div> |
10214 | <p>This directory contains things that individual pkgsrc | | 10214 | <p>This directory contains things that individual pkgsrc |
10215 | developers find worth publishing.</p> | | 10215 | developers find worth publishing.</p> |
10216 | </div> | | 10216 | </div> |
10217 | <div class="sect1"> | | 10217 | <div class="sect1"> |
10218 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10218 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10219 | <a name="ftp-packages"></a>C.3. <code class="filename">packages</code>: Binary packages</h2></div></div></div> | | 10219 | <a name="ftp-packages"></a>C.3. <code class="filename">packages</code>: Binary packages</h2></div></div></div> |
10220 | <p>This directory contains binary packages for the various | | 10220 | <p>This directory contains binary packages for the various |
10221 | platforms that are supported by pkgsrc. | | 10221 | platforms that are supported by pkgsrc. |
10222 | Each subdirectory is of the form <em class="replaceable"><code>OPSYS</code></em>/<em class="replaceable"><code>ARCH</code></em>/<em class="replaceable"><code>OSVERSION_TAG</code></em>. The meaning of these variables is:</p> | | 10222 | Each subdirectory is of the form <em class="replaceable"><code>OPSYS</code></em>/<em class="replaceable"><code>ARCH</code></em>/<em class="replaceable"><code>OSVERSION_TAG</code></em>. The meaning of these variables is:</p> |
10223 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 10223 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
10224 | <li class="listitem"><p><code class="varname">OPSYS</code> is the name of the | | 10224 | <li class="listitem"><p><code class="varname">OPSYS</code> is the name of the |
10225 | operating system for which the packages have been built. The | | 10225 | operating system for which the packages have been built. The |
10226 | name is taken from the output of the <span class="command"><strong>uname</strong></span> | | 10226 | name is taken from the output of the <span class="command"><strong>uname</strong></span> |
10227 | command, so it may differ from the one you are used to | | 10227 | command, so it may differ from the one you are used to |
10228 | hear.</p></li> | | 10228 | hear.</p></li> |
10229 | <li class="listitem"><p><code class="varname">ARCH</code> is the hardware | | 10229 | <li class="listitem"><p><code class="varname">ARCH</code> is the hardware |
10230 | architecture of the platform for which the packages have been | | 10230 | architecture of the platform for which the packages have been |
10231 | built. It also includes the <code class="varname">ABI</code> (Application | | 10231 | built. It also includes the <code class="varname">ABI</code> (Application |
10232 | Binary Interface) for platforms that have several of | | 10232 | Binary Interface) for platforms that have several of |
10233 | them.</p></li> | | 10233 | them.</p></li> |
10234 | <li class="listitem"><p><code class="varname">OSVERSION</code> is the version of | | 10234 | <li class="listitem"><p><code class="varname">OSVERSION</code> is the version of |
10235 | the operating system. For version numbers that change often (for | | 10235 | the operating system. For version numbers that change often (for |
10236 | example NetBSD-current), the often-changing part should be | | 10236 | example NetBSD-current), the often-changing part should be |
10237 | replaced with an <code class="literal">x</code>, for example | | 10237 | replaced with an <code class="literal">x</code>, for example |
10238 | <code class="literal">4.99.x</code>.</p></li> | | 10238 | <code class="literal">4.99.x</code>.</p></li> |
10239 | <li class="listitem"><p><code class="varname">TAG</code> is either | | 10239 | <li class="listitem"><p><code class="varname">TAG</code> is either |
10240 | <code class="literal">20<em class="replaceable"><code>xx</code></em>Q<em class="replaceable"><code>y</code></em></code> | | 10240 | <code class="literal">20<em class="replaceable"><code>xx</code></em>Q<em class="replaceable"><code>y</code></em></code> |
10241 | for a stable branch, or <code class="literal">head</code> for packages | | 10241 | for a stable branch, or <code class="literal">head</code> for packages |
10242 | built from the HEAD branch. The latter should only be used when | | 10242 | built from the HEAD branch. The latter should only be used when |
10243 | the packages are updated on a regular basis. Otherwise the date | | 10243 | the packages are updated on a regular basis. Otherwise the date |
10244 | from checking out pkgsrc should be appended, for example | | 10244 | from checking out pkgsrc should be appended, for example |
10245 | <code class="literal">head_20071015</code>.</p></li> | | 10245 | <code class="literal">head_20071015</code>.</p></li> |
10246 | </ul></div> | | 10246 | </ul></div> |
10247 | <p>The rationale for exactly this scheme is that the pkgsrc users looking for binary packages | | 10247 | <p>The rationale for exactly this scheme is that the pkgsrc users looking for binary packages |
10248 | can quickly click through the directories on the | | 10248 | can quickly click through the directories on the |
10249 | server and find the best binary packages for their machines. Since they | | 10249 | server and find the best binary packages for their machines. Since they |
10250 | usually know the operating system and the hardware architecture, OPSYS | | 10250 | usually know the operating system and the hardware architecture, OPSYS |
10251 | and ARCH are placed first. After these choices, they can select the | | 10251 | and ARCH are placed first. After these choices, they can select the |
10252 | best combination of OSVERSION and TAG together, since it is usually the | | 10252 | best combination of OSVERSION and TAG together, since it is usually the |
10253 | case that packages stay compatible between different version of the | | 10253 | case that packages stay compatible between different version of the |
10254 | operating system.</p> | | 10254 | operating system.</p> |
10255 | <p>In each of these directories, there is a | | 10255 | <p>In each of these directories, there is a |
10256 | whole binary packages collection for a specific platform. It has a directory called | | 10256 | whole binary packages collection for a specific platform. It has a directory called |
10257 | <code class="filename">All</code> which contains all binary packages. | | 10257 | <code class="filename">All</code> which contains all binary packages. |
10258 | Besides that, there are various category directories that | | 10258 | Besides that, there are various category directories that |
10259 | contain symbolic links to the real binary packages.</p> | | 10259 | contain symbolic links to the real binary packages.</p> |
10260 | </div> | | 10260 | </div> |
10261 | <div class="sect1"> | | 10261 | <div class="sect1"> |
10262 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10262 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10263 | <a name="ftp-reports"></a>C.4. <code class="filename">reports</code>: Bulk build reports</h2></div></div></div> | | 10263 | <a name="ftp-reports"></a>C.4. <code class="filename">reports</code>: Bulk build reports</h2></div></div></div> |
10264 | <p>Here are the reports from bulk builds, for those who want | | 10264 | <p>Here are the reports from bulk builds, for those who want |
10265 | to fix packages that didn't build on some of the platforms. The | | 10265 | to fix packages that didn't build on some of the platforms. The |
10266 | structure of subdirectories should look like the one in <a class="xref" href="#ftp-packages" title="C.3. packages: Binary packages">Section C.3, “<code class="filename">packages</code>: Binary packages”</a>.</p> | | 10266 | structure of subdirectories should look like the one in <a class="xref" href="#ftp-packages" title="C.3. packages: Binary packages">Section C.3, “<code class="filename">packages</code>: Binary packages”</a>.</p> |
10267 | </div> | | 10267 | </div> |
10268 | <div class="sect1"> | | 10268 | <div class="sect1"> |
10269 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10269 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10270 | <a name="ftp-source"></a>C.5. <code class="filename">current</code>, | | 10270 | <a name="ftp-source"></a>C.5. <code class="filename">current</code>, |
10271 | <code class="filename">pkgsrc-20<em class="replaceable"><code>xx</code></em>Q<em class="replaceable"><code>y</code></em></code>: | | 10271 | <code class="filename">pkgsrc-20<em class="replaceable"><code>xx</code></em>Q<em class="replaceable"><code>y</code></em></code>: |
10272 | source packages</h2></div></div></div> | | 10272 | source packages</h2></div></div></div> |
10273 | <p>These directories contain the <span class="quote">“<span class="quote">real</span>”</span> pkgsrc, | | 10273 | <p>These directories contain the <span class="quote">“<span class="quote">real</span>”</span> pkgsrc, |
10274 | that is the files that define how to create binary packages from | | 10274 | that is the files that define how to create binary packages from |
10275 | source archives.</p> | | 10275 | source archives.</p> |
10276 | <p>The directory <code class="filename">pkgsrc</code> contains a | | 10276 | <p>The directory <code class="filename">pkgsrc</code> contains a |
10277 | snapshot of the CVS repository, which is updated regularly. The | | 10277 | snapshot of the CVS repository, which is updated regularly. The |
10278 | file <code class="filename">pkgsrc.tar.gz</code> contains the same as the | | 10278 | file <code class="filename">pkgsrc.tar.gz</code> contains the same as the |
10279 | directory, ready to be downloaded as a whole.</p> | | 10279 | directory, ready to be downloaded as a whole.</p> |
10280 | <p>In the directories for the quarterly branches, there is an | | 10280 | <p>In the directories for the quarterly branches, there is an |
10281 | additional file called | | 10281 | additional file called |
10282 | <code class="filename">pkgsrc-20<em class="replaceable"><code>xx</code></em>Q<em class="replaceable"><code>y</code></em>.tar.gz</code>, | | 10282 | <code class="filename">pkgsrc-20<em class="replaceable"><code>xx</code></em>Q<em class="replaceable"><code>y</code></em>.tar.gz</code>, |
10283 | which contains the state of pkgsrc when it was branched.</p> | | 10283 | which contains the state of pkgsrc when it was branched.</p> |
10284 | </div> | | 10284 | </div> |
10285 | </div> | | 10285 | </div> |
10286 | <div class="appendix"> | | 10286 | <div class="appendix"> |
10287 | <div class="titlepage"><div><div><h1 class="title"> | | 10287 | <div class="titlepage"><div><div><h1 class="title"> |
10288 | <a name="editing"></a>Appendix D. Editing guidelines for the pkgsrc guide</h1></div></div></div> | | 10288 | <a name="editing"></a>Appendix D. Editing guidelines for the pkgsrc guide</h1></div></div></div> |
10289 | <div class="toc"> | | 10289 | <div class="toc"> |
10290 | <p><b>Table of Contents</b></p> | | 10290 | <p><b>Table of Contents</b></p> |
10291 | <dl class="toc"> | | 10291 | <dl class="toc"> |
10292 | <dt><span class="sect1"><a href="#targets">D.1. Make targets</a></span></dt> | | 10292 | <dt><span class="sect1"><a href="#targets">D.1. Make targets</a></span></dt> |
10293 | <dt><span class="sect1"><a href="#procedure">D.2. Procedure</a></span></dt> | | 10293 | <dt><span class="sect1"><a href="#procedure">D.2. Procedure</a></span></dt> |
10294 | </dl> | | 10294 | </dl> |
10295 | </div> | | 10295 | </div> |
10296 | <p>This section contains information on editing the pkgsrc | | 10296 | <p>This section contains information on editing the pkgsrc |
10297 | guide itself.</p> | | 10297 | guide itself.</p> |
10298 | <div class="sect1"> | | 10298 | <div class="sect1"> |
10299 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10299 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10300 | <a name="targets"></a>D.1. Make targets</h2></div></div></div> | | 10300 | <a name="targets"></a>D.1. Make targets</h2></div></div></div> |
10301 | <p>The pkgsrc guide's source code is stored in | | 10301 | <p>The pkgsrc guide's source code is stored in |
10302 | <code class="filename">pkgsrc/doc/guide/files</code>, and several files | | 10302 | <code class="filename">pkgsrc/doc/guide/files</code>, and several files |
10303 | are created from it:</p> | | 10303 | are created from it:</p> |
10304 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> | | 10304 | <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> |
10305 | <li class="listitem"><p><code class="filename">pkgsrc/doc/pkgsrc.txt</code></p></li> | | 10305 | <li class="listitem"><p><code class="filename">pkgsrc/doc/pkgsrc.txt</code></p></li> |
10306 | <li class="listitem"><p><code class="filename">pkgsrc/doc/pkgsrc.html</code></p></li> | | 10306 | <li class="listitem"><p><code class="filename">pkgsrc/doc/pkgsrc.html</code></p></li> |
10307 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/docs/pkgsrc/" target="_top">http://www.NetBSD.org/docs/pkgsrc/</a></p></li> | | 10307 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/docs/pkgsrc/" target="_top">http://www.NetBSD.org/docs/pkgsrc/</a></p></li> |
10308 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/docs/pkgsrc/pkgsrc.pdf" target="_top">http://www.NetBSD.org/docs/pkgsrc/pkgsrc.pdf</a>: | | 10308 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/docs/pkgsrc/pkgsrc.pdf" target="_top">http://www.NetBSD.org/docs/pkgsrc/pkgsrc.pdf</a>: |
10309 | The PDF version of the pkgsrc guide.</p></li> | | 10309 | The PDF version of the pkgsrc guide.</p></li> |
10310 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/docs/pkgsrc/pkgsrc.ps" target="_top">http://www.NetBSD.org/docs/pkgsrc/pkgsrc.ps</a>: | | 10310 | <li class="listitem"><p><a class="ulink" href="http://www.NetBSD.org/docs/pkgsrc/pkgsrc.ps" target="_top">http://www.NetBSD.org/docs/pkgsrc/pkgsrc.ps</a>: |
10311 | PostScript version of the pkgsrc guide.</p></li> | | 10311 | PostScript version of the pkgsrc guide.</p></li> |
10312 | </ul></div> | | 10312 | </ul></div> |
10313 | </div> | | 10313 | </div> |
10314 | <div class="sect1"> | | 10314 | <div class="sect1"> |
10315 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> | | 10315 | <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
10316 | <a name="procedure"></a>D.2. Procedure</h2></div></div></div> | | 10316 | <a name="procedure"></a>D.2. Procedure</h2></div></div></div> |
10317 | <p>The procedure to edit the pkgsrc guide is:</p> | | 10317 | <p>The procedure to edit the pkgsrc guide is:</p> |
10318 | <div class="procedure"><ol class="procedure" type="1"> | | 10318 | <div class="procedure"><ol class="procedure" type="1"> |
10319 | <li class="step"><p>Make sure you have the packages needed to | | 10319 | <li class="step"><p>Make sure you have the packages needed to |
10320 | regenerate the pkgsrc guide (and other XML-based NetBSD | | 10320 | regenerate the pkgsrc guide (and other XML-based NetBSD |
10321 | documentation) installed. These are automatically installed when | | 10321 | documentation) installed. These are automatically installed when |
10322 | you install the <a href="http://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/pkgsrc-guide-tools/README.html" target="_top"><code class="filename">meta-pkgs/pkgsrc-guide-tools</code></a> package.</p></li> | | 10322 | you install the <a href="https://cdn.NetBSD.org/pub/pkgsrc/current/pkgsrc/meta-pkgs/pkgsrc-guide-tools/README.html" target="_top"><code class="filename">meta-pkgs/pkgsrc-guide-tools</code></a> package.</p></li> |
10323 | <li class="step"><p>Run <span class="command"><strong>cd doc/guide</strong></span> to get to the | | 10323 | <li class="step"><p>Run <span class="command"><strong>cd doc/guide</strong></span> to get to the |
10324 | right directory. All further steps will take place | | 10324 | right directory. All further steps will take place |
10325 | here.</p></li> | | 10325 | here.</p></li> |
10326 | <li class="step"><p>Edit the XML file(s) in | | 10326 | <li class="step"><p>Edit the XML file(s) in |
10327 | <code class="filename">files/</code>.</p></li> | | 10327 | <code class="filename">files/</code>.</p></li> |
10328 | <li class="step"><p>Run <span class="command"><strong>bmake</strong></span> to check the pkgsrc | | 10328 | <li class="step"><p>Run <span class="command"><strong>bmake</strong></span> to check the pkgsrc |
10329 | guide for valid XML and to build the final output files. If you | | 10329 | guide for valid XML and to build the final output files. If you |
10330 | get any errors at this stage, you can just edit the files, as | | 10330 | get any errors at this stage, you can just edit the files, as |
10331 | there are only symbolic links in the working directory, pointing | | 10331 | there are only symbolic links in the working directory, pointing |
10332 | to the files in <code class="filename">files/</code>.</p></li> | | 10332 | to the files in <code class="filename">files/</code>.</p></li> |
10333 | <li class="step"><p><span class="command"><strong>(cd files && cvs | | 10333 | <li class="step"><p><span class="command"><strong>(cd files && cvs |
10334 | commit)</strong></span></p></li> | | 10334 | commit)</strong></span></p></li> |
10335 | <li class="step"><p>Run <span class="command"><strong>bmake clean && bmake</strong></span> to | | 10335 | <li class="step"><p>Run <span class="command"><strong>bmake clean && bmake</strong></span> to |
10336 | regenerate the output files with the proper RCS | | 10336 | regenerate the output files with the proper RCS |
10337 | Ids.</p></li> | | 10337 | Ids.</p></li> |
10338 | <li class="step"> | | 10338 | <li class="step"> |
10339 | <p>Run <span class="command"><strong>bmake regen</strong></span> to install and | | 10339 | <p>Run <span class="command"><strong>bmake regen</strong></span> to install and |
10340 | commit the files in both <code class="filename">pkgsrc/doc</code> and | | 10340 | commit the files in both <code class="filename">pkgsrc/doc</code> and |
10341 | <code class="filename">htdocs</code>.</p> | | 10341 | <code class="filename">htdocs</code>.</p> |
10342 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> | | 10342 | <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"> |
10343 | <h3 class="title">Note</h3> | | 10343 | <h3 class="title">Note</h3> |
10344 | <p>If you have added, removed or renamed some chapters, | | 10344 | <p>If you have added, removed or renamed some chapters, |
10345 | you need to synchronize them using <span class="command"><strong>cvs add</strong></span> or | | 10345 | you need to synchronize them using <span class="command"><strong>cvs add</strong></span> or |
10346 | <span class="command"><strong>cvs delete</strong></span> in the htdocs | | 10346 | <span class="command"><strong>cvs delete</strong></span> in the htdocs |
10347 | directory.</p> | | 10347 | directory.</p> |
10348 | </div> | | 10348 | </div> |
10349 | </li> | | 10349 | </li> |
10350 | </ol></div> | | 10350 | </ol></div> |
10351 | </div> | | 10351 | </div> |
10352 | </div> | | 10352 | </div> |
10353 | </div></body> | | 10353 | </div></body> |
10354 | </html> | | 10354 | </html> |